מערכות הפעלה תרגול 1 - מבוא
ברוכים הבאים לקורס מערכות הפעלה! אדמיניסטרציה מערכת ההפעלה שתודגם בקורס היא XINU: הכנה לעבודה ב-XINU הרצת ישומים תהליכים קריאות מערכת הפעלה דצמבר 18 מערכות הפעלה - תרגול 1
אדמיניסטרציה מתרגלת: בלה ספקטור תרגול: יום ה' 16:00-18:00 שעות קבלה: טרם הוחלט (לתאם מראש במייל) אתר הקורס: http://math.haifa.ac.il/specktor_bella תרגילי בית: הגשה בזוגות דצמבר 18 מערכות הפעלה - תרגול 1
איך מתקינים XINU להתקין מערכת הפעלה: http://cs.haifa.ac.il/courses/OS/xinu4win.exe להתקין ערכת פיתוח Turbo C: http://cs.haifa.ac.il/courses/OS/TC.exe להוסיף מסלול TC למשתנה סביבה PATH (למשל c:\tc\bin) דצמבר 18 מערכות הפעלה - תרגול 1
תכנית ראשונה – с.ex1 xmain - הפונקציה הראשית ב-XINU מה התכנית עושה? #include <conf.h> xmain() { putc(CONSOLE, ‘h’); putc(CONSOLE, ‘i’); putc(CONSOLE, ‘\n’); } דצמבר 18 מערכות הפעלה - תרגול 1
tcc -I.. ex1.c ..\xinu.lib > errs לפתוח command line(cmd.exe) להריץ Turbo C כדי לקבל קובץ exe tcc -I.. ex1.c ..\xinu.lib > errs קובץ errs מכיל את תוצאות הקומפילציה. כדי לפתוח אותו: type errs לפתוח קובץ exeשהתקבל כדי להריץ ישום ( ex1.exe בדוגמה) הערה: Ctrl-F1 מאפשר לראות את הנתונים הפנימיים של מערכת דצמבר 18 מערכות הפעלה - תרגול 1
חלונות ב-XINU - פתיחת חלון int win1; win1 = open(CONSOLE, “#10,4:30,20”, “wht/blk”); החלון יווצר עם מסגרת. ניתן להשמיט את ה-# ואז החלון יהיה ללא מסגרת - c1,r1קואורדינטות של הפינה השמאלית העליונה של חלון (сolumn, row) c2,r2 - קואורדינטות של הפינה הימנית התחתונה bbb/fff – מחרוזת באורך 3 תווים המיצגת את צבעי החלון (background/foreground) פונקציה open מחזירה device descriptor ניתן לפתוח עד 4 חלונות דצמבר 18 מערכות הפעלה - תרגול 1
פעולות נוספות סגירת חלון close(win1); כתיבה לחלון putc(win1, ‘a’); הערה: כתיבת CONSOLE במקום ה-desc תגרום לכתיבה ישירות ל-СONSOLE קריאה מחלון ch = getc(win1); דצמבר 18 מערכות הפעלה - תרגול 1
דוגמה 1 #include <kernel.h< xmain() } int i; int win1; i = 0; #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); { דצמבר 18 מערכות הפעלה - תרגול 1
מערכות הפעלה – מבוא Linux Unix Novell - NetWare MS Windows Mac OS X דצמבר 18 מערכות הפעלה - תרגול 1
מערכות הפעלה – נעים להכיר! מהי מערכת ההפעלה? שכבת תוכנה לניהול והסתרת פרטים של חומרת המחשב. מנהלת את משאבי המערכת ומשתפת אותם בין תהליכים, תוכניות, ומשתמשים. אפליקציה 1 אפליקציה 2 אפליקציה 3 אפליקציה 4 מערכת הפעלה Disk controller Printer controller Device CPU memory דצמבר 18 מערכות הפעלה - תרגול 1
סוגי מערכות הפעלה עם תהליך יחיד (MS DOS) ריבוי תהליכים (MS Windows, UNIX) ריבוי מעבדים (HYDRA) מערכות מבוזרות (Amoeba) מערכות (VxWorks, Windows CE) real time דצמבר 18 מערכות הפעלה - תרגול 1
מערכות הפעלה ומבנה המחשב התנהגות מערכת ההפעלה מוכתבת (חלקית) על-ידי החומרה שעליה היא רצה סט פקודות, רכיבים מיוחדים החומרה יכולה לפשט / לסבך משימות מערכת ההפעלה מחשבים ישנים לא סיפקו תמיכה לזיכרון וירטואלי דצמבר 18 מערכות הפעלה - תרגול 1
מנגנוני חמרה לתמיכה במערכת ההפעלה מנגנוני חמרה לתמיכה במערכת ההפעלה שעון חומרה פעולות סנכרון אטומיות פסיקות קריאות מערכת-הפעלה פעולות בקרת קלט / פלט הגנת זיכרון אופן עבודה מוּגן (protected) דצמבר 18 מערכות הפעלה - תרגול 1
רכיבי מערכת הפעלה זאת ועוד... מנהל תהליכים אתחול מנהל זיכרון גיבוי מנהל קלט / פלט מנהל קבצים הגנה ניהול חשבונות משתמשים ממשק משתמש (shell) זאת ועוד... אתחול גיבוי ... דפדפן? דצמבר 18 מערכות הפעלה - תרגול 1
קריאות מערכת הפעלה קריאת מערכת הפעלה היא פונקציה המהווה ממשק בין המשתמש ושירותי מערכת ההפעלה קריאות מערכת הפעלה מבצעות בדיקות תקינות הפרמטרים המועברים (מזהה תהליך קיים, פרמטר בתחום המותר, ועוד) דצמבר 18 מערכות הפעלה - תרגול 1
קריאות מערכת הפעלה משתמש יכול לגשת רק לקריאות מערכת הפעלה פונקציות פנימיות של מערכת הפעלה מוגנות מפני המשתמש תכניות משתמש קריאות מערכת הפעלה מערכת ההפעלה חומרה דצמבר 18 מערכות הפעלה - תרגול 1
קריאות מערכת הפעלה XINU קריאות מערכת יחזירו SYSERR (ערך 1-) עבור קריאה לא תקינה בסיום ביצוע תקין קריאות מ"ה מחזירות ערך מספרי. חלקן מחזירות OK (ערכו 1) עבור קריאות מערכת הפעלה מובטח שביצוע בו-זמני יהיה תקין דצמבר 18 מערכות הפעלה - תרגול 1
תהליכים תהליך הוא ביצוע של תכנית תהליכים יוצרים אשליה של הרצת מספר אפליקציות במקביל לכל תהליך – תכנית אחת, לתכנית אחת יכולים להיות תהליכים רבים מתבצעים בו זמנית דצמבר 18 מערכות הפעלה - תרגול 1
תהליכים לתהליך אין השתקפות בחומרה, תהליכים הם מושג הממומש בתוכנה נקרא גם job, task, sequential process הערה: התכניות שכתבתם עד עתה בקורסים קודמים רצו כולן כתהליכים בודדים דצמבר 18 מערכות הפעלה - תרגול 1
תהליכים תהליכים יכולים לשתף פעולה עם תהליכים אחרים, ובכך מתאפשרת כתיבה של תכניות המורכבות מכמה תהליכים, שכל אחד מהם מבצע חלק מהעבודה במקרים רבים קל יותר ותחזוקתי יותר לכתוב תכניות המורכבות מכמה תהליכים מאשר לכתוב תכנית בעלת תהליך יחיד המבצעת את אותה העבודה דצמבר 18 מערכות הפעלה - תרגול 1
ריבוי תהליכים t A+B t A + t B תהליכים מקבילים תהליכים עוקבים A A B B זמן ריצה קצר יותר זמן דצמבר 18 מערכות הפעלה - תרגול 1
חלוקת זמן במערכת מרובת תהליכים פועל כל תהליך כאילו הוא יחיד במערכת, ואינו נדרש לתאם את פעולותיו עם תהליכים אחרים (אלא אם כן רצונו לתאם) מ"ה אחראית לאפשר לכל התהליכים להתבצע, אך בכל רגע נתון, בדיוק אחד התהליכים מבוצע במעבד דצמבר 18 מערכות הפעלה - תרגול 1
חלוקת זמן תזמון בפועל אבסטרקציה A תכנית A תכנית A תכנית B 1 A מחכה לקלט 2 מחכה למעבד מ B 1 2 3 3 מחכה למעבד A 2 A 1 A 2 B 3 זמן דצמבר 18 מערכות הפעלה - תרגול 1
חלוקת זמן תהליך יכול לוותר על המעבד בכמה דרכים: בקשות קלט/פלט בהן עליו לחכות לסיום ביצוע הבקשה בקשה לחכות לאירוע כלשהו (למשל קבלת הודעה מתהליך אחר) בקשה להפסיק ביצוע למשך זמן נתון (sleep) מערכת הפעלה יכולה ליזום החלפת תהליך דצמבר 18 מערכות הפעלה - תרגול 1
מ"ה ללא תהליכים (MS-DOS) יתרונות: פשטות תכניות יכולות לנצל את כל משאבי המחשב תהליכים אחרים אינם מפריעים התכניות מסתיימות בזמן הקצר ביותר זמן הביצוע תלוי רק בתכנית עצמה תכניות יכולות להסתמך על אי יציאתן מהמעבד דצמבר 18 מערכות הפעלה - תרגול 1
מ"ה ללא תהליכים (MS-DOS) חסרונות: לא ניתן להשתמש במעבד ובאמצעי קלט/פלט בו זמנית בצורה יעילה תכנית הצורכת את המעבד לפרק זמן ארוך מונעת מתכניות אחרות כל שימוש במחשב אין תמיכה במישתמשים אינטראקטיביים לא מאפשרות תקשורת בין תהליכים דצמבר 18 מערכות הפעלה - תרגול 1
מאפייני תהליך קוד התוכנית נתונים מספר תהליך (process id) עדיפות pid = 1215 pid = 1216 pid = 1221 קוד התוכנית נתונים מספר תהליך (process id) עדיפות מחסנית זמן-ביצוע program counter Open Office מחשב מסך מסך מסך דצמבר 18 מערכות הפעלה - תרגול 1
תהליך - דיאגרמת מצבים wake up sleep SLEEPING resched CURRENT READY SUSPENDED CURRENT READY SLEEPING Create suspend resume resched sleep wake up דצמבר 18 מערכות הפעלה - תרגול 1
שרשרת המצבים של תהליך דוגמה שרשרת המצבים של תהליך דוגמה Suspended Ready Current Sleep … END התהליך נוצר, הועבר לביצוע, הושעה, הועבר לביצוע, הלך "לישון", הועבר לביצוע, הושעה... דצמבר 18 מערכות הפעלה - תרגול 1
יצירת תהליכים - create XINU תומכת בריבוי תהליכים. יצירת תהליך מתבצעת באמצעות קריאת מערכת הפעלה create сreate( <שם הפונקציה הראשית>, <גודל מחסנית לתהליך>, <עדיפות>, <שם התהליך>, <מס' פרמטרים>, <פרמ' 1>, <פרמ' 2>, …, < n פרמ' > ); דצמבר 18 מערכות הפעלה - תרגול 1
יצירת תהליכים - create קיימים 2 קבועים: INITSTK – גודל מחסנית של 512 בתים INITPRIO – עדיפות 20 התהליך xmain נוצר עם גודל המחסנית והעדיפות הנ"ל createמחזירה מזהה תהליך ייחודי (pid) עבור התהליך הנוצר תהליך הנוצר באמצעות createיווצר במצב מושעה (SUSPENDED) דצמבר 18 מערכות הפעלה - תרגול 1
הכנסת תהליך מושעה לריצה תהליך מושעה (לדוגמא: תהליך חדש שנוצר כרגע) עובר למצב בו הוא מוכן (READY) לריצה ע"י קריאת מערכת הפעלה .resume resume ( <מזהה תהליך> ); התהליך עובר למצב READY ומהרגע הזה מחכה בתור לכניסה למעבד דצמבר 18 מערכות הפעלה - תרגול 1
דוגמא 2 xmain() { int prA(), prB(); דוגמא 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() putc(CONSOLE, ‘B’); דצמבר 18 מערכות הפעלה - תרגול 1
מהו הפלט של התכנית? 1 AAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBB 2 BBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAA 3 1111111111111111111111111111112222222222222222222222222222 4 2222222222222222222222222222222222221111111111111111111111 5 AAAAABBBBBBBAAAAAAAAAAAAAAAAAAABBBBAAAAAAAAAAAAAA דצמבר 18 מערכות הפעלה - תרגול 1
דוגמא 3 #include <conf.h> #include <kernel.h> xmain() { דוגמא 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); דצמבר 18 מערכות הפעלה - תרגול 1
השעיית תהליך ניתן להשעות תהליך מריצה באמצעות קריאת מערכת הפעלה . suspend( <מזהה תהליך> ); ניתן להשעות תהליך רק אם הוא רץ כרגע או מוכן לריצה. דצמבר 18 מערכות הפעלה - תרגול 1
סיום תהליך סיום נורמלי של תהליך מתבצע כאשר מסתיימת הפונקציה הראשית שלו. ניתן לגרום לסיום התהליך לפני כן (להרוג אותו) על ידי קריאת מ"ה kill kill( <מזהה תהליך> ); תהליך יכול להרוג את עצמו. קריאת התאבדות: kill(getpid()); getpid() – מחזיר את המזהה של התהליך דצמבר 18 מערכות הפעלה - תרגול 1
עדיפויות העדיפות מגדירה את מיקומו של התהליך בתור המתנה של CPU. ניתן לקבל עדיפות של התהליך באמצעות קריאה ל-getprio getprio( <מזהה תהליך> ); שינוי עדיפות של תהליך: chprio( ,<מזהה תהליך> <עדיפות חדשה>); chprio מחזירה את העדיפות הישנה (לפני השינוי) דצמבר 18 מערכות הפעלה - תרגול 1
שינה תהליך יכול לבקש ללכת לישון לזמן קצוב. את הזמן מבטאים בשניות ניתן ללכת לישון למספר שלם של שניות בלבד. sleep( <מספר שניות שלם> ); sleep(0) גורם להחלפת תהליכים ללא כניסה למצב שינה. דצמבר 18 מערכות הפעלה - תרגול 1
שינה - דוגמה #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)); } דצמבר 18 מערכות הפעלה - תרגול 1
דוגמה - המשך /* 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); דצמבר 18 מערכות הפעלה - תרגול 1
דוגמה - המשך לתהליך counter עדיפות נמוכה. מדוע? counter מסתיים בעת ש-proc מבצע kill proc מסתיים בצורה טבעית counter הוא משתנה משותף דצמבר 18 מערכות הפעלה - תרגול 1
בשעור הבא... קריאות מערכת הפעלה - המשך דוגמאות לשימוש בקריאות מערכת ההפעלה דצמבר 18 מערכות הפעלה - תרגול 1
דצמבר 18 מערכות הפעלה - תרגול 1