מערכות הפעלה

מסמכים קשורים
מבוא לאסמבלי

PowerPoint Presentation

בחן במערכות הפעלה

Slide 1

Slide 1

סדנת תכנות ב C/C++

Comp. Arch. Lecture 1

Slide 1

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

מבוא למדעי המחשב

PowerPoint Presentation

Microsoft PowerPoint - lecture4_handnotes_2013_2.ppt [Compatibility Mode]

Slide 1

שאלהIgal : מערכים דו מימדיים רקורסיה:

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

שאלהIgal : מערכים דו מימדיים רקורסיה:

מבוא למדעי המחשב

Microsoft PowerPoint - rec1.ppt

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

שאלהIgal : מערכים דו מימדיים רקורסיה:

Microsoft Word - c_SimA_MoedB2005.doc

תרגול 1

מבוא לתכנות ב- JAVA תרגול 7

שעור 6

מערכות הפעלה

בחן במערכות הפעלה

PowerPoint Presentation

תרגול מס' 1

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

Slide 1

תכנות מונחה עצמים א' – תש"ע

PRESENTATION NAME

מבוא למדעי המחשב - חובלים

Slide 1

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

Microsoft PowerPoint - Lecture1

Slide 1

Disclaimer מסמך זה הינו סיכום און-ליין של השיעור ולא עבר עריכה כלל. מצאת טעות? שלח/י לי מייל ואתקן: 07/05/2009 קורס: מערכות ה

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

PowerPoint Presentation

PowerPoint Presentation

Slide 1

מהוא לתכנות ב- JAVA מעבדה 3

אוניברסיטת בן גוריון בנגב תאריך המבחן: שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: מס' הקורס : הנדסת תעשיה וניהול מ

Slide 1

תרגול 1

מבוא למדעי המחשב

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

מתכונת עיצוב 3013

Microsoft Word B

