SlideShare a Scribd company logo
1 of 32
CS207
Үйлдлийн систем
Лекц 12
Хамгаалалт (үргэлжлэл)
Хаягийн хувиргалт
А.Хүдэр, Э.Мөнхсүх
elearn.sict.edu.mn
Lec 12.210/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Санах ойг ээлжлэн ашиглах асуудал
• Давхардалтыг хянах:
– Ялгаатай хуулбаруудын төлвүүд санах ой дээр давхцаж
болохгүй! Тэгвэл замбараагүй байдал үүснэ.
– Эсрэгээрээ шаардлагатай үед давхардлыг үүсгэж болно.
(харилцааны зорилгоор)
• Хөрвүүлэлт:
– Хандалтыг нэг (virtual) ХО-аас нөгөө (physical) ХО
шилжүүлэх чадвар.
– Хөрвүүлэлтийн үед процессор виртуал хаягийг, санах ойн
физик хаягийг хэлнэ.
– Үр нөлөө:
» Давхардалтаас зайлсхийхэд хэрэглэж болно.
» Програмуудад зориулсан санах ойн нэг дүрслэлийг үүсгэх
• Хамгаалалт:
– Хувийн санах ойг бусад Пр-с хамгаалах
» Санах ойн ялгаатай хуудсууд нь тусгай шинж чанартай байж
болно. (Зөвхөн унших, Өөр програмд харагдахгүй, гэх мэт).
» Кернелийн өгөгдөл хэрэглэгчийн програмаас хамгаалсан.
» Програмууд нь бие биенээсээ хамгаалагдсан байна.
Lec 12.310/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Хаяг хувиргалтын жишээ
Прог 1
Виртуал
хаягийн огторгуй 1
Прог 2
Виртуал
хаягийн
огторгуй 2
Код
Өгөгдөл
Овоолго
Стэк
Код
Өгөгдөл
Овоолго
Стэк
Өгөгдөл 2
Стэк 1
Овоолго 1
ҮС Ов. &
Стэк
Код 1
Стэк 2
Өгөгдөл 1
Овоолго 2
Код 2
ҮС Код
ҮС ӨгөгдХувиргалтын
буулгалт 1
Хувиргалтын
буулгалт 2
Физик хаягийн огторгуй
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!
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
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.
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
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
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
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
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+4PC
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+4PC
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+4PC
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
Lec 12.1210/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Сегментчлэлийн талаар
• Виртуал ХО нь нүхнүүдтэй.
– Сийрэг ХО сегментчлэл хийх үр дүнтэй.
– Зөв програм нь хаягийн нүхгүй байх ёстой. (Одоог хүртэл
зааснаар)
» Нүх үүсгэвэл, нүхээр нь цөм рүү үсрээд цөмийн санах ойд ажиллаж
эхэлнэ.
• Хэзээ өөрийн санах ойн хязгаараас гадагшаа хандаж болох вэ?:
– Ингэж Стек болон Heap-ийг өсгөдөг.
– Жишээ нь: Стек орон зайгаар дутагдвал систем автоматаар
стекийн хэмжээг нэмдэг.
• Сегментийн хүснэгтэнд хамгаалалтын горим хэрэгтэй.
– Жишээ нь: Код сегмет нь зөвхөн уншдаг.
– Өгөгдөл ба Стек нь унших болон бичиж болно. (хадгалалтыг
зөвшөөрдөг.)
– Дундын сегмент нь зөвхөн унших эсвэл уншиж/бичиж болно.
• Бодлогор солилтын үед юуг сэргээх болон хадгалах ёстой вэ?
– Санах ойд биш CPU дээр сегментийн хүснэгтийг хадгална.
– Солилт хийх үед бүх пр-ийн санах ойг диск руу хадгалж болно.
(Үүнийг “swapping” гэдэг.)
Lec 12.1310/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Солилтын схем
• Бодлого солилтын эрс тэс загвар: Солилт
– Дараагийн пр-д зай гаргаж өгөхийн тулд өмнөх зарим
болон бүх пр-уудыг диск рүү зөөдөг.
» Бүтэн сегментээр нь илгээх хэрэгтэй болж магадгүй.
– Энэ нь бодлого солилтын өртгийг маш ихээр их болгодог.
• Өөр нэг хувилбар?
– Ямар ч үед процесийн идэвхтэй хэсгийг санах ойд хадгалах
арга.
– Физик санах ойг маш нарийн удирдах хэрэгтэй.
Lec 12.1410/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Хуудаслалт:Физик санах ойг тогтмол санах ойтой
хэсгүүдэд хуваах
• Сегментчлэлийн асуудал?
– Хувьсах хэмжээтэй хэсгүүдэд физик санах ойг хуваах ёстой.
– Түүнд тааруулахын тулд пр-г олон удаа зөөх хэрэгтэй.
– Диск рүү солилт хийхэдэ сонголт багатай.
• Фрагментац: хэрэглэх болохгүй орон зай.
– Гадаад : Хуваарилагдсан хэсгүүдийн хоосон зай
– Дотоод: Хуваарилсан хэсгүүдийн доторх ашиглагдаагүй санах ой.
• Сегментчлэл дээр гарч байгаа фрагментацыг шийдэх арга?
– Физик санах ойг тогтмол хэмжээтэй хэсгүүдэд хуваах
(“хуудаслалт”)
– Физик санах ойн хэсгүүд нь тэнцүү байна.
» Хуваарилалтыг боловсруулахад битүүдийн вектор хэрэглэж болно:
00110001110001101 … 110010
» Бит бүр нь фикик санах ойн хуудас бүрийг заадаг.
1allocated, 0free
• Хуудас хэмжээ сегмент шиг том байх хэрэгтэй юу?
– Үгүй: Их хэмжээний дотоод цоорхойг үүсгэж болно.
» Ихэвчлэн жижиг хуудаслалт хэрэглэдэг. (1K-16K)
– Иймээс: нэг сегмент нь олон хуудснаас тогтоно.
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 #
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
Lec 12.1710/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Энгийн хуудсын хүснэгт
• Бодлого солилтын үед юуг солих хэрэгтэй вэ?
– Хуудсын хүснэгтийн заагч болон хязгаар
• Энгийн хуудсын хүснэгтийн анализ.
– Давуу тал
» Санах ойн энгийн хуваарилалт
» Хуваалцахад хялбар
– Дутагдалтай тал: ХО – нь сийрэг бол яах вэ?
» Жишээ нь: UNIX дээр, Код 0-ээс эхэлдэг, Стек (231-1)-ээс эхэлдэг.
» 1K хэмжээтэй хуудастай бол хуудсын хүснэгт 4 сая мөртэй байна!
– Дутагдалтай тал: Хуудсын хүснэгт маш том бол яах вэ?
» Бүх хуудас үргэлж хэрэглэгдэхгүй  Санах ойд байх хуудсын
хүснэгтийн ажлын хэсэгтэй байх хэрэгтэй.
• Хуудаслалт ба сегментчлэлийн хослуулан ашиглах
– Сегмент нь хуудсуудаас тогтох
– Олон түвшинтэй хувиргалт шаардлагатай.
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
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
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
Lec 12.2110/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Олон түвшний хувиргалтын анализ
• Давуу тал:
– Хүснэгтийн бичлэгүүдийг хэрэгцээтэй тоогоор нь ашиглана.
» Өөрөөр хэлбэл сийрэг санах ойтой үед хялбар
– Санах ойн хуваарилалт нь хялбар
– Хуваалцахад хялбар
» Сегментийн болон хуудсын түвшинд хуваалцах (нэмэлтээр
хуваалцалтыг тоолох шаардлагатай.)
• Дутагдалтай тал:
– Нэг хуудсанд нэг заагч (Ихэвчлэн 4K – 16K хуудас байдаг)
– Хуудсын хүснэгт үргэлжилсэн байх хэрэгтэй байдаг.
» Гэвч, өмнөх жишээгээр нэг хуудсанд багтдаг хүснэгт гарсан.
– Нэг хаяг дээр 2 хайлт хийнэ. (эсвэл түүнээс олон, 2 түвшнээс
олон бол)
» Маш үнэтэй!
Lec 12.2210/11/10 Kubiatowicz CS162 ©UCB Fall 2010
• Өмнөх бүх жишээ дээр (Хуудсын шууд хүснэгт”)
– Хуудсын хүснэгтийн хэмжээ нь пр-д олгосон санах ойтой дор хаяж
тэнцүү байдаг.
– Физик хаяг нь маш бага байж болно.
» Олон пр-ууд орон зай диск дээр эсвэл хэрэглэгдэхгүй байж болно.
• Хариулт: Хэш хүснэгт хэрэглэдэг.
– “Хуудсын урвуу хүснэгт” гэж нэрлэдэг.
– Виртуал ХО-н хэмжээ бие даасан байдаг.
– Физик санах ойн хэмжээтэй шууд хамаардаг.
– 64 битийн ХО-д маш сонирхолтой сонголт.
• Дутагдалтай тал: Хэш-г өөрчлөхөд маш төвөгтэй
– Ихэвчлэн ТХ дээр!
Хуудсын урвуу хүснэгт
OffsetVirtual
Page #
Hash
Table
OffsetPhysical
Page #
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-г ашиглана.
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): Өрөөнөөс гарах
Lec 12.2510/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Kernel-ээ User рүү яаж шилжих вэ?
• Кернел шинэ хэрэглэгчийн пр үүсгэхийн тулд юу хийдэг
вэ?
– ХО-г удирдах блокыг оноох болон хуваарилах
– Програмыг дискээс уншаад санах ойд байрлуулна.
– Хувиргалтын хүснэгтийг оноох болон хуваарилах
» Програмыг биелүүлэхийн тулд санах ойд дах кодыг заах
» Статик өгөглийн анхны утгыг зааж болно.
– Програм ажлуулах:
» Машины регистрүүдийг тогтоох
» Хувиргалтын хүснэгт рүү ТХ заагчийг тогтоох
» Хэрэглэгчийн горимд зориулсан Пр-ийн төлвийн үгийг тогтоох
» Програмын эхлэл рүү үсрэх
• Кернел пр хооронд яаж шилждэг вэ?
– Өмнөхтэй адил регистрүүдийг хадгалж сэргээнэ.
– PSL-г хадгалах ба сэргээх (Хувиргалтын хүснэгтийн ТХ-ийн
заагч)
Lec 12.2610/11/10 Kubiatowicz CS162 ©UCB Fall 2010
Хэрэглэгчийн горимоос кернелийн горим
(Системийн дуудалт)
• Хэрэглэгч өөрөө өрөөнөөс гарч чадахгүй
– Хамгаалалт утгагүй болно!
– Тэгвэл хэрэглэгчийн горим нь кернелийн горим руу яаж шилжих вэ?
• Системийн дуудалт: Сайн дураараа кернел руу хийх функцын дуудалт.
– UserKernel рүү хийх шилжилтийг ТХ-аар хянадаг.
– Кернелийн бүх функцыг дуудаж болох уу?
» Үгүй! Зөвхөн тусгай функцуудыг.
– Системийн дуудалтын ID-г системий дуудалтын командад дотор кодолно.
» Индекс кернелтэй харьцах интерфэйсийг улам хүчирхэг болгоно.
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!
Lec 12.2810/11/10 Kubiatowicz CS162 ©UCB Fall 2010
UserKernel (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
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: 0kernel mode
– e = interrupt enable: 0interrupts disabled
– Exception6 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
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)
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
– UserKernel: 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
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

