Lecture3
- 2. Үйлдлийн системийн түвшин Үйлдлийн систем – командын түвшинд нэмэлт команд болон онцлог үйлдэл үүсгэх программ. Үйлдлийн системийн түвшний команд – хэрэглээний программист хандах боломжтой командуудын багц Доод түвшнүүдийнхээ командуудыг агуулахаас гадна шинэ командуудтай. Энэ шинэ командуудыг системийн дуудалт (systemcall) гэнэ. Үйлдлийн системийн түвшин интерпретацлагдана.
- 3. Виртуаль санах ой Гүйцэтгэх программ санах ойгоос их хэмжээтэй бол overlay гэж нэрлэгдэх арга хэрэглэдэг байсан. Энэ аргыг программист удирддаг байсан. 1961 онд автоматаар нэмэх арга буюу виртуаль санах ой хэрэглэх арга гарч ирсэн.
- 4. Санах ойн хуудсан зохион байгуулалт 4096 санах ойн үгтэй, 16 бит командын хаягийн талбартай компьютер 65536 (216=65536) санах ойн үгэнд хандана. Виртуаль санах ой гарахаас өмнө санах ойн талбар ба санах ойн хаяг ялгаатай биш байсан. Дурын агшинд 0-4095 үгэнд хандаж болох ч энэ үгнүүд санах ойн 0-4095 хаягт харгалзах албагүй.
- 5. 8192-12287 хаягт хандахад: 4096-8191 дэх үгнүүд дискэнд хадгалагдана. 8192-12287 үгнүүд үндсэн санах ойд хадгалагдана. Хаягийн байрлал өөрчлөгдөнө: одоо 8192-12287 дахь хаяг 0-4095 хаягтай санах ойн cell-д харгалзана. Программ үргэлжлэн гүйцэтгэгдэнэ. Ингэж автоматаар нэмэхийг хуудсан зохион байгуулалт гэх ба дискнээс уншигдаж байгаа хэсгийг хуудас гэнэ. Өөр нэг арга: программ хандаж болох хаягийг виртуаль хаяг гэж нэрлээд санах ойн бодит хаягийг физик хаяг гэж нэрлэх. Санах ой ба хуудасны хүснэгтийг тусгаарлах нь виртуаль хаяг ба физик хаягийг салгахтай харгалзана. Энэ тохиолдолд дискэн дээр виртуаль хаягийг багтаах хангалттай зай бий гэж үзнэ.
- 6. Санах ойн хуудас үүсгэх Виртуаль санах ойд программ болон өгөгдөл хадгалах диск хэрэгтэй. Виртуаль санах ойг 512÷64Кбайт хүртэл ижил хэмжээтэй хуудсуудад хуваана. Заримдаа 4Мбайт ч байна. а) 64К хуудас – 4К б) 32К хуудас – 4К
- 12. Хуудас дуудах ба ажлын олонлог Үндсэн санах ойд виртуаль хуудас байхгүй үед энэ хуудсыг дуудахад алдаа гарна. Ийм алдаа гарахад үйлдлийн систем дискнээс хуудсыг уншиж хуудасны хүснэгтэд шинэ физик хаяг нэмээд командыг давтана. Виртуаль санах ойтой машин программын нэг ч хэсэг нь үндсэн санах ойд байхгүй байхад уг программыг ачаалж чадна. Энэ тохиолдолд хуудасны хүснэгт бүх виртуаль хуудас туслах санах ойд байгаа гэдгийг заах ёстой. Төв процессор эхний командыг дуудах гэж оролдоод хуудас байхгүй гэсэн алдааны хариуг авахад эхний командыг агуулсан хуудас санах ойп ачаалагдан хүснэгтэд бичигдэнэ. Үүний дараа эхний команд гүйцэтгэгдэнэ. Хэрэв эхний команд 2 хаяг агуулаад энэ 2 хаяг нь командтай хуудсанд байхгүй ба өөр өөр хуудсанд байгаа бол хаягтай 2 хуудас команд гүйцэтгэгдэж дуусахаас өмнө үндсэн санах ойд ачаалагдана.
- 13. Дараагийн команд ахин нэлээн хэдэн алдаа үүсгэж болно. Виртуаль санах ойтой ингэж ажиллахыг хүсэлтээр дуудах гэнэ. Арай өөрөөр хандах арга бас бий. Хугацааны t момент бүрд сүүлийн k удаа ашиглагдсан хуудастай багц байна. Энэ багцыг ажлын олонлог гэнэ. Ажлын олонлог маш удаан өөрчлөгдөх тул дараагийн программ ачаалахахд ямар хуудаснууд ачаалагдахыг урьдчилан тааварлаж болно. Иймээс урьдаас хуудсуудыг ачаална.
- 14. Хуудас өөрчлөх Ажлын олонлогийг урьдчилан санах ойд хадгалсан ч программист ямар хуудас санах ойд байгааг мэдэхгүй. Иймээс үйлдлийн систем дахин дахин энэ олонлогийг харуулж байх хэрэгтэй болно. Программ санах ойд байхгүй хуудаст хандахад дискнээс дуудна. Гэхдээ энэ хуудсыг ачаалахын тулд өөр нэг хуудсыг буцаана. Иймээс аль хуудсыг буцаахыг тодорхойлох алгоритм хэрэгтэй болно. Хамгийн эхэнд хэрэглэгдсэн хуудаснуудыг нэг нэгээр нь буцаана. Энэ алгоритмыг LRU (least recently used) гэнэ. Энэ алгоритмын ажиллагаанд заримдаа алдаа гарна. Жишээ нь 9 хуудас циклтэй программыг ажиллуулахад 8 хуудас л үндсэн санах ойд байрлах боломжтой байг.
- 15. 7-р хуудасдуудагдахад 0-7 хуудаснууд санах ойд хуулагдсан байна. 8-р виртуаль хуудас дуудагдахад 0-р хуудсыг хамгийн эхэнд хэрэглэгдсэн болохоор устган 8-р хуудсыг хуулна. 8-р хуудаснаас команд гүйцэтгэсний дараа циклийн эхэнд (0 хуудас) очих бол энэ алхам алдаа заана. LRU алгоритмаар 1-р хуудсыг арилган 0 хуудсыг дахин бичнэ. Хэсэг хугацааны дараа 1-р хуудсанд дахин хандахад ахиад л алдаа заана.... LRU алгоритм энэ тохиолдолд таарахгүй тул FIFO (first-in first-out) алгоримт хэрэглэнэ. Энэ алгоримт хуудасны кадртай холбоотой тоолууртай ба тоолуур эхлээд 0 байна. Хуудас байхгүй алдаа гарахад тоолуурын утга 1-ээр нэмэгдэн дуудагдсан хуудас 0 дугаартай болно. Хуудас арилгахдаа хамгийн их дугаартайгаас арилгана.
- 16. Хуудасны хэмжээ ба фрагментчилах Хэрэв программ ба өгөгдөл ижил бүхэл тоон хуудас дүүргэх бол санах ойд ачаалагдсаны дараа сул зай үлдэхгүй. Харин ижил бүхэл тоон хуудас дүүргэхгүй бол ашиглагдаагүй зай үлдэнэ. Жишээ нь: Программ ба өгөгдөл 4096 байт хуудастай машин дээр 26000 байт зай эзлэх бол эхний 6 хуупас дүүрэхэд 6×4096байт болно. 7-р хуудас 2600-24576=1424 байт ачаалагдаж 2672 байт сул үлдэнэ. Санах ойд 7-р хуудас ачаалагдсан байхад энэ сул байт ачаалагдсан байх ч ямар ч функц гүйцэтгэхгүй. Энэ проблемийг дотоод фрагментац гэнэ. Хэрэв хуудасны хэмжээ n байт, сул байт ачаалагдсан зай n/2 бол бага хэмжээтэй хуудас хэрэглэх шаардлага гарна. Нөгөө талаа бага хэмжээтэй хуудас ашиглахад хуудасны тоо олон байх хэрэгтэй болж хуудасны хүснэгт томорно.
- 17. Хуудасны хүснэгт аппарат хангамжид байрлах бол их олон тооны регистр шаардлагатай болно. Мөн ачаалах болон зогсооход хугацаа их шаардана. Мөн жижиг хуудас дискний нэвтрүүлэх чадварыг багасгана. Дискнээс мэдээлэл дамжуулахад 10мс хүлээх шаардлагатай тул (search+seek) мэдээллийг их хэмжээгээр дамжуулах нь ашигтай. Гэхдээ жижиг хуудас өөрийн давуу талтай. Ажлын олонлог хол хол байрлах виртуаль санах ойн жижиг мужуудаас тогтох бол thrashing гарахгүй.