מסוף מחשב

מסוף מחשב הוא מכשיר אלקטרוני או אלקטרומכני המשמש להכנסת מידע וקבלתו ממערכת ממוחשבת או מרשת מחשבים. ברוב המקרים המסוף מאפשר ממשק משתמש מבוסס טקסט על גבי תקשורת טורית. המסוף מהווה כלי המאפשר עבודה על מחשב מרוחק מבלי להגיע אליו פיזית.

היסטוריה

מסופי המחשב הראשונים היו מכשירי טלפרינטר אלקטרומכניים בשיטת TTY אך היכולות שלהם היו איטיות למדי.
בתחילת שנות השבעים גורמים רבים בתעשיית המחשוב הבינו כי מסופים בעלי צג יהיו נוחים יותר ויעילים יותר ממחשבים המבוססים על כרטיסי ניקוב, שהיו נפוצים מאוד באותה תקופה. הבעיה הייתה שכמות הזיכרון הדרושה למידע בעמוד טקסט אחד הייתה דומה לשל מיני-מחשב ששלטו ברשתות המחשוב באותה תקופה. הצגת המידע במהירות על הצג הייתה עוד אחד מהאתגרים שמפתחי המסוף ניסו להתמודד איתה וכן השליטה הלוגית הדרושה במעגלים המשולבים במערכת.
ראשוני המסופים בעלי הצג כונו "Glass TTYs" (טלפרינטרים מזכוכית) שהיו בעצם שערים לוגיים ולא הייתה להם יחידת עיבוד מרכזית עצמאית. המניע העיקרי לפיתוח מיקרו-מעבד היה לפשט ולהפחית את האלקטרוניקה במסוף. רוב המסופים התחברו למחשבים מרכזיים בתקשורת טורית בממשק RS-232 וצבעי התצוגה היו שחור / ירוק או בשחור / חום. חברת IBM מערכות השתמשה בתקשורת על כבלים קואקסיאליים בפרוטוקול ה-SNA שלה.
מאוחר יותר מסופים "חכמים" יצאו לשוק כדוגמת VT52 ו VT100 של חברת DEC שנועדו לעבודה מול המיני-מחשבים PDP ו-VAX. תקן התקשורת של מסופים אלו עדיין בשימוש בתוכנות אמולציה המדמות תקשורת זו. מסופים אלו מכונים "חכמים" מכיוון שהייתה להם היכולת לפרש קוד של תווי בקרה למיקומו של הסמן ושליטה על התצוגה בהתאם.
מסופי מחשב ידועים אחרים הם ה-IBM 3270, והמסופים של חברת Wyse -שרבים מהם עדיין בשימוש, אך בשנות השבעים המאוחרות כאשר רבו הדגמים נוצרו פקודות שלא תאמו את כל המסופים והשרתים שלהם.
בשנות השמונים החלה עלייתם של המחשבים האישיים - IBM PC עם הצג המונוכרומטי (צג ירוק). הם לא היו מסופים ולא כללו חומרה המחוללת תווים, למעט כרטיס המסך שלא היה משולב בלוח האם. עם תוכנת אמולציה מתאימה ניתן היה לחברם לרשתות, אם היו מחוברים לשכזו.
לבסוף המחשבים האישיים השתלטו על השוק וצמצמו את הדרישה למסופים כליל. כיום רוב תוכנות Telnet למשתמש קצה מספקות אמולציה מלאה לVT100 ואף לתכונותיו של VT420 .

מסופים ביוניקס