More Related Content

What's hot

005 өгөгдлийн нөөцийн удирдлага
005 өгөгдлийн нөөцийн удирдлага005 өгөгдлийн нөөцийн удирдлага
005 өгөгдлийн нөөцийн удирдлагаBobby Wang
 
өгөгдлийн сангийн удирдлага
өгөгдлийн сангийн удирдлагаөгөгдлийн сангийн удирдлага
өгөгдлийн сангийн удирдлагаnyamka0928
 
компьютерийн хэрэглээ хичээлийн хөтөлбөр
компьютерийн хэрэглээ хичээлийн хөтөлбөркомпьютерийн хэрэглээ хичээлийн хөтөлбөр
компьютерийн хэрэглээ хичээлийн хөтөлбөрБатбагана Баасанжав
 
Мэдээллийн системийг хөгжүүлэх
Мэдээллийн системийг хөгжүүлэхМэдээллийн системийг хөгжүүлэх
Мэдээллийн системийг хөгжүүлэхKhishighuu Myanganbuu
 
Lekts presentation1
Lekts presentation1Lekts presentation1
Lekts presentation1ganzorigb
 
мэдээллийн технологи 1 хичээлийн хөтөлбөр
мэдээллийн технологи 1 хичээлийн хөтөлбөрмэдээллийн технологи 1 хичээлийн хөтөлбөр
мэдээллийн технологи 1 хичээлийн хөтөлбөрБатбагана Баасанжав
 