המדריך המהיר לכתיבה של וירוס פשוט מאת דן בומגרד Bomgard( )Dan תוכן העניינים הקדמה... 2 דרישות מהתוכנית... 3 כלים... 3 תכנון כללי( Design (High Level..

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

מבוא למדעי המחשב

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

PowerPoint Presentation

Slide 1

פתרון מבחן במיקרו בקרים תשעו

מבוא לתכנות ב- JAVA תרגול 11

מדריך להתקנת Code Blocks מדריך זה נועד לתאר את תהליך התקנת התוכנה של הקורס "מבוא למחשב שפת C". בקורס נשתמש בתוכנת Code::Blocks עם תוספת )אשף( המתאימה

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

2019 שאלות מומלצות לתרגול מס' דיפרנציאביליות של פונקציה סקלרית )המשך(. כלל השרשרת. S = ( x, y, z) z = x + 3y על המשטח מצאו נקודה בה מישור משיק

Homework Dry 3

Microsoft Word - Ass1Bgu2019b_java docx

מצגת של PowerPoint

Microsoft PowerPoint - T-10.ppt [Compatibility Mode]

מצגת של PowerPoint

הגשה תוך שבוע בשעת התרגול

Microsoft PowerPoint - L01-n.ppt

Slide 1

ex1-bash

Microsoft PowerPoint - rec3.ppt

עבודה במתמטיקה לכיתה י' 5 יח"ל פסח תשע"ה אפריל 5105 קשה בלימודים, קל במבחנים, קל בחיים עבודה במתמטיקה לכיתה י' 5 יח"ל פסח תשע"ה יש לפתור את כל השאלות

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

הגשה תוך שבוע בשעת התרגול

תרגיל בית מספר 1#

תורת החישוביות תרגול הכנה לוגיקה ותורת הקבוצות מה יש כאן? בקורס תורת החישוביות נניח ידע בסיסי בתורת הקבוצות ובלוגיקה, והכרות עם מושגים בסיסיים כמו א"ב

Tutorial 11

סרגל כלים ל-Outlook או לExplorer- מדריך למשתמש

Slide 1

תאריך פרסום: תאריך הגשה: מבנה נתונים תרגיל 5 )תיאורטי( מרצה ומתרגל אחראים: צחי רוזן, דינה סבטליצקי נהלי הגשת עבודה: -את העבודה יש לה

מערכות הפעלה

הטכניון מכון טכנולוגי לישראל אלגוריתמים 1 )443432( סמסטר חורף הפקולטה למדעי המחשב תרגול 9 מסלולים קלים ביותר תרגיל APSP - 1 עד כה דנו באלגור

Office 365 ProPlus בחינם לסטודנטים באוניברסיטת בן גוריון בנגב הוראות סטודנטים באוניברסיטת בן גוריון בנגב יכולים להוריד ולהתקין את חבילת התוכנה Office

<4D F736F F D20F4FAF8E5EF20EEE5F2E320E020F1EEF1E8F820E120FAF9F2E3>

דוגמאות שהוצגו בהרצאה 10 בקורס יסודות מערכות פתוחות דוגמה 1 דוגמאות של פונקציות ב- awk שמראות שהעברת פרמטרים של משתנים פשוטים היא by value והעברת פרמט

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

Microsoft Word - 28

תרגול מס' 7 – חזרה על MST ואלגוריתם Dijkstra

תוכן העניינים: פרק צמצומים ומימושים של פונקציות בוליאניות... 2 צמצומים של פונקציות באמצעות מפת קרנו:...2 שאלות:... 2 תשובות סופיות:... 4 צמצום

יצוא לחשבשבת תוכן עיניינים הגדרות - חשבונות בנק...2 הגדרות - הגדרות חשבשבת... 3 הגדרות - כרטיסי אשראי... 4 הגדרות - סוגי הכנסה... 5 יצוא לחשבשבת...6 י

מבוא למדעי המחשב

תמליל:

מערכות הפעלה תרגול 2 קריאות מערכת ב- Linux

תוכן התרגול קריאה לפונקציות ב- Linux קריאה לשירותי מערכת ב- Linux 2

תזכורת - תכנית Linux ראשונה hello.c #include <stdio.h> int main() { char *str= Hello ; printf) %s World!\n, str(; return 0; } 3

קריאה לפונקציה ב- Linux )1( כיצד נראית המחסנית בביצוע הקריאה לפונקציה?hello.c בתכנית printf() תרשים בשקף הבא 4

.. כתובות גבוהות התחלת המחסנית str 4 בתים מצביע על מחרוזת הפורמט 4 בתים כתובת חזרה מ- printf 4 בתים ebp הישן 4 בתים גידול המחסנית ebp החדש esi הישן 4 בתים edi הישן 4 בתים מסגרת הפונקציה ebx הישן 4 בתים משתנים מקומיים של printf...... כתובות נמוכות 5

קריאה לפונקציה ב- Linux )2( קריאה לפונקציה ב- Linux מבוססת על סגנון הקריאה לפונקציות של שפת )C Calling Convention( C תחילה הפרמטרים של הפונקציה מוכנסים למחסנית בסדר הפוך )הפרמטר הימני ביותר ראשון( כעת מתבצעת הוראת המכונה call שדוחפת את כתובת החזרה )ערכו של )eip למחסנית וקופצת לתחילת הפונקציה printf() על-ידי הצבת כתובת תחילת הפונקציה ל- eip - near call קריאה לפונקציה באותו איזור זיכרון מוכנס למחסנית ה- )cs )ולא eip בלבד ומעודכן רק ערכו של offset 6

קריאה לפונקציה ב- Linux )3( הקוד של הפונקציה הנקראת )במקרה זה )printf() חייב לשמור את ערכי הרגיסטרים ebp, esi, edi, ebx במקרה שהוא משתמש בהם, ולשחזר את ערכם בסיום ביצוע הפונקציה הפונקציה הנקראת שומרת תחילה את ebp במחסנית ואז מציבה את ebp להצביע על ראש המחסנית )שמכיל את ערכו הקודם של.)ebp לאחר מכן נשמרים שאר הרגיסטרים לפי הצורך אחרי שמירת הרגיסטרים מוקצה על המחסנית מקום למשתנים המקומיים של הפונקציה הנקראת ע"י הקטנת ערכו של esp בגודל המקום הנדרש. כך מובטח שבחזרה מהפונקציה ישוחררו אוטומטית כל המשתנים המקומיים 7

