מערכות הפעלה
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