Adobe Flash hicheel Mongol Флаш хичээл монгол
Adobe Flash hicheel Mongol Флаш хичээл монголAdobe Flash hicheel Mongol Флаш хичээл монгол
Adobe Flash hicheel Mongol Флаш хичээл монголGantulga Dashdondov
 

What's hot (20)

Lec09 deadlock
Lec09 deadlockLec09 deadlock
Lec09 deadlock
 
Lec04 threads
Lec04 threadsLec04 threads
Lec04 threads
 
005 өгөгдлийн нөөцийн удирдлага
005 өгөгдлийн нөөцийн удирдлага005 өгөгдлийн нөөцийн удирдлага
005 өгөгдлийн нөөцийн удирдлага
 
Lec01 intro (1) (2)
Lec01 intro (1) (2)Lec01 intro (1) (2)
Lec01 intro (1) (2)
 
RDBMS MySQL DB server
RDBMS MySQL DB serverRDBMS MySQL DB server
RDBMS MySQL DB server
 
өгөгдлийн сангийн удирдлага
өгөгдлийн сангийн удирдлагаөгөгдлийн сангийн удирдлага
өгөгдлийн сангийн удирдлага
 
Rdbms 300 test
Rdbms 300 testRdbms 300 test
Rdbms 300 test
 
