450 likes | 762 Views
מערכות הפעלה. תרגול 1 - מבוא. ברוכים הבאים לקורס מערכות הפעלה!. אדמיניסטרציה מערכת ההפעלה שתודגם בקורס היא XINU : הכנה לעבודה ב- XINU הרצת ישומים תהליכים קריאות מערכת הפעלה. אדמיניסטרציה. מתרגלת: נועה פריבמן חורש תרגולים: יום ד', 12:00-14:00 יום ה', 18:00-20:00
E N D
מערכות הפעלה תרגול 1 - מבוא
ברוכים הבאים לקורס מערכות הפעלה! • אדמיניסטרציה • מערכת ההפעלה שתודגם בקורס היא XINU: • הכנה לעבודה ב-XINU • הרצת ישומים • תהליכים • קריאות מערכת הפעלה מערכות הפעלה - תרגול 1
אדמיניסטרציה • מתרגלת: נועה פריבמן חורש • תרגולים: יום ד', 12:00-14:00 יום ה', 18:00-20:00 • שעות קבלה: יום ד',10:00-11:00 (לתאם מראש במייל) • אתר הקורסhttp://sci.haifa.ac.il/courses/oscourse/: • תרגילי בית: הגשה בזוגות מערכות הפעלה - תרגול 1
איך מתקינים XINU • באתר לינק ל: - התקנת מערכת הפעלה XINU. - התקנת ערכת פיתוח Turbo C. • להוסיף מסלול TCלמשתנה סביבה PATH (למשל c:\tc\bin) מערכות הפעלה - תרגול 1
תכנית ראשונה – с.ex1 • xmain - הפונקציה הראשית ב-XINU • מה התכנית עושה? #include <conf.h> xmain() { putc(CONSOLE, ‘h’); putc(CONSOLE, ‘i’); putc(CONSOLE, ‘\n’); } מערכות הפעלה - תרגול 1
איך להריץ ex1.c? • לפתוח command line(cmd.exe) • להריץ Turbo Cכדי לקבל קובץ exe tcc -I.. ex1.c ..\xinu.lib > errs • קובץ errsמכיל את תוצאות הקומפילציה. כדי לפתוח אותו: type errs • לפתוח קובץ exeשהתקבל כדי להריץ ישום ( ex1.exeבדוגמה) • הערה: Ctrl-F1מאפשר לראות את הנתונים הפנימיים של מערכת מערכות הפעלה - תרגול 1
מערכות הפעלה – מבוא Linux Unix Novell - NetWare MS Windows Mac OS X מערכות הפעלה - תרגול 1
מערכות הפעלה – נעים להכיר! • מהי מערכת ההפעלה? • שכבת תוכנה לניהול והסתרת פרטים של חומרת המחשב. • מנהלת את משאבי המערכת ומשתפת אותם בין תהליכים, תוכניות, ומשתמשים. אפליקציה 2 אפליקציה 3 אפליקציה 4 אפליקציה 1 מערכת הפעלה Printer controller Device Disk controller CPU memory מערכות הפעלה - תרגול 1
סוגי מערכות הפעלה • עם תהליך יחיד (MS DOS) • ריבוי תהליכים (MS Windows, UNIX) • ריבוי מעבדים (HYDRA) • מערכות מבוזרות (Amoeba) • מערכות (VxWorks, Windows CE) real time מערכות הפעלה - תרגול 1
מערכות הפעלה ומבנה המחשב • התנהגות מערכת ההפעלה מוכתבת (חלקית) על-ידי החומרה שעליה היא רצה • סט פקודות, רכיבים מיוחדים • החומרה יכולה לפשט / לסבך משימות מערכת ההפעלה • מחשבים ישנים לא סיפקו תמיכה לזיכרון וירטואלי מערכות הפעלה - תרגול 1
מנגנוני חמרה לתמיכה במערכת ההפעלה • שעון חומרה • פעולות סנכרון אטומיות • פסיקות • קריאות מערכת-הפעלה • פעולות בקרת קלט / פלט • הגנת זיכרון • אופן עבודה מוּגן (protected) מערכות הפעלה - תרגול 1
רכיבי מערכת הפעלה • מנהל תהליכים • מנהל זיכרון • מנהל קלט / פלט • מנהל קבצים • הגנה • ניהול חשבונות משתמשים • ממשק משתמש (shell) זאת ועוד... • אתחול • גיבוי • ... • דפדפן? מערכות הפעלה - תרגול 1
קריאות מערכת הפעלה • קריאת מערכת הפעלה היא פונקציה המהווה ממשק בין המשתמש ושירותי מערכת ההפעלה • קריאות מערכת הפעלה מבצעות בדיקות תקינות הפרמטרים המועברים (מזהה תהליך קיים, פרמטר בתחום המותר, ועוד) מערכות הפעלה - תרגול 1
קריאות מערכת הפעלה • משתמש יכול לגשת רק לקריאות מערכת הפעלה • פונקציות פנימיות של מערכת הפעלה מוגנות מפני המשתמש תכניות משתמש קריאות מערכת הפעלה מערכת ההפעלה חומרה מערכות הפעלה - תרגול 1
קריאות מערכת הפעלה XINU • קריאות מערכת יחזירו SYSERR (ערך 1-) עבור קריאה לא תקינה • בסיום ביצוע תקין קריאות מ"ה מחזירות ערך מספרי. חלקן מחזירות OK (ערכו 1) • עבור קריאות מערכת הפעלה מובטח שביצוע בו-זמני יהיה תקין מערכות הפעלה - תרגול 1
תהליכים תהליך הוא ביצוע של תכנית • תהליכים יוצרים אשליה של הרצת מספר אפליקציות במקביל • לכל תהליך – תכנית אחת, לתכנית אחת יכולים להיות תהליכים רבים מתבצעים בו זמנית מערכות הפעלה - תרגול 1
תהליכים • לתהליך אין השתקפות בחומרה, תהליכים הם מושג הממומש בתוכנה • נקרא גם job, task, sequential process • הערה: התכניות שכתבתם עד עתה בקורסים קודמים רצו כולן כתהליכים בודדים מערכות הפעלה - תרגול 1
תהליכים • תהליכים יכולים לשתף פעולה עם תהליכים אחרים, ובכך מתאפשרת כתיבה של תכניות המורכבות מכמה תהליכים, שכל אחד מהם מבצע חלק מהעבודה • במקרים רבים קל יותר ותחזוקתי יותר לכתוב תכניות המורכבות מכמה תהליכים מאשר לכתוב תכנית בעלת תהליך יחיד המבצעת את אותה העבודה מערכות הפעלה - תרגול 1
ריבוי תהליכים תהליכים מקבילים תהליכים עוקבים A A B t A+B t A + t B B זמן ריצה קצר יותר זמן מערכות הפעלה - תרגול 1
חלוקת זמן • במערכת מרובת תהליכים פועל כל תהליך כאילו הוא יחיד במערכת, ואינו נדרש לתאם את פעולותיו עם תהליכים אחרים (אלא אם כן רצונו לתאם) • מ"ה אחראית לאפשר לכל התהליכים להתבצע, אך בכל רגע נתון, בדיוק אחד התהליכים מבוצע במעבד מערכות הפעלה - תרגול 1
חלוקת זמן תזמון בפועל אבסטרקציה A תכנית A תכנית A תכנית B 1 A 2 מחכה לקלט B מחכה למעבד מ 1 2 3 3 מחכה למעבד A 2 A מחכה לקלט 1 A 2 B 3 זמן מערכות הפעלה - תרגול 1
חלוקת זמן תהליך יכול לוותר על המעבד בכמה דרכים: • בקשות קלט/פלט בהן עליו לחכות לסיום ביצוע הבקשה • בקשה לחכות לאירוע כלשהו (למשל קבלת הודעה מתהליך אחר) • בקשה להפסיק ביצוע למשך זמן נתון (sleep) מערכת הפעלה יכולה ליזום החלפת תהליך מערכות הפעלה - תרגול 1
מ"ה ללא תהליכים (MS-DOS) יתרונות: • פשטות • תכניות יכולות לנצל את כל משאבי המחשב • תהליכים אחרים אינם מפריעים • התכניות מסתיימות בזמן הקצר ביותר • זמן הביצוע תלוי רק בתכנית עצמה • תכניות יכולות להסתמך על אי יציאתן מהמעבד מערכות הפעלה - תרגול 1
מ"ה ללא תהליכים (MS-DOS) חסרונות: • לא ניתן להשתמש במעבד ובאמצעי קלט/פלט בו זמנית בצורה יעילה • תכנית הצורכת את המעבד לפרק זמן ארוך מונעת מתכניות אחרות כל שימוש במחשב • אין תמיכה במישתמשים אינטראקטיביים • לא מאפשרות תקשורת בין תהליכים מערכות הפעלה - תרגול 1
מאפייני תהליך pid = 1215 pid = 1216 pid = 1221 • קוד התוכנית • נתונים • מספר תהליך (process id) • עדיפות • מחסנית זמן-ביצוע • program counter Open Office מחשב מסך מסך מסך מערכות הפעלה - תרגול 1
sleep wake up SLEEPING resched resched CURRENT READY SUSPENDED suspend suspend resume Create תהליך - דיאגרמת מצבים מערכות הפעלה - תרגול 1
שרשרת המצבים של תהליך דוגמה • Suspended • Ready • Current • Ready • Current • Ready • Suspended • Ready • Current • Sleep • Ready • Current • … • END התהליך נוצר, הועבר לביצוע, הושעה, הועבר לביצוע, הלך "לישון", הועבר לביצוע, הושעה... מערכות הפעלה - תרגול 1
יצירת תהליכים - create XINUתומכת בריבוי תהליכים. יצירת תהליך מתבצעת באמצעות קריאת מערכת הפעלה create сreate( <שם הפונקציה הראשית>, <גודל מחסנית לתהליך>, <עדיפות>, <שם התהליך>, <מס' פרמטרים>, <פרמ' 1>, <פרמ' 2>, …, < n פרמ' > ); מערכות הפעלה - תרגול 1
יצירת תהליכים - create • קיימים 2 קבועים: • INITSTK – גודל מחסנית של 512 בתים • INITPRIO – עדיפות 20 התהליך xmainנוצר עם גודל המחסנית והעדיפות הנ"ל • createמחזירה מזהה תהליך ייחודי (pid) עבור התהליך הנוצר • תהליך הנוצר באמצעות createיווצר במצב מושעה(SUSPENDED) מערכות הפעלה - תרגול 1
הכנסת תהליך מושעה לריצה תהליך מושעה (לדוגמא: תהליך חדש שנוצר כרגע) עובר למצבבו הוא מוכן (READY) לריצה ע"י קריאת מערכת הפעלה .resume resume ( <מזהה תהליך> ); התהליך עובר למצב READYומהרגע הזה מחכה בתור לכניסה למעבד מערכות הפעלה - תרגול 1
דוגמה 1 #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’); } מערכות הפעלה - תרגול 1
מהו הפלט של התכנית? 1 AAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBB 2 BBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAA 3 1111111111111111111111111111112222222222222222222222222222 4 2222222222222222222222222222222222221111111111111111111111 5 AAAAABBBBBBBAAAAAAAAAAAAAAAAAAABBBBAAAAAAAAAAAAAA מערכות הפעלה - תרגול 1
דוגמה 2 #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); } מערכות הפעלה - תרגול 1
השעיית תהליך ניתן להשעות תהליך מריצה באמצעות קריאת מערכת הפעלה . suspend( <מזהה תהליך> ); ניתן להשעות תהליך רק אם הוא רץ כרגע או מוכן לריצה. מערכות הפעלה - תרגול 1
סיום תהליך סיום נורמלי של תהליך מתבצע כאשר מסתיימת הפונקציה הראשית שלו. ניתן לגרום לסיום התהליך לפני כן (להרוג אותו) על ידי קריאת מ"ה kill kill( <מזהה תהליך> ); תהליך יכול להרוג את עצמו. קריאת התאבדות: kill(getpid()); getpid() – מחזיר את המזהה של התהליך מערכות הפעלה - תרגול 1
עדיפויות העדיפות מגדירה את מיקומו של התהליך בתור המתנה של CPU. ניתן לקבל עדיפות של התהליך באמצעות קריאה ל-getprio getprio( <מזהה תהליך> ); שינוי עדיפות של תהליך: chprio( ,<מזהה תהליך><עדיפות חדשה>); chprioמחזירה את העדיפות הישנה (לפני השינוי) מערכות הפעלה - תרגול 1
שינה תהליך יכול לבקש ללכת לישון לזמן קצוב. את הזמן מבטאים בשניות ניתן ללכת לישון למספר שלם של שניות בלבד. sleep( <מספר שניות שלם> ); sleep(0)גורם להחלפת תהליכים ללא כניסה למצב שינה. מערכות הפעלה - תרגול 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)); } מערכות הפעלה - תרגול 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); } מערכות הפעלה - תרגול 1
דוגמה - המשך • לתהליך counterעדיפות נמוכה. מדוע? • counterמסתיים בעת ש-procמבצעkill • procמסתיים בצורה טבעית • counter הוא משתנה משותף מערכות הפעלה - תרגול 1
בשעור הבא... • קריאות מערכת הפעלה - המשך • דוגמאות לשימוש בקריאות מערכת ההפעלה מערכות הפעלה - תרגול 1