Автор работы: Пользователь скрыл имя, 22 Февраля 2013 в 00:06, контрольная работа
Вопрос 13: Системный вызов, особенности его реализации в микроядерной архитектуре. Сравнение с классической архитектурой.
Ответ:
Большинство современных ОС – хорошо структурированные модульные системы, способные к развитию, расширению и переносу на новые платформы. Единой архитектуры ОС не существует, но есть универсальные подходы к структурированию ОС
Общепринятая в настоящее
Встал вопрос о том, как разделить между
разными задачами небольшой объем оперативной
памяти, чтобы каждая задача выполнялась
также, как она выполнялась бы в однопрограммном
режиме и как управлять при этом распределением
памяти.
К этому времени у программистов уже накопился
опыт выполнения задач, программный код
которых не помещался в слишком маленькую
оперативную память.
Программистам пришлось делить такие
программы на части и затем выполнять
части программы независимо, организуя
оверлейные структуры, которые загружались
в основную память и выгружались из нее
под управлением программы пользователя.
Система организации виртуальной памяти
освободила программистов от этой работы.
Она автоматически управляет обменом
между двумя уровнями иерархии памяти:
основной памятью и внешней (дисковой)
памятью.
В многопрограммном режиме работы компьютер
выполняет множество задач, каждой из
которых отводится свое адресное пространство
в оперативной памяти. Поэтому необходим
механизм разделения небольшой физической
памяти между различными задачами. Виртуальная
память делит физическую память на блоки
и распределяет их между различными задачами. При
этом обеспечивается иллюзия того, что
каждая задача и в самом деле исполняется
на машине с огромным количеством реальной
оперативной памяти.
Системы виртуальной памяти можно разделить
на два класса: системы с фиксированным
размером блоков, называемых страницами,
и системы с переменным размером блоков,
называемых сегментами.
Очевидно, что для реализации возможности
автоматического выделения памяти каждой
задаче в процессе ее выполнения (динамически),
необходимо обеспечить эту возможность
аппаратно. Для того, чтобы программа могла
действительно воспользоваться виртуальной
памятью (иллюзией очень большого количества
реальной оперативной памяти) требуется
еще и поддержка программного обеспечения.
Задача управления виртуальной памятью
возлагается на операционную систему.
Различные операционные системы по разному
решают вопросы управления памятью. Попробуем
получить общее представление о работе
виртуальной памяти.
Механизмы управления памятью решают
две главные задачи:
Страничный
механизм является составной
частью системы виртуальной
Страничное преобразование позволяет
сохранить линейность адресов для прикладных
программ, несмотря на то, что их работающие
страницы располагаются в оперативной
памяти в произвольном порядке. Программы
работают со своим адресным пространством,
так словно у каждой из них есть своя собственная
линейно адресуемая оперативная память.
Применительно к виртуальной памяти различают
три адресных пространства: логическое,
линейное и физическое.
Логический адрес формируется
при обращении к виртуальному
адресному пространству.
Блок сегментации транслирует логический
адрес в линейный.
Физический адрес образуется после преобразования
линейного адреса блоком страничной переадресации.
И так, выполняемая программа загружается
в оперативную память не целиком, а отдельными
страницами (рис1.). Страница с которой
работает процессор называется активной.
Рис.1. Отражение страниц дискового пространства
на пространство оперативной памяти.
В случае динамического распределения
памяти (по запросу программы), адрес содержит
номер виртуальной страницы и номер слова
в странице. Для защиты памяти от записи
и чтения другими процессами необходима
соответствующая схема трансляции адреса,
которая разрешает доступ к данной области
памяти только определенной задаче.
Для переадресации используется глобальная
( GDT) и локальная (LDТ) таблицы переадресации.
Динамическая трансляция виртуального адреса в реальный
Рис.2. Преобразование виртуального адреса
Рассмотрим систему
В глобальной таблице компьютера хранятся
сведения о нахождении таблицы сегментов
каждой задачи. Адрес таблицы сегментов
для выполняемой задачи загружается в
управляющий регистр. По адресу таблицы
и номеру сегмента виртуального адреса
определяется адрес таблицы страниц. По
адресу таблицы страниц и номеру страницы
виртуального адреса определяется адрес
страницы в таблице страниц (виртуальный
адрес, который преобразуется в реальный
в буфере быстрой переадресации). Из буфера
быстрой переадресации считывается реальный
адрес страницы. Полный реальный адрес
равен реальному адресу страницы плюс
номер ячейки памяти (смещение в странице).
Если разбиение на сегменты не используется,
то для трансляции логического адреса
используется двухуровневая таблица страниц.
Виртуальный адрес интерпретируется как
совокупность 3 элементов: указателя каталога
страниц, указателя таблицы страниц и
указателя слова на странице.
У каждого процесса (каждой задачи) есть
один каталог страниц, который содержит
адреса всех таблиц страниц для данного
процесса. Указатель каталога страниц
применяется для поиска каталога, из каталога
определяется указатель таблицы страниц
для данного процесса, по указателю таблицы
страниц находится нужная таблица, из
которой читается адрес, содержащий указатель
для требуемой страницы (ее физический
адрес). Остается определить реальный
адрес данных, расположенных на этой странице.
Указатель слова позволяет найти конкретный
адрес на физической странице.
Но что делать, если количество страниц
во всех линейных адресных пространствах
выполняемых процессов превышает объем
оперативной памяти и поэтому невозможно
поставить в соответствие каждой из них
свою страницу реальной памяти? Для решения
этой проблемы дополнительно ведется
учет присутствия страницы в физической
памяти (вводится дескриптор страницы
где предусмотрен флаг (бит) реального
присутствия страницы в оперативной памяти).
Наличие такого бита позволяет отметить
часть страниц, непомещающихся в физической
памяти, как временно отсутствующие.
Если происходит обращение к такой странице,
то процессор формирует прерывание. Получив
прерывание по отсутствию страницы, операционная
система может записать одну из присутствующих
в памяти страниц на диск и отметить ее
как временно отсутствующую во всех адресных
пространствах, в которых она была видна.
На освободившееся место с диска считывается
та страница, из-за которой произошло прерывание.
Заполняются все таблицы, по которым ведется
поиск данной страницы и в дескрипторе
страницы устанавливается флажок ее реального
присутствия в оперативной памяти.
После возврата из программы - обработчика
прерывания процессор повторит попытку
доступа к памяти, но теперь нужная страница
уже отмечена как присутствующая и прерывания
не произойдет. Если вновь потребуется
та страница, которая была записана на
диск, то снова произойдет прерывание,
ведь эту страницу пометили как временно
отсутствующую в памяти. В ответ на это
прерывание на диск будет перемещена еще
какая-нибудь страница, а на ее место с
диска будет загружена требуемая.
Этот процесс называется страничным обменом
или свопингом (paging или swapping). Страницы,
помещаемые на диск хранятся в специальном
файле, файле подкачки (swap-файле). Взаимодействие
с файлом подкачки происходит значительно
медленнее, чем с оперативной памятью
компьютера, поэтому оптимизация работы
с этим файлом зачастую дает возможность
увеличить скорость работы системы памяти. Теоретически,
наиболее оптимальным считается объем
файла подкачки, превышающий объем установленной
на компьютере оперативной памяти примерно
в два раза.
Если страница не изменялась с момента
последнего считывания с диска, то при
ее замене другой страницей нет необходимости
повторно записывать ее на диск. Можно
просто пометить ее как отсутствующую.
Для слежения за изменением страницы современные
процессоры поддерживают еще один флаг
в дескрипторе страницы. Другой важный
флаг, который поддерживается аппаратурой
процессора - это флаг обращения. Он устанавливается
всегда, когда происходит обращение к
странице на чтение или запись. Операционная
система может время от времени просматривать
страничные таблицы, проверять и сбрасывать
этот бит, выявляя те страницы, которые
часто используются программами.
Для того, чтобы уменьшить количество
дисковых операций, операционная система
использует ту или иную стратегию страничного
обмена. Оптимальная стратегия состоит
в том, чтобы возвращать на диск ту страницу,
которая дольше всего не понадобиться
программам. Одной из лучших стратегий
страничного обмена является LRU (Least Recently
Used). Алгоритм LRU предполагает, что на диск
надо переносить ту страницу, которая
дольше всего не использовалась. Существуют
и более сложные алгоритмы, но обычно они
базируются на LRU.
В некоторых случаях операционная система
заранее знает, что определенные страницы,
которые сейчас находятся на диске, понадобятся
ей (или прикладным программам) в ближайшее
время. Тогда она может заранее перенести
их в оперативную память, не дожидаясь
прерываний по отсутствию страницы. Такая
операция называется страничной предвыборкой
(page prefetch). Аналогичный прием может быть
использован и для записи на диск пассивных
страниц раньше, чем будет затребовано
место, занимаемое этой страницей.
Механизм организации
Виртуальный адрес при сегментной организации памяти может быть представлен парой (g, s), где g — номер сегмента, а s — смещение в сегменте. Физический адрес получается путем сложения начального физического адреса сегмента, найденного в таблице сегментов по номеру g, и смещения s.
Недостатком данного метода распределения памяти является фрагментация на уровне сегментов и более медленное по сравнению со страничной организацией преобразование адреса.
Страничная организация виртуальной памяти
В большинстве современных
Сегментно-страничный способ организации виртуальной памяти
Суть данного подхода состоит в следующем. Программа разбивается на логически законченные части − сегменты, каждый из которых размещается на некотором (от 1 до n) количестве стандартных страниц памяти.
Перемещение данных между основной и внешней памятью осуществляется страницами. Однако разбиение на сегменты позволяет определять разные права доступа к разным частям кода и данных программы. С каждым процессом связана одна таблица сегментов и несколько (по одной на сегмент) таблиц страниц. Начальный адрес таблицы сегментов извлекается из регистра процессора. Первая компонента виртуального адреса содержит номер сегмента, который служит указателем в таблице сегментов на таблицу страниц. Вторая компонента виртуального адреса (смещение относительно начала сегмента) состоит из двух полей: номера виртуальной страницы, который служит указателем в таблице страниц на физическую страницу и смещения относительно начала страницы.
Данный метод вносит ещё большую
задержку доступа к памяти. Необходимо
сначала вычислить адрес
В целом, преобразование виртуального адреса в физический адрес происходит в два этапа:
• На первом этапе исходный виртуальный
адрес, заданный в виде пары (номер
сегмента, смещение), преобразуется
в промежуточный линейный виртуальный
адрес байта. Линейный виртуальный
адрес вычисляется путем
На втором этапе полученный линейный
виртуальный адрес
Сегментно-страничная организация виртуальной памяти позволяет совместно использовать одни и те же сегменты данных и программного кода в виртуальной памяти разных задач (для каждой виртуальной памяти существует отдельная таблица сегментов, но для совместно используемых сегментов поддерживаются общие таблицы страниц).
Вопрос 53: Реальный и защищенный режим работы процессора i80x86. Системные регистры микропроцессоров i80x86. Структуры данных реального режима.
Ответ: Реальный и защищенный режимы работы процессора.
Широко известно, что первым микропроцессором, на базе которого был создан персональный компьютер IBM PC, был Intel 8088. Этот микропроцессор отличался от первого 16-разрядного микропроцессора фирмы Intel (микропроцессора 8086), прежде всего, тем, что у него была 8-разрядная шина данных, а не 16-разрядная (как у 8086). Оба этих микропроцессора предназначались для создания вы- числительных устройств, работающих в однозадачном режиме, то есть специальных аппаратных средств для поддержки надежных и эффективных мультипрограммных операционных систем в них не было.
Однако к тому времени, когда
разработчики осознали необходимость
включения специальной
Информация о работе Контрольная работа по дисциплине: «Системное программное обеспечение»