Lec15 pagereplace last
Lec15 pagereplace lastLec15 pagereplace last
Lec15 pagereplace last
 
Lecture 2
Lecture  2Lecture  2
Lecture 2
 
Cs101 lec2
Cs101 lec2Cs101 lec2
Cs101 lec2
 
Database 3
Database 3Database 3
Database 3
 
компьютерийн хэрэглээ хичээлийн хөтөлбөр
компьютерийн хэрэглээ хичээлийн хөтөлбөркомпьютерийн хэрэглээ хичээлийн хөтөлбөр
компьютерийн хэрэглээ хичээлийн хөтөлбөр
 
Мэдээллийн системийг хөгжүүлэх
Мэдээллийн системийг хөгжүүлэхМэдээллийн системийг хөгжүүлэх
Мэдээллийн системийг хөгжүүлэх
 
Lekts presentation1
Lekts presentation1Lekts presentation1
Lekts presentation1
 
мэдээллийн технологи 1 хичээлийн хөтөлбөр
мэдээллийн технологи 1 хичээлийн хөтөлбөрмэдээллийн технологи 1 хичээлийн хөтөлбөр
мэдээллийн технологи 1 хичээлийн хөтөлбөр
 
Adobe Flash hicheel Mongol Флаш хичээл монгол
Adobe Flash hicheel Mongol Флаш хичээл монголAdobe Flash hicheel Mongol Флаш хичээл монгол
Adobe Flash hicheel Mongol Флаш хичээл монгол
 
Lecture 3 os
Lecture 3 osLecture 3 os
Lecture 3 os
 
It101 lec6 10.06
It101 lec6 10.06It101 lec6 10.06
It101 lec6 10.06
 
Ood lesson10 statechart
Ood lesson10 statechartOod lesson10 statechart
Ood lesson10 statechart
 
Програмчлалын хэл
Програмчлалын хэлПрограмчлалын хэл
Програмчлалын хэл
 

Viewers also liked

Архітектура - Замки
Архітектура - ЗамкиАрхітектура - Замки
Архітектура - ЗамкиRoman Shatskyi
 
Martial arts quote # 12 funakoshi
Martial arts quote # 12 funakoshiMartial arts quote # 12 funakoshi
Martial arts quote # 12 funakoshiwingchunsingapore
 
2007 Sep. Praktikum Staudengärtnerei
2007 Sep. Praktikum Staudengärtnerei2007 Sep. Praktikum Staudengärtnerei
2007 Sep. Praktikum StaudengärtnereiPatrick S. Jungfer
 
Дмитрий Шевченко, Эковахта по Северному Кавказу
Дмитрий Шевченко, Эковахта по Северному Кавказу Дмитрий Шевченко, Эковахта по Северному Кавказу
Дмитрий Шевченко, Эковахта по Северному Кавказу OGF_eco
 
JPIERE-0109:WYSIWYG-Editor
JPIERE-0109:WYSIWYG-EditorJPIERE-0109:WYSIWYG-Editor
JPIERE-0109:WYSIWYG-EditorHideaki Hagiwara
 
