
СРС-3
Странично-сегментная организация памяти
Поскольку сегменты имеют переменную длину и руководить ними сложнее, чистая сегментация обычно не настолько эффективна, как страничная организация. С другой стороны, является ценной сама возможность использовать сегменты как блоки памяти разного назначения.
Для того чтобы объединить преимущества обоих подходов, в некоторых аппаратных архитектурах используют комбинацию сегментной и страничной организации памяти. При такой организации преобразования логического адреса в физический происходит в три этапа.
В программе задают логический адрес с использованием сегмента и сдвига.
Логический адрес превращают в линейный (виртуальный) адрес по правилам, заданными для сегментации.
Виртуальный адрес превращают в физический по правилам, заданным для страничной организации.
Такую архитектуру называют странично-сегментной организацией памяти.
Динамическое распределение памяти
Динамическое распределение памяти - это распределение по запросам процессов пользователя или ядра во время их выполнения. Различают динамическое выделение и динамическое высвобождение памяти.
Динамический участок памяти процесса - это специальная часть его адресного пространства, в которой происходит распределение памяти по запросам.
Динамическое распределение памяти происходит на двух уровнях. Сначала ядро резервирует динамический участок памяти процесса по системному вызову. Потом внутри этого участка процессы пользователя могут распределять память, сипользуя стандартные функции. В случае необходимости динамический участок можно расширять или сокращать.
Распределитель памяти – это часть системной библиотеки или ядра системы, ответственная за динамическое распределение памяти.
Главной задачей такого распределителя является отслеживание использования процессом участков памяти в конкретный момент. Основными целями работы распределителя является минимизация утраченного вследствие фрагментации пространства и затрат времени на выполнение операций.
Обычные распределители не могут контролировать размер и количество используемых блоков памяти: этим занимаются процессы пользователя, а распределитель просто отвечает на их запросы. Кроме того, распределитель не может заниматься перемещением блоков памяти для того чтобы сделать свободную память непрерывной, поскольку для него недопустимо изменять указатели и память, выделенную процессу. Распределитель фактически имеет дело только со свободной памятью, основное решение, которое он может принимать, где выделить следующий нужный блок.
Динамическое распределение памяти может приводить к внешней и внутренней фрагментации.
Фрагментация возникает по двум причинам:
Разные объекты имеют разное время жизни (объекты, находящиеся в памяти рядом, высвобождаются в разное время). Распределители памяти могут использовать эту закономерность, выделяя память так, чтобы объекты, которые могут быть уничтожены одновременно, располагались рядом.
Разные объекты имеют разный размер. Если бы все запросы требовали выделения памяти одного размера, внешней фрагментации не было бы.
Для борьбы с внутренней фрагментацией большинство распределителей памяти разделяют блоки памяти на меньшие части, выделяют одну из них и дальше рассматривают другие части как свободные. Кроме того, часто используют слияние соседних свободных блоков, чтобы удовлетворять запросы на блоки большего размера.
СРС-4
Способы выполнения операций ввода-вывода
Внешнее устройство взаимодействует с компьютерной системой через точку связи, которую называют портом. Если несколько устройств соединены между собою и могут обмениваться сообщениями соответственно заранее определенному протоколу, то говорят, что они используют шину.
Как известно, устройства связываются с компьютером через контроллеры. Есть два базовых способа связи с контролером: через порт ввода-вывода и отображаемую память. В первом случае данные пересылают с помощью специальных инструкций, во втором - робота с определенным участком памяти вызывает взаимодействие с контролером.
Некоторые устройства применяют обе технологии сразу. Например, графический контролер использует набор портов для организации управления и регион отображаемой памяти для сохранения содержимого экрана.
Общения с контролером через порт обычно сводится к использованию четырех регистров. Команды записывают в управляющий регистр, данные - в регистр вывода, информация о состоянии контролера может быть считана из регистра статуса, данные от контролера - из регистра ввода.