קלט - חלק תחתון
תהליך הקלט - ttyiproc רץ בלולאה אינסופית ומבצע:
- מחכה להודעה שהגיע תו. עם הקשת תו נשלחת הודעה להתליך
הקלט על ידי השגרה לטיפול בפסיקת מקלדת (ttyiin).
- תהליך הקלט קורא את התו על ידי
פונקצית BIOS, ופועל לפי אופן הטיפול
בקלט (mode).
getc
- כאשר המשתמש קורא ל- getc(CONSOLE) ממופה הקריאה דרך טבלת ההתקנים לפונקציה ttygetc()
- בפונקציה ttygetc() נבדק החוצץ,
ואם אין תו
הפונקציה ממתינה על סמפור (ולכן אינה צורכת זמן מעבד)
- כאשר המשתמש מקיש על מקש, נוצרת פסיקה.
- פונקצית השיגור intcom קוראת לפונקצית הטיפול ttyiin.
- בזמן אתחול המערכת יוצרת XINU תהליך בשם ttyiproc
- תהליך זה מטפל בתווים שהגיעו
מהמקלדת. פרוצדורת הפסיקה מסמנת לו
שהגיע תו חדש ע"י שליחת הודעה.
- התהליך מטפל בתו ומעיר את ttygetc ע"י signal.
putc
- כאשר המשתמש קורא ל- putc(ch,CONSOLE) ממופה הקריאה דרך טבלת ההתקנים לפונקציה ttyputc()
- בפונקציה ttyputc() נבדק החוצץ,
ואם אין מקום
ריק (כלומר החוצץ מלא) הפונקציה ממתינה על סמפור
- כאשר מתפנה מקום בחוצץ, כותבת ttyputc את התו בחוצץ ושולחת הודעה לתהליך הפלט ttyoproc.
- התהליך ttyoproc נמצא בלולאה אינסופית וכותב תווים מהחוצץ באמצעות wtty.
- כאשר נכתבים תווים (ולכן נוצרים מקומות פנויים) ttyoproc מבצע signal על
הסמפור
- כאשר אין תווים בחוצץ, מחכה התהליך להודעה מ- ttyputc על הגעת תו חדש
- כאשר קבל הודעה על תו חדש שהגיע
לחוצץ מתעורר לחיים וממשיך בלולאת כתיבת התווים.
|
|
תודה
הסברתם את זה, כמו שאר הנושאים, באופן הכי ברור שיש.