History of Cregan Library
History of Cregan LibraryHistory of Cregan Library
History of Cregan LibraryCelinee88
 
2015年度春学期 画像情報処理 第7回 主成分分析とKarhunen-Loève変換 (2015. 6. 3)
2015年度春学期 画像情報処理 第7回 主成分分析とKarhunen-Loève変換 (2015. 6. 3)2015年度春学期 画像情報処理 第7回 主成分分析とKarhunen-Loève変換 (2015. 6. 3)
2015年度春学期 画像情報処理 第7回 主成分分析とKarhunen-Loève変換 (2015. 6. 3)Akira Asano
 
Clubes de Emprendimiento Antioquia e - Gobernación de Antioquia La Más Educada
Clubes de Emprendimiento Antioquia e - Gobernación de Antioquia La Más EducadaClubes de Emprendimiento Antioquia e - Gobernación de Antioquia La Más Educada
Clubes de Emprendimiento Antioquia e - Gobernación de Antioquia La Más EducadaCamilo Castaño
 
Clubes de Emprendimiento Antioquia e - Gobernación de Antioquia La Más Educada
Clubes de Emprendimiento Antioquia e - Gobernación de Antioquia La Más EducadaClubes de Emprendimiento Antioquia e - Gobernación de Antioquia La Más Educada
Clubes de Emprendimiento Antioquia e - Gobernación de Antioquia La Más EducadaCamilo Castaño
 
Pravilnik o bližim zdravstvenim uslovima koje moraju da ispunjavaju vozači ra...
Pravilnik o bližim zdravstvenim uslovima koje moraju da ispunjavaju vozači ra...Pravilnik o bližim zdravstvenim uslovima koje moraju da ispunjavaju vozači ra...
Pravilnik o bližim zdravstvenim uslovima koje moraju da ispunjavaju vozači ra...Registracija Vozila
 
Millennium Development Goal 5: Maternal Health Interventions
Millennium Development Goal 5: Maternal Health InterventionsMillennium Development Goal 5: Maternal Health Interventions
Millennium Development Goal 5: Maternal Health InterventionsSolveij Praxis
 

Viewers also liked (17)

Instruction sets
Instruction setsInstruction sets
Instruction sets
 
Архітектура - Замки
Архітектура - ЗамкиАрхітектура - Замки
Архітектура - Замки
 
08 segmentation
08 segmentation08 segmentation
08 segmentation
 
Martial arts quote # 12 funakoshi
Martial arts quote # 12 funakoshiMartial arts quote # 12 funakoshi
Martial arts quote # 12 funakoshi
 
2007 Sep. Praktikum Staudengärtnerei
2007 Sep. Praktikum Staudengärtnerei2007 Sep. Praktikum Staudengärtnerei
2007 Sep. Praktikum Staudengärtnerei
 
My Birthday Card
My Birthday CardMy Birthday Card
My Birthday Card
 
RR CV
RR CVRR CV
RR CV
 
Дмитрий Шевченко, Эковахта по Северному Кавказу
Дмитрий Шевченко, Эковахта по Северному Кавказу Дмитрий Шевченко, Эковахта по Северному Кавказу
Дмитрий Шевченко, Эковахта по Северному Кавказу
 
JPIERE-0109:WYSIWYG-Editor
JPIERE-0109:WYSIWYG-EditorJPIERE-0109:WYSIWYG-Editor
JPIERE-0109:WYSIWYG-Editor
 
History of Cregan Library
History of Cregan LibraryHistory of Cregan Library
History of Cregan Library
 
2015年度春学期 画像情報処理 第7回 主成分分析とKarhunen-Loève変換 (2015. 6. 3)
2015年度春学期 画像情報処理 第7回 主成分分析とKarhunen-Loève変換 (2015. 6. 3)2015年度春学期 画像情報処理 第7回 主成分分析とKarhunen-Loève変換 (2015. 6. 3)
2015年度春学期 画像情報処理 第7回 主成分分析とKarhunen-Loève変換 (2015. 6. 3)
 
Clubes de Emprendimiento Antioquia e - Gobernación de Antioquia La Más Educada
Clubes de Emprendimiento Antioquia e - Gobernación de Antioquia La Más EducadaClubes de Emprendimiento Antioquia e - Gobernación de Antioquia La Más Educada
Clubes de Emprendimiento Antioquia e - Gobernación de Antioquia La Más Educada
 
