3.2.4. Мультипрограммирование с переменными разделами и уплотнением памяти.
Ясно, что метод Multiprogramming with a Variable number of Tasks порождает в памяти множество малых фрагментов, каждый из которых может быть недостаточен для размещения очередного процесса, однако суммарный размер фрагментов превышает размер этого процесса.
Уплотнением памяти называется перемещение всех занятых разделов по адресному пространству памяти. Таким образом, чтобы свободный фрагмент занимал одну связную область.
операционная система
раздел № 1
0
а
раздел № 2
в тех случаях, когда мультипрограммная смесь неоднородна по отношению к размерам программ, возникает необходимость в частом уплотнении, что расходует ресурс процессорное время и компенсирует экономию ресурса памяти.
во время уплотнения все прикладные программы переводятся в состояние “ожидание”, что приводит к невозможности выполнения программ в реальном масштабе времени.
3.2.5. Основные стратегии заполнения свободного раздела.
Рассмотренные методы мультипрограммирования предполагают наличие входной очереди/очередей к разделам основной памяти.
В том случае, когда освобождается очередной раздел, операционная система должна выбрать один из процессов для размещения его в памяти. Алгоритм выбора может использовать одну из следующих трех стратегий:
стратегия наиболее подходящего (best fit strategy) выбирает процесс, которому в освободившемся разделе наиболее тесно (выигрыш в памяти).
стратегия первого подходящего (first fit strategy) выбирает первый процесс, который может разместить в освободившемся разделе.
стратегия наименее подходящего (last fit strategy) выбирает процесс, которому в освободившемся разделе наиболее свободно (в этом случае остающийся фрагмент часто достаточен для размещения еще одного процесса).
3.3. Страничная организация памяти.
Страничная организация памяти (paging) относится к методам несмежного размещения процессов в основной памяти.
Основное достоинство страничной организации памяти заключается в том, что она позволяет свести к минимуму общую фрагментацию за счет полного устранения внешней фрагментации и минимизации внутренней фрагментации.
3.3.1. Базовый метод.
Основная память
f
CPU
П
Д
Логический адрес
Таблица страниц
f
f
Д
Страничная рамка
Каждый адрес, генерируемый процессором, состоит из двух частей: П - номер страницы (page number) и Д - смещение в пределах страницы (off set). Номер страницы может использоваться как индекс для таблицы страниц (page table).
Таблица страниц содержит начальные адреса f всех страничных рамок, в которых размещена программа. Физический адрес определяется путем сложения начального адреса страничной рамки f и смещения Д.
Вторичная память | Таблица страниц | Основная память | ||||||
программы А | | |||||||
стр. 0 | | 1 | | стр. 0 | ||||
программа | стр. 1 | | 3 | | ||||
А | стр. 2 | | 4 | | стр. 1 | |||
стр. 3 | | 7 | | стр. 2 | ||||
| | |||||||
f П | | |||||||
| стр. 3 |
Для ускорения вычисления физического адреса операцию суммирования заменяют операцией конкатенации.
старшие разряды | младшие разряды | |||||
2n+1 | 2n | f | ||||
2n-1 | 2n | Д |
Например, при n=9 базовые адреса страничных рамок — это следующий ряд: 512, 1024, 1536. Следовательно, размер страничной рамки равен 512 байт.
В современных операционных системах типичный размер страницы составляет 2 Кб или 4 Кб.
Каждая операционная система поддерживает свой собственный метод работы с таблице страниц. Обычно за каждым процессом, находящимся в основной памяти, закреплена отдельная таблица страниц. В этом случае указатель на таблицу страниц хранится в PCB соответствующего процесса.
3.3.2. Аппаратная поддержка страничной организации памяти.
Преобразование логического адреса в физические осуществляется для каждого адреса, генерируемого процессором, поэтому часто для ускорения этого процесса применяются аппаратные методы. На рисунке приведена схема, иллюстрирующая метод, использующий ассоциативные регистры (associative registers).
Каждый ассоциативный регистр кроме операций чтения - записи может обрабатывать операцию сравнения кода, поступающего на его вход с частью кода, хранимого в регистре. Матрица ассоциативных регистров хранит часть таблицы страниц. Номер страницы П подается одновременно на входы всех ассоциативных регистров, которые параллельно выполняют операцию сравнения. На выходе матрицы ассоциативных регистров образуется начальный адрес страничной рамки f того регистра, в котором про-
изошло совпадение кода.
Логический адрес
Д
П
CPU
Основная память
f
f
Д
Таблица страниц
П | f |
матрица ассоциативных регистров
Страничная рамка
Д
f
номер страничной рамки, а найденная строка таблицы страниц переписывается в один из ассоциативных регистров.
Защита страничной памяти основана на контроле уровня доступа к каждой странице, возможны следующие уровни доступа:
только чтение
и чтение и запись
только выполнение
В этом случае каждая страница снабжается трехбитным кодом уровня доступа. При трансформации логического адреса в физический сравнивается значение кода разрешенного уровня доступа с фактически требуемым. При их несовпадении работа программы прерывается.
3.4. Сегментная организация памяти.
Страничная организация памяти предполагает, что разделение программы на страницы осуществляет операционная система и это невидимо для прикладного программиста. Большинство технологий программирования также предполагает разделение программы на множество логических частей — подпрограммы, процедуры, модули и так далее.
Сегментная организация памяти представляет собой метод несмежного размещения, при котором программа разбивается на части (сегменты) на этапе программирования. Отдельный сегмент хранит отдельную логическую часть программы: программный модуль или структуру данных (массив), стек, таблица и так далее.
3.4.1. Базовый метод сегментной организации памяти.
Обычно сегменты формируются компилятором, а на этапе загрузки им присваиваются идентифицирующие номера. Таким образом, логический адрес при сегментной организации памяти состоит из двух частей: S и d, где S — номер сегмента, а d — смещение в пределах сегмента.
Трансформация логического адреса в физический осуществляется с помощью таблицы сегментов (segment table).
да
CPU
S
d
сегмент
d
base
таблица сегментов
limit
base
+
нет
Номер сегмента S используется в качестве индекса для таблицы сегментов. С помощью таблицы сегментов определяется его начальный адрес base в основной памяти. Значение limit используется для защиты памяти. Смещение d должно удовлетворять неравенству 0
... циркуляр руководства компании, #321/A, определяющий количество глюков для каждой версии Windows. Ю.Н.: - Но зачем?! С.Б.: - Потому что Microsoft не хочет резать курицу, несущую золотые яйца. Представьте себе, что мы выпустили бы на рынок идеальную операционную систему, каковой на самом деле является Windows. Рынок был бы насыщен очень быстро, после чего пользователи потеряли бы всякий стимул
... менеджмента в управлении операционной системой Операционный менеджер по своему положению находится у истоков формирования миссии и стратегии операционной системы и эффективного регулирования ее ресурсами. И, естественно, разработка эффективной операционной стратегии зависит от «хороших» стратегических и тактических решений операционного менеджера. В данном случае стратегические решения имеют ...
... доступа к данным препятствует как несанкционированному использованию информации, так и распространению вредоносных кодов в системе. Глава 2. Производители программного обеспечения Разумеется, многофункциональность ПК определяет не операционная система, а программное обеспечение, используемое на нем. Именно эти продукты позволяют использовать компьютер в различных производственных сферах. И, ...
... ориентированы на 32 разрядные шинные архитектуры компьютеров с процессорами 80386, 80486 или Pentium. Фирма Novell также подготовила варианты сетевой ОС NetWare, предназначенные для работы под управлением многозадачных, многопользовательских операционных систем OS/2 и UNIX. Версию 3.12 ОС NetWare можно приобрести для 20, 100 или 250 пользователей, а версия 4.0 имеет возможность поддержки до 1000 ...
0 комментариев