1 / 44

מערכות הפעלה

מערכות הפעלה. Tutorial 10 – Processor Architecture and Protection. מה בתכנית?. הקדמה למנגנוני הגנה רמות פריבילגיה מיעון וירטואלי זיכרון וירטואלי - דיפדוף. מדוע צריך הגנה?. תוכנית אפליקציה עלולה לחבל במערכת הפעלה או תוכנית אפליקציה אחרת.

tommy
Télécharger la présentation

מערכות הפעלה

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. מערכות הפעלה Tutorial 10 – Processor Architecture and Protection

  2. מה בתכנית? • הקדמהלמנגנוניהגנה • רמות פריבילגיה • מיעוןוירטואלי • זיכרון וירטואלי - דיפדוף מערכות הפעלה - תרגול 10

  3. מדוע צריך הגנה? תוכנית אפליקציה עלולה לחבל במערכת הפעלה או תוכנית אפליקציה אחרת. למשל, ע”י גישה לשטחי זיכרון של מערכת הפעלה, ביטול הפסיקות ועוד. מערכות הפעלה - תרגול 10

  4. מה קורה בפועל במערכות הפעלה? מאז DOS כל מערכות ההפעלה מוגנות. המשמעות: מערכת ההפעלה דואגת להעביר את המחשב למצב מוגן ולנצל תכונות של מצב זה לשמירה על תקינות התפקוד של מערכת ההפעלה. מערכות הפעלה - תרגול 10

  5. מנגנוני הגנה – שלושה עיקריים: 1. מנגנון הפסיקות 2. מנגנון רמות הפריווילגיה – פקודות מיוחסות 2. מניעת שימוש בפקודות מסוכנות כמו CLI, HLT... 1. אמצעי המאפשר לקחת חזרה את השליטה של על ה-CPU מערכות הפעלה - תרגול 10

  6. 3. מנגנון המיעון הוירטואלי המרה לכתובת האמיתית. virtual addressing - תחת מנגנון המיעון הוירטואלי ערכי הפויינטרים הם כתובות לוגיות ולא כתובות פיזיות. - מערכת ההפעלה מתחזקת טבלאות שבן מצויינות, בין היתר,כתובות פיזיות של סגמנטים. 3. שליטה על הכתובות בזיכרון שמהן תוכניות יכולות לקרוא או לכתוב מערכות הפעלה - תרגול 10

  7. איך זה ממומש? בחומרה ובתוכנה החומרה מבצעת הליך ידוע וצפוי מראש על פי פרמטרים שהיא מוצאת באוגרים מיוחדים ובזכרון המוצבים שם על ידי התוכנה. ההליך שהחומרה מבצעת אינו תלוי במערכת הפעלה , אבל הפרמטרים שהוא פועל עליהם כן. לכן, איכותה של ההגנה נקבעת על ידי איכות התוכנה. בד"כ הגרעין של מערכת ההפעלה הוא האחראי ליישום של מנגנון ההגנה. מערכות הפעלה - תרגול 10

  8. רמות פריווילגיה • כל תוכנית או רוטינה רצה ברמת פריווילגיה מסויימת, הבאה לידי ביטוי בשני ביטים באוגר ה- CS הנקראים CPL • שינוי רמת פריווילגיה אפשרית רק דרך Call Gates. כלומר, תוכנית אינה יכולה להעלות את רמת הפריווילגיה שלה ללא הסכמה של מערכת ההפעלה. • ב – 386 יש 4 רמות פריבילגיה (בין 0 ל-3). רמה 0 היא המיוחסת ביותר, רמה 3 היא המיוחסת פחות. • תוכניות אפליקציה רצות כמעט תמיד ברמת פריבילגיה 3. • החלק הפנימי של מערכת ההפעלה (ה"גרעין") רץ ברמת פריבילגיה 0. • רמות 1 ו-2 לא תמיד מנוצלות, אבל קיימות למשל עבור Device Drivers – גישה לחומרה עבור קלט\פלט. • כשמדברים על “rings” מתכוונים לרמות פריבילגיה. מערכות הפעלה - תרגול 10

  9. רמות פריווילגיה צורות שימוש ברמות פריווילגיה: • פקודות מכונה שרק תוכניות מיוחסות (רמת פריווילגיה 0) יכולות לבצע. דוגמאות: HLT, פקודות הטוענות ערכים לאוגרים מיוחדים כמו LGDT, LLDT וכו'. • פקודות מכונה שמערכת ההפעלה מחליטה לגביהן איזו רמת פריווילגיה נחוצה כדי לבצע אותן, לדוגמא: CLI, OUT, IN ועוד.. בשני ביטים באוגר הדגלים שנקראים IOPL נקבעת רמת הפריבילגיה הנחוצה לביצוע פקודות אלה. מערכות הפעלה - תרגול 10

  10. מערכות הפעלה - תרגול 10 צורות שימוש ברמות פריווילגיה - המשך: • משמעות שונה לפקודות המכונה המשנות בבת אחת את כל הביטים באוגר הדגלים כמו POPF או IRET. ביצוע הפקודות האלה בתוכנית שאינה מיוחסת תשאיר את הביטים המיוחסים כמו TF,IF,IOPL וכו' ללא שינוי. • מערכת ההפעלה יכולה להחליט שתוכניות מסויימות ניתנות להרצה על ידי תוכניות בעלות רמות פריווילגיה מסוימת או גבוהה יותר ושטחי זיכרון מסוימים נגישים לקריאה וכתיבה רק עבור תוכניות ברמת פריבילגיה מסוימת או גבוהה יותר.

  11. אוגר הדגלים EFLAGS מערכות הפעלה - תרגול 10

  12. איך עוברים ל-Protected Mode? ב-286 ישנם 4 אוגרים מיוחדים הנקראים Control Registers: CR0, CR1, CR2, CR3. השאלה האם המחשב נמצא במצב מוגן או לא נקבע באוגר CR0 ע"י ביט ה-0. מערכות הפעלה - תרגול 10

  13. טבלאות המרה – Descriptor Tables ב – real mode בהינתן זוג segment:offset ידענו שמדובר בכתובת offset+16*segment תחת מיעון וירטואלי (Protected Mode) הפויינטר מפורש כמעין הנחיה היכן למצוא את הכתובת הפיזית. מערכת ההפעלה מתחזקת טבלאות המרה שנקראות Descriptor Tables. תחת מיעון וירטואלי הפוינטר segment ינחה את החומרה מאיזו כניסה באיזו טבלה לשלוף את כתובת ההתחלה של הסגמנט. ה-offset יתווסף לכתובת זו. מערכות הפעלה - תרגול 10

  14. מערכות הפעלה - תרגול 10

  15. טבלאות המרה גלובלית ולוקלית • גישות לזיכרון נעשות או דרך טבלת המרה גלובלית (GDT) או לוקלית (LDT) באופן הבא: • ה- System Table Registerמהווה את כתובת הבסיס לתחילת הטבלה הרלוונטית. • הSegment Selector- מספק אינדקס לטבלה הרלוונטית. מהטבלה נשלף ה- Segment Descriptor– הסגמנט האמיתי. • כדי לגשת למקום ספציפי בסגמנט, יש לספק גם את ה- Offset. מערכות הפעלה - תרגול 10

  16. מבנה טבלת GDT • גודל כל כניסה bit = 8 bytes 64 • 32 ביטים - כתובת הבסיס של הסגמנט • 20 ביטים – גודל הסגמנט • 12 ביטים – מאפיינים של הסגמנט • ישנו דגל מיוחד Granularity Flag שאומר באיזה יחידות אנחנו עובדים. אם הוא 0 אז ב-bytes, אם 1 אז ב-4 bytes. לכן גודל הסגמנט יכול להיות מ-1b עד GB1 אם G הוא 0 או מ-4b עד GB4 אם G הוא 1. • לכן בחישוב האינדקס צריך רק 13 ביטים מערכות הפעלה - תרגול 10

  17. טבלאותהמרהגלובליתולוקלית – Segment Descriptors GDTR (Global Descriptor Table Register ) • The base address (32 bits in protected mode; 64 bits in IA-32e mode) – a linear address of byte 0 of GDT • The 16-bit table limit for the GDT – the number of bytes in the table • LGDT/SGDT – load/store GDTR LDTR (Local Descriptor Table Register ) • The 16-bit segment selectorthat describes the entry in GDT • Base address and size of LDT is stored in GDT • LLDT/SLDT – load/store the segment selector part of LDTR • When segment selector part is updated, other parts are loaded automatically מערכות הפעלה - תרגול 10

  18. Base Address • Table limit – a size of active entries (a number of active entries * 8) • Segment Selector (16 bit) • Segment limit (a size of segment) • Attributes מערכות הפעלה - תרגול 10

  19. מערכות הפעלה - תרגול 10

  20. Global and Local Descriptor Tables Optionally, one or more LDTs may be defined מערכות הפעלה - תרגול 10

  21. Segment Register – Interpreted as Segment Selector • Requested Privilege Level (RPL) (Bits 0 and 1) — Specifies the privilege level of the selector. The privilege level can range from 0 to 3, with 0 being the most privileged level • For the CS register, RPL is called CPL – Current Privilege Level. • TI – Table indicator מערכות הפעלה - תרגול 10

  22. טבלאות המרה – תיאור פשטני מערכות הפעלה - תרגול 10

  23. מערכות הפעלה - תרגול 10

  24. מערכות הפעלה - תרגול 10

  25. שדה ה- Attribute – תיאור פשטני • שדה ה-Attribute מכיל בין היתר: • 2 ביטים הנקראים DPL (Descriptor Privilage Level), המקנות לכניסה בטבלה רמת פריווילגיה. ה-RPL או ה-CPL יושוו עם ה-DPL לבדיקת חוקיות הפויינטר. • 5 ביטים הקובעים את הסוג (Type) של הכניסה. נפרט את הנושא בהמשך. מערכות הפעלה - תרגול 10

  26. מהו פויינטר חוקי? • מקרה 1: ביצוע קוד • CS index נבדק מול GDTR Limit • CPL חייב להיות שווה ל-DPL • בדיקה אם השימוש מותר על ידי השדה Type • ה-Offset נבדק אם הוא קטן שווה לשדה ה-Limit של הכניסה. מערכות הפעלה - תרגול 10

  27. מהו פויינטר חוקי? • מקרה 2: גישה למידע – כמו במקרה 1 עם השינויים הבאים: • ה-CPL צריך להיות לא בהכרח שווה אלא קטן שווה מה-DPL • אם הגישה היא דרך סגמנט מידע (נניח DS) אזי גם שדות ה-RPL של DS חייבים להיות קטנים או שווים ל-DPL הכניסה. מערכות הפעלה - תרגול 10

  28. זיכרון וירטואלי - דפדוף - Paging • זיכרון וירטואלי הוא מצב שבו לא כל הזיכרון הוא זיכרון אלקטרוני (פיזי) – ה"זיכרון" ממומש בחלקו על דיסק. • Paging ב- x86 הוא מנגנון שגורם לכך שגם הכתובות הנשלפות מהטבלאות הן כתובות לוגיות העוברות המרה נוספת. • Paging מאפשר להגדיר את מרחב הכתובות הוירטואלי ליותר מאשר סה"כ הזיכרון הפיזי (RAM) של המחשב. • בד"כ מרחב כתובות פי 3 או פי 4 מגודל ה-RAM נחשב לאופטימלי (שטח swap פי 2 או 3 מה-RAM). • אפשר לממש מיעון וירטואלי ללא Paging, אך אין Paging ללא מיעון וירטואלי. מערכות הפעלה - תרגול 10

  29. Paging – האם זה טוב? • ייתרון עיקרי: ניצול יעיל של זיכרון פיזי . הוא מאפשר לנו להקצות שטחי זיכרון רבים יותר, והשאלה האם הזיכרון נמצא פיזית ב-RAM או על הדיסק יהיה תלוי בשימוש. למשל, תוכניות שהשמוש בהן נדיר לא חייבות שהזיכרון שלהן יישמר ב-RAM בפועל. • חיסרון עיקרי: מעיט את ביצועי תוכניות אפליקציה בכך שחלק מהגישות ל"זיכרון" מחייבות גישה לדיסק. בנוסף, יש גישות נוספות לזיכרון בגלל הצורך לקרוא טבלאות נוספות, ה-Page Table. מערכות הפעלה - תרגול 10

  30. מימוש Paging • אפשרות א':לציין לכל סגמנט\כניסה בטבלת המרה אם הוא בזיכרון או לא. הבעיה: איטיות- הסגמנטים עלולים להיות די גדולים והעלאה\הורדה של סגמנטים יאיטו את המערכת באופן בלתי מתקבל על הדעת. • פיתרון: חלוקת הזיכרון הוירטואלי ליחידות קטנות הנקראות דפי זיכרון וירטואלי (Virtual Memory Pages). ב- 386 ואילך גודל הדפים האלה הוא תמיד בדיוק 4k-4096 בתים. מערכות הפעלה - תרגול 10

  31. מימוש Paging - המשך • כל דף יכול להיות בדף זיכרון פיזי או על דיסק. כאשר מחושבת כתובת וירטואלית, כולל ה-Offset, היא נופלת לתוך אחד הדפים של הזכרון הוירטואלי. • אם הדף נמצא בזיכרון, המעבד מוצא את הכתובת הפיזית ומבצע גישה לשם. במידה והדף אינו נמצא בזיכרון, מתרחשת חריגה מיוחדת הנקראת Page Fault שבמסגרת הטיפול בה מערכת ההפעלה מוצאת את הדך על הדיסק ומעלה אותו חזרה לזיכרון. • במידה וכל הדפים מנוצלים, העלאת דף מהדיסק כרוכה בהוצאתו של דף אחר. הוצאה של דף מהזיכרון יכולה להתרחש גם בעקבות הקצאת זיכרון כשאין עליו מקום יותר. מערכות הפעלה - תרגול 10

  32. דוגמא למיקום מערך בזיכרון • במערכת שיש בה רק מיעון וירטואלי ללא Paging המערך יתפוס 16384בתים רצופים, אבל התוכנית לא תוכל לדעת מהערך של c_arr את מיקומו בזיכרון הפיזי. • במערכת שיש בה Paging וגודל כל Page הוא נניח 4k, כל רצף של 4096 בתים יכול להיות החל מכתובת מסויימת, או בכלל לא בזיכרון. לדוגמא, מימוש אפשרי של המערך: מערכות הפעלה - תרגול 10

  33. מתי המחשב מממש גם Paging? מערכות הפעלה - תרגול 10

  34. איך מתבצע Paging? • תחת Paging, תוצאת ההמרה של המיעון הוירטואלי נקראת כתובת לינארית או וירטואלי. • הכתובת הוירטואלית עוברת המרה נוספת דרך טבלה שנקראת Page Table. לצורך הפשטות אפשר לומר שקונספטואלית יש לכל דף אפשרי במרחב הזיכרון הוירטואלי כניסה ב-Page Table. מערכות הפעלה - תרגול 10

  35. איך מתבצע Paging? • באופן סכמטי (ופשטני מעט), תהליך ההמרה יראה כך: מערכות הפעלה - תרגול 10

  36. סכמה פשטנית להמרת כתובת לינארית מערכות הפעלה - תרגול 10

  37. איך נראת כניסה ב-Page Table? • ביט ה-0 אומר לנו אם הדף נמצא בזיכרון. אם הוא 1, שאר הביטים מפורשים בצורה הבאה: מערכות הפעלה - תרגול 10

  38. איך מתבצע Paging? • אחרת... מערכות הפעלה - תרגול 10

  39. Paging Translation • תרגום הכתובות נעשה בשני שלבים. בזיכרון אין Page Table יחיד אלא סדרה של טבלאות Page Table. • הטבלאות האלה מוצבעות על ידי טבלה נוספת הנקראת Page Directory. • האפקט הסופי של שילוב הטבלאות האלה זהה לזה של טבלת Page Table אחת גדולה. מערכות הפעלה - תרגול 10

  40. כיצד נגיע לטבלת ה-Page Directory? מערכות הפעלה - תרגול 10

  41. מערכות הפעלה - תרגול 10

  42. מערכות הפעלה - תרגול 10

  43. נחזור לדוגמא 1 • במערכת עם Page Directory ניגש לכניסה מספר 0 ב-Page Directory, בה נקבל כתובת לתחילת Page Table הרלוונטית, ובה ניגש לאינדקס 6. נניח הערך שמצאנו הוא 70209 מערכות הפעלה - תרגול 10

  44. 70209 = 0000 0000 0000 0001 0001 0010 0100 0001 מערכות הפעלה - תרגול 10

More Related