More Related Content Similar to Lec12 translation Similar to Lec12 translation (20) More from Khuder Altangerel More from Khuder Altangerel (9) Lec12 translation2. Lec 12.210/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Санах ойг ээлжлэн ашиглах асуудал
• Давхардалтыг хянах:
– Ялгаатай хуулбаруудын төлвүүд санах ой дээр давхцаж
болохгүй! Тэгвэл замбараагүй байдал үүснэ.
– Эсрэгээрээ шаардлагатай үед давхардлыг үүсгэж болно.
(харилцааны зорилгоор)
• Хөрвүүлэлт:
– Хандалтыг нэг (virtual) ХО-аас нөгөө (physical) ХО
шилжүүлэх чадвар.
– Хөрвүүлэлтийн үед процессор виртуал хаягийг, санах ойн
физик хаягийг хэлнэ.
– Үр нөлөө:
» Давхардалтаас зайлсхийхэд хэрэглэж болно.
» Програмуудад зориулсан санах ойн нэг дүрслэлийг үүсгэх
• Хамгаалалт:
– Хувийн санах ойг бусад Пр-с хамгаалах
» Санах ойн ялгаатай хуудсууд нь тусгай шинж чанартай байж
болно. (Зөвхөн унших, Өөр програмд харагдахгүй, гэх мэт).
» Кернелийн өгөгдөл хэрэглэгчийн програмаас хамгаалсан.
» Програмууд нь бие биенээсээ хамгаалагдсан байна.
3. Lec 12.310/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Хаяг хувиргалтын жишээ
Прог 1
Виртуал
хаягийн огторгуй 1
Прог 2
Виртуал
хаягийн
огторгуй 2
Код
Өгөгдөл
Овоолго
Стэк
Код
Өгөгдөл
Овоолго
Стэк
Өгөгдөл 2
Стэк 1
Овоолго 1
ҮС Ов. &
Стэк
Код 1
Стэк 2
Өгөгдөл 1
Овоолго 2
Код 2
ҮС Код
ҮС ӨгөгдХувиргалтын
буулгалт 1
Хувиргалтын
буулгалт 2
Физик хаягийн огторгуй
4. Lec 12.410/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Review: Simple Segmentation: Base and Bounds (CRAY-1)
• base/limit регистрийг динамик хаяг хувиргалтанд (often
called “segmentation”) хэрэглэнэ:
– Хаяг бүр “base” дээр нэмэж өөрчөлдөг.
– хэрэв limit-ээс хэтэрвэл алдаа үүсдэг.
• Тухайн компьютер дээр ганцаараа ажиллаж буй мэт
санагдуулна. Хаяглалт нь 0 –ээс эхлэнэ.
– Програм нь санах ойн үргэлжилсэн мужийг эзэлдэг.
– Програмыг санах ойн ялгаатай мужуудад байрлуулахад
програм доторх хаягуудыг дахин байрлуулах хэрэггүй.
DRAM
>?
+
Base
Limit
CPU
Virtual
Address
Physical
Address
Yes: Error!
5. Lec 12.510/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Энгийн сегментчлэлийн асуудал
• Фрагментацийн асуудал (Төвөгтэй санах ойн хуваарилалт)
– Пр-ууд ялгаатай хэмжээтэй байна.
– Хангалттай хугацааны дараа санах ойд фрагментац үүснэ.
– Limit-ийг динамикаар нэмэх нь үнэндээ муу. (e.g. heap)
• Пр-ыг үйлчилгээнд гарах бусад асуудал
– Heap болон Stack 2-ийн хэмжээг бие дааж ихсгэхийг зөвшөөрдөггүй.
– Эдгээр 2 – г виртуал санах ойд аль болох хол орон зайд байрлуулж
өсгөх боломжтой болгоно.
• Пр хооронд харилцахад хүндрэлтэй.
– Код сегменттэй хуваалцахыг хүсдэг
– Процессуудын хооронд санах ойг хуваалцахыг хүсдэг
process 6
process 5
process 2
OS
process 6
process 5
OS
process 6
process 5
OS
process 9
process 6
process 5
process 9
OS
process 10
6. Lec 12.610/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Агуулга
• Хаягийн хөрвүүлэлтийн механизмууд
– Сегментчлэл
– Хуудаслалт
– Олон түвшний хувиргалт
– Хуудсын хүснэгтийг хуудаслах
– Хуудсын урвуу хүснэгт
• Хос ажиллагааны горимын тухай
• Сонголтуудын харьцуулалт
Note: Some slides and/or pictures in the following are
adapted from slides ©2005 Silberschatz, Galvin, and Gagne
Note: Some slides and/or pictures in the following are
adapted from slides ©2005 Silberschatz, Galvin, and Gagne.
Many slides generated from my lecture notes by Kubiatowicz.
7. Lec 12.710/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Илүү уян хатан сегментчлэл
• Логик талаасаа: Олон тусдаа сегментүүд
– Ихэвчлэн: Код, Өгөгдөл, Стек
– Бусад: Дундын санах ой, г.м
• Сегмент бүрд үргэлжилсэн санах ойн мужийг өгдөг.
– Base ба Limit – тай.
– Физик санах хаан ч эзлэж болно.
1
3
2
4
user view of
memory space
1
4
2
3
physical
memory space
1
2
8. Lec 12.810/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Олон сегментийн загварын хэрэгжүүлэлт
• Сегментийн орон зайн нь процессор дээр байрладаг.
– Сегментийн дугаарыг base/limit ийн хос руу буулгадаг.
– Base хаяг дээр шилжилтийг нэмэж физик хаягийн үүсгэнэ.
– Шилжилт нь хязгаараас давахыг хянаж байдаг.
• Мөр бүрт физик санах ойн хэсэг харгалзана.
– Виртуал хаягийн хэсгээр хаяглагдсан сегмент.
– Гэвч, командад агуулагдаж болно:
» x86 Example: mov [es:bx],ax.
• “V/N” гэж юу вэ?
– Сегментийг хүчингүй гэж тэмдэглэх болно. Гэхдээ шалгах
хэрэгтэй
Base0 Limit0 V
Base1 Limit1 V
Base2 Limit2 V
Base3 Limit3 N
Base4 Limit4 V
Base5 Limit5 N
Base6 Limit6 N
Base7 Limit7 V
OffsetSeg #Virtual
Address
Base2 Limit2 V
+ Physical
Address
> Error
9. Lec 12.910/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Intel x86 тусгай регистрүүд
Typical Segment Register
Current Priority is RPL
Of Code Segment (CS)
80386 Special Registers
10. Lec 12.1010/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Жишээ: 4 Сегмент (16 bit addresses)
Seg ID # Base Limit
0 (code) 0x4000 0x0800
1 (data) 0x4800 0x1400
2 (shared) 0xF000 0x1000
3 (stack) 0x0000 0x3000
OffsetSeg
014 1315
0x4000
0x0000
0x8000
0xC000
Virtual
Address Space
Virtual Address Format
0x0000
0x4800
0x5C00
0x4000
0xF000
Physical
Address Space
Space for
Other Apps
Shared with
Other Apps
Might
be shared
11. Lec 12.1110/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Сегментий хувиргалтын жишээ
Дээрх кодыг загварчлал хийж үзэцгээе (PC=0x240):
1. Fetch 0x240. Virtual segment #? 0; Offset? 0x240
Physical address? Base=0x4000, so physical addr=0x4240
Fetch instruction at 0x4240. Get “la $a0, varx”
Move 0x4050 $a0, Move PC+4PC
2. Fetch 0x244. Translated to Physical=0x4244. Get “jal strlen”
Move 0x0248 $ra (return address!), Move 0x0360 PC
3. Fetch 0x360. Translated to Physical=0x4360. Get “li $v0,0”
Move 0x0000 $v0, Move PC+4PC
4. Fetch 0x364. Translated to Physical=0x4364. Get “lb $t0,($a0)”
Since $a0 is 0x4050, try to load byte from 0x4050
Translate 0x4050. Virtual segment #? 1; Offset? 0x50
Physical address? Base=0x4800, Physical addr = 0x4850,
Load Byte from 0x4850$t0, Move PC+4PC
0x240 main: la $a0, varx
0x244 jal strlen
… …
0x360 strlen: li $v0, 0 ;count
0x364 loop: lb $t0, ($a0)
0x368 beq $r0,$t1, done
… …
0x4050 varx dw 0x314159
Seg ID # Base Limit
0 (code) 0x4000 0x0800
1 (data) 0x4800 0x1400
2 (shared) 0xF000 0x1000
3 (stack) 0x0000 0x3000
12. Lec 12.1210/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Сегментчлэлийн талаар
• Виртуал ХО нь нүхнүүдтэй.
– Сийрэг ХО сегментчлэл хийх үр дүнтэй.
– Зөв програм нь хаягийн нүхгүй байх ёстой. (Одоог хүртэл
зааснаар)
» Нүх үүсгэвэл, нүхээр нь цөм рүү үсрээд цөмийн санах ойд ажиллаж
эхэлнэ.
• Хэзээ өөрийн санах ойн хязгаараас гадагшаа хандаж болох вэ?:
– Ингэж Стек болон Heap-ийг өсгөдөг.
– Жишээ нь: Стек орон зайгаар дутагдвал систем автоматаар
стекийн хэмжээг нэмдэг.
• Сегментийн хүснэгтэнд хамгаалалтын горим хэрэгтэй.
– Жишээ нь: Код сегмет нь зөвхөн уншдаг.
– Өгөгдөл ба Стек нь унших болон бичиж болно. (хадгалалтыг
зөвшөөрдөг.)
– Дундын сегмент нь зөвхөн унших эсвэл уншиж/бичиж болно.
• Бодлогор солилтын үед юуг сэргээх болон хадгалах ёстой вэ?
– Санах ойд биш CPU дээр сегментийн хүснэгтийг хадгална.
– Солилт хийх үед бүх пр-ийн санах ойг диск руу хадгалж болно.
(Үүнийг “swapping” гэдэг.)
13. Lec 12.1310/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Солилтын схем
• Бодлого солилтын эрс тэс загвар: Солилт
– Дараагийн пр-д зай гаргаж өгөхийн тулд өмнөх зарим
болон бүх пр-уудыг диск рүү зөөдөг.
» Бүтэн сегментээр нь илгээх хэрэгтэй болж магадгүй.
– Энэ нь бодлого солилтын өртгийг маш ихээр их болгодог.
• Өөр нэг хувилбар?
– Ямар ч үед процесийн идэвхтэй хэсгийг санах ойд хадгалах
арга.
– Физик санах ойг маш нарийн удирдах хэрэгтэй.
14. Lec 12.1410/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Хуудаслалт:Физик санах ойг тогтмол санах ойтой
хэсгүүдэд хуваах
• Сегментчлэлийн асуудал?
– Хувьсах хэмжээтэй хэсгүүдэд физик санах ойг хуваах ёстой.
– Түүнд тааруулахын тулд пр-г олон удаа зөөх хэрэгтэй.
– Диск рүү солилт хийхэдэ сонголт багатай.
• Фрагментац: хэрэглэх болохгүй орон зай.
– Гадаад : Хуваарилагдсан хэсгүүдийн хоосон зай
– Дотоод: Хуваарилсан хэсгүүдийн доторх ашиглагдаагүй санах ой.
• Сегментчлэл дээр гарч байгаа фрагментацыг шийдэх арга?
– Физик санах ойг тогтмол хэмжээтэй хэсгүүдэд хуваах
(“хуудаслалт”)
– Физик санах ойн хэсгүүд нь тэнцүү байна.
» Хуваарилалтыг боловсруулахад битүүдийн вектор хэрэглэж болно:
00110001110001101 … 110010
» Бит бүр нь фикик санах ойн хуудас бүрийг заадаг.
1allocated, 0free
• Хуудас хэмжээ сегмент шиг том байх хэрэгтэй юу?
– Үгүй: Их хэмжээний дотоод цоорхойг үүсгэж болно.
» Ихэвчлэн жижиг хуудаслалт хэрэглэдэг. (1K-16K)
– Иймээс: нэг сегмент нь олон хуудснаас тогтоно.
15. Lec 12.1510/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Physical Address
Offset
Хуудаслалтыг яаж хэрэгжүүлэх вэ?
• Хуудсын хүснэгт (Пр бүрд нэг)
– Физик санах ойд байрлана.
– Физик хуудас болон виртуал хуудсны эрхүүдийг агуулна.
» Дараах эрхүүдийг агуулна: Хүсинтэй бит, Унших, Бичих, г.м
• Виртуал хаягийн буулгалт
– Физик хаяг руу хуулагдсан виртуал хаягийн шилжилт
» Жишээ нь: 10 bit offset 1024-byte pages
– Виртуал хуудсын дугаар нь үлдсэн битүүд болно.
» Жишээ нь: 32-bits: 32-10 = 22 bits, i.e. 4 million бичлэг
» Физик хуудсын дугаарыг хүснэгтээс физик хаяг руу бичнэ.
– Хуудсын хүснэгтийн хязгаар болон эрхийг шалгах
OffsetVirtual
Page #
Virtual Address:
Access
Error
>PageTableSize
PageTablePtr page #0
page #2
page #3
page #4
page #5
V,R
page #1 V,R
V,R,W
V,R,W
N
V,R,W
page #1 V,R
Check Perm
Access
Error
Physical
Page #
16. Lec 12.1610/11/10 Kubiatowicz CS162 ©UCB Fall 2010
PageTablePtrB page #0
page #1
page #2
page #3
page #5
V,R
N
V,R,W
N
page #4 V,R
V,R,W
page #4 V,R
Дундын санах ойн хувьд?
OffsetVirtual
Page #
Virtual Address
(Process A):
PageTablePtrA page #0
page #1
page #3
page #4
page #5
V,R
V,R
page #2 V,R,W
V,R,W
N
V,R,W
OffsetVirtual
Page #
Virtual Address:
Process B
Shared
Page
This physical page
appears in address
space of both processes
page #2 V,R,W
17. Lec 12.1710/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Энгийн хуудсын хүснэгт
• Бодлого солилтын үед юуг солих хэрэгтэй вэ?
– Хуудсын хүснэгтийн заагч болон хязгаар
• Энгийн хуудсын хүснэгтийн анализ.
– Давуу тал
» Санах ойн энгийн хуваарилалт
» Хуваалцахад хялбар
– Дутагдалтай тал: ХО – нь сийрэг бол яах вэ?
» Жишээ нь: UNIX дээр, Код 0-ээс эхэлдэг, Стек (231-1)-ээс эхэлдэг.
» 1K хэмжээтэй хуудастай бол хуудсын хүснэгт 4 сая мөртэй байна!
– Дутагдалтай тал: Хуудсын хүснэгт маш том бол яах вэ?
» Бүх хуудас үргэлж хэрэглэгдэхгүй Санах ойд байх хуудсын
хүснэгтийн ажлын хэсэгтэй байх хэрэгтэй.
• Хуудаслалт ба сегментчлэлийн хослуулан ашиглах
– Сегмент нь хуудсуудаас тогтох
– Олон түвшинтэй хувиргалт шаардлагатай.
18. Lec 12.1810/11/10 Kubiatowicz CS162 ©UCB Fall 2010
• Хүснэгтийн мод байгуулах?
– Доод түвшний хуудсын хүснэгтсанах ойг bitmap-аар хуваарилна.
– Дээд түвшнийх нь сегментүүд байна.
• Хэдэн ч түвшинтэй байж болно. Жишээ нь: (Дээд сегмент):
• Бодлого солилтын үед юу хадгалах болон сэргээх хэрэгтэй вэ?
– Дээд түвшний сегментийн регистрүүдийн утга (Энэ жишээний хувьд)
– Дээд түвшний хүснэгтүүдийн заагч(Хуудсын хүснэгт)
Олон түвшинтэй хувиргалт: Сегмент +
Хуудаслалт
page #0
page #1
page #3
page #4
page #5
V,R
V,R
page #2 V,R,W
V,R,W
N
V,R,W
Offset
Physical Address
Virtual
Address:
OffsetVirtual
Page #
Virtual
Seg #
Base0 Limit0 V
Base1 Limit1 V
Base2 Limit2 V
Base3 Limit3 N
Base4 Limit4 V
Base5 Limit5 N
Base6 Limit6 N
Base7 Limit7 V
Base2 Limit2 V
Access
Error>
page #2 V,R,W
Physical
Page #
Check Perm
Access
Error
19. Lec 12.1910/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Хуваалцах тухай (Бүтэн сегмент)?
Process
A
OffsetVirtual
Page #
Virtual
Seg #
Base0 Limit0 V
Base1 Limit1 V
Base2 Limit2 V
Base3 Limit3 N
Base4 Limit4 V
Base5 Limit5 N
Base6 Limit6 N
Base7 Limit7 V
Base2 Limit2 V
page #0
page #1
page #2
page #3
page #4
page #5
V,R
V,R
V,R,W
V,R,W
N
V,R,W
Shared Segment
Process
B
OffsetVirtual
Page #
Virtual
Seg #
Base0 Limit0 V
Base1 Limit1 V
Base2 Limit2 V
Base3 Limit3 N
Base4 Limit4 V
Base5 Limit5 N
Base6 Limit6 N
Base7 Limit7 V
Base2 Limit2 V
20. Lec 12.2010/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Physical
Address: OffsetPhysical
Page #
4KB
Бусад энгийн жишээ: 2 түвшинтэй хуудсын хүснэгт
10 bits 10 bits 12 bits
Virtual
Address:
OffsetVirtual
P2 index
Virtual
P1 index
4 bytes
PageTablePtr
• Хуудсын хүснэгтийн мод
• Тогтмол хэмжээтэй хүснэгт (1024
бичлэгтэй)
– Бодлого солилтын үед: Ганцхан
PageTablePtr регистрийг хадгалдаг.
• Хуудсын хүснэгт дэх бичлэгүүдийн
хүчинтэй битүүд
– 2 дугаар түвшний хүснэгт бүр хэрэггүй.
– 2 -р түвшний хүснэгт хэрэглэгдэхгүй үед
ээ диск дээр байрлана.
4 bytes
21. Lec 12.2110/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Олон түвшний хувиргалтын анализ
• Давуу тал:
– Хүснэгтийн бичлэгүүдийг хэрэгцээтэй тоогоор нь ашиглана.
» Өөрөөр хэлбэл сийрэг санах ойтой үед хялбар
– Санах ойн хуваарилалт нь хялбар
– Хуваалцахад хялбар
» Сегментийн болон хуудсын түвшинд хуваалцах (нэмэлтээр
хуваалцалтыг тоолох шаардлагатай.)
• Дутагдалтай тал:
– Нэг хуудсанд нэг заагч (Ихэвчлэн 4K – 16K хуудас байдаг)
– Хуудсын хүснэгт үргэлжилсэн байх хэрэгтэй байдаг.
» Гэвч, өмнөх жишээгээр нэг хуудсанд багтдаг хүснэгт гарсан.
– Нэг хаяг дээр 2 хайлт хийнэ. (эсвэл түүнээс олон, 2 түвшнээс
олон бол)
» Маш үнэтэй!
22. Lec 12.2210/11/10 Kubiatowicz CS162 ©UCB Fall 2010
• Өмнөх бүх жишээ дээр (Хуудсын шууд хүснэгт”)
– Хуудсын хүснэгтийн хэмжээ нь пр-д олгосон санах ойтой дор хаяж
тэнцүү байдаг.
– Физик хаяг нь маш бага байж болно.
» Олон пр-ууд орон зай диск дээр эсвэл хэрэглэгдэхгүй байж болно.
• Хариулт: Хэш хүснэгт хэрэглэдэг.
– “Хуудсын урвуу хүснэгт” гэж нэрлэдэг.
– Виртуал ХО-н хэмжээ бие даасан байдаг.
– Физик санах ойн хэмжээтэй шууд хамаардаг.
– 64 битийн ХО-д маш сонирхолтой сонголт.
• Дутагдалтай тал: Хэш-г өөрчлөхөд маш төвөгтэй
– Ихэвчлэн ТХ дээр!
Хуудсын урвуу хүснэгт
OffsetVirtual
Page #
Hash
Table
OffsetPhysical
Page #
23. Lec 12.2310/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Хос ажиллагааны горим
• Програм өөрийнхөө хувиргалтын хүснэгтийг өөрчлөж чадах уу?
– Хэрэв ингэвэл бүх физик санах ой руу хандаж чадна.
– Ямар нэг аргаар хязгаарлагдсан байх ёстой.
• Хамгаалалтанд туслахын тулд ТХ нь багадаа 2 горимоор үүсгэх
ёстой. (Хос ажиллгааны горим):
– “Кернел” горим (or “supervisor” or “хамгаалагдсан”)
– “Хэрэглэгч” горим (Хэвийн програмын горим)
– Зөвхөн кернелийн горимд хандаж болдог тусгай регистрийн
битээр тогтоодог.
• Intel процессор нь хамгаалалтын 4 цагирагтай байна:
– PL (Эрхийн түвшин) 0 – 3
» PL0 бүрэн эрхтэй , PL3 хамгийн бага эрхтэй
– Эрхийн түвшнийг код сегментийн тодорхойлогчоор тогтооно
(CS)
– Нөхцлийн регистр дэх хуулса IOPL битүүд нь програм
оролт/гаралтын командыг хэрэглэх эрхийг олгоно.
– Intel процессоруудын хэрэглэдэг ҮС-үүд нь зөвхөн PL0 (“kernel”)
ба PL3 (“user”) 2-г ашиглана.
24. Lec 12.2410/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Хамгаалахын тулд хэрэглэгчийн програмыг
түгжих
• Санаа: Хэрэглэгчийн програмыг гарцгүй
Аюулгүй өрөөнд түгжих.
– Горимоо кернелийн горим болгож өөрчлөж
чадахгүй
– Хэрэглэгч хуудсын хүснэгтийг засварлаж
чадахгүй
– Санах ойн хандалт нь хязгаарлагдсан ба бусад
Пр-д муугаар нөлөөлж чадахгүй
» Гаж нөлөө: Санах ойд буулгасан O/I –ийн үйлдлүүдийг хязгаарласан.
(Санах ойд уншиж/бичих замаар O/I хийх.)
– Тасалдлын хяналт нь хязгаарлагдсан.
– Өөр юу хамгаалах хэрэгтэй вэ?
• Зарим асуудлууд
– CPU-г кернел болон хэрэглэгчийн програмын хооронд яаж
хуваалцах вэ?
» Тусгаарлах өрөөнд хоригдож байгаа болон харгалзагч 2 нь нэг хүн
байж болно. Тэгвэл юу болох вэ???
– Програмууд яаж харилцах вэ?
– Кернел болон хэрэглэгчийн горимын хооронд яаж шилжих вэ?
» OS user (kernel user mode): Өрөөнд орох
» User OS (user kernel mode): Өрөөнөөс гарах
25. Lec 12.2510/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Kernel-ээ User рүү яаж шилжих вэ?
• Кернел шинэ хэрэглэгчийн пр үүсгэхийн тулд юу хийдэг
вэ?
– ХО-г удирдах блокыг оноох болон хуваарилах
– Програмыг дискээс уншаад санах ойд байрлуулна.
– Хувиргалтын хүснэгтийг оноох болон хуваарилах
» Програмыг биелүүлэхийн тулд санах ойд дах кодыг заах
» Статик өгөглийн анхны утгыг зааж болно.
– Програм ажлуулах:
» Машины регистрүүдийг тогтоох
» Хувиргалтын хүснэгт рүү ТХ заагчийг тогтоох
» Хэрэглэгчийн горимд зориулсан Пр-ийн төлвийн үгийг тогтоох
» Програмын эхлэл рүү үсрэх
• Кернел пр хооронд яаж шилждэг вэ?
– Өмнөхтэй адил регистрүүдийг хадгалж сэргээнэ.
– PSL-г хадгалах ба сэргээх (Хувиргалтын хүснэгтийн ТХ-ийн
заагч)
26. Lec 12.2610/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Хэрэглэгчийн горимоос кернелийн горим
(Системийн дуудалт)
• Хэрэглэгч өөрөө өрөөнөөс гарч чадахгүй
– Хамгаалалт утгагүй болно!
– Тэгвэл хэрэглэгчийн горим нь кернелийн горим руу яаж шилжих вэ?
• Системийн дуудалт: Сайн дураараа кернел руу хийх функцын дуудалт.
– UserKernel рүү хийх шилжилтийг ТХ-аар хянадаг.
– Кернелийн бүх функцыг дуудаж болох уу?
» Үгүй! Зөвхөн тусгай функцуудыг.
– Системийн дуудалтын ID-г системий дуудалтын командад дотор кодолно.
» Индекс кернелтэй харьцах интерфэйсийг улам хүчирхэг болгоно.
27. Lec 12.2710/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Системийн дуудалтын үргэлжлэл
• Зарим системийн дуудалтууд?
– I/O: open, close, read, write, lseek
– Files: delete, mkdir, rmdir, truncate, chown, chgrp, ..
– Process: fork, exit, wait (like join)
– Network: socket create, set options
• Системийн дуудалтууд ҮС дотроо тогтмол байдаг уу?
– Бүгд биш, гэхдээ ихэнх нь тогмтол байдаг.
– Мөн стандартчлах оролдлого хийсэн (POSIX)
• Системийн дуудалт хийж эхлэхэд юу болох вэ?
» Кернел руу орох цэг дээрээ системийг кернелийг горим руу
шилжинэ.
» Handler address fetched from table/Handler started
• Системийн дуудалтын аргумент дамжуулалт:
– In registers (not very much can be passed)
– Write into user memory, kernel copies into kernel mem
» User addresses must be translated!w
» Kernel has different view of memory than user
– Every Argument must be explicitly checked!
28. Lec 12.2810/11/10 Kubiatowicz CS162 ©UCB Fall 2010
UserKernel (Exceptions: Traps and Interrupts)
• A system call instruction causes a synchronous exception (or
“trap”)
– In fact, often called a software “trap” instruction
• Other sources of Synchronous Exceptions:
– Divide by zero, Illegal instruction, Bus error (bad address, e.g.
unaligned access)
– Segmentation Fault (address out of range)
– Page Fault (for illusion of infinite-sized memory)
• Interrupts are Asynchronous Exceptions
– Examples: timer, disk ready, network, etc….
– Interrupts can be disabled, traps cannot!
• On system call, exception, or interrupt:
– Hardware enters kernel mode with interrupts disabled
– Saves PC, then jumps to appropriate handler in kernel
– For some processors (x86), processor also saves registers,
changes stack, etc.
• Actual handler typically saves registers, other CPU state, and
switches to kernel stack
29. Lec 12.2910/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Additions to MIPS ISA to support Exceptions?
• Exception state is kept in “Coprocessor 0”
– Use mfc0 read contents of these registers:
» BadVAddr (register 8): contains memory address at which memory
reference error occurred
» Status (register 12): interrupt mask and enable bits
» Cause (register 13): the cause of the exception
» EPC (register 14): address of the affected instruction
• Status Register fields:
– Mask: Interrupt enable
» 1 bit for each of 5 hardware and 3 software interrupts
– k = kernel/user: 0kernel mode
– e = interrupt enable: 0interrupts disabled
– Exception6 LSB shifted left 2 bits, setting 2 LSB to 0:
» run in kernel mode with interrupts disabled
Status
15 8 5 4 3 2 1 0
k e k e k eMask
old prev cur
30. Lec 12.3010/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Closing thought: Protection without Hardware
• Does protection require hardware support for translation and
dual-mode behavior?
– No: Normally use hardware, but anything you can do in
hardware can also do in software (possibly expensive)
• Protection via Strong Typing
– Restrict programming language so that you can’t express
program that would trash another program
– Loader needs to make sure that program produced by valid
compiler or all bets are off
– Example languages: LISP, Ada, Modula-3 and Java
• Protection via software fault isolation:
– Language independent approach: have compiler generate object
code that provably can’t step out of bounds
» Compiler puts in checks for every “dangerous” operation (loads,
stores, etc). Again, need special loader.
» Alternative, compiler generates “proof” that code cannot do
certain things (Proof Carrying Code)
– Or: use virtual machine to guarantee safe behavior (loads and
stores recompiled on fly to check bounds)
31. Lec 12.3110/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Summary (1/2)
• Memory is a resource that must be shared
– Controlled Overlap: only shared when appropriate
– Translation: Change Virtual Addresses into Physical Addresses
– Protection: Prevent unauthorized Sharing of resources
• Dual-Mode
– Kernel/User distinction: User restricted
– UserKernel: System calls, Traps, or Interrupts
– Inter-process communication: shared memory, or through
kernel (system calls)
• Exceptions
– Synchronous Exceptions: Traps (including system calls)
– Asynchronous Exceptions: Interrupts
32. Lec 12.3210/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Summary (2/2)
• Segment Mapping
– Segment registers within processor
– Segment ID associated with each access
» Often comes from portion of virtual address
» Can come from bits in instruction instead (x86)
– Each segment contains base and limit information
» Offset (rest of address) adjusted by adding base
• Page Tables
– Memory divided into fixed-sized chunks of memory
– Virtual page number from virtual address mapped through
page table to physical page number
– Offset of virtual address same as physical address
– Large page tables can be placed into virtual memory
• Multi-Level Tables
– Virtual address mapped to series of tables
– Permit sparse population of address space
• Inverted page table
– Size of page table related to physical memory size
Editor's Notes Base and Bounds, AKA Base and Limit
First built in the Cray-1 First fit, best fit, buddy system, … V- Verified
N – Non Verified What is virtual address 0x6? 1|10 = 3|2 = 0xE
What is virtual address 0x9? 10|01 = 1|1 = 0x5
What if page size is very small? VAX had a 512-byte page size = lots of space for page table entries
What if page size is really big? Wastes space inside of page (internal fragmentation) PSL