Перайсьці да зьместу

Табліца дэскрыптараў

Зьвесткі зь Вікіпэдыі — вольнай энцыкляпэдыі

Табліца дэскрыптараў — вобласьць памяці ў працэсарах сэрыі x86[1], прызначаная для захоўваньня дэскрыптараў. Яна ўяўляе сабой масіў з 8-байтных элемэнтаў. Парадак разьмяшчэньня элемэнтаў гэтага масіву ня грае ніякай ролі, але максымальная іх колькасьць складае 8192. Адпаведна максымальны памер табліцы 64 Кбайт. Дэскрыптары прызначаныя для адрасацыі і кантролю доступу да асобных блёкаў памяці — сэгмэнтаў. Таксама ў дэскрыптарах можа захоўвацца інфармацыя аб памеры сэгмэнта, яго стане, узроўні доступу, прызначэньні і яго памеры. У працэсары прадугледжаныя дэкрыптарныя табліцы трох тыпаў.

Тыпы дэскрыптараў

[рэдагаваць | рэдагаваць крыніцу]
  1. Глябальная дэкрыптарная табліца;
  2. Лякальная дэскрыптарная табліца;
  3. Дэскрыптарная табліца перыпыненьняў[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, будзе выклікана выключэньне.

  1. ^ http://www.osdever.net/bkerndev/Docs/gdt.htm
  2. ^ Э. Таненбаум Архитектура компьютера. — Питер. — 2007. — ISBN 0-13-148521-0