Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OS.docx
Скачиваний:
10
Добавлен:
01.04.2025
Размер:
224 Кб
Скачать
☆

19. Простое непрерывное распределение памяти и распределение памяти с перекрытием

Простое непрерывное распределение памяти – самая простая схема, согласно которой память условно может быть разделена на три области: 1) Область, занимаемая ОС 2) область, в кторой размещается исполняемый процесс 3) свободная память.

Достаточно распространенная схема. Эта схема предполагает, что ОС не поддерживает мультипрограммирования, поэтому не возникает проблемы распределения памяти между несколькими задачами. Программные модули, необходимые для всех программ, распологаются в области самой ОС, а вся оставшаяся память между может быть представлена задаче. Для того, что бы для задач отвести как можно большийобьём памяти, ОС строится таким образом, чтобы постоянно в RAMраспологаласть только самая нужная её часть – Ядро.

Если есть необходимость создать программу, логическое адресное пространство которой должно быть большем, чем свободная область памяти, даже больше, чем весь возможный объём RAM, то используется распределение с перекрытием – оверлейные структуры. Этот метод предполагает, что вся программа может быть разбита на части - сегменты. Пока в RAM располагаются выполняющиеся сегменты, остальные находятся во внешней памяти. Простойшие схемы сегментирования предполагают, что в памяти в каждый конкретный момент времени может располагаться только 1 сегмент.

20. Сегментный способ организации памяти.

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

Помимо информации о местоположении сегмента, в дескрипторе сегмента содержатся данные о его типе, правах доступа к этому сегменту, отметка об обращениях и данному сегменту.

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

Сама таблица представляет собой сегмент данных, который обрабатывается диспетчером памяти ОС.

При таком подходе появляется возможность размещать в ОП не все сегменты задачи, а только задействованные на данный момент.

Для решения проблемы замещения используются следующие дисциплины:

1.правило FIFO

2.правило LRU

3.правило LFU

4.случайный

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

В алгоритме FIFO с каждым сегментом связывается очередность его размещения в памяти.

Для реализации дисциплин LRU и LFU необходимо, чтобы процесс имел дополнительные аппаратные средства.

Интересные возможности:

  1. При загрузке программы на исполнение можно размещать ее в памяти не цел., а «по мере необходимости».

  2. Некоторые программные модули могут быть разделяемыми.

21. Страничный способ организации памяти.

Страничная память — способ организации виртуальной памяти, при котором единицей отображения виртуальных адресов на физические является регион постоянного размера (т. н. страница). Типичный размер 4096 байт, для некоторых архитектур до 128 КБ.

Поддержка такого режима присутствует в большинстве 32битных и 64битных процессорах. Такой режим является классическим для почти всех современных ОС, в том числе Windows и семейства UNIX. Широкое использование такого режима началось с процессора VAX и ОС VMS с конца 70х годов (по некоторым сведениям, первая реализация). В семействе x86 поддержка появилась с поколения 386, оно же первое 32битное поколение.

Огромным достоинством страничной виртуальной памяти по сравнению ссегментной является отсутствие «ближних» и «дальних» указателей.

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

Кроме того, сегментные архитектуры имеют тяжелейшую проблему SS != DS, широко известную в начале 90х годов в программировании под 16битные версии Windows. Эта проблема приводит к затруднениям в реализации динамических библиотек, ибо они имеют свой собственный DS, и SS текущего процесса, что приводит к невозможности использования «ближних» указателей в них. Также наличие своего собственного DS в библиотеках требует устанавливающих правильное значение DS заплаток (MakeProcInstance) для обратных вызовов из библиотеки в вызвавшее приложение.

В большинстве современных операционных систем виртуальная память организуется с помощью страничной адресации. Оперативная память делится на страницы: области памяти фиксированной длины (например, 4096 байт), которые являются минимальной единицей выделяемой памяти (то есть даже запрос на 1 байт от приложения приведёт к выделению ему страницы памяти). Процесс обращается к памяти с помощью адреса виртуальной памяти, который содержит в себе номер страницы и смещение внутри страницы. Процессор преобразует номер виртуальной страницы в адрес соответствующей ей физической страницы при помощи буфера ассоциативной трансляции. Если ему не удалось это сделать, то требуется обращение к таблице страниц (так называемый PageWalk), что может сделать либо сам процессор, либо операционная система (в зависимости от архитектуры)[1]. Если страница выгружена из оперативной памяти, то операционная система подкачивает страницу с жёсткого диска (см. свопинг). При запросе на выделение памяти операционная система может «сбросить» на жёсткий диск страницы, к которым давно не было обращений. Критические данные (например, код запущенных и работающих программ, код и память ядра системы) обычно находятся в оперативной памяти (исключения существуют, однако они не касаются тех частей, которые отвечают за обработку аппаратных прерываний, работу с таблицей страниц и использование файла подкачки).

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