Табліца дэскрыптараў
Табліца дэскрыптараў — вобласьць памяці ў працэсарах сэрыі x86[1], прызначаная для захоўваньня дэскрыптараў. Яна ўяўляе сабой масіў з 8-байтных элемэнтаў. Парадак разьмяшчэньня элемэнтаў гэтага масіву ня грае ніякай ролі, але максымальная іх колькасьць складае 8192. Адпаведна максымальны памер табліцы 64 Кбайт. Дэскрыптары прызначаныя для адрасацыі і кантролю доступу да асобных блёкаў памяці — сэгмэнтаў. Таксама ў дэскрыптарах можа захоўвацца інфармацыя аб памеры сэгмэнта, яго стане, узроўні доступу, прызначэньні і яго памеры. У працэсары прадугледжаныя дэкрыптарныя табліцы трох тыпаў.
Тыпы дэскрыптараў
[рэдагаваць | рэдагаваць крыніцу]- Глябальная дэкрыптарная табліца;
- Лякальная дэскрыптарная табліца;
- Дэскрыптарная табліца перыпыненьняў[2].
Глябальная дэкрыптарная табліца
[рэдагаваць | рэдагаваць крыніцу]Скарочана пазначаецца абрэвіятурай GTD. Зьяўляецца галоўнай агульнасыстэмнай табліцай дэскрыптараў. Усе праграмы (задачы), якія выконваюцца ў сыстэме, могуць выкарыстаць гэтую табліцу. Месцазнаходжаньне глябальнай дэскрыптарнай табліцы вызначае адмысловы рэгістр GDTR. У ім знаходзіцца 32–разраднае поле лінейнага базавага адрасу і 16–разраднае поле мяжы L=8*N-1, дзе N — колькасьць дэскрыптараў.
Лякальная дэскрыптарная табліца
[рэдагаваць | рэдагаваць крыніцу]Некаторым адмыслоўцам вядомая як LDT. Для кожнай задачы ў дадатак да GDT можна выкарыстоўваць LDT. Яна вызначае сэгмэнты, даступныя толькі для пэўнай задачы. Для лякалізацыі LDT існуе 16-разрадны рэгістр LDTR, які ўтрымоўвае толькі сэлектар сэгмэнта, які зьмяшчае LDT.
Дэскрыптарная табліца перыпыненьняў
[рэдагаваць | рэдагаваць крыніцу]Скарочана пазначаецца абрэвіятурай ITD. Зьяўляецца агульнасыстэмнай і ўтрымоўвае дэскрыптары адмысловых сыстэмных аб’ектаў, якія завуцца «шлюзамі» (gate), якія вызначаюць кропкі ўваходаў у працэдуры апрацоўкі перапыненьняў. Сыстэмны рэгістр IDTR выкарыстоўваецца для лякалізацыі гэтай табліцы (аналягічна па структуры з GDTR).
Загрузка табліц
[рэдагаваць | рэдагаваць крыніцу]Загрузка рэгістраў GDT і IDT ажыцьцяўляецца толькі адзін раз падчас падрыхтоўкі працэсара да працы. Табліцы LDT не зьяўляюцца абавязковымі і ствараюцца па меры неабходнасьці. Для захоўваньня LDT ужываюцца сэгмэнты памяці, а дэскрыптары гэтых сэгмэнтаў захоўваюцца ў табліцы GDT. Сэлектар з рэгістра LDTR выбірае ў табліцы GDT патрэбны дэскрыптар. Для паскарэньня працы гэты дэскрыптар загружаецца ў асобны «ценявы» рэгістр, асацыяваны з LDT аўтаматычна кожны раз, калі зьмесьціва LDTR зьмяняецца.
Дэскрыптар 0 у кожнай табліцы несапраўдны і выклікае выключэньне. Яго можна загрузіць у рэгістр сэгмэнта, каб паказаць, што рэгістр сэгмэнта недаступны, але калі паспрабаваць выкарыстаць дэскрыптар 0, будзе выклікана выключэньне.
Глядзіце таксама
[рэдагаваць | рэдагаваць крыніцу]Крыніцы
[рэдагаваць | рэдагаваць крыніцу]- ^ http://www.osdever.net/bkerndev/Docs/gdt.htm
- ^ Э. Таненбаум Архитектура компьютера. — Питер. — 2007. — ISBN 0-13-148521-0