Smart-World Surf

יחידה 9: מערכות קלט/פלט

אינטראקציה בין מערכת ההפעלה להתקני חומרה.
התקני קלט/פלטבקריםפסיקותDMAתזמון דיסק

ברוכים הבאים ליחידת הלימוד בנושא מערכות קלט/פלט (I/O Systems) בקורס "מערכות הפעלה". יחידה זו חיונית להבנת האופן שבו מערכת ההפעלה מנהלת אינטראקציה עם רכיבי החומרה השונים של המחשב. נלמד על המרכיבים העיקריים של מערכות קלט/פלט, מנגנוני תקשורת יעילים בין המעבד להתקנים, וכיצד מערכת ההפעלה מבצעת אופטימיזציה של פעולות קלט/פלט, בדגש על תזמון דיסק. הבנה מעמיקה של נושאים אלו קריטית הן לתפקוד יעיל של המערכת והן להצלחה במבחן.

מבוא למערכות קלט/פלט

מערכות קלט/פלט הן הגשר בין המעבד המרכזי (CPU) והזיכרון הראשי לבין העולם החיצוני והתקני האחסון. הן מאפשרות למחשב לקבל מידע ממשתמשים (מקלדת, עכבר), להציג מידע (מסך, מדפסת), לתקשר עם רשתות (כרטיס רשת) ולאחסן נתונים באופן קבוע (דיסק קשיח). האתגר המרכזי הוא להתמודד עם פערי המהירות העצומים בין המעבד המהיר לבין התקני הקלט/פלט האיטיים יחסית, תוך שמירה על יעילות וביצועים גבוהים של המערכת כולה.

מרכיבי ליבה של מערכת קלט/פלט

התקני קלט/פלט (I/O Devices)

התקני קלט/פלט מגוונים מאוד, וניתן לסווג אותם בדרכים שונות:

  • התקני בלוק (Block Devices): מעבירים נתונים בבלוקים בגודל קבוע (לדוגמה, דיסקים קשיחים, כונני USB).
  • התקני תווים (Character Devices): מעבירים נתונים בבייטים בודדים (לדוגמה, מקלדת, עכבר, מדפסת).
  • התקנים ייעודיים (Dedicated Devices): יכולים לשמש תהליך אחד בלבד בכל רגע נתון (לדוגמה, מדפסת).
  • התקנים שיתופיים (Sharable Devices): יכולים לשמש מספר תהליכים בו זמנית (לדוגמה, דיסק קשיח).

בקרי התקנים (Device Controllers)

בקר התקן: רכיב חומרה המהווה ממשק בין התקן קלט/פלט לבין המעבד והזיכרון הראשי. הוא מכיל לוגיקה ספציפית לשליטה בהתקן, באפר מקומי וסט רגיסטרים לתקשורת.

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

  • רגיסטרי נתונים (Data Registers): לאחסון נתונים המועברים אל ההתקן וממנו.
  • רגיסטרי סטטוס (Status Registers): לדיווח על מצב ההתקן (לדוגמה, מוכן, עסוק, שגיאה).
  • רגיסטרי פקודות (Command Registers): לקבלת פקודות מהמעבד (לדוגמה, קרא, כתוב, אתחל).
  • באפר מקומי (Local Buffer): לאחסון זמני של נתונים לפני או אחרי העברתם.

דרכי תקשורת בין המעבד לבקר

Memory-Mapped I/O

ברכיב זה, רגיסטרי הבקרים ממופים לכתובות בזיכרון הראשי. המעבד מתקשר עם הבקר באמצעות פקודות זיכרון רגילות (קריאה/כתיבה לכתובת זיכרון), מה שמפשט את ארכיטקטורת המערכת אך עלול לצרוך חלק ממרחב הכתובות של הזיכרון.

Port-Mapped I/O

ברכיב זה, רגיסטרי הבקרים נמצאים במרחב כתובות נפרד ממרחב הזיכרון. המעבד משתמש בפקודות קלט/פלט מיוחדות (כגון IN/OUT בארכיטקטורת x86) כדי לתקשר עם הבקרים. זה משחרר את כל מרחב הזיכרון לשימוש הזיכרון הראשי, אך דורש פקודות ייעודיות.

מנגנוני העברת נתונים ובקרה

פסיקות (Interrupts)

פסיקה: אות חומרה או תוכנה המופק על ידי התקן או תוכנית כדי להודיע למעבד על אירוע הדורש טיפול מיידי, כגון סיום פעולת קלט/פלט.

פסיקות הן מנגנון קריטי לתקשורת אסינכרונית בין התקני קלט/פלט למעבד. במקום שהמעבד יבזבז זמן בבדיקה מתמדת (polling) אם התקן סיים פעולה, ההתקן שולח פסיקה למעבד כשהוא מוכן. המעבד עוצר את פעולתו הנוכחית, מטפל בפסיקה באמצעות שגרת טיפול בפסיקות (Interrupt Handler), וחוזר לפעולה הקודמת. זה משפר משמעותית את ניצול המעבד.

DMA - גישה ישירה לזיכרון (Direct Memory Access)

