מערכות הפעלה

Download Report

Transcript מערכות הפעלה

‫מערכות הפעלה‬
‫תרגול ‪ - 1‬מבוא‬
‫ברוכים הבאים לקורס מערכות הפעלה!‬
‫‪ ‬אדמיניסטרציה‬
‫‪ ‬מערכת ההפעלה שתודגם בקורס היא ‪:XINU‬‬
‫‪ ‬הכנה לעבודה ב‪XINU-‬‬
‫‪ ‬הרצת ישומים‬
‫‪ ‬תהליכים‬
‫‪ ‬קריאות מערכת הפעלה‬
‫‪2‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫אדמיניסטרציה‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪3‬‬
‫מתרגלת‪ :‬בלה ספקטור‬
‫תרגול‪ :‬יום א'‪12:00-14:00 ,‬‬
‫שעות קבלה‪ :‬יום א'‪( 10:00-11:00 ,‬לתאם מראש במייל)‬
‫אתר הקורס‪http://sci.haifa.ac.il/courses/os/:‬‬
‫תרגילי בית ‪:‬הגשה בזוגות‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫איך מתקינים ‪XINU‬‬
‫‪ ‬באתר לינק ל‪:‬‬
‫ התקנת מערכת הפעלה ‪.XINU‬‬‫ התקנת ערכת פיתוח ‪.Turbo C‬‬‫‪ ‬להוסיף מסלול ‪ TC‬למשתנה‬
‫סביבה ‪PATH‬‬
‫(למשל ‪)c:\tc\bin‬‬
‫‪4‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
ex1.с – ‫תכנית ראשונה‬
XINU-‫ הפונקציה הראשית ב‬- xmain 
?‫ מה התכנית עושה‬
#include <conf.h>
xmain)(
{
putc)CONSOLE, ‘h’(;
putc)CONSOLE, ‘i’(;
putc)CONSOLE, ‘\n’(;
}
15 ‫אפריל‬
1 ‫ תרגול‬- ‫מערכות הפעלה‬
5
‫איך להריץ ‪?ex1.c‬‬
‫‪‬‬
‫‪‬‬
‫לפתוח ‪)cmd.exe( command line‬‬
‫להריץ ‪ Turbo C‬כדי לקבל קובץ ‪exe‬‬
‫‪tcc -I.. ex1.c ..\xinu.lib > errs‬‬
‫‪‬‬
‫קובץ ‪ errs‬מכיל את תוצאות הקומפילציה‪ .‬כדי לפתוח אותו‪:‬‬
‫‪type errs‬‬
‫‪‬‬
‫לפתוח קובץ ‪ exe‬שהתקבל כדי להריץ ישום ( ‪ ex1.exe‬בדוגמה)‬
‫הערה‪ Ctrl-F1 :‬מאפשר לראות את הנתונים הפנימיים של מערכת‬
‫‪6‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫‪‬‬
‫אפריל ‪15‬‬
‫חלונות ב‪ - XINU-‬פתיחת חלון‬
‫;‪int win1‬‬
‫;)”‪win1 = open(CONSOLE, “#10,4:30,20”, “wht/blk‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪7‬‬
‫החלון יווצר עם מסגרת‪ .‬ניתן להשמיט את ה‪ #-‬ואז החלון יהיה ללא‬
‫מסגרת‬
‫‪ - c1,r1‬קואורדינטות של הפינה השמאלית העליונה של חלון‬
‫(‪)сolumn, row‬‬
‫‪ - c2,r2‬קואורדינטות של הפינה הימנית התחתונה‬
‫‪ – bbb/fff‬מחרוזת באורך ‪ 3‬תווים המיצגת את צבעי החלון‬
‫(‪)background/foreground‬‬
‫פונקציה ‪ open‬מחזירה ‪device descriptor‬‬
‫ניתן לפתוח עד ‪ 4‬חלונות‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫פעולות נוספות‬
‫סגירת חלון‬
‫;)‪close(win1‬‬
‫כתיבה לחלון‬
‫;(’‪putc(win1, ‘a‬‬
‫הערה‪ :‬כתיבת ‪ CONSOLE‬במקום ה‪ desc-‬תגרום‬
‫לכתיבה ישירות ל‪СONSOLE-‬‬
‫קריאה מחלון‬
‫;)‪ch = getc(win1‬‬
‫‪8‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
1‫דוגמה‬
#include <conf.h<
#include <kernel.h<
xmain)(
}
int i;
int win1;
i = 0;
win1 = open)CONSOLE, “#1,4:30,20”, “blk/wht”(;
while ( i++ < 10)
putc(win1, ‘A’(;
close(win1);
{
15 ‫אפריל‬
1 ‫ תרגול‬- ‫מערכות הפעלה‬
9
‫מערכות הפעלה – מבוא‬
Linux
Unix
Novell - NetWare
15 ‫אפריל‬
MS Windows
1 ‫ תרגול‬- ‫מערכות הפעלה‬
Mac OS X
10
‫מערכות הפעלה – נעים להכיר!‬
‫‪‬‬
‫מהי מערכת ההפעלה?‬
‫אפליקציה‬
‫‪4‬‬
‫‪ ‬שכבת תוכנה לניהול‬
‫והסתרת פרטים של‬
‫חומרת המחשב‪.‬‬
‫‪ ‬מנהלת את משאבי‬
‫המערכת ומשתפת אותם‬
‫בין תהליכים‪ ,‬תוכניות‪,‬‬
‫ומשתמשים‪.‬‬
‫‪11‬‬
‫אפליקציה‬
‫‪3‬‬
‫אפליקציה‬
‫‪2‬‬
‫אפליקציה‬
‫‪1‬‬
‫מערכת הפעלה‬
‫‪Device‬‬
‫‪Printer‬‬
‫‪controller‬‬
‫‪memory‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫‪Disk‬‬
‫‪controller‬‬
‫‪CPU‬‬
‫אפריל ‪15‬‬
‫סוגי מערכות הפעלה‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪12‬‬
‫עם תהליך יחיד )‪(MS DOS‬‬
‫ריבוי תהליכים )‪(MS Windows, UNIX‬‬
‫ריבוי מעבדים )‪(HYDRA‬‬
‫מערכות מבוזרות )‪(Amoeba‬‬
‫מערכות ‪(VxWorks, Windows CE) real time‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫מערכות הפעלה ומבנה המחשב‬
‫‪ ‬התנהגות מערכת ההפעלה מוכתבת (חלקית) על‪-‬‬
‫ידי החומרה שעליה היא רצה‬
‫‪ ‬סט פקודות‪ ,‬רכיבים מיוחדים‬
‫‪ ‬החומרה יכולה לפשט ‪ /‬לסבך משימות מערכת‬
‫ההפעלה‬
‫‪ ‬מחשבים ישנים לא סיפקו תמיכה לזיכרון וירטואלי‬
‫‪13‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫מנגנוני חמרה לתמיכה‬
‫במערכת ההפעלה‬
‫‪ ‬שעון חומרה‬
‫‪ ‬פעולות סנכרון אטומיות‬
‫‪ ‬פסיקות‬
‫‪ ‬קריאות מערכת‪-‬הפעלה‬
‫‪ ‬פעולות בקרת קלט ‪ /‬פלט‬
‫‪ ‬הגנת זיכרון‬
‫‪ ‬אופן עבודה מוּגן (‪)protected‬‬
‫‪14‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫רכיבי מערכת הפעלה‬
‫‪ ‬מנהל תהליכים‬
‫‪ ‬מנהל זיכרון‬
‫‪ ‬מנהל קלט ‪ /‬פלט‬
‫‪ ‬מנהל קבצים‬
‫‪ ‬הגנה‬
‫‪ ‬ניהול חשבונות משתמשים‬
‫‪ ‬ממשק משתמש (‪)shell‬‬
‫‪15‬‬
‫זאת ועוד‪...‬‬
‫‪ ‬אתחול‬
‫‪ ‬גיבוי‬
‫‪... ‬‬
‫‪ ‬דפדפן?‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫קריאות מערכת הפעלה‬
‫‪‬‬
‫קריאת מערכת הפעלה היא פונקציה המהווה ממשק בין‬
‫המשתמש ושירותי מערכת ההפעלה‬
‫‪‬‬
‫קריאות מערכת הפעלה מבצעות בדיקות תקינות‬
‫הפרמטרים המועברים (מזהה תהליך קיים‪ ,‬פרמטר‬
‫בתחום המותר‪ ,‬ועוד)‬
‫‪16‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫קריאות מערכת הפעלה‬
‫‪‬‬
‫משתמש יכול לגשת רק‬
‫לקריאות מערכת‬
‫הפעלה‬
‫‪‬‬
‫פונקציות פנימיות של‬
‫מערכת הפעלה מוגנות‬
‫מפני המשתמש‬
‫‪17‬‬
‫תכניות משתמש‬
‫קריאות‬
‫מערכת‬
‫הפעלה‬
‫מערכת ההפעלה‬
‫חומרה‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫קריאות מערכת הפעלה ‪XINU‬‬
‫‪‬‬
‫קריאות מערכת יחזירו ‪( SYSERR‬ערך ‪ )-1‬עבור קריאה‬
‫לא תקינה‬
‫‪‬‬
‫בסיום ביצוע תקין קריאות מ"ה מחזירות ערך מספרי‪.‬‬
‫חלקן מחזירות ‪( OK‬ערכו ‪)1‬‬
‫‪‬‬
‫עבור קריאות מערכת הפעלה מובטח שביצוע בו‪-‬זמני‬
‫יהיה תקין‬
‫‪18‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫תהליכים‬
‫תהליך הוא ביצוע של תכנית‬
‫‪ ‬תהליכים יוצרים אשליה של הרצת מספר‬
‫אפליקציות במקביל‬
‫‪ ‬לכל תהליך – תכנית אחת‪ ,‬לתכנית אחת יכולים‬
‫להיות תהליכים רבים מתבצעים בו זמנית‬
‫‪19‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫תהליכים‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪20‬‬
‫לתהליך אין השתקפות בחומרה‪ ,‬תהליכים הם מושג‬
‫הממומש בתוכנה‬
‫נקרא גם ‪job, task, sequential process‬‬
‫הערה‪ :‬התכניות שכתבתם עד עתה בקורסים קודמים‬
‫רצו כולן כתהליכים בודדים‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫תהליכים‬
‫‪‬‬
‫תהליכים יכולים לשתף פעולה עם תהליכים אחרים‪,‬‬
‫ובכך מתאפשרת כתיבה של תכניות המורכבות מכמה‬
‫תהליכים‪ ,‬שכל אחד מהם מבצע חלק מהעבודה‬
‫‪‬‬
‫במקרים רבים קל יותר ותחזוקתי יותר לכתוב תכניות‬
‫המורכבות מכמה תהליכים מאשר לכתוב תכנית בעלת‬
‫תהליך יחיד המבצעת את אותה העבודה‬
‫‪21‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫ריבוי תהליכים‬
‫תהליכים עוקבים‬
‫‪A‬‬
‫‪t A+ t B‬‬
‫‪B‬‬
‫תהליכים מקבילים‬
‫‪A‬‬
‫‪B‬‬
‫‪t A+B‬‬
‫זמן ריצה קצר יותר‬
‫זמן‬
‫‪22‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫חלוקת זמן‬
‫‪‬‬
‫במערכת מרובת תהליכים פועל כל תהליך כאילו הוא‬
‫יחיד במערכת‪ ,‬ואינו נדרש לתאם את פעולותיו עם‬
‫תהליכים אחרים (אלא אם כן רצונו לתאם)‬
‫‪‬‬
‫מ"ה אחראית לאפשר לכל התהליכים להתבצע‪ ,‬אך‬
‫בכל רגע נתון‪ ,‬בדיוק אחד התהליכים מבוצע במעבד‬
‫‪23‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫חלוקת זמן‬
‫תזמון בפועל‬
‫תכנית ‪B‬‬
‫תכנית ‪A‬‬
‫‪A‬‬
‫תכנית ‪A‬‬
‫‪2‬‬
‫‪1‬‬
‫‪B‬‬
‫‪3‬‬
‫‪A‬‬
‫אבסטרקציה‬
‫‪3‬‬
‫מחכה לקלט‬
‫‪2‬‬
‫‪B‬‬
‫‪A‬‬
‫‪A‬‬
‫‪A‬‬
‫מחכה‬
‫למעבד‬
‫‪2‬‬
‫מחכה‬
‫מ‬
‫למעבד‬
‫‪24‬‬
‫‪3‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪2‬‬
‫זמן‬
‫אפריל ‪15‬‬
‫חלוקת זמן‬
‫תהליך יכול לוותר על המעבד בכמה דרכים‪:‬‬
‫‪‬‬
‫בקשות קלט‪/‬פלט בהן עליו לחכות לסיום ביצוע הבקשה‬
‫‪‬‬
‫בקשה לחכות לאירוע כלשהו (למשל קבלת הודעה‬
‫מתהליך אחר)‬
‫בקשה להפסיק ביצוע למשך זמן נתון (‪)sleep‬‬
‫‪‬‬
‫מערכת הפעלה יכולה ליזום החלפת תהליך‬
‫‪25‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫מ"ה ללא תהליכים (‪)MS-DOS‬‬
‫יתרונות‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪26‬‬
‫פשטות‬
‫תכניות יכולות לנצל את כל משאבי המחשב‬
‫תהליכים אחרים אינם מפריעים‬
‫התכניות מסתיימות בזמן הקצר ביותר‬
‫זמן הביצוע תלוי רק בתכנית עצמה‬
‫תכניות יכולות להסתמך על אי יציאתן מהמעבד‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫מ"ה ללא תהליכים (‪)MS-DOS‬‬
‫חסרונות‪:‬‬
‫‪‬‬
‫לא ניתן להשתמש במעבד ובאמצעי קלט‪/‬פלט בו‬
‫זמנית בצורה יעילה‬
‫תכנית הצורכת את המעבד לפרק זמן ארוך מונעת‬
‫מתכניות אחרות כל שימוש במחשב‬
‫‪‬‬
‫אין תמיכה במישתמשים אינטראקטיביים‬
‫‪‬‬
‫לא מאפשרות תקשורת בין תהליכים‬
‫‪‬‬
‫‪27‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫מאפייני תהליך‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪28‬‬
‫‪pid = 1215‬‬
‫‪pid = 1216‬‬
‫‪pid = 1221‬‬
‫קוד התוכנית‬
‫נתונים‬
‫מספר תהליך (‪)process id‬‬
‫עדיפות‬
‫מחסנית זמן‪-‬ביצוע‬
‫‪program counter‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫‪Open Office‬‬
‫מחשב‬
‫מסך‬
‫מסך‬
‫מסך‬
‫אפריל ‪15‬‬
‫ דיאגרמת מצבים‬- ‫תהליך‬
sleep
wake up
SLEEPING
resched
resched
CURRENT
READY
suspend
SUSPENDED
suspend
resume
Create
15 ‫אפריל‬
1 ‫ תרגול‬- ‫מערכות הפעלה‬
29
‫שרשרת המצבים של תהליך‬
‫דוגמה‬
‫התהליך נוצר‪ ,‬הועבר לביצוע‪ ,‬הושעה‪ ,‬הועבר לביצוע‪,‬‬
‫הלך "לישון"‪ ,‬הועבר לביצוע‪ ,‬הושעה‪...‬‬
‫‪30‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫‪1. Suspended‬‬
‫‪2. Ready‬‬
‫‪3. Current‬‬
‫‪4. Ready‬‬
‫‪5. Current‬‬
‫‪6. Ready‬‬
‫‪7. Suspended‬‬
‫‪8. Ready‬‬
‫‪9. Current‬‬
‫‪10. Sleep‬‬
‫‪11. Ready‬‬
‫‪12. Current‬‬
‫… ‪13.‬‬
‫‪14. END‬‬
‫אפריל ‪15‬‬
‫יצירת תהליכים ‪create -‬‬
‫‪ XINU‬תומכת בריבוי תהליכים‪ .‬יצירת תהליך מתבצעת באמצעות‬
‫קריאת מערכת הפעלה ‪create‬‬
‫‪>,‬שם הפונקציה הראשית< (‪сreate‬‬
‫‪>,‬גודל מחסנית לתהליך<‬
‫‪>,‬עדיפות<‬
‫‪>,‬שם התהליך<‬
‫;) >פרמ' ‪<, …, < n‬פרמ' ‪>, <2‬פרמ' ‪>, <1‬מס' פרמטרים<‬
‫‪31‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫יצירת תהליכים ‪create -‬‬
‫‪‬‬
‫קיימים ‪ 2‬קבועים‪:‬‬
‫‪ – INITSTK ‬גודל מחסנית של ‪ 512‬בתים‬
‫‪ – INITPRIO ‬עדיפות ‪20‬‬
‫התהליך ‪ xmain‬נוצר עם גודל המחסנית והעדיפות הנ"ל‬
‫‪‬‬
‫‪‬‬
‫‪ create‬מחזירה מזהה תהליך ייחודי (‪ )pid‬עבור התהליך‬
‫הנוצר‬
‫תהליך הנוצר באמצעות ‪ create‬יווצר במצב מושעה‬
‫(‪)SUSPENDED‬‬
‫‪32‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫הכנסת תהליך מושעה לריצה‬
‫תהליך מושעה (לדוגמא‪ :‬תהליך חדש שנוצר כרגע)‬
‫עובר למצב בו הוא מוכן (‪ )READY‬לריצה ע"י קריאת‬
‫מערכת הפעלה ‪.resume‬‬
‫;) >מזהה תהליך< ( ‪resume‬‬
‫התהליך עובר למצב ‪ READY‬ומהרגע הזה מחכה‬
‫בתור לכניסה למעבד‬
‫‪33‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
2 ‫דוגמא‬
#include <conf.h>
#include <kernel.h>
xmain()
{
int prA(), prB();
resume( create)prA, INITSTK, INITPRIO, “proc 1”, 0) );
resume( create)prB, INITSTK, INITPRIO, “proc 2”, 0) );
}
prA()
{
while(1)
putc)CONSOLE, ‘A’(;
}
prB()
{
while(1)
putc)CONSOLE, ‘B’(;
}
15 ‫אפריל‬
1 ‫ תרגול‬- ‫מערכות הפעלה‬
34
?‫מהו הפלט של התכנית‬
1
AAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBB
2
BBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAA
3
1111111111111111111111111111112222222222222222222222222222
4
2222222222222222222222222222222222221111111111111111111111
5
AAAAABBBBBBBAAAAAAAAAAAAAAAAAAABBBBAAAAAAAAAAAAAA
15 ‫אפריל‬
1 ‫ תרגול‬- ‫מערכות הפעלה‬
35
3 ‫דוגמא‬
#include <conf.h>
#include <kernel.h>
xmain()
{
int prnter();
resume( create)prnter, INITSTK, INITPRIO, “proc 1”, 1, ‘A’) );
resume( create)prnter, INITSTK, INITPRIO, “proc 2”, 1, ‘B’) );
}
prnter(int ch)
{
while(1)
putc(CONSOLE, ch);
}
15 ‫אפריל‬
1 ‫ תרגול‬- ‫מערכות הפעלה‬
36
‫השעיית תהליך‬
‫ניתן להשעות תהליך מריצה באמצעות קריאת מערכת‬
‫הפעלה ‪.‬‬
‫;) >מזהה תהליך< (‪suspend‬‬
‫ניתן להשעות תהליך רק אם הוא רץ כרגע או מוכן‬
‫לריצה‪.‬‬
‫‪37‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫סיום תהליך‬
‫סיום נורמלי של תהליך מתבצע כאשר מסתיימת‬
‫הפונקציה הראשית שלו‪.‬‬
‫ניתן לגרום לסיום התהליך לפני כן (להרוג אותו) על ידי‬
‫קריאת מ"ה ‪kill‬‬
‫;) >מזהה תהליך< (‪kill‬‬
‫תהליך יכול להרוג את עצמו‪ .‬קריאת התאבדות‪:‬‬
‫;))(‪kill(getpid‬‬
‫)(‪ – getpid‬מחזיר את המזהה של התהליך‬
‫‪38‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫עדיפויות‬
‫העדיפות מגדירה את מיקומו של התהליך בתור המתנה‬
‫של ‪ .CPU‬ניתן לקבל עדיפות של התהליך באמצעות‬
‫קריאה ל‪getprio-‬‬
‫;) <מזהה תהליך< (‪getprio‬‬
‫שינוי עדיפות של תהליך‪:‬‬
‫;)<עדיפות חדשה< ‪<,‬מזהה תהליך< (‪chprio‬‬
‫‪ chprio‬מחזירה את העדיפות הישנה (לפני השינוי)‬
‫‪39‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫שינה‬
‫תהליך יכול לבקש ללכת לישון לזמן קצוב‪.‬‬
‫את הזמן מבטאים בשניות‬
‫ניתן ללכת לישון למספר שלם של שניות בלבד‪.‬‬
‫;) >מספר שניות שלם< (‪sleep‬‬
‫)‪ sleep(0‬גורם להחלפת תהליכים ללא כניסה למצב‬
‫שינה‪.‬‬
‫‪40‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫ דוגמה‬- ‫שינה‬
#include <conf.h>
#include <kernel.h>
long counter; /* global shared counter */
xmain()
{
int proc(int), count_proc();
int pid;
counter = 0;
pid = create(count_proc, INITSTK, INITPRIO-1, “counter process”, 0);
resume( create)proc, INITSTK, INITPRIO, “my process”, 1, pid));
}
15 ‫אפריל‬
1 ‫ תרגול‬- ‫מערכות הפעלה‬
41
‫ המשך‬- ‫דוגמה‬
/* counter – increase global counter */
count_proc()
{
while(1)
counter++;
}
/* proc - wake up counting process and go to sleep, print counter when waked up */
proc(int other_id)
{
printf)“going to sleep for 10 seconds”(;
resume(other_proc); /* let counter process to run */
sleep(10);
suspend(other_proc); /* stop counter process */
printf)“while I was sleeping other process increased the counter %d times”, counter(;
kill(other_proc);
}
15 ‫אפריל‬
1 ‫ תרגול‬- ‫מערכות הפעלה‬
42
‫דוגמה ‪ -‬המשך‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪43‬‬
‫לתהליך ‪ counter‬עדיפות נמוכה‪ .‬מדוע?‬
‫‪ counter‬מסתיים בעת ש‪ proc-‬מבצע ‪kill‬‬
‫‪ proc‬מסתיים בצורה טבעית‬
‫‪ counter‬הוא משתנה משותף‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫בשעור הבא‪...‬‬
‫‪ ‬קריאות מערכת הפעלה ‪ -‬המשך‬
‫‪ ‬דוגמאות לשימוש בקריאות מערכת ההפעלה‬
‫‪44‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬
‫‪45‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪1‬‬
‫אפריל ‪15‬‬