קריאה לפונקציה ב- Linux )4( לרגיסטר ebp יש תפקיד מיוחד בקריאה לפונקציה: הוא מצביע על בסיס מסגרת הפונקציה, כלומר על המקום במחסנית בו מתחילה שמירת הנתונים של הפונקציה הנקראת ניתן לראות ריצה של תכנית דרך המחסנית כהרכבה והסרה של מסגרות פונקציה זו על גבי זו ברשימה מקושרת, מעין "מחסנית של מסגרות". ערכו של רגיסטר ebp השמור במחסנית בכל מסגרת מצביע על בסיס המסגרת שלפניה בהתאם לכך, כל מיקומי הפרמטרים והמשתנים המקומיים של הפונקציה נגישים כערכים יחסיים לערכו של ebp לדוגמה: הפרמטר הראשון הכתובת ss:[ebp+8] )משמאל( של הפונקציה נגיש דרך 8

קריאה לפונקציה ב- Linux )5( לפני סיום ביצוע הפונקציה משוחזרים ערכי הרגיסטרים שנשמרו על-ידי הפונקציה הנקראת בסיום ביצוע הפונקציה מתבצעת פקודת ret ששולפת את כתובת החזרה לקוד הקורא מהמחסנית וקופצת לכתובת זו על-ידי הצבתה ל- eip. באחריות הקוד הקורא לפונקציה לשמור את כל הרגיסטרים שבשימושו ושאינם באחריות הפונקציה הנקראת. רגיסטרים אלו משוחזרים לאחר החזרה מהפונקציה הקוד הקורא אחראי גם לפינוי הפרמטרים ע"י הגדלת esp 9

קריאה לפונקציה ב- Linux )6( הפונקציה מחזירה ערך בסיום )אם יש כזה( ערך בגודל עד 8 ביט מוחזר ב- al ערך בגודל עד 16 ביט מוחזר ב- ax ערך בגודל עד 32 ביט מוחזר ב- eax )זהו המקרה הנפוץ( ערך בגודל עד 64 ביט מוחזר בצמד edx:eax לפי הכללים הבאים: אם הפונקציה אמורה להחזיר ערך שהוא רשומה מורכבת,)struct( אז המקום עבור גודל הערך מוקצה מראש על המחסנית על-ידי הקוד הקורא לפונקציה כפרמטר חבוי, והפונקציה מעדכנת את תוכן הרשומה במחסנית לפני סיום ביצועה ערך מוחזר מסוג floating-point מאוחסן ברגיסטרים מיוחדים של היחידה המתימטית )ALU( של המעבד 10

קריאה לפונקציה ב- Linux )7( נגדיר את הפונקציה my_add() שמבצעת חיבור באופן הבא: int my_add(int x, int y); בשקף הבא מופיע מימוש של פונקציה זו בשפת המכונה של 80386 ב- Linux המימוש מוצג בפורמט GNU Assembler שימו לב: קומפיילר C מוסיף באופן אוטומטי קו תחתון '_' לפני שם כל פונקציה. לכן, על מנת שהקוד שבמימוש יוכל להתחבר גם לתכנית C, מוסף '_' לפני השם my_add 11

קריאה לפונקציה ב- Linux )8(.global _my_add _my_add: pushl %ebp movl %esp,%ebp pushl %esi pushl %edi pushl %ebx movl 8(%ebp),%ebx movl 12(%ebp),%eax addl %ebx,%eax popl %ebx popl %edi popl %esi popl %ebp ret ; declare public function ; not necessary (unused register) ; not necessary (unused register) ; load the first parameter ; load the second parameter ; result is in eax 12

קריאת מערכת ב- Linux )1( המינוח המקובל Call syscall( System בקיצור( תהליך משתמש מבצע קריאת מערכת על-מנת לבקש מגרעין מערכת ההפעלה לבצע עבורו שירות כלשהו מדוע שירות כלשהו חייב להתבצע דווקא על-ידי גרעין מערכת ההפעלה? מצריך גישה לחומרה: קלט / פלט למסוף, קבצים, תקשורת ברשת, גרפיקה מצריך גישה למבני נתונים של מערכת ההפעלה או של תהליכים אחרים: יצירת תהליכים חדשים, תקשורת בין תהליכים, גישה לנתוני משתמשים 13

קריאת מערכת ב- Linux )2( במה שונה קריאת מערכת ב- Linux מקריאה לפונקציה? ראינו בתירגול 1 קריאה באמצעות פסיקת תוכנה ועם זאת.. קריאת מערכת נראית כמו קריאה רגילה לפונקציה בקוד התוכנית לדוגמה: open() ו-() sprintf הן שתי פונקציות סטנדרטיות המהוות חלק מה- )Application Programming Interface( API של Linux וכלולות בספריה libc,sprintf() המשמשת להדפסת פלט לחוצץ, היא פונקציה רגילה, שאינה פונה לגרעין לצורך עבודתה אבל:,open() המשמשת לפתיחת קובץ, היא קריאת מערכת המתכנת, הכותב יישום שמשתמש בספריות מערכת ההפעלה, אינו מבדיל בין קריאת מערכת לבין קריאה רגילה לפונקציה. ההבדל נעוץ במימוש פונקציה לעומת מימוש קריאת מערכת 14

קריאת מערכת ב- Linux )3( כיצד ממומשת קריאת מערכת? התשובה: מעטפת קוד - wrapper code לדוגמה: הפונקציה open() היא מעטפת קוד, המפעילה באמצעות פסיקת תוכנה את קריאת המערכת שמבצעת את השירות המבוקש של פתיחת הקובץ, ומחזירה את תוצאת ביצוע השירות לקוד שקרא ל-() open פונקציות המעטפת הן אלו שמקושרות )linking( לתוכנית המשתמשת בהן 15

קריאת מערכת ב- Linux )4( הערך המוחזר על-ידי פונקצית המעטפת במקרה של הצלחת ביצוע השירות תלוי בסוג השירות המבוקש לדוגמה: open() מחזירה מספר מזהה )descriptor( לקובץ שנפתח. דרך מזהה זה ניתן כעת לקרוא ולכתוב לקובץ במקרה של כישלון, בדרך-כלל מוחזר הערך 1-, השגיאה מוחזר במשתנה גלובלי הקרוי errno וסוג לדוגמה: אם הבקשה בקריאה ל-() open היתה לפתוח לקריאה קובץ שאינו קיים, יוכנס הערך ENOENT למשתנה,errno כאשר ENOENT הוא קבוע שערכו 2 רשימת הקבועים המוחזרים במצבי כישלון עבור קריאת מערכת מסוימת זמינה דרך ה- page man של אותה קריאת מערכת רשימת ערכי הקבועים נמצאת בקובץ ובקבצים הכלולים בו /usr/include/errno.h 16

קריאת מערכת ב- Linux )5( כל קריאות מערכת ההפעלה ב- Linux מטופלות דרך פסיקת תוכנה אחת, מספר )0x80( 128 סוג השירות המבוקש נקבע באמצעות מספר שירות המועבר ברגיסטר eax על-ידי פונקצית המעטפת בתגובה לפסיקה המעבד עובר מ- mode user ל- mode kernel ומפעיל בגרעין את שגרת הטיפול בפסיקה הקרויה system_call() )קובץ גרעין: )arch/i386/kernel/entry.s השיגרה system_call() מנתבת את ביצוע הבקשה לפונקציה המתאימה לפי מספר השירות שם הפונקציה המבצעת את השירות מתאים לשם השירות עם הקידומת."sys_" לדוגמה: open() מבוצעת על-ידי הפונקציה sys_open() )קובץ גרעין: )fs/open.c 17

