מערכות הפעלה

Download Report

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

‫מערכות הפעלה‬
‫תרגול ‪ :12‬הגנה ‪ -‬המשך‬
‫מה בתכנית?‬
‫‪ ‬מיעון וירטואלי – תמונה‬
‫מפורטת יותר‬
‫‪ ‬שימושים נוספים של‬
‫טבלאות המרה‬
‫‪2‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
‫תפקידי טבלאות המרה‬
‫תפקידים שכבר ראינו‪:‬‬
‫‪ ‬משמשות לקביעת הערכים החוקיים של כתובות לוגיות‬
‫של תוכניות הרצות במערכת‪.‬‬
‫‪ ‬משמשות להמרת כתובות לוגיות חוקיות לכתובות‬
‫שהמערכת מקצה‪.‬‬
‫‪ ‬משמשות לממש כתובות לוגיות בעלי אפיונים שונים‪:‬‬
‫מוגבלים לרמות פריבילגיה גבוהות‪ ,‬קוד ביצוע בלבד‪,‬‬
‫לקריאה בלבד‪.‬‬
‫‪ ‬קובעות גודל מירבי לסגמנטים המקבילים לכתובות לוגיות‬
‫חוקיות‪.‬‬
‫כניסות בטבלאות המרה המיועדות לביצוע פקודות מכונה ברמת אפליקציה‪.‬‬
‫‪3‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
‫תפקידי טבלאות המרה‬
‫תפקידים נוספים‪:‬‬
‫‪ ‬לשמש שערים ‪ Gates‬עבור פסיקות – ‪.Interrupt Gates‬‬
‫‪ ‬לשמש שערים עבור לכידת חריגות – ‪.Trap Gates‬‬
‫‪ ‬לשמש שערים למעבר בין משימות – ‪Task State‬‬
‫‪.Segment Descriptor‬‬
‫‪ ‬לשמש שערים עבור קריאה לקוד בעל רמת ייחוס גבוהה‬
‫יותר למרות רמת הייחוס הנמוכה של הקוד הקורא –‬
‫‪.Call Gates‬‬
‫‪ ‬מימוש תוכן האוגר ה‪ LDTR-‬שהוא כניסה בתוך טבלת ה‪-‬‬
‫‪GDT‬‬
‫‪4‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
‫תיאור תוכן כניסה בטבלת ‪GDT‬‬
‫‪ ‬ע"י ביט ה‪ S-‬נעשה‬
‫הבחנה בין סוגי‬
‫‪:Descriptors‬‬
‫‪ :S=0‬מסוג ‪System‬‬
‫‪ :S=1‬מסוג ‪,Application‬‬
‫סגמנט ‪ Data‬או ‪.Code‬‬
‫‪5‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
‫כניסות לאפליקציה‬
‫‪ ‬הבחנה בין ‪ Descriptor‬מסוג ‪ Data‬או ‪Code‬‬
‫נעשית ע"י ביט מס' ‪ :11‬אם הוא ‪ ,0‬מדובר ב‪-‬‬
‫‪ Descriptor‬מסוג ‪ ,Data‬אם הוא ‪ 1‬מדובר ב‪-‬‬
‫‪ Descriptor‬מסוג ‪.Code‬‬
‫‪ ‬שני סוגי ה‪ Descriptors -‬מפרשים את שלושת‬
‫הביטים של שדה ה‪ TYPE -‬אחרת‪.‬‬
‫‪6‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
‫מבנה כניסת ‪Data Descriptor‬‬
‫‪ -Writable‬האם‬
‫ניתן לכתיבה?‬
‫‪ – Accessed‬האם‬
‫כרגע ניגשים לסגמנט‬
‫‪7‬‬
‫‪-Expand Down‬‬
‫האם הסגמנט גדל‬
‫מעלה או מטה‬
‫‪ – Present‬האם‬
‫הסגמנט בזיכרון?‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫‪ -Granuality‬האם‬
‫היחידות של ה‪-‬‬
‫‪ Limit‬הן ‪?4k‬‬
‫אפריל ‪15‬‬
‫מבנה כניסת ‪Code Descriptor‬‬
‫‪ -Conforming‬מתיר‬
‫לקוד להסתעף גם כאשר‬
‫ה‪ CPL-‬שלו מיוחס פחות‬
‫‪ – Accessed‬מסמן‬
‫שניגשו לסגמנט‬
‫‪8‬‬
‫‪ -Readable‬מאפשר‬
‫לסגמנט להיות קריא‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫‪ – Present‬האם‬
‫הסגמנט בזיכרון?‬
‫אפריל ‪15‬‬
‫ביט ה‪Conforming-‬‬
‫‪ ‬ביט ה‪ Conforming -‬מתיר לקוד המסתעף‬
‫להסתעף לסגמנט קוד זה גם כאשר ה‪ CPL-‬שלו‬
‫מיוחס פחות‪.‬‬
‫‪ ‬קוד מיוחס‪ ,‬נניח ‪ ,CPL=0‬יכול להריץ ישירות קוד‬
‫רק ברמת פריווילגיה מיוחסת (אין לו אפשרות‬
‫להריץ קוד לא מיוחס)‪.‬‬
‫‪ ‬לכן‪ ,‬לקוד משותף לרמות פריווילגיה שונות יש‬
‫לתת רמת פריווילגיה גבוהה ולעשות אותו‬
‫‪.Conforming‬‬
‫‪9‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
‫מבנה כניסות ‪System Segment Descriptor‬‬
‫‪ ‬ביט ה‪,S-‬‬
‫כאמור‪ ,‬הוא ‪.0‬‬
‫‪10‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
‫מבנה ‪LDT‬‬
‫‪11‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
System Level Registers and Data Structures
15 ‫אפריל‬
10 ‫ תרגול‬- ‫מערכות הפעלה‬
12
‫שערים ‪Gates -‬‬
‫‪ ‬שער הוא אמצעי המאפשר המרה בין הזוג ‪CS:EIP‬‬
‫לביצוע קוד ברמת פריווילגיה גבוהה יותר‪ ,‬אבל‬
‫בצורה מבוקרת‪ ,‬על ידי מערכת ההפעלה‪.‬‬
‫‪ ‬תוכנית יכולה להסתעף לקוד בעל רמת פריווילגיה‬
‫גבוהה מהתוכנית הקוראת על ידי הפקודות ‪ INT‬ו‪-‬‬
‫‪( CALL‬פויינטר לפונקציה)‪ ,‬אבל אך ורק ליעדים‬
‫שנקבעו על ידי מערכת ההפעלה‪.‬‬
‫‪ ‬זו נקראת הסתעפות עקיפה‪.‬‬
‫‪13‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
‫‪Call Gate‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪14‬‬
‫כאשר מדובר בהסתעפות דרך ‪ ,Call Gate‬בהכרח‬
‫התבצעה פקודת ‪ Call‬נוסח‪:‬‬
‫‪ ,CALL Mem48‬כלומר‪ ,‬ההסתעפות היא דרך‬
‫משתנה\הפניה לזיכרון כמידע בגודל ‪ 48‬ביט‪.‬‬
‫ה‪ CPU -‬טוען את הערכים ל‪ CS-‬ו‪ EIP -‬וניגש לטבלת‬
‫המרה לפיענוח‪ ,‬אבל אז מגלה שמדובר לא בסגמנט קוד‬
‫אלא ב‪ ,Call Gate-‬ואז טוען מהכניסה ערכים חדשים ל‪-‬‬
‫‪ CS‬ו‪.EIP-‬‬
‫הערך ‪ EIP‬של הפוינטר לפונקציה ‪ Mem48‬נשכח ולא בא‬
‫לידי ביטוי בפעולת המרה כלל‪.‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
‫מבנה ‪Call Gate‬‬
‫‪15‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
‫‪Call Gate Mechanism‬‬
‫‪16‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
‫דוגמא למעבר דרך ‪Call Gate‬‬
‫‪‬‬
‫‪‬‬
‫‪.1‬‬
‫‪.2‬‬
‫‪17‬‬
‫התבצעה הפקודה הבאה‪:‬‬
‫‪Call Mem48‬‬
‫‪Mem48 DP 0023????????h‬‬
‫ידוע שהכניסה הרלוונטית בטבלת ההמרה נראת כך‪:‬‬
‫‪New CS=0008, DPL=11, STYPE=01100‬‬
‫מהי הכניסה שאליה מסתעף הקוד ובאיזו טבלת המרה‬
‫היא נמצאת?‬
‫לאן מתבצעת הסתעפות משם ומה אנו יודעים על כניסה‬
‫נוספת בטבלת המרה מסויימת?‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
‫דוג' למעבר דרך ‪ - Call Gate‬תשובות‬
‫‪ ‬כאשר מבצעים את הפקודה ‪Call Mem48‬‬
‫מסתעפים לכניסה ‪ 4‬ב‪.GDT-‬‬
‫‪ ‬כניסה זו היא ‪.(s=0,type=1100) Call Gate‬‬
‫ממנה אנו מקבלים ‪ CS‬ו‪ EIP-‬חדשים‪ .‬לפי ה‪CS-‬‬
‫החדש (‪ ,)0008‬אנו ניגשים לכניסה ‪ 1‬ב‪GDT-‬‬
‫שבה ‪ DPL=00‬ו‪STYPE=110??-‬‬
‫‪18‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
‫טבלת הפסיקות במצב מוגן‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪19‬‬
‫כאשר ה‪ CPU -‬נמצא במצב מוגן‪ ,‬טבלת הפסיקות‬
‫נמצאת היכן שהאוגר המיוחד ‪ IDTR‬מצביע עליו‪,‬‬
‫ועקרונית יכול להיות בכל מקום בזיכרון‪.‬‬
‫כמו ב‪ ,Real Mode -‬בטבלה יש ‪ 256‬כניסות‪ ,‬אלא‬
‫שבניגוד ל‪ Real Mode-‬כל כניסה היא ‪ 8‬בתים והמבנה‬
‫והתפקוד שלה מאוד דומים לזה של ‪.Call Gate‬‬
‫ההבדל העיקרי בין כניסות בטבלת הפסיקות לבין שערי‬
‫‪ CALL‬הוא‪ ,‬ששדה ה‪ STYPE-‬יכול להיות ‪00101‬‬
‫(‪ ,(Interrupt Gate) 01110 ,(Task Gate‬או ‪01111‬‬
‫)‪.(Trap Gate‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
‫מבנה ה‪IDTR-‬‬
‫‪ ‬המבנה של ‪ IDTR‬דומה לזה של ‪:GDTR‬‬
‫‪20‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
‫טבלת הפסיקות במצב מוגן‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪21‬‬
‫ההבדל בין ‪ Interrupt Gate‬ל‪ Trap Gate -‬הוא‬
‫שהסתעפות דרך ‪ Interrupt Gate‬גם מאפסת את ה‪.IF-‬‬
‫כאשר אנו מנסים להסתעף לקוד של פסיקה (פסיקת‬
‫חומרה או פסיקת תוכנה ביוזמת התוכנית ע"י פקודת‬
‫המכונה ‪ )INT‬ה‪ CPU-‬ניגש לפי מספר פסיקה ‪ k‬לכניסה‬
‫מספר ‪ k‬בטבלת הפסיקות‪ ,‬שם הוא ימצא ערכים חדשים‬
‫ל‪ CS-‬ו‪.EIP-‬‬
‫המבנה הזה מאפשר למערכת להגביל את השימוש‬
‫בפקודת המכונה ‪ INT k‬לפי רמות פריווילגיה‪ .‬פסיקות‬
‫תוכנה נחשבות לחריגות – יעברו דרך ‪.Trap Gate‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
‫מבנה ‪Interrupt Gate‬‬
‫‪22‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
‫מבנה ‪Trap Gate‬‬
‫‪23‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
Interrupt Procedure Call
15 ‫אפריל‬
10 ‫ תרגול‬- ‫מערכות הפעלה‬
24
‫פסיקות במצב מוגן ‪ -‬דוגמא‬
‫‪ ‬מבצעים את פקודת המכונה ‪ INT 3‬מתוכנית‬
‫אפליקציה‪.‬‬
‫‪ ‬נניח שבכניסה המתאימה ב‪ IDT-‬מופיע הערך‬
‫הבא‪.new CS=0018h :‬‬
‫‪ .1‬באיזו כניסה מדובר? מה עוד תוכל להגיד על‬
‫הערכים המופיעים בה?‬
‫‪ .2‬מה תוכל להגיד על כניסה נוספת בטבלאות‬
‫ההמרה?‬
‫‪25‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
‫תשובה לדוגמא‬
‫‪ ‬מדובר בכניסה מספר ‪ 3‬ב‪ .IDT-‬נוכל לדעת‬
‫עליה דברים נוספים‪,DPL=11 :‬‬
‫‪.STYPE=01111‬‬
‫‪ ‬מכניסה ‪ 3‬ב‪ IDT-‬נסתעף לכניסה ‪ 3‬ב‪.GDT-‬‬
‫על כניסה זו נוכל לדעת‪,DPL=00 :‬‬
‫??‪STYPE=110‬‬
‫‪26‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬
‫לסיכום‪...‬‬
‫‪27‬‬
‫מערכות הפעלה ‪ -‬תרגול ‪10‬‬
‫אפריל ‪15‬‬