More Related Content More from Khuder Altangerel More from Khuder Altangerel (13) Lec15 pagereplace last2. Lec 15.210/21/09 Kubiatowicz CS162 ©UCB Fall 2009
• ХХБ нь бидэнд шаардлагаар ачаалах хэрэгжүүлэлтэнд тусалдаг.
– Хүчинтэй Хуудас санах ойд байгаа, ХХБ нь физик хуудсыг
заана.
– Хүчингүй Хуудас санах ойд байхгүй; шаардлагатай бол ХХК-
д байхгүй мэдээлийг дискнээс хайж олно.
• Хэрэглэгч хүчингүй ХХБ рүү хандсан гэж үзье.
– СОУТ нь ҮС-ийн дотоод тасалдлыг үүсгэдэг.
» Дотоод тасалдлын нэр нь “Хуудсын алдаа”.
– ҮС хуудсын алдааны үед юу хийх вэ?:
» Солих хуучин хуудсыг сонгоно
» Хэрэв хуучин хуудас өөрчлөгдсөн байвал (“D=1”)диск рүү буцааж
бичнэ.
» Түүний ХХБ-г өөрчлөөд ХКБ-д байгаа бичлэгүүдийг хүчингүй
болгоно.
» Шинэ хуудсыг дискнээс санах ой руу ачаална.
» ХХ-ийн бичлэгээ шинэчлээд ХКБ дэх шинэ бичлэгийг хүчингүй
болгно.
» Хуулбарыг зогссон газраас нь үргэлжлүүлэн ажиллана.
– Хуулбар үргэжлэн ажиллахад шинэ хуудсны ХКБ ачаална!
– Нэг процессийн хуудснуудыг дискнээс авчирч байх үед ҮС өөр
процессийг бэлэн дарааллаас сонгож ажлуулна.
» Зогссон пр хүлээх дараалалд байрлана.
Шаардлагаар ачаалах хуудсын механизм
3. Lec 15.310/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Агуулга
• Нарийвчлалтай тасалдал
• Хуудас солилтын бодлого
– Цагны алгоритм
– N-р боломжийн алгоритм
– Хоёрдахь боломжийн жагсаалт алгоритм
• Хуудас хуваарилалтын бодлого
• Ажлын багц/мөргөлдөөн
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.
4. Lec 15.410/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Програм хангамжаар ачаалагдах ХКБ
• MIPS ХКБ-г програм хангамжаар ачаалдаг.
– ХКБ байх хэмжээ өндөр удаан байсан ч ХКБ програм хангамжийг
дүүргэдэг.
– Энгийн техник хангамж ба нэмэгдэл уян хатан чанар: Програм хангамж нь
ямар ч тохиромжтой форматаар хөрвүүлэлтийн хүснэгтүүдийг хадгалж
болно.
• ХКБ- ямар ч техник хамнгамж дүүргэхийг ашиглахгүйгээр процесс яаж
ажиллах вэ?
– Хурдан зам (ХКБ байгаа valid=1):
» Техник хангамж Физик хуудас руу хөрвүүлэлтийг хийнэ.
– Удаан зам (ХКБ байгаа valid=0 эсвэл ХКБ байхгүй)
» Техник хангамж ХКБ-гийн алдааг хүлээж авах.
– ХКБ алдаа гарах үед үйлдлийн систем юу хийдэг вэ?
» Хуудсын хүснэгтээс тохирох ХХБ-г олох.
» хэрвээ valid=1, ХХБ-н хуудсын хүснэгтийн бичлэгийг ХКБ хуулана.
» Хэрвээ valid=0, өмнө дэлгэрэнгүй тайлбарласан “Хуудасны алдаа”-г
гүйтэтгэнэ.
» Хуулбарыг үргэлжлүүлэх.
• Бүх зүйл хэрэглэгчийн процессд тунгалаг байна:
– диск / хуудаслалтын талаар мэдэхгүй байна.
– Програм хамгамжаар ХКБ боловсруулах талаар мэдэхгүй байна
5. Lec 15.510/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Тунгалаг тасалдал
• Алдаа үүсгэсэн командыг яаж тодорхой дахин эхлүүлэх?
– Бид зүгээр л алгасаж болох уу?
» Үгүй: физик хуудастай дахин холбогдсоны дараа ачаалалт болог
хадгалалт хийхэд хэрэгтэй.
• Хадгалалтанд техник хангамжийн тусламж хэрэгтэй:
– Алдаа үүсгэсэн команд ба завсрын төлөв
» Алдаа үүсгэсэн командыг олох хэрэгтэй.
» Алдааны байрлалыг олоход нэг PC хангалттай юу????
– Процессорын төлөв: Хэрэглэгчийн хуулбарыг дахин эхлүүлэхэд
хангалттай.
» Регистр, стек гэх мэтийг Хадгалах/сэргээх.
• Ямар нэгэн команд гаж нөлөө үзүүлдэг үү??
Load TLBFaulting
Inst1
Faulting
Inst1
Faulting
Inst2
Faulting
Inst2
Fetch page/
Load TLB
User
OS
TLB Faults
6. Lec 15.610/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Ямар хэвийн бус зүйл тохиолдож болох вэ
• Команд нь гаж нөлөө үзүүлдэг бол вэ??
– Сонголтууд:
» Гаж нөлөөг буцаах (дахин ачаалал /restart/)
» Гаж нөлөөг арилгах (Хэцүү!)
– Жишээ 1: mov (sp)+,10
» стекийн заагч руу бичих үед хуудсын алдаа үүсвэл яах вэ?
» sp хуудсын адааны өмнө нэмэгдүүлэх үү дараа нэмэгдүүлэх үү?
– Жишээ 2: strcpy (r1), (r2)
» 2 хаяг ижилхэн бол: буцааж чадахгүй!
» IBM S/370 ба VAX шийдэл: хоёр ажиллуулах – зөвхөн нэг унших
• “RISC” Процесор дээр яах вэ ?
– Саатуулагдсан салбарууд?
» жишээ: bne somewhere
ld r1,(sp)
» Нарийвлалтай тасалдал 2 РC нээс бүрдэнэ: PC ба nPC
– Саатуулагдсан тасалдал:
» Example: div r1, r2, r3
ld r1, (sp)
» Хэрвээ 0-д хуваах алдаа гартал олон алхам хийгддэг
гэхдээ ачаалалт дээр хуудсын алдаа гарсан бол яах
вэ?
7. Lec 15.710/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Нарийвлалтай тасалдал
• Нарийвчлал Програм хангамж буруу команд хүртэл
ажилласан гэж үзээд машинд төлвийг хадгалагдана.
– Өмнөх бүх команд дууссан байна.
– Алдаатай команд болон түүний дараагийн командыг
эхлүүлээгүй байгаа гэж үзнэ.
– Ижил системийн код нь ялгаатай хэрэгжүүлэлт дээр
ажиллана.
– Дамжуургатай эсвэл алдаатай биелэлтийн үед маш хэцүү...
– MIPS-н ийм байдлаар ажилладаг.
• Нарийвчлалгүй Системийн програм хангамж хаана юу
байгааг ба бүгдийг нь нэгтгэнэ.
• Гүйцэтгэлд зориулан дизайнерууд нарийвчлалтай
тасалдлуудыг орхидог.
• Алдаатай биелэлт болон салбарыг урьдчилан тааварладаг
орчин үеийн техник нь нарийвчлалтай тасалдлуудыг
гүйцэтгэхэд тусалж байна.
9. Lec 15.910/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Шаардлагаар ачаалах жишээ
• Шаардлагаар ачаалах арга нь кэшлэлтэй адилхан учраас
хандалтын дундаж хугацааг тооцоолох! (“Effective Access
Time”)
– EAT = Hit Rate x Hit Time + Miss Rate x Miss Time
– EAT = Hit Time + Miss Rate x Miss Penalty
• Жишээ:
– Memory access time = 200 nanoseconds
– Average page-fault service time = 8 milliseconds
– Suppose p = Probability of miss, 1-p = Probably of hit
– Then, we can compute EAT as follows:
EAT = 200ns + p x 8 ms
= 200ns + p x 8,000,000ns
• Хэрвээ 1000 хандалтаас 1 нь алдаа гарч байвал EAT = 8.2
μs байна.:
– Энэ нь 40 гэсэн коффицеэнттойгоор удаашруулана!
• Хэрвээ 10-с бага хувиар удаашруулана гэвэл?
– 200ns x 1.1 < EAT p < 2.5 x 10-6
– 400000 хандалтанд 1 хуудсны алдаа гарна.
10. Lec 15.1010/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Ямар үед хуудсын алдаа гарах вэ?
• Заавал :
– Өмнө нь санах ой руу хуудаслагдаж байгаагүй хуудаснууд.
– Бид эдгээрийг шийдэж болох уу?
» Урьдчилэн ачалаах: тэдгээрийг хэрэг болохоос өмнө санах ой руу
ачаалах хэрэгтэй.
» Ямар нэгэн байдлаар урьдчилан таамаглах хэрэгтэй.
• Багтаамж :
– Санах ой хүрэлцэхгүй байна. Ямар нэгэн байдлаар нэмэгдүүлэх ёстой.
– Бид үүнийг хийж чадах уу?
» Нэгдүгээр хувилбар: DRAM-ны тоог нэмэх (хурдан биш засвар!)
» Дараагийн хувилбар: Хэрвээ олон процесс санах ойтой бол: тус бүрт нь
хуваарилсан санах ой хувийг тохируулах.
• Зөрчил :
– Виртуал санах ой нь “Бүрэн хамааралтай” кэш учраас зөрчлөөс хамаарч
хуудсын алдаа гарахгүй.
• Бодлого :
– Хуудсууд санах ой байсан боловч саяхан бодлого солилтын үед түлхэгдэн
гарсан.
» Яаж засах вэ? Хуудас солилын бодлогыг сайжруулах.
11. Lec 15.1110/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Хуудас солилтын бодлого
• Бид яагаад солилтын бодлогонд анхаарал хандуулдаг вэ?
– Солилт нь нэгэн төрлийн кэш юм.
– Ялангуяа хуудастай маш чухал холбоотой.
» Алдааны зардал их байдаг: Дискинд очих ёстой.
» Хамгийн чухал хуудсуудаа гаргалгүйгээр санах ойд байглана.
• FIFO (Эхэлж ороод, Эхэлж гарах)
– Хамгийн хуучин хуудсыг гаргана. Шударга байх– Бүх хуудаснууд
санах ойд ижил хугацаанд байрлах.
– Сул тал. Учир нь хааяа ашигладаг хуудсны оронд их ашигладдаг
хуудсыг гаргаж болдог.
• MIN (Хамгийн бага):
– Хамгийн урт хугацаанд ашиглагдахгүй хуудсыг солилт хийх байх.
– Гэхдээ ирээдүйг мэдэж чадахгүй…
– Гэсэн ч харьцуулалтын сайн жишээ болдог.
• RANDOM(Санамсаргүй):
– Хуудаснуудыг санамсаргүйгээр сонгож солино.
– ХКБ-н нийтлэг шийдэл. Энгийн техник хангамж
– Урьдчилан таамаглах боломж муутай – бодит хугацаагны баталгаа
гаргахад хүндрэлтэй.
12. Lec 15.1210/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Солилтын бодлого(үргэлжлэл)
• LRU (хандаагүй хамгийн удсан):
– Хамгийн урт хугацаанд ашиглаагүй хуудсыг солих.
– Програм хангамж ямар нэгэн байдлаар ашиглагдахгүй удсан бол
ойрын үед хэрэглэхгүй гэсэн зарчмаар ажиллана.
– LRU нь сайжруулсан MIN-тэй ойролцоо
• LRU хэрхэн хэрэгжүүлэх вэ? Жагсаалт хэрэглэнэ.
– Ашиглах үед нь хуудсын жагсаалтаас авч толгойд байрлуулах.
– LRU хуудас сүүлд нь байна.
• Энэ хуудсын схемийн асуулдлууд?
– Хуудсыг хэрэглсэн үед нэн даруй мэдэж жагсаалтанд өөрчлөлт
хийнэ.
– Техник хангамжийн хандалт бүрт олон командыг биелүүлэнэ.
• Хүмүүс амьдрал дээр LRU-тэй ойролцоо сэтгэдэг.
Page 6 Page 7 Page 1 Page 2Head
Tail (LRU)
13. Lec 15.1310/21/09 Kubiatowicz CS162 ©UCB Fall 2009
• 3 хуудсны хэмжээтэй санах ой, 4 виртуал хуудас байгаа.
Хандалтууд дараах дарааллаар хийгдэнэ.
– A B C A B D A D B C B
• Consider FIFO Page replacement:
– FIFO: 7 хуудсын алдаа.
– D орж ирээд солилт хийсний дараа А ахин хэрэгтэй болж
байна. А-г солих нь муу сонголт байна.
Жишээ: FIFO
C
B
A
D
C
B
A
BCBDADBACBA
3
2
1
Ref:
Page:
14. Lec 15.1410/21/09 Kubiatowicz CS162 ©UCB Fall 2009
• Өмнөхтэй адил хандалтуудын дараалал:
– A B C A B D A D B C B
• Consider MIN Page replacement:
– MIN: 5 хуудсын алдаа.
– D-г хаана оруулж ирэх вэ? Ирээдүйд хамгийн сүүлд
хандагдах хуудсыг хайна.
• LRU байсан бол яах вэ?
– MIN тэй,адилхан шийдвэр гаргана гэхдээ үргэлж адилхан
байхгүй.
жишээ: MIN
C
DC
B
A
BCBDADBACBA
3
2
1
Ref:
Page:
15. Lec 15.1510/21/09 Kubiatowicz CS162 ©UCB Fall 2009
• Хандалтын дараалал: A B C D A B C D A B C D
• LRU Performs as follows (same as FIFO here):
– Хандалт бүр дээр хуудсын алдаа гарч байна.
• MIN Does much better:
D
LRU хэзээ муу ажиллах вэ?
C
B
A
D
C
B
A
D
C
B
A
CBADCBADCBA D
3
2
1
Ref:
Page:
B
C
DC
B
A
CBADCBADCBA D
3
2
1
Ref:
Page:
16. Lec 15.1610/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Фреймийн тоо ба хуудасны алдааны уялдаа хамаарал
• Нэг сайн шинж чанар: Санах ой нэмэх үед хуудсын алдаа
буурч байна.
– Энэ үргэлж тохиолдох уу?
– Тийм юм шиг байна тиймүү?
• Үгүй : BeLady-н гажуудал
– Зарим солилтын алгоритм (FIFO) нь энэ шинж чанрыг
агуулдаггү!
17. Lec 15.1710/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Санах ой нэмэх нь үргэлж алаанд багасгахгүй
• Санах ой нэмэхэд алдаа багасах уу?
– LRU ба MIN арга тийм.
– FIFO заавал биш! (Called Belady’s anomaly)
• Санах ой нэмсэний дараа:
– FIFO нь агуулга шал өөр байж болно.
– Харин LRU болон Min-г ашиглах Х хуудас бүхий санах ойн
агуулга X + 1 санах ойн дэд хэсэг байна
D
C
E
B
A
D
C
B
A
DCBAEBADCBA E
3
2
1
Ref:
Page:
CD4
E
D
B
A
E
C
B
A
DCBAEBADCBA E
3
2
1
Ref:
Page:
18. Lec 15.1810/21/09 Kubiatowicz CS162 ©UCB Fall 2009
LRU хэрэгжүүлэх
• Төгс хэрэгжүүлэлт:
– Хуудас бүрийн хувьд хандсан хугацааг нь хадгална.
– Хуудсануудын хандсан хугацаагаар нь эрэмбэлсэн жагсаалтыг
үүсгэнэ.
– Хэрэгжүүлэхэд зардал өндөртэй.
• Цагны алгоритм: Физик хуудснуудыг цагны нэг зүүгээр зохион
байгуулах.
– LRU-тэй ойролцоо (бараг л MIN)
– Хамгийн хуучин хуудас биш, гэхдээ хуучин хуудас солино.
• Дэлгэрэнгүй:
– Физик хуудас бүрт техник хангамжийн use бит ашиглах:
» Хандах бүрт техник хангамж useт битийг тогтооно.
» Хэрвээ Use бит 0-тэй тэнцүү бол ойрд хандаагүй гэсэн үг.
– Хуудсын алдааны үед:
» Цагийн зүүг эргүүлэнэ. (not real time)
» Use битийг шалгах:
» 1саяхан ашигласан; тэглээд орхино.
0Солилт хийх боломжтой хуудас.
– Солих хуудас үргэлж олдох уу эсвэл хязгааргүй эргэлдэх үү?
» Ашиглах битүүд бүгд нэгтэй тэнцүү бол бүтэн эргэнэFIFO
19. Lec 15.1910/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Цагны алгоритм: Ойрл ашиглагдаагүй
Set of all pages
in Memory
Цагны нэг зүү:
Зөвхөн хуудсын алдаа гарах үед
зүү нь явна!
Ойрд ашиглаагүй хуудсыг хайна.
Хуудсуудыг ойр хэрэглэгдээгүй
гэж тэмдэглэнэ.
• Цагийн зүү удаан хөдөлж байгаа бол?
– Сайн уу муу юу?
» Хуудсын алдаа бага эсвэл - солих хуудас хурдан олдоно.
• Цагийн зүү хурдан хөдөлж байгаа бол?
– Хуудсын алдаа их гарч байгаа эсвэл –Нэгтэй тэнцүү хандалтын
битүүд олон байна.
• Цагны алгоритмыг харах нэг арга:
» Хуудсуудыг шууд хоёр бүлэгт хуваах: шинэ ба хуучин
– Яагаад 2-с олон бүлэгт хуваахгүй байна?
20. Lec 15.2010/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Цагны алгоритмын “N-р боломж” хувилбар
• N -р боломж алгоритм: Хуудсанд N боломж олгоно.
– Үйлдлийн систем нь хуудас болгонд тоолуур хадгалж байдаг: # шалгалтын
тоо
– Хуудсын алдаа гарахад ҮС нь ашиглах битийг шалгадаг:
» 1 Use болон тоолуурыг тэглэнэ. (сүүлийн шалгалтанд хэрэглсэн)
» 0тоолуурыг нэмэгдүүлэнэ; хэрвээ тоо нь=N, хуудас солино.
– Цагны зүү N удаа явж өнгөрөхөд хуудсыг ашиглаагүй байсан.
• Бид яаж N –г сонгох вэ?
– Яагаад том N авах хэрэгтэй вэ? LRU нь илүү адилхан болно.
» Хэрвээ N ~ 1000 бол маш сайн төхнө.
– Яагаад жижиг N? Илүү хэмнэлттэй.
» Үгүй бол сул хуудсыг олохын тулд их замыг туулж магадгүй.
• Бохир хуудсуудыг яах вэ?
– Бохир хуудас нь хуудас солилтонд сөргөөр нөлөөлдөг тул солилт
хийхийнхээ өмнө нэмэлт боломжуудыг олгох хэрэгтэй юу?
– Нийтлэг арга:
» Цэвэр хуудас N=1
» Бохир хуудас N=2 (N=1 болонгуут нь дикс руу бичих)
21. Lec 15.2110/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Цагны алгоритм: Дэлгэрэнгүй
• ХХБ-н аль бит нь бидэнд хэрэгтэй вэ?
– Use: Хуудасруу хандсан үед тогтооно. Цагны алгоритм тэглэнэ.
– Modified: Хуудсанд өөрчлөлт хийсэн үед тогтоогоод, хуудсыг диск
рүү бичих үед тэглэнэ.
– Valid: Програм энэ хуудас руу хандаж болно.
– Read-only: Програм унших болон бичиж болно, харин өөрчилж
болохгүй.
» Кодны хуудсуудыг өөрчлүүлэхгүй байх хэрэгтэй!
• Техник хангамжийн дэмжлэгтэй“өөрчлөлтийн” бит бидэнд хэрэгтэй
юу?
– Үгүй. Зөвхөн унших битийг хэрэглэн орлуулж болно.(BSD Unix)
» Эхлээд бүх хуудсыг read only гэж тэмдэглэнэ. Өгөгдлийн
хуудсуудыг хүртэл.
» Бичих үед ҮС-рүү шилжинэ.ҮС “modified” битийг тогтоогоод
хуудсыг read-write гэж тэмдэглэнэ.
» Хуудас дискнээс ирэхэд read-only гэж тэмдэглэнэ.
22. Lec 15.2210/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Үргэлжлэл
• Техник хангамжийн дэмжлэгтэй“Use” бит бидэнд хэрэгтэй юу?
– Үгүй. Дээрхтэй адилаар орлуулж болно:
» Санах ойд байсан ч гэсэн бүх хуудсыг хүчингүй гэж тэмдэглэнэ.
» Хүчингүй хуудсыг унших үед ҮС рүү шилжинэ.
» ҮС use битийг тогтоогоод read-only гэж тэмдэглэнэ.
– Өөрлөлтийн битийг өмнөхтэй адил боловсруулж болно:
» Бичих үед ҮС рүү шилжинэ. (Хүчингүй болон read-only байсан ч
хамаагүй)
» use болон modified битийг тогтоогоод read-write гэж тэмдэглэнэ.
– Цагийн зүү дайрч өнгөрөхөд use болон modified битийг тэглээд хуудсыг
хүчингүй гэж тэмдэглэнэ.
• Цаг бол зөвхөн LRU тэй төстэй гэдгийг санаарай.
– Бид нарт унших бичих үед гарах хуудсны алдааны мэдээллүүд байгаа бол
төсөөтэй байдлыг сайжруулж чадах уу?
– Хамгийн хуучин хуудсыг биш ямар нэг хуучин хуудсыг олох хэрэгтэй!
– Хариулт: хоёрдахь боломж жагсаалт
23. Lec 15.2310/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Хоёрдахь боломж жагсаалтын алгоримт
(VAX/VMS)
• Санах ойг 2 хэсэгт хуваана: Идэвхитэй жагсаалт (RW), SC жагсаалт (Invalid)
• Идэвхитэй жагсаалтанд байгаа хуудсуудад дээд хурдаараа хандаж бално.
• Үгүй бол хуудсын алдаа үүснэ.
– Идэвхитэй жагсаалтын төгсгөлд байгаа хэтэрсэн хуудсыг авч хоёр дахь
боломж жагсаалтын (SC) эхэнд байрлуулаад хүчингүй гэж тэмдэглэнэ.
– SC жагсаалт байгаа хүссэн хуудсыг идэвхитэй жагсаалтын эхэнд
байрлуулаад RW гэж тэмдэглэнэ.
– SC жагсаалтанд байхгүй бол: Идэвхитэй жагсаалтын эхэнд оруулж ирээд RW
гэж тэмдэглэнэ; тэгээд SC жагсаалтын сүүлд байгаа хуудсыг гаргана.
Directly
Mapped Pages
Marked: RW
List: FIFO
Second
Chance List
Marked: Invalid
List: LRU
LRU victim
Page-in
From disk
New
Active
Pages
New
SC
Victims
24. Lec 15.2410/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Second-Chance List Algorithm (con’t)
• How many pages for second chance list?
– If 0 FIFO
– If all LRU, but page fault on every page reference
• Pick intermediate value. Result is:
– Pro: Few disk accesses (page only goes to disk if unused for a
long time)
– Con: Increased overhead trapping to OS (software / hardware
tradeoff)
• With page translation, we can adapt to any kind of access the
program makes
– Later, we will show how to use page translation / protection to
share memory between threads on widely separated machines
• Question: why didn’t VAX include “use” bit?
– Strecker (architect) asked OS people, they said they didn’t need
it, so didn’t implement it
– He later got blamed, but VAX did OK anyway
25. Lec 15.2510/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Free List
• Keep set of free pages ready for use in demand paging
– Freelist filled in background by Clock algorithm or other
technique (“Pageout demon”)
– Dirty pages start copying back to disk when enter list
• Like VAX second-chance list
– If page needed before reused, just return to active set
• Advantage: Faster for page fault
– Can always use page (or pages) immediately on fault
Set of all pages
in Memory
Single Clock Hand:
Advances as needed to keep
freelist full (“background”)
D
D
Free Pages
For Processes
26. Lec 15.2610/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Demand Paging (more details)
• Does software-loaded TLB need use bit?
Two Options:
– Hardware sets use bit in TLB; when TLB entry is replaced,
software copies use bit back to page table
– Software manages TLB entries as FIFO list; everything not in
TLB is Second-Chance list, managed as strict LRU
• Core Map
– Page tables map virtual page physical page
– Do we need a reverse mapping (i.e. physical page virtual
page)?
» Yes. Clock algorithm runs through page frames. If sharing, then
multiple virtual-pages per physical page
» Can’t push page out to disk without invalidating all PTEs
27. Lec 15.2710/21/09 Kubiatowicz CS162 ©UCB Fall 2009
Summary
• Precise Exception specifies a single instruction for which:
– All previous instructions have completed (committed state)
– No following instructions nor actual instruction have started
• Replacement policies
– FIFO: Place pages on queue, replace page at end
– MIN: Replace page that will be used farthest in future
– LRU: Replace page used farthest in past
• Clock Algorithm: Approximation to LRU
– Arrange all pages in circular list
– Sweep through them, marking as not “in use”
– If page not “in use” for one pass, than can replace
• Nth-chance clock algorithm: Another approx LRU
– Give pages multiple passes of clock hand before replacing
• Second-Chance List algorithm: Yet another approx LRU
– Divide pages into two groups, one of which is truly LRU and
managed on page faults.
Editor's Notes Nachos and other systems: hardware saves state, to help you. Role of nextPC, LoadReg, etc.
Other examples: 68000 was non-virtualizable. Couldn’t restart after a fault
So Apollo Computers put 2 68000 in every workstation:
Executes user code (hangs on fault)
Handles fault (no overlapped I/O)
Intel i860 (came out same time as 486): doesn’t provide failing virtual address. Have to go back and disassemble instruction to figure out what failed…
Moral: have to know lots of stuff to do hardware design: hardware/compilers/OS