קלט - חלק תחתון

תהליך הקלט - ttyiproc רץ בלולאה אינסופית ומבצע:

  1. מחכה להודעה שהגיע תו. עם הקשת תו נשלחת הודעה להתליך הקלט על ידי השגרה לטיפול בפסיקת מקלדת (ttyiin).
  2. תהליך הקלט קורא את התו על ידי פונקצית 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 על הגעת תו חדש
  • כאשר קבל הודעה על תו חדש שהגיע לחוצץ מתעורר לחיים וממשיך בלולאת כתיבת התווים.

תגיות המסמך:

מאת: באסל

תודה

הסברתם את זה, כמו שאר הנושאים, באופן הכי ברור שיש.
שיתוף:
| עוד