Системийн бүрэлдэхүүн хэсгүүд, үйлчилгээнүүд<br />Лекц 5<br />
Сегментчилэл<br />Хэд хэдэн виртуаль хаягийн орон зай үүсгэж болно.<br />Компилятор хэд хэдэн хүснэгт үүсгэж болно:<br /><...
Хэвлэхээр хадгалсан эх текст
Бүхэл тоон тогтмол ба хөвөгч цэгтэй тогтмол агуулсан хүснэгт
Программын синтаксийн анализ агуулсан мод
Компилятор потор процедур дуудах стек</li></ul>Эхний 4 нь компиляцийн явцад<br /> өснө. 5 дахь нь таах <br />аргагүйгээр и...
Программ маш их хувьсагч агуулсан гэе. Тэмдэгтийн хүснэгт дүүргэгдсэн ч өөр хүснэгтийн зай сул байна.<br />Энэ тохиолдолд ...
Сегмент логик элемент бөгөөд процедур, массив, стек, скляр хувьсагчийн цуваа агуулж болох ч 1 сегмент 1 л төрлийн өгөгдөл ...
Хуудсан болон сегментэн санах ойн кохион байгуулалтыг харьцуулбал:<br />
Сегмент үүсгэх<br />Сегментийг 2 аргаар үүсгэж болно.<br />1.а. Зайг шахах (гадаад фрагментац)<br />а) 5 сегмэнттэй<br />б...
Гадаад фрагментац хийгдэж байхад (г) сегсент 3-т хандахад хэдийгээр нүх байгаа ч тус тусдаа байгаа ба хэмжээ нь бага тул с...
Хэрэв нягтруулахад их хугаца шаардагдаж байвал тусгай алгоритм хэрэглэн аль нүхийг тухайн сегментийг байрлуулахад хэрэглэх...
Сегментийн хэмжээ нүхний хэмжээтэй таарах нь ховор тул нүхэнд сегмент байрлуулахад хэмжээ багатай шинэ нүх үүснэ.<br />2. ...
Хаяг нь 2 хэсгээс тогтоно: сегментийн хаяг, сегмент доторх хаяг.<br /> Процесс бүрд сегментийн дескриптор буюу сегментийг ...
PentiumIV-ийн виртуаль санах ой<br />PentiumIV нэлээн нүсэр виртуаль санах ойтой ба хуудас хүсэлтээр дуудах, сегмент үүсгэ...
Сегментэд хандахын тулд сегментийн селекторыг сегментийн регистрүүдийн нэгэнд ачаална. Программ гүйцэтгэгдэж байхад CS рег...
0 дескриптор хүчингүй ба trap-г дуудна. Үүнийг сегментийн регистрт ачаалан сегментийн регистрт хандах боломжгүй байгааг ха...
Селекторын форматыг дескрипторыг олоход амар байхаар хялбаршуулсан.<br />Эхлээд бит 2-оор селектор доторх дескрипторын loc...
Селектор, шилжилтээс физик хаягт хүрэх дараалал:<br />Аппарат хангамж мегментийн аль регистр ашиглагдаж байгааг тодорхойлм...
PentiumIV-ийн хуудасны хэмжээ 4 Кбайт-аас бага байдаггүй тул 232 байт хүртэл сегментийг тодорхойлоход  20 бит хангалттай.<...
Хуудсанд хуваахыг блоклосон (global удирдлагын регистр дэх битээр тодорхойлогдоно) бол шугаман хаяг физик хаяг шиг интерпр...
Ажиллаж буй программ бүр 1024 ш 32 бит элементээс тогтох хуудасны хүснэгттэй байна. Энэ хүснэгтийн хаяг global регистрээр ...
DIR талбар хуудасны директор дахь индекс болж хэрэглэгдэх буюу хэрэгтэй хуудасны хүснэгтийг заана.<br />PAGE талбар хуудас...
Upcoming SlideShare
Loading in …5
×

Lecture5

