Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АВС.docx
Скачиваний:
5
Добавлен:
28.07.2019
Размер:
238.41 Кб
Скачать
  1. Вызов страниц по требованию и рабочее множество

На машине с виртуальной памятью можно запустить программу даже в том случае, если в основной памяти нет ни одной части программы. Просто таблица страниц должна показать, что абсолютно все виртуальные страницы находятся во вспомогательной памяти. Если центральный процессор попытается вызвать первую команду, он сразу получит ошибку отсутствия страницы, в результате чего страница, содержащая первую команду, будет загружена в память и внесена в таблицу страниц. После этого начнется выполнение первой команды. Такой метод работы с виртуальной памятью называется вызовом страниц по требованию (demand paging). При вызове страниц по требованию страницы переносятся в основную память только в случае необходимости, но не ранее.Многие программы обращаются к адресному пространству неравномерно. Обычно большинство обращений относятся к небольшому числу страниц. При обращении к памяти можно вызвать команду, вызвать данные или сохранить данные. В каждый момент времени t существует набор страниц, которые использовались при последних k обращениях. В этот набор страниц назван рабочим множеством(постоянно используются программой).

  1. Политика замещения страниц

Если программа обращается к странице, которая отсутствует в основной памяти, ее нужно вызвать с диска. Однако чтобы освободить для нее место, на диск нужно отправить какую-нибудь другую страницу. Следовательно, нужен алгоритм, позволяющий определить, какую именно страницу необходимо удалить из памяти.

Большинство операционных систем стараются предсказать, какие из страниц в памяти наименее полезны в том смысле, что их отсутствие значительно не повлияет на ход программы. Один из методов: вместо того чтобы удалять произвольную страницу, стараются выбрать такую страницу, которая не понадобится достаточно долго. Этот алгоритм называется LRU (Least Recently Used — дольше всего не использовавшийся).

Можно применить другой алгоритм — FIFO (First-in First-out — первым пришел, первым ушел). В соответствии с алгоритмом FIFO удаляется та страница, которая была загружена раньше всех, независимо от того, когда в последний раз производилось обращение к этой странице.

36) размер страниц и фрагментация

Если пользовательская программа и данные занимают ровно целое число страниц, то когда они время от времени загружаются в память, свободного места там не остается. В то же время, если они не занимают ровно целое число страниц, на последней странице останется неиспользованное пространство. Например, если программа и данные занимают 26 ООО байт на машине со страницами по 4096 байт, то первые 6 страниц будут заполнены целиком, что в сумме даст 6 х 4096 = 24 576 байт, а последняя страница будет содержать 26 ООО - 24576 = 1424 байта. Поскольку в каждой странице имеется пространство для 4096 байт, 2672 байта останутся свободными. Всякий раз, когда страница 7 будет оказываться в памяти, эти байты останутся неиспользуемыми, бесполезно занимая место в основной памяти. Эта проблема получила название внутренней фрагментации (поскольку неиспользуемое пространство является внутренним по отношению к странице).

37) сегментация

Компилятор может иметь несколько структур, которые создаются в процессе компиляции; такими структурами могут быть:символьная таблица с именами и атрибутами переменных;исходный текст для распечатки;таблица со всеми использующимися целочисленными константами и константами с плавающей точкой;дерево синтаксического разбора программы;стек, используемый для вызова процедур в компиляторе.Каждая из первых четырех структур постоянно растет в процессе компиляции. Размер последней структуры меняется совершенно непредсказуемо. В одномерной памяти эти пять структур пришлось бы разместить в виртуальном адресном пространстве в виде смежных областей, как показано на рис. 6.6.

Рис. 6.6. Если в одномерном адресном пространстве размер структур постоянно растет, одна из них может «врезаться» в другую

38) Реализация сегментации

Сегментацию можно реализовать одним из двух способов: подкачкой сегментов и разбиением памяти на страницы. При первом подходе в памяти находится некоторый набор сегментов. Если происходит обращение к сегменту, которого нет в памяти, этот сегмент переносится в память. Если для него нет места в памяти, один или несколько сегментов сначала сбрасываются на диск (если на диске уже есть их копия, сегменты просто удаляются из памяти). В каком-то смысле подкачка сегментов очень похожа на вызов страниц по требованию: сегменты загружаются и удаляются только в случае необходимости.

Однако сегментация существенно отличается от разбиения на страницы в следующем: размер страниц фиксирован, а размер сегментов — нет.

Рис. 6.8. Динамика внешней фрагментации (а, б, в, г); дефрагментация путем уплотнения (д)

Чтобы избежать подобной ситуации, нужно каждый раз при появлении пустого пространства перемещать следующие сегменты ближе к адресу 0, удаляя таким образом это пустое пространство (точнее, «сдвигая» его к концу памяти). Есть и другой способ. Можно подождать, пока внешняя фрагментация не станет серьезно влиять на процессы (когда на долю пустот придется больше некоторого процента от всего объема памяти), и только после этого выполнить уплотнение. На рис. 6.8, д показано, как память будет выглядеть после уплотнения. Цель уплотнения памяти — собрать все маленькие пустоты в одно большое свободное пространство, в которое помещается один или несколько сегментов. Недостаток уплотнения состоит в том, что на этот процесс тратится некоторое время.

39) Управление вводом/выводом

Традиционно в ОС UNIX выделяются три типа организации ввода/вывода и, соответственно, три типа драйверов. Блочный ввод/вывод главным образом предназначен для работы с каталогами и обычными файлами файловой системы, которые на базовом уровне имеют блочную структуру. На пользовательском уровне теперь возможно работать с файлами, прямо отображая их в сегменты виртуальной памяти. Эта возможность рассматривается как верхний уровень блочного ввода/вывода. На нижнем уровне блочный ввод/вывод поддерживается блочными драйверами. Блочный ввод/вывод, кроме того, поддерживается системной буферизацией .

Символьный ввод/вывод служит для прямого (без буферизации) выполнения обменов между адресным пространством пользователя и соответствующим устройством. Общей для всех символьных драйверов поддержкой ядра является обеспечение функций пересылки данных между пользовательскими и ядерным адресными пространствами.

Наконец, потоковый ввод/вывод похож на символьный ввод/вывод, но по причине наличия возможности включения в поток промежуточных обрабатывающих модулей обладает существенно большей гибкостью.

40)организация ввода-вывода в BIOS

организации ввода-вывода — взаимодействия программ и аппаратных средств периферийных устройств.Базовая система ввода-вывода (BIOS) предназначена для изоляции операционной системы и прикладных программ от специфических особенностей конкретной аппаратуры. BIOS находится в микросхемах энергонезависимой памяти, расположенных на системной плате; на картах расширения могут находиться дополнительные модули BIOS, поддерживающие функционирование этих карт.

ROM BIOS хранится в микросхемах ПЗУ, которые могут быть и перепрограммируемыми. Для изменения содержимого ПЗУ их обычно приходится извлекать из системной платы, стирать и перезаписывать на специальном устройстве-программаторе. Флэш-BIOS (Flash-BIOS) хранится в микросхемах флэш- памяти, допускающей перепрограммирование прямо на месте установки. В нормальном режиме работы компьютера информация в микросхемах ROM и флэш-BIOS является постоянной.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]