Процессоры Intel в защищенном режиме
Переключение контекста, сегмент состояния задачи. Сегментная организация памяти, дескрипторные таблицы. Защита по привилегиям, уровни привилегий. Селектор сегмента и образование линейного адреса. Функции управления виртуальной памятью в среде Windows.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 19.05.2015 |
Размер файла | 949,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
1. Переключение контекста. Сегмент состояния задачи (TSS)
2. Сегментная организация памяти
3. Дескрипторные таблицы
4. Защита по привилегиям. Уровни привилегий. Общие понятия
5. Селектор сегмента и образование линейного адреса
6. Функции управления виртуальной памятью в среде Windows
7. Метод прямого управления вв/в
8. Логический уровень управления I/O. Драйверы
1. Переключение контекста. Сегмент состояния задачи (TSS)
виртуальный память дескрипторный
Перелючением контекста называется смена состояния процессора при переключении с одного процесса на другой.
Замечание:
В однопрограммном режиме термины процессор и задача идентичны. В Windows 95 задача называется процессом.
В мультипрограммном режиме в рамках одного процесса создается задача.
Размещено на http://www.allbest.ru/
В отечественной литературе задачу называют потоком.
При реализации операции контекстного переключения используется регистр задач (TR), определяющий текущий сегмент состояния задачи (TSS). С такими сегментами ассоциируются задачи. В этих сегментах сохраняется контекст (состояние) задачи при переключении процессора. Для организации контекстного переключения в процессоре предусмотрены:
команды передачи управления far jmp, far call, iret, вызывающие переключение контекста;
сегмент состояния задачи TSS.
Задача характеризуется как совокупность кода и данных, которому назначается TSS. TSS - это структура данных с разрешенными операциями чтения или записи, в которых хранится состояние задачи, доступ к которым не разрешен никаким программам, даже на уровне привилегии 0. Доступ к TSS имеет только процессор.
TSS имеет следующую структуру:
T (Trap) - ловушка
значительная часть TSS отводится под внутренние регистры, причем, 8 регистров РОН сохраняются в том порядке, в каком включаются в стек;
сохраняются EIT:CS, определяющие с какой команды начинается рестарт задачи;
сохранение EFLAGS позволяет правильно действовать командам условного перехода при рестарте задачи;
ESPi:Ssi, для уровней привилегий 0, 1, 2;
Сохранение CR3 и LDTR указывает на то, что для каждой задачи может создаваться свой каталог страниц и своя дескрипторная таблица, что обеспечивает изолированность адресного пространства каждой задачи;
В поле обратной связи сохраняется селектор TSS предыдущей задачи, тем самым обеспечивая вложенность задач;
Если T - бит, установлен в 1, то при переключении на данную задачу генерируется особый случай отладки (прерывание 1);
Поле двоичной карты разрешения ввода/вывода - I/O, содержит 16 - битное смещение, начиная с которого в TSS располагается двоичная карта - дополнительное средство для защиты по привилегиям.
Замечание:
В TSS не сохраняется CR0 и CR2, т.к. они являются глобальными для всех задач.
При переключении контекста процессор считывает из 104 байтов TSS информацию в соответствующие регистры.
Дескрипторы сегментов состояния задачи
Любой сегмент определяется 8 - байтной структурой данных, называемых дескриптором сегмента.
TSS, как и любой сегмент памяти, определяется дескриптором, который описывается в глобальной дескрипторной таблице. Дескриптор TSS имеют следующий формат:
Размещено на http://www.allbest.ru/
AR (Access Rights) - байт прав доступа
B (Busy) - бит занятости
G (Granularity) - гранулярность
дескритор TSS очень похож на дескриптор сегмента кода и данных, причем, поля базового адреса, предела, уровня привелегий, бита присутствия, бита гранулярности аналогичны им в этих сегментах;
БА (базовый адрес), занимает 2, 3, 4 и 7 байты дескриптора;
Предел (граница сегмента - Limit Segment) определяет максимальное смещение в данном сегменте. 20 бит смещения занимают 0, 1 и 4 младших бита 6 - го байта;
Поле байта прав доступа содержит:
поле тип, в котором находится бит, определяющий активность задачи - B;
поле DPL (Descriptor Prililogy Level - уровень привилегий), показывает, каким программам можно обращаться к задаче, которые описывают данный дескриптор, а не уровень привилегий дескриптора TSS;
бит S содержит 0, т.к. TSS является системным объектом;
бит присутствия P (Presnt) указывает на присутствие TSS в памяти;
бит гранулярности определяет размер сегментов. Если он установлен в 0, то измеряется один M - байтов, в 1 - 1 М - страниц, т.е. 1М * 4 Кб = 4 Гб;
доступ к дескриптору TSS осуществляется с помощью привилегированных команд
LSL <reg 16/ reg 32>, <reg 16/mem 16> - загрузка предела (Load Segment Limit)
mov bx, ds
lsl edx, bx
LAR <reg 16/ reg 32>, <reg 16/mem 16> - Load Access Rights
Механизм контекстного переключения
Размещено на http://www.allbest.ru/
При переключении контекста процессор выполняет следующие действия:
Сохраняет содержимое регистров, составляющих контекст задачи, в сегмент состояния задачи - TSS старой задачи. Текущий базовый адрес TSS находится в регистре задач - TR.
Загружает в TR базовый адрес дескриптора TSSновой задачи. Селектор является либо операндом команды передачи управления, либо берется из шлюза задачи (специальный системный дескриптор, содержащий селектор дескриптора TSS и 3 бита байта прав доступа). Для инициализации регистра задач используется привилегированная команда LTR <reg 16>. После инициализации управление регистром задач осуществляется автоматически процессором. Доступ к регистру задач возможен только в защищенном режиме.
В регистре управления 0 - CR0, устанавливается бит TS (задача переключена).
Загружаются соответствующие регистры из TSS новой задачи.
После загрузки 4 и модификации регистра задач в дескрипторе TSS устанавливается 41 бит (бит B), свидетельствующий об активности новой задачи.
Начинается выполнение новой задачи с команды, определяемой содержимым регистров EIP:CS.
По истечению кванта времени, процессор запоминает контекст задачи в ее TSS.
Замечание:
В переключение контекста не участвуют регистры GDTR, IDTR, отладки и проверки.
При переключении контекста управление передается новой среде, при этом, сохраняется содержимое соответствующих регистров, но в стек ничего не включается, тогда, как в процедурах, содержимое регистров включается и в стек, т.к. процедура может вызывать саму себя.
2. Сегментная организация памяти
Общие понятия и дескрипторы сегментов
В IBM PC используется сегментная модель памяти. Для программы адресное пространство разбивается на блоки смежных адресов, называемых сегментами. Внутри сегмента принята линейная адресация, т.е. программа может обращаться к 0-му, 1 байту и т.д. Такой принцип управления памятью связан с тем, что программа логически состоит из блоков кода, стека, данных и сегменты соответствуют этим блокам, тогда как, страницы являются произвольным разбиением адресного пространства.
Сегмент является базовым понятием. Имеет произвольную длину, в отличие от страниц, длина которых фиксирована. Основное отличие сегментной организации памяти процессора i486 -> 8086 состоит в том, что вместо простого определения сегмента путем загрузки базового адреса в регистр, системный программист по каждому сегменту должен представить информацию, такую как
Базовый адрес, который может быть любым, причем не выравнивается на границу параграфа;
Длину или размер сегмента;
Целевое использование сегмента (код, стек);
Уровень привилегий и прочее.
Как нам ранее известно, каждый сегмент описывается 8- байтной структурой данных, называемой дескриптором, имеющим следующий формат:
Размещено на http://www.allbest.ru/
Бит А (40)-> Accessed, называется битом обращения. Процессор автоматически устанавливает данный байт при обращении к сегменту, описываемому данным дескриптором. ОС использует этот бит в процессе свопинга.
Поле Тип (Type) определяет целевое использование сегмента.
Бит 3 показывает, является ли данный сегмент сегментом кода или данных: 1- кода, 0- данных. Для сегмента кода бит 2 называют битом подчинения (Conforming), бит 1- считывания, показывающим возможность считывания кода как данных. Для сегмента данных бит 2- бит расширения вниз ED (Expanded Down): 1- стек, 0- данные. Бит 1- бит записи (Write).
000 |
Сегмент данных, разрешено считывание |
|
100 |
Сегмент данных, разрешено считывание и запись |
|
010 |
Сегмент стека, разрешено считывание |
|
110 |
Сегмент стека, разрешено считывание и запись |
|
011 |
Сегмент кода->выполнение |
|
101 |
Сегмент кода->выполнение и чтение |
|
011 |
Подчиненный сегмент кода->выполнение |
|
111 |
Подчиненный сегмент кода->выполнение и чтение |
бит S->1- Segment, ->0- System;
поле DPL- уровень привилегий сегмента, принимает значение от 0 (наивысший) до 3 (наименьший);
бит P- присутствия:
сегмент присутствует в памяти,
генерируется особый случай не присутствия сегмента.
Если при создании дескриптора в данном поле задать 0, то процессор принимает во внимание только поле прав доступа, все остальное становится доступно программисту.
б) бит G (гранулярности), задает размер сегмента. Элементарный сегмент может состоять из байта или страницы.
сегмент с байтной гранулярностью: G=0, задает размер сегмента от 0-го байта до всего адресного пространства (4 Мб), если поле предела содержит 4Мб->0FFFFF H;
сегмент со страничной гранулярностью: G=1, задает размер до 1М страниц->0FFFFF H (4Гб);
в) бит D задает размер операндов по умолчанию. D=0- 16 бит, D=1- 32 бита;
г) бит 53 для рассматриваемого процессора 486 зарезервирован и обязательно должен содержать 0;
д) бит U, пользовательский. Процессор во внимание не принимается. Программисты могут использовать его по своему усмотрению;
Например: отмечать сегменты как кандидаты на удаление («для сборки мусора»).
3. Дескрипторные таблицы
Все дескрипторы помещаются в дескрипторные таблицы, представляющие собой массив 8-байтных дескрипторов сегментов. Максимальное число дескрипторов составляет 8192, т.е. max размер таблицы 8192 * 8б = 64 Кб. Различают:
GDT - глобальная дескрипторная таблица, является относительной таблицей, все задачи, выполняющиеся в системе, используют коллективно данную таблицу. GDT определяется при загрузке регистра GDTR.
Размещено на http://www.allbest.ru/
На всю ОС одна GDT.
IDT - дескрипторная таблица прерываний. Также является общесистемной, содержащей дескрипторы специальных системных объектов, называемых шлюзами (gate), определяющих точки входа обработчиков прерываний и особых случаев. IDT - замена таблицы векторов процессора 8086. IDT определяется при загрузке регистров IDTR.
Размещено на http://www.allbest.ru/
Замечание:
GDT и IDT создаются до перевода процессора в защищенный режим (P- режим). Общесистемные регистры GDTR и IDTR инициализируются при загрузке в них БА и предела до перевода процессора в P- режим. Загрузка осуществляется только один раз и содержимое этих регистров не изменяется;
т.к. местоположение GDT и IDT в известной степени фиксировано, то они в свопинге не учавствуют.
LDT создается для каждой конкретной задачи, в дополнение к GDT, по мере необходимости.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
селектором называется значение регистра сегмента в P- режиме;
LDTR определяет дескриптор из LDT;
В каждом момент времени ОС работает только с одной LDT, т.к. она располагается в «обычной» памяти и может участвовать в свопинге;
Для эффективного управления памятью необходимы частые операции просмотра и модификации LDT. Дескриптор LDT имеет следующий вид:
Размещено на http://www.allbest.ru/
поле БА->БА таблицы LDT, поле «предел»->предел таблицы LDT;
поле «тип»->значение 2 (0100);
функционирует бит гранулярности, т.е. можно создать LDT размером >64 КБ, однако, это не эффективно;
определен бит присутствия. Если P=0, то это означает, что все дескрипторы из LDT не присутствуют в памяти.
4. Защита по привилегиям. Уровни привилегий. Общие понятия
Для целей защиты на всех ЭВМ предусмотрены 2 режима работы:
системный, называется также режимом супервизора. Программе, работающей в этом режиме доступны все ресурсы системы.
пользовательский режим (user). Программам, работающим в этом режиме, запрещается выполнение некоторых привилегированных команд, влияющих на общие системные ресурсы. Например, команд манипуляции системными регистрами управления прерываний ввода/вывода.
Механизм защиты в процессоре опирается на описание некоторых системных объектов с помощью дескрипторов, и подразделяются на 2 части:
управление памятью. Схемы управления памятью обнаруживают большинство программных ошибок, например, нахождение индекса за пределами массива, вычисление неверных адресов, нарушение стека вызова или возврата.
защита по привилегиям. Под привилегией понимается свойство, определяющее, какие операции обращения к памяти запрещают процессору выполнять в каждый момент времени. Привилегии назначаются сегментом. С каждым сегментом кода, стека и данных ассоциируется вой уровень привилегий и все, что находится внутри сегменты имеет тот же уровень привилегий.
Средства защиты в процессоре определяются 4-мя уровнями привилегий, называемых также кольцами защиты.
Размещено на http://www.allbest.ru/
процессор аппаратно поддерживает каждый из 4-ех уровней привилегий;
установлением привилегий занимается ОС, но она не обязательно должна поддерживать все уровни. Простую ОС можно реализовать одним кольцом. Традиционно, системы S/U поддерживает 2 уровня привилегий (уровень 0- ОС, 3- пользовательский)-> Unix.
OS-2 поддерживает 3 уровня привилегий: 0- ОС, 2- процедуры для обращения к периферийным устройствам, 3- пользовательских.
Windows : поддерживает все 4 уровня.
Важным понятием в средствах защиты по привилегиям является:
уровень привилегий DPL, определяемый байтом прав доступа дескриптора сегмента, точнее, того адресного пространства, которое описывает дескриптор.
текущий PL-> CPL (Current Protect Code), который задается полем RPL селектора регистра сегмента кода. Т.е. определяется выполняемым кодом. При передаче управления сегменту кода с других уровней привилегий. Процессор переходит на этот уровень привилегий, поэтому CPL можно назвать уровнем привилегий процессора. Текущий уровень привилегий определяется следующим образом:
…
mov ax, cs ; в ax сегмент кода
and ax, 03h ; выделить биты RPL.
Запрещены и разрешены обращения между уровнями привилегий и в пределах одного уровня.
Процессор запрещает передачу управления коду, находящемуся на другом уровне привилегий. Передача управления между кодами ограничивается в рамах одного уровня (PLC).
запрещено обращение к более привилегированным данным. К менее привилегированным данным обращаться можно.
на уровне привилегий 0 выполняется только привилегированные команды. При попытке использовать их на другом уровне привилегий формируется 13- ое прерывание. Однако, это правило имеет исключение.
Процессор постоянно контролирует, чтобы выполненная программа была достаточно привилегированной для того, чтобы обращаться к другим программам, к данным другой программы, обеспечивая передачу управления командами far (типа far).
Привилегированные команды
В процессоре i486 имеется 19 привилегированных команд, степень привилегий которых различна. Их можно разбить на 2 группы:
а) составляется особо важные команды, влияющие на общее функционирование процессора и воздействующие на механизм сегментации и защиты. Эти команды выполняются только на уровне привилегий 0. Например,
hlt - останов процессора
LMSM, LTR, LCDT, LIDT, LLDT, CLTS
б) составляются команды, производящие вв/в и изменяющие флаг прерывания в регистре флагов
IF-> EFLAGS: IN, INS, OUT, OUTS, CLI (IF->0), SLI (IF->1).
Программы, выполняющие эти команды не обязательно должны иметь уровень привилегий 0. Их привилегированность заключается в том, что они должны иметь уровень привилегий выше, чем уровень привилегий, указанный в поле IOPL регистра флага, т.е. I/O PL. Численность CPL<=IOPL. Например, если IOPL=3, то все программы могут выполнять команды, если 0- только программы, имеющие уровень привилегий 0.
В регистре флагов не одно поле не показывает уровень привилегий процессора. Поле IOPL относится не к процессору, а к возможности выполнять текущей программой операцию вв/в. поле IOPL определяет тот min уровень привилегий, на котором разрешен вв/в. Изменять данное поле может только ОС.
Защита доступа к данным и сегментов кода
Процессор постоянно контролирует по привилегиям обращения к данным.
а) основное правило защиты доступа к данным имеет вид:
CPL (т.е. PL программы)<=DPL (т.е. PL данных),
т.е. программа должна быть более привилегированной, чем данные, к которым она обращается. Если какая-либо программа пытается обратиться к данным с нарушением этого правила, то процессор отвергает эту попытку и формирует нарушение общей защиты.
б) контроль осуществляется 2-мя способами:
во-первых, при загрузке селектора в регистре данных
селектор-> DS, ES, FS, GS.
Если дескриптор того сегмента, который выбирает селектор, имеет значение DPL<CPL, то загрузка не осуществляется.
во-вторых, после успешной загрузки селектора в один из сегментов, процессор контролирует, чтобы запрашиваемая операция была разрешена. На этой стадии обнаруживаются и отвергаются
попытки записав сегмент, предназначенный для считывания;
попытки считывания из сегмента, предназначенного для записи.
в) при загрузке селектора в сегмент стека, процессор уничтожает правило доступа, т.е. загрузка в сегмент стека будет только, если DPLss=CPL.
г) для ослабления текущего уровня привилегий иногда используют значения RPL, т.е. осуществляют сравнение с CPL :
max(RPL, CPL) = EPL
Защита сегмента кода.
а) Важным и сложным моментом механизма защиты по привилегиям - запрет процессором передачи управления коду, находящемуся на другом уровне привилегий. Ограничивая передачу управления между кодами в рамках одного кольца, процессор тем самым предотвращает произвольное изменение уровня привилегий.
б) Передачу управления между кодами в рамках одного кольца защиты, осуществляют такие команды, как
jmp
вызова процедуры call
команды возврата ret
Адрес передачи управления указывается в виде 48- битного указателя селектор:смещение, задаваемого либо в самой команде (прямая передача управления), либо берется из памяти.
в) При передаче управления изменяются регистры CS и EIP (указателя команд), поэтому, с точки зрения процессора, контроль межсегментной передачи заключается в проверке достоверности селектора, загружаемого в регистр сегмента кода. Процессор при этом проводит следующие проверки:
проверяет что целевой дескриптор (дескриптор сегмента, которому передается управление) есть сегмент кода;
контролирует, что DPL целевого сегмента кода=значению CPL;
проверяет, что сегмент кода присутствует в памяти и значение указателя команд находится в пределах нового сегмента кода
P=1 и EIP
г) Процессор осуществляет межсегментную передачу управления лишь в случаях успешных вышеуказанных поверок, в противном случае, формируется нарушение общей защиты (13 прерывание) и нарушение не присутствия (11 прерывание).
Передача управления между уровнями привилегий
Необходимость такой передачи связана с доступом пользовательских программ, находящихся на уровне привилегий 3 к обслуживанию ОС процедур, которые работают в кольце 1. Для передачи управления используются
подчиненные сегменты кода;
шлюзы вызова
Подчиненный сегмент кода.
а) Сегмент кода является подчиненным, если установлен в 1 бит 2 (`C') поля тип байта прав доступа.
б) Если бит 2 установлен в 1, то никакие правила по DPL и CPL не действительны. Подчиненный сегмент кода подчиняется уровню привилегий того сегмента, который передает ему управление.
в) При передаче управления подчиненному сегменту кода, биты поля RPL селектора сегмента кода не изменяются на DPL дескриптора нового сегмента кода, а сохраняется значение DPL последнего выполнявшегося неподчиненного сегмента кода. Только в этой единственной ситуации биты поля RPL не соответствуют DPL выполняющегося сегмента кода.
г) С подчиненным сегментом кода не ассоциируется никакой уровень привилегий, однако, действует правило
DPL подчиненного<=CPL выполняющегося,
т.е. разрешена передача во внутренние более защищенные слои.
Шлюзы вызова.
а) Для фактического изменения уровня привилегий используются шлюзы вызова- специальные системные объекты, имеющие собственный дескриптор следующего формата
Размещено на http://www.allbest.ru/
шлюз вызова адресует точку входа той процедуры (того назначения), кому передается управление;
в отличие от дескриптора сегмента данных, стека, дескриптор шлюза вызова не определяет адресного пространства, поэтому отсутствуют поля базы и предела;
шлюз вызова имеет DPL отличный от DPL вызываемого кода;
48 бит селектор: смещение адресует точку входа;
поле WC (Word Count) - счетчик двойных слов, выделяемых параметром, который передается вызываемой программе.
б) Шлюз вызова нельзя загружать в регистры DS, SS. Их загружают только в CS.
в) При передаче управления через шлюз вызова используется только команда call, jmp нельзя использовать.
Размещено на http://www.allbest.ru/
т.е. команда call адресует шлюз вызова, который определяет сегмент кода и смещение в данном сегменте.
г) относительно шлюза вызова действует тоже правило, что и для CPL<=DPL, однако, здесь необходимо учитывать
значение дескриптора самого шлюза вызова;
значение дескриптора целевого сегмента кода;
значение RPL селектора команды call;
значение CPL текущего сегмента кода (вызывающего), тогда правило обращения через шлюз вызова примет вид
DPL целевого сегмента кода=<max(RPL, CPL)<=DPLшлюза вызова. Например, ОС выполняет процедуру, находящуюся в кольце 2. Необходимо ей вызвать программу ОС с уровнем привилегий 1, тогда, значение DPL шлюза вызова должно иметь значение 2 или 3.
д) Некоторым разрешены обращения через шлюз вызова
Размещено на http://www.allbest.ru/
Защита на уровне страниц
Управление доступом к странице осуществляют биты элементов каталога и таблицы страниц (U/S, R/W).
Существует 2 разновидности защиты страниц:
ограничение адресуемой области;
контроль типа.
Контроль по ограничению адресуемой области осуществляется по уровню привилегий.
бит U/S показывает, доступна ли страница из кольца с любым уровнем привилегий или из кольца с уровнем привилегий 0.
для страниц, в отличие от сегмента, существует только 2 уровня привилегий:
уровень привилегий супервизора S (U/S->0). Для ОС некоторые системные программы, такие как, например драйвера, защищенные системы данных, например, каталогов и таблиц страниц. На этом уровне процессор работает со значением CPL->0, 1, 2. Доступны страницы только уровня привилегий 0.
Уровень пользователя U (U/S->1). Для прикладных кодов и данных. Программы, работающие на этом уровне со значением CPL->3. На этом уровне доступны только страницы с уровнем привилегий 3.
При контроле по типу, механизм защиты распознает лишь 2 типа страниц с доступом по считывании (R/W->0) и c доступом по записи и считывыния (R/W->1).
а) если процессор работает в режиме супервизора (SV):
запись и считывание производятся во все структуры, если бит WP- защиты от записи (Write Protect) в регистре CR0 сброшен;
если WP->1 и R/W->0, то осуществляется только считывание.
б) если процессор работает в режиме U:
запись осуществляется только в те страницы, которые принадлежат уровню пользователя R/W->1;
считывание осуществляется из любой страницы.
в) страницы уровня привилегий SV не доступны из уровня U.
г) при выполнении вышеуказанных действий вырабатывается признак нарушения общей защиты.
5. Селектор сегмента и образование линейного адреса
В защищенном режиме для адресации памяти в сегментный регистр заносится не параграф памяти, как это делается в режиме реальных адресов, а селектор сегмента, который является отправной точкой к дескриптору сегмента. Т.е. селектор косвенно, через дескрипторную таблицу, определяет сегмент памяти.
Селектор сегмента представляет собой структуру данных, состоящую из 3 полей. Длина селектора для совместимости с предыдущими моделями принята 16 бит, однако, содержимое интерпретируется иначе.
Размещено на http://www.allbest.ru/
TI- Table Indicator
двух битное поле запрашиваемого уровня привилегий RPL, который не участвует в выборе дескриптора, а используется системой защиты процессора. RPL (Requsted Privilegu Level), который не пропустит обращение непривилегированной задачи селектором, адресуемым привилегированные код и данные. TI определяет в какой таблице находится дескриптор, если 0- GDT, 1- LDT;
Index определяет номер дескриптора в дескрипторной таблице;
Если задача имеет право доступа на запрашиваемом уровне привилегий, то происходит считывание процессором нужных полей из дескриптора.
Образование линейного адреса с использованием селектора эффективного адреса осуществляется следующим образом:
Размещено на http://www.allbest.ru/
а) т.к. дескриптор имеет длину 8 байтов, то поле индекса в процессоре дополняется 3-мя младшими нулями;
б) первый дескриптор в GDT зарезервирован процессором. Этот дескриптор называют нуль - дескриптором, а его селектор - пустым селектором. Любая попытка использовать 1-ый дескриптор вызывает особый случай;
в) при формировании линейного адреса нас интересует поля БА и предела. Формирование линейного адреса рассматривается на примере выполнения следующей команды:
mov eax, [ecx][esi + 20h], которая обращается к сегментному регистру DS, селектор, которого создается в сегментном регистре данных, имеет значение:
Размещено на http://www.allbest.ru/
Формирование линейного адреса будет осуществляться следующим образом:
формировать эффективный адрес
eax -> ecx + esi + 20h
получить из GDT номер дескриптора (TI=0), который осуществляется следующим образом: заносится база в GDTR, которая суммируется с индексом из селектора (Index). Полученный базовый адрес сегмента суммируется с эффективным адресом и получается линейный адрес eax-> двойное слово.
Замечание: При получении сегмента из LDT необходимо обращение и к GDT. При частом обращении производительность процессора снижается. Для повышения эффективности работы процессора в структуру процессора помещаются кэш-регистры (теневые регистры БА сегмента), которые невидимы и недоступны задачам. При считывании с GDT дескриптора происходит одновременное считывание его (кэширование) в один из кэш-регистров.
Страничная организация памяти
Базовым объектом является блок фиксированного размера, называемый страницей или страничной кадрой. Фиксированный размер страницы является основным достоинством страничной организации, по сравнении с сегментной, т.к. для системы виртуальной памяти внешним ЗУ является диск, то можно выбрать такой размер структуры, который хорошо согласуется с сектором или кластером.
Все страницы не обязательно находятся в основной памяти. Часть их может храниться на диске.
При распределении памяти процессу не обязательно выделять смежные страницы. Процесс может находиться в произвольных страницах.
Если сегменты определяются дескрипторными таблицами GDT, LDT, то структуры определяются таблицей страниц (Page Table).
Основное отличие таблицы страниц от дескриптора сегмента меньшее поле адреса (20-битный базовый адрес страницы вместо 32-битного БА сегмента) и отсутствие поле предела.
Почему используется 20 бит, а не 32 бита? Это связано с тем, что структура сегмента имеет фиксированный размер (например, 4Кб), каталог страниц сравнен по границе структуры, поэтому младшие 12 бит не играют никакой роли.
Виртуальным адресом для структурного преобразования является линейный адрес с выхода устройства сегментации.
Если сегментация действует всегда, то страничное преобразование можно программно запрещать или разрешать. Для разрешения страничного преобразования выполняется следующая последовательность действий:
сохраняется содержимое флага
запретить прерывание
…
pushfd->IF
cli
…
mov eax, dir_base ; загрузить в регистр управления (CR3) физический базовый адрес каталога страниц
mov CR3, eax
mov eax, CR0 ; установить 31 бит в регистре управления CR0
bts eax, 31
mov CR0, eax ; осуществить страничное преобразование
…
popfd
…
В произвольный момент времени любая страница адресного пространства может находиться в одном из 4-ех состояний;
Состояние 1 - «доступно», т.е. страница свободна и может быть занята;
Состояние 2 - «зарезервирована», т.е. страница является частью области памяти, выделенной процессу;
Состояние 3 - «связана и присутствующая», т.е. страница, в которой находится какая-либо информация и она находится в основной памяти;
Состояние 4 - «связана и отсутствующая», т.е. страница, в которой находится какая-либо информация и она находится на диске.
Двухэтапное преобразование линейного (виртуального) адреса в физический
В процессоре i486 м выше используется двух - этапное преобразование линейного адреса в физический, подобно тому, как это реализовано в системах IBM 360, 370. Впервые страничная организация памяти была в Atlas (1962 г).
а) одноэтапное преобразование:
Размещено на http://www.allbest.ru/
Схема двухэтапного преобразования линейного адреса в физический.
преобразование линейного адреса в физический осуществляется аппаратно с помощью каталога и таблицы страниц, подготавливаемых ОС. В Windows95 полностью реализовано управление виртуальной памятью;
перед началом 2-го этапа трансляции процессор проверяет 31-й бит->CR0. В Windows 95 этот бит называют битом разрешения подкачки страниц. Если бит подкачки страниц не устранен, то линейный адрес считается физическим и процессор использует этот линейный адрес для доступа к памяти. При установленном бите процессора разрешая подкачку страниц, начинает адресовать памяти не в байтах, а в страницах, единицей измерения 4 Кб. В этом режиме легче осуществлять свопинг и размер адресуемой памяти увеличивается в 4096 раз.
Основой страничного преобразования является регистр управления 3 (CR3), содержащей физический базовый адрес каталога страниц (PDBR - Page Directory Base Register). Именно с этого адреса и начинается 2-ой этап трансляции.
Каталог страниц всегда находится в оперативной памяти (т.к. в регистре CR3 отсутствует бит присутствия P) и не учавствует в свопинге. Каталог страниц имеет размер 4 Кб, представляя собой массив, хранящий 1024 32-разрядных дескрипторов, называемых элементами каталога страниц (PDE), имеющих размер 4б каждый. PDE адресует подчиненную ему таблицу страниц, т.е. каждое двойное слово массива каталога содержит физический адрес таблицы страниц.
Каждая из подчиненных таблиц, представляет собой массив, содержащий 1024 32-разрядных дескрипторов, называемых элементами таблицы страниц, содержащих физический адрес страниц. Элементы тыблицы страниц одновременно находятся и в кэш- регистрах.
Преобразование линейного адреса в физический осуществляется следующим образом:
старшие 10 бит линейного адреса (31:22) дополняются 2-мя младшими нулями и определяют номер PDE, содержащий 20-битный физический адрес таблицы страниц;
средние 10 бит (12:21) дополняются только 2-мя младшими нулями и определяют номер PTE, содержащей базовый адрес страницы;
младшие 12 бит (0:11) соединяются с базовым адресом PTE, в результате чего получится физический адрес, по которому происходит обращение.
Замечание: Команды работы с CR3 являются привилегированными и их нельзя использовать для определения адреса. Начиная с Windiws 95, появились команды, которые позволяют определить содержимое CR3.
Форматы элементов PDE и PTE (они имеют одинаковый формат):
Размещено на http://www.allbest.ru/
Замечание: В элементе каталога страниц в этих битах содержится адрес таблицы страниц.
Биты 9, 10,011- биты системного программиста. Процессор не использует и не изменяет их содержимое. Системный программист может использовать их для хранения информации о том, как часто используются таблицы страниц.
Биты 7, 8, 9 - нули.
Бит 6 (Dirty - «грязный»->сбор мусора). Если страница находится в оперативной памяти, то данный бит указывает на то, была ли она модифицирована с момента ее загрузки. Если в данном бите 0 - страница не была модифицирована и в случае выбора данной страницы для «выталкивания» в процедуре свопинга, физическую передачу данной страницы производить не нужно, т.к. на диске хранится копия этой страницы («чистая» страница D->0). Если D->1 страница была модифицирована с момента нахождения ее в основной памяти («грязная» страница). В этом случае, необходимо осуществить запись страницы на диск, в процессе свопинга.
Бит 5 -Access - обращение, содержит информацию об использовании страницы. A->0- обращения к этой странице не было (в процессе нахождения этой страницы в основной памяти), A->1- были обращения.
Замечание: Бит D в PDE не используется.
Процессор, периодически проверяя и сбрасывая 5 бит, во всех элементах таблицы страниц (ТС), получает информацию о том, как часто использовались данные страницы.
Биты 4, 3- биты управления кэширования страниц.
PCD (Page Control Disable)-> 1- запрет кэширования страниц.
PWT (Page Write Trought)- запрет сквозной записи->1.
Биты 2, 1 - U/S, R/W используются в механизмах защиты памяти. R/W - явно разрешает чтение. U/S (User/Supervisor) - (пользователь/супервизор), указывает, доступна ли страница только из кольца уровня 0 (S) или из любого уровня.
Бит 0- P, бит присутствия. Если =1, то страница присутствует в основной памяти. Если =0, то происходит прерывание, называемое страничным. Управление в этом случае получает ОС. Например, в Windows 95 управление получает менеджер виртуальных машин (VMM- 32- бита ОС защищенного режима, управляющие виртуальной памятью), которые включают механизм подкачки отсутствующей страницы с диска в основную память. Если P->0, то весь элемент PTE становится доступен программисту, в нем может храниться информация об отсутствующей странице.
Размещено на http://www.allbest.ru/
Доступ процесса к данным и обработка страничных прерываний
При доступе процесса к данным возникает 2 ситуации:
1 Ситуация: данные, к которым обращается процесс, находятся в RAM. В этом случае процессор преобразует виртуальный адрес в физический и обеспечивает доступ к данным.
2 Ситуация: данные, к которым обращается процесс, отсутствуют в основной памяти. Аппаратные средства динамического преобразования адресов не могут вычислить адрес и вызывают специальный тип прерывания, называемый страничным. Управление получает ОС, осуществляющая обработку данного страничного прерывания.
Поиск отсутствующей страницы осуществляется в следующие 3 этапа:
1 Этап: Поиск во внешней памяти (ВП), называющейся также страничным файлом, отсутствующей страницы путем просмотра специальной таблицы, создаваемой для виртуальной памяти, где для каждой виртуальной страницы указан ее адрес во внешней памяти.
2 Этап: Поиск свободной физической страницы в RAM:
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
ОС просматривает таблицу описаний состояний всех физических страниц в поисках свободной;
Если свободная физическая страница найдена, то ее помечают как занятую в ТС;
Если свободная страница в RAM отсутствует, то с помощью алгоритма перемещения выбирается одна из занятых страниц.
3 Этап: Осуществить загрузку (запись) найденной во ВП страницы в подготовленную физическую страницу.
6. Функции управления виртуальной памятью в среде Windows
Различают следующие уровни управления виртуальной памятью, причем, функции каждого уровня (кроме самого нижнего), зависят от ниже лежащего уровня:
на самом нижнем уровне VMM поддерживает функции выделения больших областей памяти и манипулирует структурами этих областей. Прикладные программисты получают доступ этим функциям опосредованно (API).
На следующем уровне находятся функции управления (Virtual XXX) виртуальной памяти, поддерживаемые диспетчером памяти Kernet 32, осуществляющим выделение больших областей памяти со страничной гранулярностью.
Следующий уровень - функции «кучами» или динамически распределенные области памяти, поддерживаемые только диспетчером памяти Kernet 32.
Кучи Head XXX-> Ketnet32
Создание кучи HeadCreate
Выделение блока памяти из кучи HeadAlloc
Освобождение кучи HeadFree
Эти функции удобно использовать при создании множества небольших блоков данных, например, связанных списков или деревьев. Размер кучи по умолчанию 1 Мб.
функции на самом верхнем уровне Win32 практически не используются и созданы для удобства перехода от Win16 к Win32: Local и Global.
Управление виртуальной памятью осуществляется следующими функциями.
VirtualAlloc
VirtualFree
VirtualProtect
Страница виртуальной памяти характеризуется следующими состояниями:
Свободные (free)
Резервируемые (reserved)
выделенные для использования (commited)
Размещено на http://www.allbest.ru/
VirtualAlloc осуществляет резервирование региона в адресном пространстве.
Замечание: Различают элементы памяти: страница - блок - регион - адресное пространство.
Блок- группа смежных страниц с одинаковыми атрибутами защиты, относящиеся к одному типу памяти. Значение блока вычисляется только для занятых регионов, путем деления размера региона на размер страницы.
выделение (передача) памяти зарезервированному региону.
Резервирование региона с одновременной передачей памяти.
Функция VirtualAlloc имеет следующий общий вид (эти функции поддерживаются диспетчером памяти):
VA(<Adress>,<Size>,<Allocation Type>,<Protect>);
а) при резервировании
<Adress> указывает адрес памяти, показывающий системе на положение региона в адресном пространстве (начальный адрес).
обычно, в качестве данного параметра указывается значение NULL. В этом случае диспетчер памяти рассматривает диапазон свободных адресов и выделяет найденный.
в Windows каждый Win32- процесс обновляется собственным адресным пространством, поэтому у программистов появляется возможность указать желательный адрес, тогда как, в MS-DOS, диспетчер памяти рассматривает список свободных областей памяти и выделяет найденные. Например, если необходимо выделение адреса, начиная с 50 Мб-ой отметки, то в данном параметре указывается значение
52428800 (50 * 1024 * 1024)
В этом случае, диспетчер памяти (ДП) рассматривает диапазон адресов и если таковое имеется, то выделяется. В противном случае, функция возвращает значение NULL. Функция VA возвращает БА зарезервированного региона, если в данном параметре содержится NULL. Если же в данном параметре указывается адрес, то возвращается то же самое значение (52428800).
<Size>, указывается размер резервируемого региона в байтах.
Выделение региона осуществляется порциями, кратными страницам, например, если необходимо резервировать 512 Кб, то 512 * 1024 б.
<Allocation Type>- способ получения памяти (укаказываем в системе, что хотим сделать - зарезервировать->Mem_Release)
<Protect>- указывает атрибут защиты. В Windows 95 (W95) для страницы виртуальной памяти указывается определенно только 3 атрибута защиты:
Page_Noaccess фиксирует нарушение доступа при попытках записи, чтения, выполнения (Write/Read/Execute)
Page_ReadOnly фиксирует нарушение записи при попытках Wtire/Execute
Page_Read_Write фиксирует нарушение записи при попытке Execute
VirtualAlloc(52428800,512*1024,Mem_Reserv,Page_Read_Write)
б) при выделении
<Adress> указывает Null или желательный адрес.
<Size> - размер, который хотим передать.
<Allocation Type> - Mem_commint, размер, который хотим передать, например, необходимо передать память зарезервированному раннее региону, причем, необходимо выделить память, отстоящую на 2 Кб от зарезервированного. Требуется 6 Кб.
VirtualAlloc(52428800+2*1024, 6*1024, Mem_commint, Page_Read_Write), при этом выделяется 8 Кб, т.к. все должно быть кратно 4-ем Кб.
в) при резервировании с одновременным выделением
<Allocation Type> Mem_commint.
Резервирование и выделение области получают одни и те же атрибут защиты. Функция возвращает Null или базовый адрес. Выделенный адрес записывается в переменную <Mem>=Va(…)
VirtualFree (<Adress>,<Size>,<Free Type>)
Данная функция освобождает зарезервированные или выделенные регионы памяти.
<Aol> указывает адрес памяти, который необходимо освободить.
<Size> указывается 0. В этом случае освобождается вся выделенная память.
<Free Type>->Mem_release
если же требуется освободить только часть выделенной ранее памяти, то в <Address> указывается адрес первой освобожденной страницы, в <Size> - количество освобождаемых страниц.
<Free Type> - Mem_decommint
Virtual Protect (<Address>,<Size>,<New Protect>,<AdrOldProtect>), используется для изменения атрибута защиты (хотя это и не принято).
7. Метод прямого управления вв/в
На физическом уровне обмен данными между ПУ И ПК осуществляется следующим способом:
программный (программируемый);
I/O;
I/O по прерываниям;
ПДП (прямой доступ к памяти)
В зависимости от способа передачи различают 2 вида I/O:
байт- ориентированный;
При байт-ориентированном виде вв/в выполняется команда, передающая байт или слово между портом и процессором. В качестве буфера используется регистр процессора. Этот вид вв/в используется в программном способе и во - втором.
Размещено на http://www.allbest.ru/
блок- ориентированный способ вв/в
Размещено на http://www.allbest.ru/
При этом виде выполняется последовательность команд, заставляющая передавать последовательность байтов или слов в указанный блок ячеек памяти. Обмен данных осуществляется между интерфейсом и памятью, без участия процессора. Данный способ называют блоковой передачей или ПДП.
Программный способ I/O
Инициирование и управление I/O осуществляется процессором при выполнении машинных команд, проверяющих готовность ПУ.
ПУ ведет при этом себя пассивно, оно устанавливает лишь признаки, характеризующие его готовность к I/O.
В передаче вв/в участвуют порты I/O.
Размещено на http://www.allbest.ru/
Обычно, в одной передаче вв/в участвуют
буферный регистр (БР);
регистр состояния;
регистр состояния, содержит биты готовности, характеризующие текущее состояние ПУ и передаваемых данных.
1 в первом бите регистра состояния указывается на то, что во входном БР находится данное. Интерфейс спроецирован таким образом, что первый бит устанавливается, когда данное передается от ПУ во входной БР и сбрасывается, когда оно выводится из интерфейса;
1 в 0-ом бите указывается на то, что выход БР пуст, т.е. данное считано на ПУ.
Алгоритм
Размещено на http://www.allbest.ru/
…
in_buf equ 52h ; входной БР
out_buf equ 53h ; выходной БР
status equ 54h ; региср состояния
mask1 equ 00000010 B
mask2 equ 00000001 B
…
in al, status
test al, mask1 ; биты готовности установлены
jz next_in
…
in al, in_buf
Ввод-вывод по прерываниям
байт -ориентированный;
блок - ориентированный.
Инициирование операции вв/в осуществляется не процессором, а интерфейсом, который в случае своей готовности выдает запрос прерывания. Сама же операция I/O осуществляется обработчиком прерывания или особого случая.
2. I/O по прерываниям осуществляется совмещением вычисления и управлением ПУ. Рассмотрим схему обслуживания вв/в по прерываниям
Размещено на http://www.allbest.ru/
Интерфейс, в случае своей готовности выдает запрос прерывания.
Процессор после завершения выполнения текущей команды посылает подтверждение.
Процессору передается номер прерывания.
Содержимое регистров указателя команд, CS, Flags запоминаемых в стеке. Стек - это структура данных памяти, предназначенная для временного хранения интерфейсом.
Осуществляется сброс управляющих флагов (IF - флага блокировки и разрешения прерывания, TF - флага системных прерываний, в регистре Flags, называемого словом состояния процессора).
Содержимое ячейки памяти 4*N загружается (Load) в регистр IP (смещения), а 4*N+2->CS (селектор). Двойное слово, содержащее новые значения IP и CS, называется указателем прерывания или вектором. Каждому типу прерывания присваивается номер из диапазона от 0 до 255. Адрес вектора прерывания вычисляется путем умножения номера прерывания на 4, поэтому таблица векторов прерываний имеет размерность 1024 б.
Размещено на http://www.allbest.ru/
0-31 зарезервирован Intel для особых случаев;
32-255 -номера прерываний;
Все прерывания объединены в 7 групп
от процессора (переполнение, деление на 0);
аппаратные (от таймера, клавиатуры);
BIO (вывод на экран дисплея, печать на экран дисплея, печать на принтер);
DOS - прерывания (при работе с файлами и каталогами);
адресные прерывания (указатели на специальные таблицы);
от Бейсика;
пользовательские.
По новому содержимому IP:CS осуществляется передача управления обработчику прерывания, который, получив управление, сохраняет содержимое регистров и выполняет последовательность действий, рассматриваемых в программируемом вв/в до встречи команды IRET.
По команде IRET из стека извлекается 3 слова и загружается в регистры IP, CS, Flags.
Восстанавливается старое содержимое и осуществляется возврат к прерванной программе по содержимому восстановленных регистров.
Прерывания в защищенном режиме
В Р - режиме механизм прерываний и особых случаев, сохранив общую реакцию на их возникновение, значительно усовершенствованно. Эти усовершенствования коснулись
трансформации таблицы векторов прерываний в IDT;
более сложного перехода к обработчику прерывания или особого случая;
передача обработчику дополнительной информации о причине возникновения прерывания;
введено больше особых случаев.
Как и прежде, каждому аппаратному прерыванию и особому случаю (программе прерываний) присваивается уникальный номер, по которому происходит обращение к IDT.
Размещено на http://www.allbest.ru/
IDT представляет собой массив 8-байтного дескриптора шлюзов, определяющего точки входа обработчика. Определены 255 обработчиков, поэтому, размер дескрипторной таблицы равен 256*8-1=2047 б. Не рекомендуется определять дескриптор таблиц меньшего размера. В отличие от глобальной дескрипторной таблицы, первый элемент является действительным дескриптором.
линейный БА IDT задается IDTR, который задает также и предел. Содержимое регистра IDTR не сохраняется в сегменте состояния задачи (TSS) и при переключении задач не изменяется.
команда LIDT и SIDT осуществляет загрузку и сохранение IDTR
LIDT <mem 48>
SIDT <mem 48>
в дескрипторной таблице прерываний задается только 3 типа дескриптора шлюза
шлюз задачи;
шлюз прерывания;
шлюз ловушки, которые имеют следующий формат:
Размещено на http://www.allbest.ru/
а) Очевидно сходство шлюза прерывания со шлюзом вызова, который определяет селектор сегмента кода и смещение. Отличие в том, что отсутствует 5-битное поле счетчика WC.
б) поле DPL шлюза задачи, прерываний и ловушки определяет тот min уровень привилегий, который необходим для передачи управления через шлюз. Рекомендуется задавать DPL=3, чтобы все дескрипторы и IDT были доступны всем задачам.
в) Когда номер прерываний выбирает из IDT шлюз задач, процессор переключается на новую задачу, определенную селектором TSS. В дескрипторе шлюза задачи селектор TSS старой задачи запоминается в поле обратной связи сегмента TSS новой задачи, а в регистре флагов флажок вложенной задачи -NT, устанавливается в 1. После окончания выполнения задачи обработчика, процессор, по команде iret, пользуясь полем обратной связи переключается на старую задачу.
г) Шлюз ловушки - это такой особый случай, который вызван после выполнения «виноватой» команды. Например, команда прерываний при переполнении. При выборе по номеру прерывания из IDT дескриптор шлюза ловушки, процессор сохраняет свое состояние и осуществляет межсегментную передачу, пользуясь селектором и смещением из дескриптора шлюза ловушки. Селектор выбирает код, выполнение которого начинается с команды, определяемой смещением. Выполнение данной команды осуществляется до встречи команды Iret. При использовании шлюза ловушки состояние управляющих флагов в регистре флагов не изменяется.
д) Шлюз прерывания выполняется также как шлюз ловушки, только с тем отличием, что после загрузки в стек содержимого регистров ETP, CS, EFLAGS осуществляется сброс в регистре флагов флага прерывания - IF. Это значит, что запрещены все аппаратные прерывания, до тех пор, пока по команде Iret не будет восстановлено старое содержимое регистров EIP, CS, FLAGS, программируемые прерывания разрешены.
При передаче управления обработчику особого случая можно изменить уровень привилегий. В этом случае, процессор в стек включает помимо EIP, CS и FLAGS, полный указатель селектор:смещение регистров SS:ESP (рис 1).
Размещено на http://www.allbest.ru/
В некоторых особых случаях (нарушение общей зашиты, недействительный сегмент, не присутствие и т.д.) процессор включает в стек диагностическую информацию, называемую кодом ошибки. Код ошибки (рис 2). Код ошибки представляет собой 16-бит значение, которое дополняет до 32-бит с целью выравнивания на стек. Формат кода ошибки напоминает селектор. Это связано с тем, что большинство особых случаев вызваны ошибками в дескрипторах.
Размещено на http://www.allbest.ru/
бит EXT (end) - внешний указатель на то, что особый случай вызван аппаратным прерыванием, либо в то время, когда обрабатываются другие особые случаи;
бит I указывает на то, что дескриптор выбирается из IDT при установке данного бита в 1;
бит TI.
Размещено на http://www.allbest.ru/
Прямой доступ к памяти
ПДП (DMA - Direct Memory Access)
Отличия: управление передачей данных между ПУ и памятью осуществляется контроллером ПДП. Процессор лишь инициирует работу.
Схема организации I/O ПДП.
Размещено на http://www.allbest.ru/
Интерфейс готов принимать данные и делает запрос в контроллер ПДП.
Контроллер ПДП передает через шину управления сигнал (HOLD), запрашивая систему для обмена данными.
Процессор выдает разрешение (HLDA).
На шину адреса помещается адрес байта в памяти, начиная с которого будет находиться программа, осуществляющая обмен данными.
Контроллер выдает интерфейсу подтверждение обмена.
По шине данных начинается обмен данными.
Интерфейс фиксирует данные.
Контроллер снимает запрос шины и передает управление процессору.
Процессор снимает разрешение шины.
В состав интерфейса и контроллера входит:
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
4.Типичный фрагмент инициирования I/O.
; управляющие байты
…
byte_size dw …
buffer dw …
bc_reg equ …
add_reg equ …
intstat equ …
intcon equ …
dmacon equ …
….
; управляющие байты
dmac equ 00001010 B
intc equ 00000101 B
…..
; проверка состояния интерфейса
Подобные документы
Распределение виртуальной памяти. Страничная и сегментная организации виртуальной памяти. Сегментно-страничная организация виртуальной памяти. Преобразование виртуального адреса в физический. Упрощение адресации памяти клиентским программным обеспечением.
курсовая работа [440,7 K], добавлен 04.03.2014Архитектура компьютеров и возможности операционной системы по управлению памятью. Суть концепции виртуальной памяти. Аппаратно-независимые и аппаратно-зависимые средства управления виртуальной памятью. Сегментно-страничная организации виртуальной памяти.
презентация [355,2 K], добавлен 27.12.2010- Управление памятью. Страничная организация памяти. Сегментная организация памяти. Виртуальная память
Как осуществляется трансляция адресов при страничной организации. Что такое компактировка и как с ее помощью избавиться от внешней фрагментации. Что такое регистр таблицы страниц, сегментация. Методы распределения памяти в виде отдельных сегментов.
контрольная работа [236,2 K], добавлен 23.12.2016 Элементы процессора, аппаратный уровень. Устройство управления, микропрограммный автомат. Процессор Intel 8086, сегментная организация памяти. Команды, главные особенности их кодирования. Результат дизассемблирования программы отладчиком TurboDebugger.
лекция [1,1 M], добавлен 14.12.2013Организация памяти компьютера и простые схемы управления ею. Принципы связывания адресов. Динамическое распределение и свопинг. Сегментная и сегментно-страничная организация памяти. Выталкивание редко используемой страницы. Описание работы с программой.
курсовая работа [3,1 M], добавлен 19.01.2016Функциональная схема микропроцессора Intel 8086 (i8086). Формирование физического адреса памяти, выборка команд из памяти и запись их в очередь команд. Система команд процессора. Суть защищенного режима, переход из защищенного режима в реальный режим.
практическая работа [93,3 K], добавлен 24.03.2013История развития корпорации Intel, ее финансовые показатели и планы на будущее. Основные программные продукты: C++ Compiler for Linux и for Windows, Visual Fortran Compiler for Windows, VTune Performance Analyzer. Защита информации Intel Anti-Theft.
реферат [20,6 K], добавлен 02.04.2010Характеристика процессоров линейки Intel. Знакомство с особенностями микропроцессора, предназначенного для настольных систем с поддержкой симметричной многопроцессорности. Pentium Pro как процессор Intel шестого поколения, совместимый с архитектурой x86.
реферат [57,6 K], добавлен 25.07.2013Проектирование ОС Windows 2000, ее архитектура. Процессы и потоки. Уровни запросов на прерывания. Менеджер объектов. Распределение виртуальной памяти. Трансляция виртуальных адресов в физические. Локальный вызов процедуры. Структура сообщения LPC.
презентация [1,5 M], добавлен 24.01.2014Последовательность загрузки значений регистров базовых адресов и регистров прав доступа для системного режима. Методы и средства защиты памяти, преобразования логического адреса в физический, реализованных в УУП процессора. Режим работы процессора.
лабораторная работа [1,5 M], добавлен 23.07.2012