Разделы с фиксированными границами

Разбиение всего объема оперативной памяти на несколько разделов может осуще­ствляться единовременно (то есть в процессе генерации варианта операционной системы, который потом и эксплуатируется) или по мере необходимости операто­ром системы. Однако и во втором случае при разбиении памяти на разделы вычис­лительная система более ни для каких целей в этот момент не используется. При­мер разбиения памяти на несколько разделов приведен на рис. 3.3.

В каждом разделе в каждый момент времени может располагаться по одной про­грамме (задаче). В этом случае по отношению к каждому разделу можно применить все те методы создания программ, которые используются для однопрограммных систем. Возможно использование оверлейных структур, что позволяет создавать большие сложные программы и в то же время поддерживать коэффициент мульти-


Распределение памяти статическими и динамическими разделами________________ 83

программирования1 на должном уровне. Первые мультипрограммные операционные системы строились по этой схеме. Использовалась эта схема и много лет спустя при создании недорогих вычислительных систем, поскольку является несложной и обес­печивает возможность параллельного выполнения программ. Иногда в некотором разделе размещалось по нескольку небольших программ, которые постоянно в нем и находились. Такие программы назывались ОЗУ-резидентными (или просто рези­дентными). Та же схема используется и в современных встроенных системах; прав­да, для них характерно, что все программы являются резидентными, и внешняя па­мять во время работы вычислительного оборудования не используется.

Рис.3.3. Распределение памяти разделами с фиксированными границами

1 Под коэффициентом мультипрограммирования (т) понимают количество параллельно выполняе­мых программ. Обычно на практике для загрузки центрального процессора до уровня 90 % необхо­димо, чтобы коэффициент мультипрограммирования был не менее 4-5. А для того чтобы наиболее полно использовать и остальные ресурсы системы, желательно иметь m на уровне 10-15.


84_____________________ Глава 3. Управление памятью в операционных системах

При небольшом объеме памяти и, следовательно, небольшом количестве разделов увеличить число параллельно выполняемых приложений (особенно когда эти при­ложения интерактивны и во время своей работы фактически не используют про­цессорное время, а в основном ожидают операций ввода-вывода) можно за счет замены их в памяти, или свопинга (swapping). При свопинге задача может быть целиком выгружена на магнитный диск (перемещена во внешнюю память), а на ее место загружается либо более привилегированная, либо просто готовая к выпол­нению другая задача, находившаяся на диске в приостановленном состоянии. При свопинге из основной памяти во внешнюю (обратно) перемещается вся програм­ма, а не ее отдельная часть.

Серьезная проблема, которая возникает при организации мультипрограммного режима работы вычислительной системы, — защита как самой операционной сис­темы от ошибок и преднамеренного вмешательства процессов в ее работу, так и са­мих процессов друг от друга.

В самом деле, программа может обращаться к любым ячейкам в пределах своего виртуального адресного пространства. Если система отображения памяти не со­держит ошибок, и в самой программе их тоже нет, то возникать ошибок при вы­полнении программы не должно. Однако в случае ошибок адресации, что случает­ся не так уж и редко, исполняющаяся программа может начать «обработку» чужих данных или кодов с непредсказуемыми последствиями. Одной из простейших, но достаточно эффективных мер является введение регистров защиты памяти. В эти регистры операционная система заносит граничные значения области памяти раз­дела текущего исполняющегося процесса. При нарушении адресации возникает прерывание, и управление передается супервизору операционной системы. Обра­щения задач к операционной системе за необходимыми сервисами осуществляют­ся не напрямую, а через команды программных прерываний, что обеспечивает пе­редачу управления только в предопределенные входные точки кода операционной системы и в системном режиме работы процессора, при котором регистры защиты памяти игнорируются. Таким образом, выполнение функции защиты требует введе­ния специальных аппаратных механизмов, используемых операционной системой.

Основным недостатком рассматриваемого способа распределения памяти является наличие порой достаточно большого объема неиспользуемой памяти (см. рис. 3.3). Неиспользуемая память может быть в каждом из разделов. Поскольку разделов не­сколько, то и неиспользуемых областей получается несколько, поэтому такие потери стали называть фрагментацией памяти. В отдельных разделах потери памяти могут быть очень значительными, однако использовать фрагменты свободной памяти при таком способе распределения не представляется возможным. Желание разработчи­ков сократить столь значительные потери привело их к следующим двум решениям:

- выделять раздел ровно такого объема, который нужен под текущую задачу;

- размещать задачу не в одной непрерывной области памяти, а в нескольких об­ластях.

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


Распределение памяти статическими и динамическими разделами________________ 85








Дата добавления: 2016-09-20; просмотров: 891;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.