DMA (Direct Memory Access): מנגנון המאפשר להתקני קלט/פלט להעביר נתונים ישירות לזיכרון הראשי וממנו, ללא מעורבות המעבד בכל בייט, ובכך מפחית את העומס על המעבד.

כאשר יש צורך להעביר כמויות גדולות של נתונים (לדוגמה, קריאה/כתיבה לדיסק או העברת נתונים ברשת), העברת כל בייט על ידי המעבד (Programmed I/O) הופכת לצוואר בקבוק. בקר DMA משתלט על בקרת אפיק הזיכרון ומבצע את העברת הנתונים ישירות בין התקן הקלט/פלט לזיכרון הראשי. המעבד מורה לבקר ה-DMA להתחיל את ההעברה, ורק כשההעברה מסתיימת, בקר ה-DMA שולח פסיקה למעבד. זה מפחית באופן דרמטי את העומס על המעבד ומאפשר לו לבצע משימות אחרות במקביל.

חשיבות ה-DMA: ה-DMA הוא קריטי לביצועים במערכות מודרניות. ללא DMA, המעבד היה נאלץ להעביר כל בייט של נתונים בין התקני קלט/פלט לזיכרון, מה שהיה גורם לבזבוז משאבי מעבד משמעותי וצוואר בקבוק חמור, במיוחד עבור התקנים מהירים כמו כרטיסי רשת או דיסקים. הבנה מעמיקה של DMA חיונית להבנת יעילות מערכות הפעלה.

תזמון דיסק (Disk Scheduling)

דיסקים קשיחים הם התקני בלוק מכניים, ופעולתם כוללת תנועה פיזית של ראש הקריאה/כתיבה (seek time) והמתנה לסיבוב הדיסק למיקום הנכון (rotational latency). זמנים אלו ארוכים משמעותית מזמני גישה לזיכרון. מטרת תזמון הדיסק היא למזער את זמן הגישה הממוצע, למקסם את תפוקת הדיסק ולהבטיח הוגנות בין בקשות שונות.

FCFS (First-Come, First-Served)

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

SSTF (Shortest Seek Time First)

הבקשה הבאה לטיפול היא זו הקרובה ביותר למיקום הנוכחי של ראש הקריאה/כתיבה. אלגוריתם זה ממזער את זמן ה-seek המקומי, אך עלול לגרום להרעבה (starvation) של בקשות רחוקות אם יש זרם קבוע של בקשות קרובות.

SCAN (Elevator Algorithm)

ראש הקריאה/כתיבה נע בכיוון אחד (לדוגמה, מהקצה הפנימי לחיצוני), מטפל בכל הבקשות שבדרכו. כשהוא מגיע לקצה, הוא משנה כיוון וחוזר, מטפל בבקשות שבדרכו. זה מספק הוגנות טובה יותר מ-SSTF.

C-SCAN (Circular SCAN)

דומה ל-SCAN, אך ראש הקריאה/כתיבה נע רק בכיוון אחד (לדוגמה, מהקצה הפנימי לחיצוני). כשהוא מגיע לקצה, הוא קופץ מיד חזרה לקצה השני מבלי לטפל בבקשות בדרכו חזרה. זה מבטיח זמני המתנה אחידים יותר.

שאלות לדיון

  • השווה בין מנגנון פסיקות לבין Polling בהקשר של תקשורת עם התקני קלט/פלט. מתי עדיף להשתמש בכל אחד מהם?
  • הסבר כיצד DMA משפר את ביצועי המערכת בהשוואה להעברת נתונים מונחית מעבד (Programmed I/O).
  • תיאר את הבעיות שאלגוריתם FCFS עלול לגרום בתזמון דיסק, והסבר כיצד SSTF מנסה לפתור אותן. מהם החסרונות של SSTF?
  • מהו תפקידו של בקר התקן במערכת קלט/פלט, וכיצד הוא מתקשר עם המעבד?

נקודות לתשובת מודל

  • Polling vs. Interrupts: Polling - מעבד בודק באופן פעיל, פשוט ליישום, בזבזני למכשירים מהירים. Interrupts - מעבד מקבל הודעה, יעיל למכשירים מהירים, מורכב יותר ליישום.
  • DMA vs. Programmed I/O: DMA מאפשר העברת נתונים ישירה בין התקן לזיכרון ללא מעורבות המעבד בכל בייט, מפחית עומס על המעבד, משפר תפוקה עבור העברות גדולות. Programmed I/O דורש מעורבות מעבד בכל בייט.
  • FCFS vs. SSTF: FCFS פשוט אך לא יעיל (תנועת ראש רבה). SSTF ממזער זמן seek מקומי, משפר תפוקה, אך עלול לגרום להרעבה לבקשות רחוקות.
  • תפקיד בקר התקן: ממשק בין התקן למעבד/זיכרון, מכיל באפר מקומי ורגיסטרים (נתונים, סטטוס, פקודות). מתקשר עם המעבד באמצעות Memory-mapped I/O או Port-mapped I/O.
מצאתם טעות או שחסר משהו?
→ הקודמת
מערכות קבצים
הבאה ←
וירטואליזציה ואבטחה