Способы организации памяти
Системы виртуальной памяти можно разделить на два класса: системы с фиксированным размером блоков, называемых страницами, и системы с переменным размером блоков, называемых сегментами.
Страничный способ
Страничная память - способ организации памяти, при котором единицей отображения виртуальных адресов на физические является регион постоянного размера (т. н. страница). Типичный размер страницы - 4096 байт (для некоторых архитектур - 128 КБ).
Основным достоинством страничного способа распределения памяти является минимально возможная фрагментация. Поскольку на каждую задачу может приходиться по одной незаполненной странице, то становится очевидно, что память можно использовать достаточно эффективно. Этот метод организации виртуальной памяти был бы одним из самых лучших, если бы не два обстоятельства:
1) Страничная трансляция виртуальной памяти требует существенных накладных расходов. В самом деле, таблицы страниц нужно тоже размещать в памяти. Кроме этого, эти таблицы нужно обрабатывать диспетчером памяти.
2) Программы разбиваются на страницы случайно, без учета логических взаимосвязей. Это приводит к тому, что межстраничные переходы, осуществляются чаще, нежели межсегментные. К тому же, становится трудно организовывать разделение программных модулей между выполняющимися процессами.
Сегментный способ
При сегментной адресации памяти линейный адрес конкретной ячейки памяти делится на две части: сегмент и смещение. Сегментом называется условно выделенная область адресного пространства определённого размера. Смещение - это адрес ячейки памяти относительно начала сегмента. Достоинства сегментного способа:
1) Появляется возможность при загрузке программы на исполнение размещать ее в памяти не целиком, а «по мере необходимости». Поскольку в подавляющем большинстве случаев алгоритм, по которому работает код программы, является разветвленным.
2) Некоторые программные модули могут быть разделяемыми. Эти программные модули являются сегментами, и в этом случае относительно легко организовать доступ к таким сегментам.
Недостатки сегментного способа:
1) Для получения доступа к искомой ячейке памяти необходимо потратить намного больше времени. Необходимо сначала найти и прочитать дескриптор сегмента. Затем, используя данные о местонахождении нужного сегмента, вычисляется конечный физический адрес. Для того чтобы уменьшить эти потери, используется кэширование. Оно заключается в том, дескрипторы, которые используются в данный момент, могут размещаться в сверхоперативной памяти.
2) Имеются большие потери памяти и процессорного времени на размещение и обработку дескрипторных таблиц. Ведь на каждую задачу необходимо иметь свою таблицу дескрипторов сегментов, а при определении физических адресов необходимо выполнять операции сложения.
Для закрепления материала:
https://www.youtube.com/watch?v=x4FQ6ASzkso - 40 мин
Тема 5. Ввод-Вывод. Управление вводом-выводом
Основные понятия и концепции организации ввода/вывода в ОС
Ввод/вывод считается одной из самых сложных областей проектирования операционных систем, в которой сложно применить общий подход из-за изобилия частных методов. Сложность возникает из-за огромного числа устройств ввода/вывода разнообразной природы, которые должна поддерживать ОС. При этом перед создателями ОС встает очень непростая задача. Она заключается в том, чтобы не только обеспечить эффективное управление устройствами ввода/вывода, но и создать удобный и эффективный виртуальный интерфейс устройств ввода/вывода. Такой интерфейс должен позволять прикладным программистам просто считывать или сохранять данные, не обращая внимание на специфику устройств.
Система ввода/вывода должна быть универсальной. Она должна учитывать потребности существующих устройств, от простой мыши до клавиатур, принтеров, графических дисплеев, дисковых накопителей, компакт-дисков и т.д.
С другой стороны, необходимо обеспечить доступ к устройствам ввода/вывода для множества параллельно выполняющихся задач, причем так, чтобы они как можно меньше мешали друг другу.
Поэтому самым главным является следующий принцип: любые операции по управлению вводом/выводом объявляются привилегированными и могут выполняться только кодом самой ОС. Для обеспечения этого принципа в большинстве процессоров вводятся режимы пользователя и супервизора.
Как правило, в режиме супервизора выполнение команд ввода/вывода разрешено, а в пользовательском режиме запрещено. Использование команд ввода/вывода в пользовательском режиме вызывает исключениеи управление через механизм прерываний передается коду ОС. Хотя возможны и более сложные системы, в которых пользовательским программам разрешено непосредственное выполнение команд ввода/вывода.
Одним из основных видов ресурсов являются устройства ввода/вывода и соответствующее программное обеспечение, с помощью которого осуществляется управление обменом данными между внешними устройствами и оперативной памятью.
Внешние устройства бывают с разделяемым и неразделяемым механизмом доступа.
К разделяемым устройствам относятся накопитель на магнитных дисках и устройство для чтения компакт-дисков. Это устройства с прямым доступом.
К неразделяемым устройствам относятся принтер и накопитель на магнитных лентах. Это устройства с последовательным доступом.
Операционные системы должны управлять и теми и другими устройствами, предоставляя возможность параллельно выполняющимся задачам использовать различные устройства ввода/вывода.
Управление осуществляется посредством супервизора ввода-вывода..
В перечень основных задач, возлагаемых на супервизор, входят следующие:
1. Супервизор ввода/вывода получает запросы на ввод/вывод от прикладных задач и от программных модулей самой операционной системы. Эти запросы проверяются на корректность, и если запрос выполнен по спецификациям и не содержит ошибок, он обрабатывается дальше. В противном случае пользователю выдается соответствующее диагностическое сообщение о недействительности (некорректности) запроса.
2. Супервизор ввода/вывода вызывает соответствующие распределители каналов и контроллеров, планирует ввод/вывод (определяет очередность предоставления устройств ввода/вывода). Запрос на ввод/ вывод либо тут же выполняется, либо ставится в очередь на выполнение.
3. Супервизор ввода/вывода инициирует операции ввода/вывода (передает управление соответствующим драйверам).
4. При получении сигналов прерываний от устройств ввода/вывода супервизор идентифицирует их и передает управление соответствующей программе обработки прерывания.
5. Супервизор ввода/вывода осуществляет передачу сообщений об ошибках, если таковые происходят в процессе управления операциями ввода/вывода.
6. Супервизор ввода/вывода посылает сообщения о завершении операции ввода/вывода.
Таким образом, прикладные программы не могут непосредственно связываться с устройствами ввода/ вывода. Запросив работу с внешним устройством, они могут передать управление супервизору ввода/вывода. А уже он запускает необходимые логические и физические операции.
Дата добавления: 2020-02-05; просмотров: 830;