אוקטובר מבנה מערכות הפעלה אוקטובר אסף שוסטר שקפים ע"פ אלן אזגורי/חגית עטיה
אוקטובר עמוד אדמיניסטרציה מתרגלים –ארז חדד (אחראי), רן, אלינה, נלה שעות קבלה –יום ד' – 14:30-15:30 קורס קדם –מבוא למערכות הפעלה חוברת הקורס – בסיס בלבד, הדפיסו שקפים!
אוקטובר עמוד אדמיניסטרציה (המשך) מבנה ציון –תרגילים יבשים 3x4% –תרגילים רטובים 2x6% –בחינה סופית 76% –נדרש ציון עובר (55>) בכל תרגיל –ציוני התרגילים משמשים כמגן בלבד –יש לעיין בתקנות הגשת תרגילים באתר הקורס
אוקטובר עמוד מבוא – למה עוד קורס במע' הפעלה? עקרונות מע' הפעלה מהווים בסיס למספר רב של מערכות –מערכות משובצות מחשב TV Set-Top Box, מע' אחסון נתונים,... –מערכות זמן-אמת (soft or hard) מע' אוויוניקה,... –סביבות תכנות Java Virtual Machine –Grid Computing
אוקטובר עמוד לעומת הקורס "מבוא למע' הפעלה" מבט השוואתי / ביקורתי –בין מספר מע' הפעלה התיחסות למדדי ביצוע –תפוקה ( throughput ), זמן ביצוע ( latency ), ניצולת ( efficiency ) יותר תיאורטי –השוואת אלגוריתמים נושאים מתקדמים –מע' הפעלה מבוזרות –מע' קבצים מקביליות –...
אוקטובר עמוד מדוע מערכות הפעלה? משאבים קיימים כח חישוב (מעבד) –ביצוע סידרתי של פקודות, מס' משתנה של מעבדים זיכרון –משאב סופי מוגבל קלט/פלט, למשל דיסקים (אחסון נתונים) –מערך גדול מאוד של בתים רשת –תשתיות שונות, עם הבטחות שונות של זמן, אמינות וכד'
אוקטובר עמוד מדוע מערכות הפעלה? הפשטת משאבים כח חישוב –לכל משתמש ו/או אפליקציה, מעבד "פרטי" זיכרון –לכל תהליך זיכרון פרטי (גדול יותר מהמשאב הפיסי) דיסקים (אחסון נתונים) –מדריכים, מספר שרירותי של קבצים "אינסופיים" רשת –ערוץ "פרטי" בין שני תהליכים, הבטחת סדר, אמינות
אוקטובר עמוד הפשטת משאבים (המשך) מחיר:ביצועים, ניצולת כח חישוב –זימון תהליכים זיכרון –ניהול זיכרון וירטואלי דיסקים (אחסון נתונים) –ניהול מע' קבצים, זמן גישה,... רשת –headers, יתירות, המרת פרוטוקולים
אוקטובר עמוד הפשטת משאבים (המשך)... אבל זה כדאי... סדר, מודולריות ניצולת, ניהול יעיל של משאבים –מהי ניצולת המעבד במחשב אישי? הגנה –בין משתמשים, בין תהליכים הסתרת תקלות –סקטור מקולקל בדיסק, איבוד מנות תקשורת הבטחת מידע …
אוקטובר עמוד מערכות הפעלה הפשטת משאבים כסל שרותים זיכרון –זיכרון וירטואלי, הקצאת זיכרון, איסוף אשפה מע' קבצים –ניהול קבצים, ספריות, יחידות אחסון רשתות תקשורת –תקשורת בין קצוות –ניצול משאבים מרוחקים מקביליות –תהליכים וחוטים תיאום –Semaphores, מנעולים קלט/פלט –הפשטה ע"י Device Drivers
אוקטובר עמוד היסטוריה חומרה יקרה ואיטית, כח-אדם זול –Batch jobs, ניצול החומרה 24x7: IBM S/360 חומרה יקרה ומהירה, כח-אדם זול –Interactive time-sharing: Unix, TSO חומרה זולה ואיטית, כח-אדם יקר –מחשב אישי לכל משתמש: MS-DOS חומרה זולה מאוד, כח חישוב רב –ריבוי משימות: Windows NT, OS/2, –שיתוף משאבים בסיסי: דיסקים, מדפסות,... רשתות מהירות –הרשת היא המחשב: Grid Computing
אוקטובר תקשורת בין תהליכים 1. ניהול תהליכים (חזרה) Process Management 2. תקשורת בין תהליכים (העברת הודעות) Interprocess communication (message passing)
אוקטובר עמוד מבוא לניהול תהליכים תהליכים מאפשרים הפרדה נקיה בין משימות שמתבצעות "בו-זמנית" –ביצוע סדרתי של פקודות –מצב תהליך משתנה ומשפיע על ביצוע התכנית מצב כולל: קוד, רגיסטרים, זיכרון, רגיסטר בקרה, מצב קבצים פתוחים (מיקום), וכו' תהליך לעומת תוכנית –תוכנית היא חלק ממצב התהליך –תוכנית יכולה ליצר מספר תהליכים
אוקטובר עמוד ביצוע תהליכים – דוגמא “vi myfile.txt” Keyboard Device Driver –אוגר ב-buffer את התווים שמתקבלים, עד להקשת “Enter” Command Line Interpreter –מיצר תהליך חדש (קריאה ל-fork) File Manager –מזהה גישה לקובץ “vi” –פונה דרך ה-Disk Device Driver לדיסק כדי להביא את הקובץ לזיכרון Loader –מאתחל את מצב התהליך, ומעביר לו ארגומנטים (מחרוזת “myfile.txt ”)
אוקטובר עמוד ביצוע תהליכים – דוגמא “vi myfile.txt” (המשך) Memory Manager –מקצה מקום לקובץ ומעדכן את טבלאות המיפוי של הזיכרון Process Manager –התהליך מסומן כמוכן לביצוע (Ready) Scheduler –עם הזמן, התהליך נבחר לביצוע ומקבל את המעבד File Manager –פותח וטוען לזיכרון את תוכן הקובץ “myfile.txt” בשיתוף עם ה-Memory Manager
אוקטובר עמוד מעקב אחר תהליכים תזמון תהליכים –מתבצע ע"י מערכת ההפעלה –מערכת ההפעלה מבטיחה הוגנות טבלת תהליכים –מכילה Process Control Block עבור כל תהליך משגר (Dispatcher) הוא לולאה –מקבל שליטה; בוחר תהליך לביצוע; משגר את תהליך; מקבל שליטה;... –בהמשך נראה איך נבחר תהליך איך תהליכים מתקשרים זה לזה Process State Registers Memory Limits File Descriptor Table Priority Program Counter
אוקטובר עמוד אופן פעולה כפול (UNIX) Dual Mode Operation תהליך יכול להימצא באחד משני מצבים –גרעין (Kernel Mode) עם זכויות יתר (Privileged Mode), למשל גישה ישירה לקלט/פלט הקוד והנתונים של הגרעין נמצאים כל הזמן בזיכרון (non-pageable) מתבצע בהקשר של תהליך המשתמש –משתמש (User Mode) עם זכויות מוגבלות, למשל ללא גישה לכל הזיכרון או התקני קלט/פלט מעבר ממשתמש לגרעין – נעשה ע"י קריאת מערכת (System Call)
אוקטובר עמוד אופן פעולה כפול (UNIX) איזורי זיכרון מרחב הכתובות של תהליך מחולק ל- –User Space ניתן לגישה כל הזמן –Kernel Space ניתן לגישה רק כאשר התהליך נמצא ב- Kernel Mode טבלאות ניהול הזיכרון לא חייבות להימצא בזיכרון כל הזמן (Memory Resident) Virtual Address Page table Address 0x0 0x1000 0x2000 0x3000 Process Page Tables Kernel Page Tables
אוקטובר עמוד אופן פעולה כפול (UNIX) קריאות מערכת (System Calls) קריאות מערכת מוגדרות כספריה של פונקציות “C” כאשר יש קריאת מערכת מתבצע Operating System Trap –העתקת פרמטרים ל- Kernel Space –שמירת מצב התהליך –מעבר ל- Kernel Mode –קריאה לפונקציה המתאימה בספריה Open() Read() Write() Close() Fork() Wait() Malloc() Free() Lock() …
אוקטובר עמוד תקשורת בין תהליכים מטרה –העברת מידע –תיאום כיצד –באמצעות pipes ו- signals (תיסקר בתרגול) –באמצעות זיכרון משותף (shared memory) –באמצעות העברת הודעות (message passing) –תקשורת ישירה ע"י זיהוי מפורש של התהליכים Send / Receive
אוקטובר עמוד בעית היצרן / צרכן Producer/Consumer תהליך היצרן מכין מידע הנצרך ע"י הצרכן –תקשורת סימטרית שני התהליכים מזהים זה את זה –תקשורת אסימטרית שליחת הודעה לתהליך ספציפי קבלת הודעה מתהליך כלשהו repeat nextp = new item; send(consumer, nextp); until false; repeat receive( producer, nextp); consume nextp; until false; producer: consumer: P1: send(Q, id, msg);P2: send(Q, id, msg); Q: receive(id, msg);
אוקטובר עמוד תיבות דואר Mailboxes מאפשרות תקשורת עקיפה –זוג תהליכים יכול להתקשר דרך כמה תיבות-דואר –כמה תהליכים יכולים לגשת לאותה תיבה –אם כמה תהליכים מתחרים, מי זוכה? send(mb, msg) receive(mb, msg)
אוקטובר עמוד תיבות דואר Mailboxes תיבת-דואר בבעלות תהליך –רק התהליך יכול לגשת לתיבה –כאשר התהליך מסתיים, התיבה נעלמת תיבת-דואר בבעלות המערכת –יש פקודות ליצור/להשמיד אותה, ולשלוח/לקבל הודעות –התהליך היוצר מקבל בעלות והרשאת קריאה –ניתן להעביר בעלות, להעניק זכויות קריאה/כתיבה למשל בעזרת קריאות מערכת ו/או יצירת תהליך בן –במימושים מסוימים, כאשר מסתיימים כל התהליכים המשתמשים, מערכת ההפעלה משמידה אותה (למשל כאשר use-count=0)
אוקטובר עמוד חוצצים Buffers הגבלה על מספר ההודעות –קיבולת אפס תקשורת סינכרונית חוסמת עם Rendez-vous למשל Remote Procedure Call –קיבולת חסומה השולח נחסם כאשר החוצץ מלא –קיבולת אינסופית השולח לא נחסם –בתקשורת אסינכרונית, מתי ההודעה מגיעה למקבל? אפשרויות: שליחת אישור (ack) – לפעמים כולל זיהוי המקבל } תקשורת אסינכרונית
אוקטובר עמוד טיפול בחריגים כאשר תהליך מסתיים, יתכן... –שתהליך אחר מחכה (או יחכה) להודעה ממנו –שישנן הודעות שנשלחו אליו שלא נקראו הודעות אבודות –למשל בגלל שחוצץ התמלא –המערכת או השולח יכולים לשלוח אותן מחדש למשל, זיהוי ע"י time-out הודעות משובשות –למשל בגלל רעש בקו –זיהוי ע"י קודים (checksum, message digest)