1,207 views

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,207
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
44
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lecture5

  1. 1. Системийн бүрэлдэхүүн хэсгүүд, үйлчилгээнүүд<br />Лекц 5<br />
  2. 2. Сегментчилэл<br />Хэд хэдэн виртуаль хаягийн орон зай үүсгэж болно.<br />Компилятор хэд хэдэн хүснэгт үүсгэж болно:<br /><ul><li>Хувьсагчийн нэр, атрибут агуулсан тэмдэгтийн хүснэгт
  3. 3. Хэвлэхээр хадгалсан эх текст
  4. 4. Бүхэл тоон тогтмол ба хөвөгч цэгтэй тогтмол агуулсан хүснэгт
  5. 5. Программын синтаксийн анализ агуулсан мод
  6. 6. Компилятор потор процедур дуудах стек</li></ul>Эхний 4 нь компиляцийн явцад<br /> өснө. 5 дахь нь таах <br />аргагүйгээр ихсэж багасна.<br />
  7. 7. Программ маш их хувьсагч агуулсан гэе. Тэмдэгтийн хүснэгт дүүргэгдсэн ч өөр хүснэгтийн зай сул байна.<br />Энэ тохиолдолд overlay-г гараад удирдаж мэт өөр хүснэгтийн зайнаас өьч болно. Гэхдээ энэ нь тохиромжтой биш.<br />Иймээс маш олон хамааралгүй хаягийн орон зай үүсгэнэ. Энэ орон зайг сегмент гэнэ.<br />Сегментийн урт ямарч байж болно. Сегмент бүр өөр өөр урттай байж болно. Мөн сегментийн урт программын явцад өөрчлөгдөж болно. <br />
  8. 8. Сегмент логик элемент бөгөөд процедур, массив, стек, скляр хувьсагчийн цуваа агуулж болох ч 1 сегмент 1 л төрлийн өгөгдөл агуулна.<br />Мөн процедур бүр тусдаа сегментэд байрлах тул компиляцлагдаж байгаа процедуруудыг холбоход хялбар болно. n сегментээс процедур дуудан 0 үгэнд хандахад (n,0) хаяг хэрэглэнэ.<br />Хэрэв n сегмент дэх процедурыг өөрчлөн компиляц хийсэн ба бусад процедурт өөрчлөлт хийх шаардлагагүй. Нэг хэмжээст орон зайд процедурууд хойно хойноосоо байрлах ба завсар нь зай байхгүй. Иймээс нэг процедур өөрчлөгдөхөд бусад нь өөрчлөгдөх хэрэгтэй болно.<br />Сегментчилэл ерөнхий процедур болон өгөгдлийг хэдэн программанд салгахад амар (хаягийг хэмнэнэ) болгосон.<br />Сегмент бүр өөр төрлийн хамгаалалттай байж болно. Жишээ нь процелуртай сегментийг зөвхөн “гүйцэтгэх” гэж тодорхойлон унш/бич хорьж болно....<br />
  9. 9. Хуудсан болон сегментэн санах ойн кохион байгуулалтыг харьцуулбал:<br />
  10. 10. Сегмент үүсгэх<br />Сегментийг 2 аргаар үүсгэж болно.<br />1.а. Зайг шахах (гадаад фрагментац)<br />а) 5 сегмэнттэй<br />б) 1-р сегментийг арилган хэмжээгээр бага 7-р сегментийг байранд нь оруулсан<br />в) сегмент 4-г сегмент 5-р солисон<br />г) сегмент 3-г сегмент 6-р солисон<br />д) сегмент ба хоосон зайгаар нь (нүх) ялгасан<br />
  11. 11. Гадаад фрагментац хийгдэж байхад (г) сегсент 3-т хандахад хэдийгээр нүх байгаа ч тус тусдаа байгаа ба хэмжээ нь бага тул сегмент 3-г байрлуулж болохгүй. Иймээс аль нэг сегментийг арилгана.<br />Ийм байдлаас гарахын тулд нүх үүсэх бүрд 0 хаяг руу дараагийн сегментийг ойртуулах замаар шилжүүлнэ.<br />1.а. Нүхний хэмжээ сегментүүдийн эзлэх хэмжээнээс их болтол нь хүлээгээд дараа нь нягтруулна. Санах ойг нягтруулах зорилго нь бүх жижиг нүхнүүдийг нэг том нүх болгон сегмент байрлуулж болох зай гарган авах. Энэ аргын дутагдалтай тал нь хугацаа их шаардана. Нүх үүсэх бүрийн дараа нягтруулах нь ашиггүй.<br />
  12. 12. Хэрэв нягтруулахад их хугаца шаардагдаж байвал тусгай алгоритм хэрэглэн аль нүхийг тухайн сегментийг байрлуулахад хэрэглэхэд тохиромжтойг илрүүлнэ. Үүний тулд бүх хаяг болон нүхний хэмжээтэй list хэрэг болно.<br />Хамгийн түгээмэл хэрэглэгддэг алгоримт – оптималь хөөлт буюу хэрэгтэй сегмент багтах хамгийн бага нүхийг олох. Энэ алгоримтын зорилго нь сегмент байрлуулахын тулд том нүхийг хэсэгчилэн хуваахаас зайлсхийх. <br />Өөр нэг түгээмэл хэрэглэгддэг алгоритм нь бүх нүхний list-ийг шалган хэмжээгээрээ таарах нүхийг илрүүлэх. Энэ нь бүх list-ийг шалган оптималь нүх олохоос бага хугацаа зарцуулна. Мөн бүтээмж ч өндөртэй (оптималь хөөлт хэрэглээгүй жижиг нүхнүүд ихийг үүсгэнэ).<br />Дээрх 2 алгоримт хоёулаа нүхний “дундаж” хэмжээг багасгана. <br />
  13. 13. Сегментийн хэмжээ нүхний хэмжээтэй таарах нь ховор тул нүхэнд сегмент байрлуулахад хэмжээ багатай шинэ нүх үүснэ.<br />2. Хуудсанд хуваах – сенмент бүрийг ижил хэмжээтэй хуудсуудад хуваах. Энэ тохиолдолд сегментийн хагас нь санах ойд хагас нь дискэн дээр байрлаж болно. Сегментийг хуудсанд хуваахын тулд тусдаа хуудасны хүснэгт үүсгэнэ.<br />MULTICS (multiplexed information and computing service) – сегментийг хуудсанд хуваах үйлдэлтэй үйлдлийн систем.<br />
  14. 14. Хаяг нь 2 хэсгээс тогтоно: сегментийн хаяг, сегмент доторх хаяг.<br /> Процесс бүрд сегментийн дескриптор буюу сегментийг заагч хэсэгтэй. Аппарат хангамжид виртуаль хаяг очиход сегментийн номер хэрэгтэй сегментийн дескрипторыг олох сегмент дескрипторын индекс болно. Дескриптор сегментийг хуудас болгон хуваасан хуудасны хүснэгт рүү заана. Бүтээмжийг нэмэгдүүлэхийн тулд сүүлийн хэрэглэсэн сегмент болон хуудасны комбинацийг 16 элементтэй ассоциатив санах ойд хадгална.<br />MULTICS үйлдлийн систем хэрэглэгдэхээ болисон ч Intel386-гаас эхлэн энэ системтэй ижил болсон. <br />
  15. 15. PentiumIV-ийн виртуаль санах ой<br />PentiumIV нэлээн нүсэр виртуаль санах ойтой ба хуудас хүсэлтээр дуудах, сегмент үүсгэх, сегментийг хуудсанд хуваах үйлдлүүдтэй.<br />Виртуаль санах ой нь 2 төрлийн хүснэгттэй:<br />LDT (Local descriptor table)<br />GDT (Clobal descriptor table)<br />Программ бүр өөрийн local дескрипторын хүснэгттэй ба ганц global дескрипторын хүснэгт бүх программуудад хуваагдана.<br />LDT программ бүрийн local сегментийг (код, өгөгдөл, стек г.м.), харин GDT системийн сегмент болон өгөгдлийн системийг тодорхойлно.<br />
  16. 16. Сегментэд хандахын тулд сегментийн селекторыг сегментийн регистрүүдийн нэгэнд ачаална. Программ гүйцэтгэгдэж байхад CS регистр кодын сегментийн селекторийг, DS өгөгдлийн сегментийн селекторыг агуулна. Селектор бүр 16 бит тоо байна. <br />Селекторын 1 бит нь сегмент local уу global уу гэдгийг буюу аль хүснэгтэд байгааг харуулна. <br />13 бит нь дескриторын хүснэгтэд байгаа элементийн номерийг тодорхойлно. Иймээс хүснэгтийн хэмжээ 8К (213)-аа хэтрэхгүй.<br />Үлдсэн 2 бит нь хамгаалалттай холбоотой.<br />
  17. 17. 0 дескриптор хүчингүй ба trap-г дуудна. Үүнийг сегментийн регистрт ачаалан сегментийн регистрт хандах боломжгүй байгааг харуулна. Хэрэв 0 дескрипторыг ашиглах гэвэл trap-г дуудна.<br />Сегментийн регистрт селектор ачаалагдахад харгалзах дескриптор дуудагдан санах ойг удирдах контроллерийн дотоод регистрт хадгалагдана. Иймээс хандахад хялбар болно. Дескриптор 8 байтаас тогтох ба сегментийн баазын хаяг, хэмжээ болон бусад мэдээллүүдийг агуулна. <br />
  18. 18. Селекторын форматыг дескрипторыг олоход амар байхаар хялбаршуулсан.<br />Эхлээд бит 2-оор селектор доторх дескрипторын local хүснэгт LDT болон global хүснэгт GDT сонгоно. Дараа нь селекторыг санах ойг удирдах контроллерийн түр регистрт хадгална. Бага 3 бит нь 0 болсны дүнд селекторын 13 бит утгыг 8-аар үржүүлнэ. Эцэст нь энэ үр дүн дээр дескрипторын local хүснэгтээс global хүснэгтээс эсвэл хаяг нэмэгдэн дескриптор заагч бий болно. Жишээ нь селектор 72 GDT+72 хаягтай global хүснэгтийн 9 дэх элементэд хандахад: <br />
  19. 19. Селектор, шилжилтээс физик хаягт хүрэх дараалал:<br />Аппарат хангамж мегментийн аль регистр ашиглагдаж байгааг тодорхойлмогц дотоод регистрт харгалзах бүтэн дескрипторыг олж чадна. Хэрэв ийм сегмент байхгүй (0 селектор) эсвэл тухайн агшинд санах ойд байрлаагүй (P=0) бол системийн тасалдалт буюу trap дуудагдана. <br />Эхний тохиолдол – программчлалын алдаа, дараагийнх нь хэрэгтэй сегмент дуудахыг үйлдлийн системээс хүснэ.<br />Дараа нь аппарат хангамж шилжилт сегментээс гарч байгаа эсэхийг шалгана. Хэрэв гарч байвал дахин trap дуудна. Дескриптор 32 бит сегментийн хэмжээ тодорхойлох талбартай ч тэнд 20 бит л байх тул өөр схем хэрэглэх шаардлагатай болно.<br />Хэрэв G(granularity) талбар 0 бол LIMIT талбар сегментийн хэмжээг (1Мбайт хүртэл) илэрхийлнэ.<br /> Хэрэв G(granularity) талбар 1 бол LIMIT талбар сегментийн хэмжээг байтаар биш хуудсаар идэрхийлнэ. <br />
  20. 20. PentiumIV-ийн хуудасны хэмжээ 4 Кбайт-аас бага байдаггүй тул 232 байт хүртэл сегментийг тодорхойлоход 20 бит хангалттай.<br />Хэрэв сегмент санах ойд байгаа бөгөөд шилжилт нь сегментийн хязгаараас хэтрээгүй бол PentiumIV шилжилттэй дескрипторт 32 бит BASE талбар нэмж шугаман хаягийг гаргаж авна: <br />BASE талбар 3 хэсэгт хуваагдан дескрипторт тархан BASE талбар нь 24 бит байдаг 80286 процессорыг дэмжинэ. Иймээс сегмент бүр 32 бит хаягийн талбарын дурын байрлалаас эхэлж болно.<br />
  21. 21. Хуудсанд хуваахыг блоклосон (global удирдлагын регистр дэх битээр тодорхойлогдоно) бол шугаман хаяг физик хаяг шиг интерпретацлагдан санах ой руу унш/бич үйлдэл хийхээр илгээгдэнэ. Хуудсанд хуваахыг блоклосон үед сегмент үүсгэх схем буюу сегментийн BASE хаяг дескрипторт өгөгдсөн байна. Дескрипторуудын давхардалт байгаа эсэхийг шалгах нь хугацаа их шаардах тул дескриптор давхардахыг зөвшөөрнө.<br />Нөгөө талаас хуудсанд хуваахыг зөвшөөрөхгүй бол шугаман хаяг виртуаль хаяг шиг интерпретацлагдан хүснэгт ашигласан физик хаягаар дүрслэгдэнэ. Энэ тохиолдолд ганц хүндрэлтэй тал нь 32 бит виртуаль хаягтай 4К сегмент 1 сая хуудас багтааж чадна. Иймээс хуудасны хүснэгтийг багасгах үүднээс 2 шатлалтай дүрслэл хэрэглэнэ.<br />
  22. 22. Ажиллаж буй программ бүр 1024 ш 32 бит элементээс тогтох хуудасны хүснэгттэй байна. Энэ хүснэгтийн хаяг global регистрээр тодорхойлогдоно. Хүснэгтийн элемент бүр хуудасны кадрыг заана.<br />а)DIR, PAGE, OFF талбарт хуваагдсан шугаман хаяг<br />б)<br />
  23. 23. DIR талбар хуудасны директор дахь индекс болж хэрэглэгдэх буюу хэрэгтэй хуудасны хүснэгтийг заана.<br />PAGE талбар хуудасны хүснэгт дэх индекс болох буюу хуудасны кадраас физик хаягийг олоход хэрэглэгдэнэ.<br />OFF талбар хуудасны кадрын хаягт нэмэгдэн хэрэгтэй байт болон үгийн физик хаягийг үүсгэнэ.<br />Хуудасны хүснэгтийн элемент бүрийн хэмжээ 32 бит ба үүнээс 20 бит нь хуудасны кадрын дугаар байна. Үлдсэн битүүд access бит, өөрчлөлтийн бит, хамгаалалтын бит г.м. байна.<br />Хуудасны хүснэгт бүр 4К хэмжээтэй 1024 хуудасны кадрын элемент агуулах тул хуудасны хүснэгт 4М байт санах ойтой ажиллана. 4Мбайт-аас богино сегмент 1 элементтэй хуудасны директортой (1 хуудастай тул энэ хуудсыг л заах).<br />Ийм маягаар богино хуудасны бүтээмж бууруулах саатал 2 хуудас л (нэг түвшинт схем шиг сая хуудас биш) л болно. <br />
  24. 24. Санах ойд дахин хандахгүйн тулд PentiumIV-ийн санах ойг удирдах төхөөрөмж сүүлд хэрэглэгдсэн DIR-PAGE комбинацийг илрүүлж тэдгээрийн физик хаягийг харгалзах хуудасны кадрт дүрслэх аппарат хангамжтай.<br />Хуудсанд хуваах үед дескрипторт BASE талбарын утга 0 байж болно. BASE талбар хэрэглэж байгаа шалтгаан нь бага зэрэг шилжилт үүсгэн хуудасны директорын гол дахь элементүүдийг ашиглах.<br />Цэвэр сегментчилэл үүсгэхийн тулд болон 80286-г дэмждэг байлгах гэж л BASE талбарыг дескрипторт байрлуулна. <br />Ямар нэгэн хэрэглээнд сеегмент үүсгэх шаардлага байхгүй хуудасны зохион байгуулалттай 32 бит хаяг хангалттай бол хаялбархан үүсгэж болно. Бүх сегментийн регистрийг дескриптор дахь BASE талбарын утга нь 0 байх 1 ижил селектороор дүүргэн LIMIT талбарт хасгийн их утгыг өгнө. Командын шилжилт 1 хаягийн талбартай шугаман байх ёстой буюу уламжлалт хуудсан хуваалт байна.<br />
  25. 25. PentiumIV хамгаалалтын 4 түвшинтэй:<br />0 түвшин – хамгийн их дээд, 3- нь хамгийн доод.<br />Момент бүрд ажиллаж багаа программ хамгаалалтын аль нэг түвшинд байх ба энэ түвшинг аппарат хангамжийн регистр дэх 2 бит PSW(program status word) тодорхойлно. Энэ бит нөхцлийн код болон төлөвийн бит агуулна.<br />Түүнээс гадна сегсент бүр системд тодорхой түвшинд байрлана.<br />
  26. 26. Программ өөрийнхөө түвшний сегмент ашиглаж байхад бүх зүйл хэвийн байна. Мөн дээд түвшинд хандахыг ч зөвшөөрнө. Харин доод түвшинд хандахыг хориглоно. Энэ тохиолдолд системийн тасалдалт trap үүснэ.<br />Дээд болон доод түвшний процедур дуудах боломжтой ч энэ үед маш хатуу хяналт хэрэгтэй. Өөр түвшнээс процедур дуудахад CALL команд хаягийн оронд селектор агуулах ёстой. Энэ селектор хэрэгтэй процедурын хаягийг өгөх дискрипторыг заана. Ийм маягаар дурын сегментийн гол руу өөр түвшингөөс шилжихгүй. Зөвхөн зөвшөөрөгдсөн оролтыг л ашиглана.<br />0 түвшин буюу үйлдлийн системийн цөм оролт-гаралтын процесс болон санах ойн ажиллагааг удирдана.<br />1 түвшинд системийн дуудалт байрлана. Хэрэглэгчийн программ энэ түвшингөөс хатуу тогтоогдсон процедурыг л дуудаж болно.<br />
  27. 27. 2 түвшин библиотекийн процедур агуулах ба энэ процедуруудыг хэд хэдэн программ зэрэг ашиглаж болно. Хэрэглэгчийн программ эдгээр процедурыг дуудаж болох ч өөрчлөлт хийхгүй.<br />3 түвшинд хэрэглэгчийн программ ажиллах ба хамгаалалтын зэрэг хамгийн багатай.<br />PentiumIV-ийн хамгаалалтын схем MULTICS системийн санааг хадгалсан.<br />Trap болон тасалдалт дескрипторт хандах ч абсолют хаяганд хандахгүй. Энэ дескрипторууд гүйцэтгэх шаардлагатай процедурыг заана.<br />FIELD талбар кодын сегмент, өгөгдлийн сегмент болон логик элементүүдийг ялгах зориулалттай. <br />

×