Разлика между версии на „Защитен режим“

20 байта изтрити ,  преди 4 месеца
м
излишен празен ред
м (без   интервал)
м (излишен празен ред)
 
== История ==
 
Защитеният режим е въведен за пръв път в 16-битовия процесор [[80286]] на [[Intel]]. Въпреки че 80286 има апаратна защита на паметта, той наследява малкото адресно пространство на своя предшественик [[Intel 8086]] и в резултат 16-битовият защитен режим не получава широко разпространение (дори се стига до това, че в следващите процесори от семейството x86 няма обратна съвместимост със 16-битовия защитен режим на 286).
 
 
== Технология ==
 
Тъй като защитеният режим е базиран на [[реален режим|реалния режим]] и наследява повечето му архитектурни особености, тук ще бъдат посочени само разликите с [[реален режим|реалния режим]].
 
 
=== Регистри ===
 
При защитения режим всички регистри стават 32-битови, а имената им се образуват от префикса '''E''' и името на съответния 16-битов регистър. 32-битовите регистри с общо предназначение са EAX, EBX, ECX, EDX, ESP, EBP, EDI и ESI, флаговият регистър е EFLAGS, а програмият брояч – EIP. Сегментните регистри си остават 16-битови (но адресът се формира по друг начин), като към вече съществуващите CS, DS, SS и ES се прибавят два нови сегментни регистъра, наречени FS и GS.
 
 
=== Типове данни ===
 
В добавка към типовете данни, които могат да бъдат обработвани в [[реален режим]], в защитения режим могат да бъдат обработвани следните типове данни:
 
 
=== Методи за адресиране ===
 
При защитения режим физическият адрес се формира по по-сложен начин в сравнение с [[Real mode#.D0.9C.D0.B5.D1.82.D0.BE.D0.B4.D0.B8 .D0.B7.D0.B0 .D0.B0.D0.B4.D1.80.D0.B5.D1.81.D0.B8.D1.80.D0.B0.D0.BD.D0.B5|реалния режим]]. От самата инструкция се определя т.нар. ''ефективен адрес'', който се преобразува в ''линеен адрес'' чрез механизма за [[сегментиране на паметта]]. Ако не е включен механизма за [[странициране на паметта]], то линейният адрес съвпада с физическия, но ако механизмът за странициране е включен, той преобразува линейния адрес в съответния ''физически адрес''.
 
==== Формиране на адресите ====
 
Ефективният адрес при защитения режим представлява отместване в рамките на един от текущо използваните сегменти (също като при реалния режим). Ефективният адрес се определя по следния начин:
 
 
==== Сегментиране на паметта ====
 
Полученият по посочения в предната точка начин ефективен адрес, всъщност представлява отместване в рамките на ''сегмент'' от паметта. Докато в реалния режим сегментите се използват само като средство за преодоляване на ограниченото адресно пространство, в защитения режим сегментите служат изключително за осигуряването на апаратна защита на паметта от непозволен достъп.
 
 
==== Странициране на паметта ====
 
Полученият след сегментирането ''линеен адрес'' съвпада с физическия адрес само ако не е включено страницирането на паметта (страницирането на паметта е опционално и може да се изключи). При включено странициране на паметта, линейният адрес се преобразува във физически по описаната по-долу схема.
 
 
=== Входно-изходно адресно пространство ===
 
При защитения режим входно-изходното адресно пространство е със същия размер като при реалния режим (64 KB), но достъпа до него е разрешен само при определени условия:
 
 
=== Инструкции ===
 
Следва описание на новите инструкции в сравнение с [[Real mode#.D0.98.D0.BD.D1.81.D1.82.D1.80.D1.83.D0.BA.D1.86.D0.B8.D0.B8|реалния режим]]. Трябва да се има предвид, че повечето нови инструкции могат да се използват и в реален режим. Новите инструкции, които могат да бъдат използвани само в защитен режим, са специално отбелязани.
 
==== Инструкции за трансфер на данни ====
 
* '''MOVSX''' – разширяване на операнда от 8 до 16 или от 16 до 32 бита с отчитане на знака и прехвърляне на резултата в регистър с общо предназначение.
* '''MOVZX''' – разширяване на операнда от 8 до 16 или от 16 до 32 бита без отчитане на знака (допълване с нули отляво) и прехвърляне на резултата в регистър с общо предназначение.
 
==== Инструкции за побитови операции ====
 
* '''BSF''', '''BSR''' – търсене на първия ненулев бит, започвайки съответно от най-старшия и най-младшия бит на операнда.
* '''BT''' – проверка на даден бит (бита се записва в полето CF на на регистъра EFLAGS).
 
==== Инструкции за работа с низове ====
 
* '''INS''' – зареждане на низ от порт във входно-изходното адресно пространство.
* '''OUTS''' – запис на низ в порт във входно-изходното адресно пространство.
 
==== Инструкции за преход ====
 
* '''ENTER''' – създаване на [[Стек (структура от данни)|стек]] фрейм (stack frame) на подпрограма.
* '''LEAVE''' – освобождаване на стек фрейм (stack frame) на подпрограма.
 
==== Инструкции, работещи само в защитен режим ====
 
* '''ARPL''' – настройка на нивото на привилегированост.
* '''LAR''' – процитане на част от дескриптора на сегмент от паметта.
 
== Проблеми ==
 
Като цяло защитеният режим е много гъвкав и напълно задоволяваше нуждите на операционните системи и приложните програми през последните 20 години. Все пак съществуват определени проблеми:
 
 
== Приложения ==
 
Защитеният режим се използва масово във всички съвременни операционни системи и приложения за x86 процесорите. В бъдеще се очаква плавен преход към 64-битовия [[long mode]] (дълъг режим), който е пряк наследник на защитения режим. Новите операционни системи се разработват и за двата режима, но повечето приложни програми ще продължат да работят в защитен режим още дълго време, тъй като 64-битовите операционни системи могат да работят с 32-битови програми.
 
== Процесори, които поддържат защитен режим ==
 
* Произведени от [[Intel]]: [[80386|386]], [[80486|486]], [[Pentium]], [[Pentium Pro]], [[Pentium II]], [[Pentium III]], [[Pentium 4]], [[Celeron]], [[Pentium M]], [[Core]], [[Core 2]], [[Xeon]].
 
 
== Вижте също ==
 
* [[Real mode|Real mode (реален режим)]]
* [[x86]]
 
== Външни препратки ==
 
* [http://web.archive.org/20051121163920/home.comcast.net/~fbui/intel.html Списък с инструкциите на процесорите Intel 8086/80186/80286/386/486]
* [http://www.intel.com/design/pentiumii/manuals/243190.htm The Intel Architecture Software Developer’s Manual, Volume 1: Basic Architecture]