מערכת יוניקס ומערכות הפעלה שתוכננו כדוגמתה, כגון לינוקס, המסוף הוא אחד הממשקים החשובים. במקרים רבים אפשר להתחבר למערכת ממסופים שונים: מדמה מסוף מהמערכת הגרפית המקומית, או ממערכת מרוחקת דרך חיבור כגון SSH. במסוף אפשר להשתמש, בין השאר, בממשק שורת פקודה.
מסוף שמחובר ישירות למחשב נקרא קונסולה (Console - עמדת שליטה). יש מערכות רבות שלהן אין מסך מובנה, ולכן החיבור לקונסול הוא דרך חיבור טורי אחר כגון RS-232. במערכות לינוקס וFreeBSD שמחוברות למסוף הקונסול הרגיל הוחלף במספר "קונסולים וירטואליים" - הדמיה של מספר רב של מסופים על ידי ליבת המערכת.
המסופים הראשונים בסביבה זו היו טלפרינטרים: צירוף של מקלדת ומדפסת שורה. הם כונו גם טלטייפ, Teletype, ע"ש אחד הנפוצים שבהם. מכאן הקיצור: TTY. מהסיבה הזו תוכננו התוכניות במערכת יוניקס (ובשפת C) לעבודה עם זרם נתוני קלט וזרם נתוני פלט.
בהמשך הופיעו מסופים גרפיים מתקדמים יותר אשר הציגו למשתמש מסך מרובע של תווים ואפשרויות שונות לשלוט עליהם. אותם מסופים היו מההתקנים המסובכים יחסית באותה תקופה. על מנת לשלוט עליהם הומצאה קריאת מערכת חדשה ביוניקס בשם ioctl שייעודה היה ליצור קריאות מערכת פרטיות למנהלי התקן שונים. השם של ערך השגיאה שקריאה (ובעקבותיה: גם קריאות אחרות) זו מחזירה כשהיא נשלחת להתקן לא מתאים נקבע ל-ENOTTY ("שגיאה: לא מסוף").
ברצף התווים יכולים להופיע תווי בקרה מיוחדים. לדוגמה: newline, לשורה חדשה, CR‏ (Carrige Return) - חזרה לתחילת השורה, פעמון: לצלצול. מסופים עם מסך (כגון VT100 של דיגיטל) נזקקו ליכולת להציג מידע בצורה עשירה יותר: קפיצה למקום מסוים במסך, הדגשות שונות (מודגש, קו תחתי), שינוי הרקע. במסופים צבעוניים: שינוי צבע הרקע. זה נעשה על ידי הוספת "רצפי Esc" - התו Esc (קוד ASCII‏27) ואחריו כמה תווים. לדוגמה:
Default Color, <ESC>[01;34Blue, <Esc>[01;32Green, <Esc>[0mand back to default.
יציג:
Default Color, Blue, Green, and back to default.
במקור השתמשו במסופים ייעודיים (עם מסכים ומקלדות). אולם עם השתכללות המחשבים האישיים, נוצרו תוכנות שאפשרו למחשב מרוחק לשמש כמסוף (אם על כל המסך שלו, או על חלון אחד בלבד בממשק הגרפי). תוכנות אילו נקראות מדמה מסוף (כדוגמת xterm בסביבות יוניקס).

מסופים גרפיים

רוב המסופים כיום מבוססים על ממשק משתמש גרפי, ויכולים להציג תמונות על המסך. הם משתמשים בפרוטוקולים כדוגמת RDP של מיקרוסופט או X11 עבור יוניקס. רוחב הפס הדרוש משתנה בהתאם לסוג הפרוטוקול, הרזולוציה ועומק הצבע.
המסופים הגרפיים תפסו את מקומם של המסופים מבוססי הטקסט, ולמעשה הובילו את ההתעניינות במסופים דקים.
ה X11 של יוניקס בנוי בארכיטקטורת משתמש-שרת והיה הראשון עם היכולת להעברת מידע של תוכנות גרפיות על גבי הרשת, ובדגמים מאוחרים יותר - על גבי האינטרנט.

מידע טכני

הדרך הפשוטה ביותר של תוכנת המסוף (מצד השרת) היא של קריאה וכתיבה של טקסט ברציפות. הטקסט נגלל כך שרק השורות האחרונות מוצגות, (כלומר הטקסט שמשתנה הוא הטקסט שמתעדכן), בזמן ששאר הטקסט נשאר במקומו בתצוגה.
הטקסט הנקלט נכנס לתוך חוצץ (בצד הלקוח) עד הקשה על מקש ENTER, כך שהתוכנה (בצד השרת) מקבלת את הטקסט השלם שהמשתמש הקליד.
לפעמים שיטה זו אינה מספיקה, בעיקר כאשר מדובר בתוכנות אינטראקטיביות. ההרחבה הנפוצה ביותר -לפתרון בעיה זו היא עריכת שורת פקודה (command line editing). באמצעותה ניתן למחוק חלק משורה, להוסיף לתוך שורה ולעיין בהיסטוריית הפקודות.
אינטראקטיביות מורחבת אף יותר היא של תוכנות במסך מלא. תוכנות אלו שולטות על תסדיר המסך במלואו ומגיבות להקשות מהמקלדת באופן מיידי. מצב זה יעיל ביותר בעורכי טקסט, מנהלי קבצים ודפדפני רשת. בנוסף לתכונות אלו, שולטות ההרחבות בעיצוב (כגון הטיה, הדגשה, הבהוב, צבע ובהירות הטקסט), ושימוש בתוים מיוחדים (כגון טבלאות ותיבות טקסט).
על מנת להשיג כל אלה, התוכנה חייבת לטפל לא רק בטקסט פשוט, אלא גם בתווי שליטה ובקרה, המאפשרים לסמן לנוע בחופשיות, למחוק חלקים מהמסך, לשנות צבעים בתצוגה ולהגיב למקשי פונקציה.
הבעיה בתוכנות מסוג זה היא שיש כל כך הרבה סוגים של מסופים (ואמולציות של מסופים) וכל תוכנת שרת משתמשת במערך תוי בקרה שונה. כדי להתגבר על כך, ספריות מיוחדות נוצרו, יחד עם מסדי נתונים הכוללים מידע על המסופים ותוי הבקרה בשימוש מסופים אלו. הספריות ומסדי הנתונים הנ"ל לעיתים קרובות יחד עם תוכנות האמולציה מכילים באגים, כך שהתנהגות התוכנה לא תמיד מדמה באופן מלא את המסוף המקורי. מכיוון שספריות אלו כתובות בקוד פתוח של יוניקס ניתן לשנותן כדי למנוע תקלות מסוג זה. בשנים האחרונות, עליית המעבר לממשק משתמש גרפי המעיטה את ההתעסקות בספריות ואמולציות של מסופים ועיכבה את המאמצים לניפוי באגים בהן. כל זאת הוביל לשמישות מועטה של רבות מהתוכנות המבוססות טקסט.