מהי קריאת מערכת?
חלק מהיחידה יסודות במסלול ה-Assembly של Coddy. שיעור 31 מתוך 45.
כתבת הוראות אסמבלי כמו mov ו־lea. ההוראות האלה רצות ישירות על המעבד. אבל מה אם צריך לעשות משהו שהמעבד לא יכול לעשות בעצמו, כמו להדפיס למסך, לקרוא מהמקלדת או לצאת מתוכנית?
למשימות האלה דרושה לך מערכת ההפעלה (Linux, בקורס הזה).
מהי קריאת מערכת?
קריאת מערכת (syscall) היא בקשה שהתוכנית שלך שולחת למערכת ההפעלה. כך מבקשים ממערכת ההפעלה לעשות משהו עבורך.
למה צריך קריאות מערכת:
| משימה | האם המעבד יכול לבצע אותה לבדו? | האם נדרשת קריאת מערכת? |
|---|---|---|
| חיבור שני מספרים | כן | לא |
| העברת נתונים בין אוגרים | כן | לא |
| הדפסת טקסט על המסך | לא | כן |
| קריאת קלט מהמקלדת | לא | כן |
| יציאה מתוכנית | לא | כן |
| פתיחת קובץ | לא | כן |
איך קריאת מערכת פועלת:
- מכניסים מספר קריאת מערכת ל־
rax(אומר למערכת ההפעלה מה רוצים) - מכניסים ארגומנטים לאוגרים אחרים (
rdi,rsi,rdxוכו׳) - מבצעים את הוראת
syscall
- המעבד קופץ לליבת מערכת ההפעלה
- מערכת ההפעלה מבצעת את הבקשה
- מערכת ההפעלה מחזירה את השליטה לתוכנית שלך
הקבלה:
חשבו על קריאת מערכת כמו על פנייה למשרד ממשלתי:
| שלב | הקבלה | ב־assembly |
|---|---|---|
| 1 | מחליטים איזה שירות צריך | בוחרים מספר קריאת מערכת (מכניסים ל־rax) |
| 2 | ממלאים את הטפסים | מכניסים ארגומנטים לאוגרים |
| 3 | מגישים את הבקשה | מבצעים syscall |
| 4 | הממשלה מטפלת בבקשה | ליבת מערכת ההפעלה מבצעת את העבודה |
| 5 | מקבלים את התוצאה בחזרה | התוכנית ממשיכה |
קריאות המערכת שתלמדו בקורס הזה:
| קריאת מערכת | מספר | מה היא עושה | פרק |
|---|---|---|---|
exit | 60 | מסיימת את התוכנית | פרק 4 |
write | 1 | מדפיסה טקסט למסך | פרק 5 |
קריאת המערכת החשובה ביותר לעת עתה: exit
בלי exit, התוכנית שלך הייתה ממשיכה לרוץ לנצח או קורסת. כל תוכנית שתכתוב חייבת להסתיים בקריאת מערכת exit.
mov rax, 60 ; מספר קריאת המערכת ליציאה
mov rdi, 0 ; קוד יציאה (0 = הצלחה)
syscall ; בקש ממערכת ההפעלה לצאתנסו בעצמכם
השיעור הזה לא כולל אתגר קוד.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
תרגלו בעצמכם: Assembly אונליין