unix chapter 15
TRANSCRIPT
UNIXמערכות הפעלה
ארכיטקטורת מעבד והגנה - 15מדריך
Shayke Bilu PhD Chapter 15 - Processor Architecture 1
Chapter 15 - Processor Architecture 2 Shayke Bilu PhD
?מה בתכנית
הגנה למנגנוני הקדמה
רמות פריבילגיה
וירטואלי מיעון
דיפדוף -זיכרון וירטואלי
?מדוע צריך הגנה
לחבל עלולה אפליקציה תוכנית
תוכנית או הפעלה במערכת
.אחרת אפליקציה
זיכרון לשטחי גישה י”ע ,למשל
ביטול ,הפעלה מערכת של
.ועוד הפסיקות
Chapter 15 - Processor Architecture 3 Shayke Bilu PhD
?מה קורה בפועל במערכות הפעלה
מאזDOS כל מערכות ההפעלה מוגנות .
מערכת ההפעלה דואגת להעביר את המחשב : המשמעות
למצב מוגן ולנצל תכונות של מצב זה לשמירה על תקינות
.התפקוד של מערכת ההפעלה
Chapter 15 - Processor Architecture 4 Shayke Bilu PhD
:שלושה עיקריים –מנגנוני הגנה
אמצעי המאפשר . 1
לקחת חזרה את
-השליטה של על ה
CPU
Chapter 15 - Processor Architecture 5 Shayke Bilu PhD
מנגנון הפסיקות. 1
מניעת שימוש . 2
בפקודות מסוכנות
...CLI ,HLTכמו
מנגנון רמות . 2
פקודות –הפריווילגיה
מיוחסות
Chapter 15 - Processor Architecture 6 Shayke Bilu PhD
שליטה על . 3
הכתובות בזיכרון
שמהן תוכניות
יכולות לקרוא או
לכתוב
מנגנון המיעון הוירטואלי המרה . 3
. לכתובת האמיתית
virtual addressing
תחת מנגנון המיעון -
הוירטואלי ערכי הפויינטרים
הם כתובות לוגיות ולא כתובות
.פיזיות
מערכת ההפעלה מתחזקת -
בין , טבלאות שבן מצויינות
כתובות פיזיות של ,היתר
.סגמנטים
בחומרה ובתוכנה? איך זה ממומש
החומרה מבצעת הליך ידוע וצפוי מראש על פי פרמטרים
שהיא מוצאת באוגרים מיוחדים ובזכרון המוצבים שם על
ההליך שהחומרה מבצעת אינו תלוי .ידי התוכנה
. אבל הפרמטרים שהוא פועל עליהם כן, במערכת הפעלה
.איכותה של ההגנה נקבעת על ידי איכות התוכנה, לכן
כ הגרעין של מערכת ההפעלה הוא האחראי ליישום "בד
. של מנגנון ההגנה
Chapter 15 - Processor Architecture 7 Shayke Bilu PhD
רמות פריווילגיההבאה לידי ביטוי בשני , כל תוכנית או רוטינה רצה ברמת פריווילגיה מסויימת
CPLהנקראים CS -ביטים באוגר ה
שינוי רמת פריווילגיה אפשרית רק דרךCall Gates .תוכנית אינה , כלומר
.יכולה להעלות את רמת הפריווילגיה שלה ללא הסכמה של מערכת ההפעלה
רמה , היא המיוחסת ביותר 0רמה (. 3-ל 0בין )רמות פריבילגיה 4יש 386 –ב
.היא המיוחסת פחות 3
3תוכניות אפליקציה רצות כמעט תמיד ברמת פריבילגיה.
0רץ ברמת פריבילגיה "( גרעין"ה)החלק הפנימי של מערכת ההפעלה.
אבל קיימות למשל עבור , לא תמיד מנוצלות 2-ו 1רמותDevice Drivers –
.פלט\גישה לחומרה עבור קלט
כשמדברים על“rings” מתכוונים לרמות פריבילגיה.
Chapter 15 - Processor Architecture 8 Shayke Bilu PhD
רמות פריווילגיה :צורות שימוש ברמות פריווילגיה
( 0רמת פריווילגיה )פקודות מכונה שרק תוכניות מיוחסות
פקודות הטוענות ערכים , HLT: דוגמאות. יכולות לבצע
.'וכו LGDT ,LLDTלאוגרים מיוחדים כמו
פקודות מכונה שמערכת ההפעלה מחליטה לגביהן איזו רמת
CLI ,OUT ,IN: לדוגמא, פריווילגיה נחוצה כדי לבצע אותן
נקבעת IOPLבשני ביטים באוגר הדגלים שנקראים .. ועוד
.רמת הפריבילגיה הנחוצה לביצוע פקודות אלה
Chapter 15 - Processor Architecture 9 Shayke Bilu PhD
Chapter 15 - Processor Architecture 10 Shayke Bilu PhD
:המשך -צורות שימוש ברמות פריווילגיה
משמעות שונה לפקודות המכונה המשנות בבת אחת את כל
ביצוע . IRETאו POPFהביטים באוגר הדגלים כמו
הפקודות האלה בתוכנית שאינה מיוחסת תשאיר את הביטים
.ללא שינוי' וכו TF,IF,IOPLהמיוחסים כמו
מערכת ההפעלה יכולה להחליט שתוכניות מסויימות ניתנות
להרצה על ידי תוכניות בעלות רמות פריווילגיה מסוימת או
גבוהה יותר ושטחי זיכרון מסוימים נגישים לקריאה וכתיבה
.רק עבור תוכניות ברמת פריבילגיה מסוימת או גבוהה יותר
?Protected Mode-איך עוברים ל
אוגרים 4ישנם 286-ב
Controlמיוחדים הנקראים
Registers :CR0, CR1 ,
CR2 ,CR3 . השאלה האם
המחשב נמצא במצב מוגן או לא
-י ביט ה"ע CR0נקבע באוגר
0.
Chapter 15 - Processor Architecture 12 Shayke Bilu PhD
Descriptor Tables –טבלאות המרה
ב– real mode בהינתן זוגsegment:offset ידענו שמדובר
offset+16*segmentבכתובת
תחת מיעון וירטואלי(Protected Mode) הפויינטר מפורש
.כמעין הנחיה היכן למצוא את הכתובת הפיזית
מערכת ההפעלה מתחזקת טבלאות המרה שנקראות
Descriptor Tables.
תחת מיעון וירטואלי הפוינטרsegment ינחה את החומרה
מאיזו כניסה באיזו טבלה לשלוף את כתובת ההתחלה של
.יתווסף לכתובת זו offset-ה. הסגמנט
Chapter 15 - Processor Architecture 13 Shayke Bilu PhD
טבלאות המרה גלובלית ולוקלית
גלובלית המרה טבלת דרך או נעשות לזיכרון גישות (GDT)
:באופן הבא (LDT) לוקלית או
ה- System Table Register מהווה את כתובת הבסיס לתחילת
.הרלוונטית הטבלה
הSegment Selector- מספק אינדקס לטבלה הרלוונטית.
.הסגמנט האמיתי – Segment Descriptor -מהטבלה נשלף ה
יש לספק גם את ה, כדי לגשת למקום ספציפי בסגמנט- Offset .
Chapter 15 - Processor Architecture 15 Shayke Bilu PhD
GDTמבנה טבלת
גודל כל כניסהbit = 8 bytes 64
32 כתובת הבסיס של הסגמנט -ביטים
20 גודל הסגמנט –ביטים
12 מאפיינים של הסגמנט –ביטים
ישנו דגל מיוחדGranularity Flag שאומר באיזה יחידות אנחנו
לכן גודל . bytes 4-אז ב 1אם , bytes-אז ב 0אם הוא . עובדים
עד 4b-או מ 0הוא Gאם GB1עד 1b-הסגמנט יכול להיות מ
GB4 אםG 1הוא.
ביטים 13לכן בחישוב האינדקס צריך רק
Chapter 15 - Processor Architecture 16 Shayke Bilu PhD
Chapter 15 - Processor Architecture 17 Shayke Bilu PhD
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 selector that 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
– ולוקלית גלובלית המרה טבלאות
Segment Descriptors
Chapter 15 - Processor Architecture 18 Shayke Bilu PhD
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
Chapter 15 - Processor Architecture 20 Shayke Bilu PhD
Global and Local Descriptor Tables
Optionally, one or more
LDTs may be defined
Chapter 15 - Processor Architecture 21 Shayke Bilu PhD
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
תיאור פשטני – Attribute -שדה ה
שדה ה-Attribute מכיל בין היתר :
2 ביטים הנקראיםDPL (Descriptor Privilage
Level) ,ה. המקנות לכניסה בטבלה רמת פריווילגיה-
RPL או ה-CPL יושוו עם ה-DPL לבדיקת חוקיות
.הפויינטר
5 ביטים הקובעים את הסוג(Type )נפרט . של הכניסה
.את הנושא בהמשך
Chapter 15 - Processor Architecture 25 Shayke Bilu PhD
?מהו פויינטר חוקי
ביצוע קוד: 1מקרה
CS index נבדק מול
GDTR Limit
CPL שווה חייב להיות
DPL-ל
בדיקה אם השימוש
מותר על ידי השדה
Type
ה-Offset נבדק אם
-הוא קטן שווה לשדה ה
Limit של הכניסה.
Chapter 15 - Processor Architecture 26 Shayke Bilu PhD
?מהו פויינטר חוקי
גישה למידע : 2מקרה–
עם 1כמו במקרה
:השינויים הבאים
ה-CPL צריך להיות לא
בהכרח שווה אלא קטן שווה
DPL-מה
אם הגישה היא דרך סגמנט
אזי גם ( DSנניח )מידע
DSשל RPL-שדות ה
חייבים להיות קטנים או
.הכניסה DPL-שווים ל
Chapter 15 - Processor Architecture 27 Shayke Bilu PhD
Paging -דפדוף -זיכרון וירטואלי
Chapter 15 - Processor Architecture 28 Shayke Bilu PhD
זיכרון וירטואלי הוא מצב שבו לא כל הזיכרון הוא זיכרון אלקטרוני
.ממומש בחלקו על דיסק" זיכרון"ה –( פיזי)
Paging ב- x86 הוא מנגנון שגורם לכך שגם הכתובות הנשלפות
.מהטבלאות הן כתובות לוגיות העוברות המרה נוספת
Paging מאפשר להגדיר את מרחב הכתובות הוירטואלי ליותר
.של המחשב( RAM)כ הזיכרון הפיזי "מאשר סה
מגודל ה 4או פי 3כ מרחב כתובות פי "בד-RAM נחשב
(.RAM-מה 3או 2פי swapשטח )לאופטימלי
אפשר לממש מיעון וירטואלי ללאPaging , אך איןPaging
.ללא מיעון וירטואלי
Paging – האם זה טוב?
הוא מאפשר לנו . ניצול יעיל של זיכרון פיזי : ייתרון עיקרי
והשאלה האם הזיכרון , להקצות שטחי זיכרון רבים יותר
. או על הדיסק יהיה תלוי בשימוש RAM-נמצא פיזית ב
תוכניות שהשמוש בהן נדיר לא חייבות שהזיכרון , למשל
. בפועל RAM-שלהן יישמר ב
מעיט את ביצועי תוכניות אפליקציה בכך : חיסרון עיקרי
, בנוסף. מחייבות גישה לדיסק" זיכרון"שחלק מהגישות ל
יש גישות נוספות לזיכרון בגלל הצורך לקרוא טבלאות
.Page Table-ה, נוספות
Chapter 15 - Processor Architecture 29 Shayke Bilu PhD
Pagingמימוש
כניסה בטבלת המרה אם הוא \לציין לכל סגמנט :'אפשרות א
הסגמנטים עלולים להיות -איטיות: הבעיה. בזיכרון או לא
הורדה של סגמנטים יאיטו את המערכת \די גדולים והעלאה
.באופן בלתי מתקבל על הדעת
חלוקת הזיכרון הוירטואלי ליחידות קטנות : פיתרון
Virtual Memory)הנקראות דפי זיכרון וירטואלי
Pages .)ואילך גודל הדפים האלה הוא תמיד בדיוק 386 -ב
4k-4096 בתים .
Chapter 15 - Processor Architecture 30 Shayke Bilu PhD
המשך - Pagingמימוש
כאשר מחושבת כתובת . כל דף יכול להיות בדף זיכרון פיזי או על דיסק
היא נופלת לתוך אחד הדפים של הזכרון , Offset-כולל ה, וירטואלית
.הוירטואלי
המעבד מוצא את הכתובת הפיזית ומבצע גישה , אם הדף נמצא בזיכרון
מתרחשת חריגה מיוחדת הנקראת , במידה והדף אינו נמצא בזיכרון. לשם
Page Fault שבמסגרת הטיפול בה מערכת ההפעלה מוצאת את הדך על
.הדיסק ומעלה אותו חזרה לזיכרון
העלאת דף מהדיסק כרוכה בהוצאתו של דף , במידה וכל הדפים מנוצלים
הוצאה של דף מהזיכרון יכולה להתרחש גם בעקבות הקצאת . אחר
.זיכרון כשאין עליו מקום יותר
Chapter 15 - Processor Architecture 31 Shayke Bilu PhD
דוגמא למיקום מערך בזיכרון
Chapter 15 - Processor Architecture 32 Shayke Bilu PhD
במערכת שיש בה רק מיעון וירטואלי ללאPaging המערך יתפוס
את c_arrאבל התוכנית לא תוכל לדעת מהערך של , בתים רצופים16384
.מיקומו בזיכרון הפיזי
במערכת שיש בהPaging וגודל כלPage 4הוא נניחk , כל רצף של
. או בכלל לא בזיכרון, בתים יכול להיות החל מכתובת מסויימת 4096
:מימוש אפשרי של המערך, לדוגמא
?Pagingאיך מתבצע
תחתPaging , תוצאת ההמרה של המיעון הוירטואלי
.וירטואליאו כתובת לינאריתנקראת
הכתובת הוירטואלית עוברת המרה נוספת דרך טבלה
לצורך הפשטות אפשר לומר . Page Tableשנקראת
שקונספטואלית יש לכל דף אפשרי במרחב הזיכרון
. Page Table-הוירטואלי כניסה ב
Chapter 15 - Processor Architecture 34 Shayke Bilu PhD
?Pagingאיך מתבצע
תהליך ההמרה יראה כך, (ופשטני מעט)באופן סכמטי:
Chapter 15 - Processor Architecture 35 Shayke Bilu PhD
?Page Table-איך נראת כניסה ב
Chapter 15 - Processor Architecture 37 Shayke Bilu PhD
שאר , 1אם הוא . אומר לנו אם הדף נמצא בזיכרון 0-ביט ה
: הביטים מפורשים בצורה הבאה
Paging Translation
בזיכרון אין . תרגום הכתובות נעשה בשני שלביםPage
Table יחיד אלא סדרה של טבלאותPage Table.
הטבלאות האלה מוצבעות על ידי טבלה נוספת הנקראת
Page Directory.
האפקט הסופי של שילוב הטבלאות האלה זהה לזה של
. אחת גדולה Page Tableטבלת
Chapter 15 - Processor Architecture 39 Shayke Bilu PhD
1נחזור לדוגמא
Chapter 15 - Processor Architecture 43 Shayke Bilu PhD
במערכת עםPage Directory ב 0ניגש לכניסה מספר-Page
Directory , בה נקבל כתובת לתחילתPage Table ובה ניגש , הרלוונטית
70209נניח הערך שמצאנו הוא . 6לאינדקס