Clubes de Emprendimiento Antioquia e - Gobernación de Antioquia La Más Educada
Clubes de Emprendimiento Antioquia e - Gobernación de Antioquia La Más EducadaClubes de Emprendimiento Antioquia e - Gobernación de Antioquia La Más Educada
Clubes de Emprendimiento Antioquia e - Gobernación de Antioquia La Más Educada
 
Diplomado tic
Diplomado ticDiplomado tic
Diplomado tic
 
Pravilnik o bližim zdravstvenim uslovima koje moraju da ispunjavaju vozači ra...
Pravilnik o bližim zdravstvenim uslovima koje moraju da ispunjavaju vozači ra...Pravilnik o bližim zdravstvenim uslovima koje moraju da ispunjavaju vozači ra...
Pravilnik o bližim zdravstvenim uslovima koje moraju da ispunjavaju vozači ra...
 
D1 2016 YEAR END REVIEW BOOKLET
D1 2016 YEAR END REVIEW BOOKLETD1 2016 YEAR END REVIEW BOOKLET
D1 2016 YEAR END REVIEW BOOKLET
 
Millennium Development Goal 5: Maternal Health Interventions
Millennium Development Goal 5: Maternal Health InterventionsMillennium Development Goal 5: Maternal Health Interventions
Millennium Development Goal 5: Maternal Health Interventions
 

Similar to Lec12 translation

Similar to Lec12 translation (20)

Lec16 io
Lec16 ioLec16 io
Lec16 io
 
Lec07 exclusion
Lec07 exclusionLec07 exclusion
Lec07 exclusion
 
Lec05 cooperating (1)
Lec05 cooperating (1)Lec05 cooperating (1)
Lec05 cooperating (1)
 
Computerin tehnikin undes 1hicheeliin lektsiin huraangui
Computerin tehnikin undes 1hicheeliin lektsiin huraanguiComputerin tehnikin undes 1hicheeliin lektsiin huraangui
Computerin tehnikin undes 1hicheeliin lektsiin huraangui
 
Lecture 8
Lecture 8Lecture 8
Lecture 8
 
Lecture 15, 16
Lecture 15, 16Lecture 15, 16
Lecture 15, 16
 
Lecture6
Lecture6Lecture6
Lecture6
 
Xml orchuulga bayarbat purevkhuu
Xml orchuulga bayarbat purevkhuuXml orchuulga bayarbat purevkhuu
Xml orchuulga bayarbat purevkhuu
 
Lecture 6,7
Lecture 6,7Lecture 6,7
Lecture 6,7
 
Web design lecture 1
Web design lecture 1Web design lecture 1
Web design lecture 1
 
Html, css, java script
Html, css, java scriptHtml, css, java script
Html, css, java script
 
Lecture16
Lecture16Lecture16
Lecture16
 
Node.js гэж юу вэ?
Node.js гэж юу вэ?Node.js гэж юу вэ?
Node.js гэж юу вэ?
 
лекц2
лекц2лекц2
лекц2
 
u.cs101 "Алгоритм ба програмчлал" Лекц №1
u.cs101 "Алгоритм ба програмчлал" Лекц №1u.cs101 "Алгоритм ба програмчлал" Лекц №1
u.cs101 "Алгоритм ба програмчлал" Лекц №1
 
Lecture5
Lecture5Lecture5
Lecture5
 
Komp vndes
Komp vndesKomp vndes
Komp vndes
 
Lab 4
Lab 4Lab 4
Lab 4
 
It101 1
It101 1It101 1
It101 1
 
Computer
ComputerComputer
Computer
 

More from Khuder Altangerel

IOI 2016 "Молекул" бодлогын бодолт
IOI 2016 "Молекул" бодлогын бодолтIOI 2016 "Молекул" бодлогын бодолт
IOI 2016 "Молекул" бодлогын бодолтKhuder Altangerel
 
Марковын далд загвар
Марковын далд загварМарковын далд загвар
Марковын далд загварKhuder Altangerel
 
МХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадвар
МХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадварМХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадвар
МХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадварKhuder Altangerel
 
u.cs101 "Алгоритм ба програмчлал" Лекц №7
u.cs101 "Алгоритм ба програмчлал" Лекц №7u.cs101 "Алгоритм ба програмчлал" Лекц №7
u.cs101 "Алгоритм ба програмчлал" Лекц №7Khuder Altangerel
 