קריאת מערכת ב- Linux )6( פונקציה מבצעת שגרת טיפול בפסיקה מעטפת קוד קוד משתמש open() 1 open() {.. int 0x80 2 6. } 5 system_call():. sys_open().. iret 3 4 sys_open() {... } User Mode Kernel Mode פונקצית המעטפת והפונקציה בגרעין המבצעת את בקשת השירות הן פונקציות רגילות המופעלות לפי כללי קריאה לפונקציה שראינו בשקפים קודמים 18

קריאת מערכת ב- Linux )7(,system_call() בהיותה שגרת טיפול בפסיקה, פועלת תחת כללים שונים מכללי קריאה לפונקציה רגילה קפיצה לשגרת טיפול בפסיקה באיזור זיכרון של הגרעין. פעולת הקפיצה שומרת את ss, esp, eflags, cs, eip )משמאל לימין( במחסנית. החזרה מהשגרה היא בהוראה מיוחדת iret המשחזרת רגיסטרים אלו מסגרת הפונקציה איננה מקושרת למסגרות קודמות העברת הפרמטרים לשגרה היא באמצעות רגיסטרים בלבד מדוע צריך פרוטוקול קריאה מיוחד עבור )ושגרות פסיקה בכלל(? system_call() כי במעברים בין user mode ו- mode kernel מתבצעת החלפת מחסניות. פרטים בתרגולים הבאים 19

קריאת מערכת ב- Linux )8( הפרמטרים המועברים ל-() system_call כוללים: eax מספר השירות המבוקש, ברגיסטר פרמטרים עבור השירות לפי הצורך, ברגיסטרים הבאים )משמאל לימין(: ebx, ecx, edx, esi, edi, ebp פרמטרים הגדולים מ- 32 ביט: מועבר מצביע לפרמטר ברגיסטר יחיד אם נדרשים יותר מ- 6 פרמטרים עבור השירות: מועבר רגיסטר יחיד המצביע לרשומה בזיכרון של התהליך המכילה את כל הפרמטרים שיטת העברת הפרמטרים מוגדרת בפונקצית המעטפת שיבוץ פרמטרים ממחסנית הקריאה לרגיסטרים או העברת מצביע לרשומה 20

קריאת מערכת ב- Linux )9( מספר השירות המועבר ל-() system_call הוא למעשה אינדקס בטבלה של מצביעים לפונקציות ביצוע שירות, הקרויה sys_call_table מספר הכניסות בטבלה sys_call_table מוגדר בקבוע,NR_syscalls וערכו בד"כ 256 לא כל הכניסות בטבלה מצביעות על פונקציות שירות פעילות; אילו שאינן פעילות מצביעות על פונקצית הביצוע )linux/kernel/sys.c גרעין: )קובץ sys_ni_syscall() המחזירה ערך שגיאה ENOSYS שפירושו "שירות שאינו ממומש" 21

קריאת מערכת ב- Linux )10( פונקצית ביצוע השירות כתובה ב- C : int sys_open(const char* pathname, int flags); בתוך פונקצית ביצוע השירות נבדקת התקינות של כל פרמטר בדיקות ייחודיות בהתאם לפונקציה. למשל, בכתיבה לקובץ בודקים שפרמטר מזהה הקובץ אכן מתאים לקובץ שנפתח לכתיבה ע"י תהליך המשתמש בדיקות כלליות עבור פרמטרים מסוג מצביעים: האם הזיכרון המוצבע אכן מוכל בזיכרון של תהליך המשתמש. לדוגמה : בפונקציה sys_open נבדק הפרמטר pathname בדיקות מצביעים נערכות גם בכל פעם שפונקצית ביצוע השירות ניגשת לזיכרון תהליך המשתמש 22

קריאת מערכת ב- Linux )11( הערך המוחזר על-ידי פונקצית ביצוע השירות נמצא תמיד ברגיסטר eax ערך מוחזר זה הינו 0 או חיובי במקרה של הצלחת ביצוע השירות ערך מוחזר שלילי מציין שגיאה או תקלה בביצוע השירות. במקרה זה, קוד השגיאה הוא ערכו המוחלט של הערך המוחזר הערך המוחזר ב- eax מועבר דרך system_call() בחזרה לפונקצית המעטפת במקרה של ערך מוחזר שלילי, פונקצית המעטפת מציבה את הערך המוחלט של הערך המוחזר לתוך errno ומחזירה ערך 1- קוד הגרעין עצמו אינו ניגש כלל ל- errno 23

קריאת מערכת ב- Linux )12( )הערה: כל הסמלים בשקף זה ובשקפים הבאים נמצאים בקובץ הגרעין )arch/i386/kernel/entry.s שלבי הפעולה של :system_call() 1. שמירת כל הרגיסטרים במחסנית: system_call:.. SAVE_ALL מטרת פעולה זו היא להכין את הפרמטרים בתוך המחסנית כפי שפונקצית ביצוע השירות מצפה להם SAVE_ALL הוא מאקרו של אסמבלר שבין שאר פעולותיו, מכניס למחסנית את eax ואחריו בסדר הפוך את ששת הרגיסטרים המכילים פרמטרים ebx( מוכנס אחרון( 24

ss esp eflags cs eip orig_eax es ds eax ebp edi esi edx ecx ebx מבנה המחסנית בקריאת מערכת נשמר על ידי הקפיצה לקריאת המערכת מספר קריאת המערכת נשמר על ידי SAVE_ALL 25

קריאת מערכת ב- Linux )13( טעינת מזהה תהליך המשתמש ל- ebx : לצורך גישה לנתוני התהליך מתוך הגרעין בדיקת תקינות מספר השירות: cmpl $(NR_syscalls), %eax jb nobadsys movl $(-ENOSYS), 24(%esp) jmp ret_from_sys_call מספר השירות נבדק כנגד גודל הטבלה,.NR_syscalls אם מספר השירות חורג מהטבלה, מוחזר ערך ENOSYS ע"י הכנסתו למקום בו שמור eax במחסנית וקפיצה לסוף השגרה.2.3 26

קריאת מערכת ב- Linux )14( הפעלת פונקצית ביצוע השירות: nobadsys: call *sys_call_table(0,%eax,4) movl %eax,24(%esp) jmp ret_from_sys_call קריאה לפונקצית שירות המוצבעת ע"י הכניסה בטבלה sys_call_table שמספרה ב- eax )כפולה של 4 בתים( כתובת התחלת הפונקציה היא sys_call_table + 4 * eax הערך המוחזר ברגיסטר eax מפונקצית השירות נשמר במחסנית במקום ממנו ישוחזר ערך eax בסיום השגרה.4 27

קריאת מערכת ב- Linux )15( ret_from_sys_call:.. jmp restore_all 5. סיום השגרה: restore_all:.. iret בסיום השגרה מופעל קטע הקוד המסומן restore_all שמבצע שחזור מהמחסנית של כל הרגיסטרים שנשמרו ע"י SAVE_ALL וביניהם eax 28