u.cs101 "Алгоритм ба програмчлал" Лекц №6
u.cs101 "Алгоритм ба програмчлал" Лекц №6u.cs101 "Алгоритм ба програмчлал" Лекц №6
u.cs101 "Алгоритм ба програмчлал" Лекц №6Khuder Altangerel
 
u.cs101 "Алгоритм ба програмчлал" Лекц №5
u.cs101 "Алгоритм ба програмчлал" Лекц №5u.cs101 "Алгоритм ба програмчлал" Лекц №5
u.cs101 "Алгоритм ба програмчлал" Лекц №5Khuder Altangerel
 
u.cs101 "Алгоритм ба програмчлал" Лекц №4
u.cs101 "Алгоритм ба програмчлал" Лекц №4u.cs101 "Алгоритм ба програмчлал" Лекц №4
u.cs101 "Алгоритм ба програмчлал" Лекц №4Khuder Altangerel
 
u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3Khuder Altangerel
 
u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2Khuder Altangerel
 

More from Khuder Altangerel (9)

IOI 2016 "Молекул" бодлогын бодолт
IOI 2016 "Молекул" бодлогын бодолтIOI 2016 "Молекул" бодлогын бодолт
IOI 2016 "Молекул" бодлогын бодолт
 
Марковын далд загвар
Марковын далд загварМарковын далд загвар
Марковын далд загвар
 
МХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадвар
МХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадварМХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадвар
МХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадвар
 
u.cs101 "Алгоритм ба програмчлал" Лекц №7
u.cs101 "Алгоритм ба програмчлал" Лекц №7u.cs101 "Алгоритм ба програмчлал" Лекц №7
u.cs101 "Алгоритм ба програмчлал" Лекц №7
 
u.cs101 "Алгоритм ба програмчлал" Лекц №6
u.cs101 "Алгоритм ба програмчлал" Лекц №6u.cs101 "Алгоритм ба програмчлал" Лекц №6
u.cs101 "Алгоритм ба програмчлал" Лекц №6
 
u.cs101 "Алгоритм ба програмчлал" Лекц №5
u.cs101 "Алгоритм ба програмчлал" Лекц №5u.cs101 "Алгоритм ба програмчлал" Лекц №5
u.cs101 "Алгоритм ба програмчлал" Лекц №5
 
u.cs101 "Алгоритм ба програмчлал" Лекц №4
u.cs101 "Алгоритм ба програмчлал" Лекц №4u.cs101 "Алгоритм ба програмчлал" Лекц №4
u.cs101 "Алгоритм ба програмчлал" Лекц №4
 
u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3
 
u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2
 

Lec12 translation

  • 1. CS207 Үйлдлийн систем Лекц 12 Хамгаалалт (үргэлжлэл) Хаягийн хувиргалт А.Хүдэр, Э.Мөнхсүх elearn.sict.edu.mn
  • 2. 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+4PC 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+4PC 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+4PC 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 » Бит бүр нь фикик санах ойн хуудас бүрийг заадаг. 1allocated, 0free • Хуудас хэмжээ сегмент шиг том байх хэрэгтэй юу? – Үгүй: Их хэмжээний дотоод цоорхойг үүсгэж болно. » Ихэвчлэн жижиг хуудаслалт хэрэглэдэг. (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 Хэрэглэгчийн горимоос кернелийн горим (Системийн дуудалт) • Хэрэглэгч өөрөө өрөөнөөс гарч чадахгүй – Хамгаалалт утгагүй болно! – Тэгвэл хэрэглэгчийн горим нь кернелийн горим руу яаж шилжих вэ? • Системийн дуудалт: Сайн дураараа кернел руу хийх функцын дуудалт. – UserKernel рүү хийх шилжилтийг ТХ-аар хянадаг. – Кернелийн бүх функцыг дуудаж болох уу? » Үгүй! Зөвхөн тусгай функцуудыг. – Системийн дуудалтын 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 UserKernel (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: 0kernel mode – e = interrupt enable: 0interrupts disabled – Exception6 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 – UserKernel: 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

  1. Base and Bounds, AKA Base and Limit First built in the Cray-1
  2. First fit, best fit, buddy system, …
  3. V- Verified N – Non Verified
  4. 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)
  5. PSL