Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ВОПРОСЫ ГОСУДАРСТВЕННОГО ЭКЗАМЕНА

.pdf
Скачиваний:
22
Добавлен:
12.04.2015
Размер:
4.23 Mб
Скачать

51

К оглавлению ↑

каждое устройство ЭВМ выполняет свои рабочие функции только часть времени, все остальное время оно находится в режиме ожидания.

Врежиме мультипрограммирования в основной памяти одновременно находится несколько программ, загруженных для выполнения. Число одновременно выполняемых программ определяет уровень мультипрограммирования. Центральный процессор в каждый момент времени может выполнять лишь одну из программ. Таким образом, параллельно выполняемые программы конкурируют между собой за обладание ресурсами вычислительной системы и в первую очередь за время центрального процессора. Каждая программа представляется в системе как задача (процесс). Таким образом, принято говорить об одновременно выполняемых задачах (или процессах), основой которых являются соответствующие программы, причем задача является единицей мультипрограммирования.

ОС пакетной обработки и системы с разделением времени; системы реального времени

Взависимости от использованного при разработке критерия эффективности многозадачность может быть реализована системами следующих трех типов:

1) Системы пакетной обработки (например, ОС ЕС). Предназначались в основном для задач вычислительного характера. Главным критерием эффективности являлось решение максимального числа задач в единицу времени. Для этого формируется пакет задач, причем для одновременного выполнения выбираются задачи, предъявляющие разные требования к ресурсам, чтобы обеспечивалась сбалансированная загрузка всех устройств компьютера; так, например, желательно одновременное присутствие вычислительных задач и задач с интенсивным вводом/выводом.

2) Системы разделения времени (например, UNIX). Каждой задаче выделяется только часть процессорного времени, то есть происходит поочередное выполнение всех запущенных задач. Общая производительность при этом ниже, чем в случае пакетной обработки, так как задачи выполняются в том порядке, который определяется пользователем, а не в том, который "выгоден" системе. Зато время выполнения для всех задач оказывается приемлемым для пользователя.

3) Системы реального времени (например, QNX) применяются для управления различными техническими объектами (например, спутниками, технологическими линиями), и в тех случаях, когда обработка данных должна выполняться в том же темпе, что и поступление этих данных (например, кардиомониторы, гидроакустические системы). Во всех этих случаях существует предельно допустимое время, в течение которого должна быть выполнена та или иная программа. Это время называется временем реакции системы, а соответствующее свойство - реактивностью.

Некоторые ОС могут совмещать в себе свойства систем разных типов, например, часть задач может выполняться в режиме пакетной обработки, а часть - в режиме реального времени или разделения времени. В таких случаях режим пакетной обработки называют фоновым

Сетевые ОС

Сетевая операционная система (англ. Network operating system) – это операционная система,

которая обеспечивает обработку, хранение и передачу данных в информационной сети. Главными задачами сетевой ОС являются разделение ресурсов сети (например, дисковые

пространства) и администрирование сети. Системный администратор определяет разделяемые ресурсы, задаёт пароли, определяет права доступа для каждого пользователя или группы пользователей. Отсюда сетевые ОС делят на сетевые ОС для серверов и сетевые ОС для пользователей.

Существуют специальные сетевые ОС, которым приданы функции обычных систем (например, Windows NT) и обычные ОС (Windows XP), которым приданы сетевые функции. Практически все современные ОС имеют встроенные сетевые функции.

Сетевая операционная система составляет основу любой вычислительной сети. Каждый компьютер в сети в значительной степени автономен, поэтому под сетевой операционной системой в широком смысле понимается совокупность операционных систем отдельных компьютеров, взаимодействующих с целью обмена сообщениями и разделения ресурсов по единым правилам - протоколам. Эти протоколы обеспечивают основные функции сети: адресацию объектов, функционирование служб, обеспечение безопасности данных, управление сетью. В узком смысле

52

К оглавлению ↑

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

В зависимости от того, как распределены функции между компьютерами сети, сетевые операционные системы, а следовательно, и сети делятся на два класса: одноранговые и двухранговые, которые чаще называют сетями с выделенными серверами.

Одноранговые сети. Все узлы имеют одинаковые возможности доступа к ресурсам друг друга. На всех узлах устанавливаются типовые ОС, предоставляющие узлу возможности как клиента, так и сервера. Такие ОС называются одноранговыми. Одноранговые сети используются чаще всего для небольших рабочих групп. Число узлов в такой сети обычно не превышает десяти.

Примерами одноранговых ОС являются Windows 2000 Professional, Windows XP, Windows NT

Workstation.

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

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

Отличительными чертами серверных ОС являются:

расширенный набор сетевых служб

наличие эффективных служб защиты и восстановления ОС после сбоя

поддержка большого числа одновременно выполняемых процессов и сетевых соединений

наличие средств информационной безопасности и их соответствие требованиям стандартов

поддержка мощных аппаратных платформ, в том числе многопроцессорных

включение в состав ОС служб централизованного администрирования сети (например,

справочной службы, службы мониторинга сети, службы аутентификации пользователей сети).

Примерами серверных ОС являются UNIX, Windows NT Server, Windows 2000 Server, Windows 2003 Server. Компания Microsoft выпускает по две версии одной и той же ОС: одна для сервера, например, Windows NT Server, а другая для обычного узла сети, например, Windows NT

Workstation.

В процессе развития сетевых ОС возникли два подхода к их построению.

1)Первые сетевые ОС представляли собой совокупность существующей локальной ОС и надстроенной над ней сетевой оболочки. При этом локальная ОС включает минимум сетевых функций, достаточный для взаимодействия с оболочкой. Основные задачи сетевого взаимодействия возлагаются на оболочку. Примерами являются MS DOS 7.0+, LANtastic, Personal Ware, OS/2+ LAN

Manager.

2)Более эффективным является внедрение сетевых функций в ядро ОС. При этом обеспечивается более высокая производительность, устойчивость, безопасность и простота эксплуатации. Примерами таких ОС являются Unix и ОС семейства Windows.

При рассмотрении структуры ОС и особенностей ее работы пользуются моделями "клиентсервер" и "режим пользователя - режим ядра".

Модель "клиент-сервер" является удобным средством ясного представления функций того или иного программного элемента в той или иной ситуации. Эта модель предполагает наличие программного компонента - потребителя какого-либо сервиса (клиента), и программного компонента

-поставщика этого сервиса (сервера). Взаимодействие между клиентом и сервером стандартизуется, так что сервер может обслуживать клиентов, реализованных разными способами; главное, чтобы они запрашивали услуги сервера понятным ему способом. Применительно к структурированию ОС модель "клиент-сервер" заключается в разбиении ОС на несколько подсистем, каждая из которых

53

К оглавлению ↑

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

-Модель "режим пользователя - режим ядра" рассматривает разные режимы работы ОС. В режиме пользователя работают приложения и отдельные системные задачи, например, принтсерверная или файл-серверная подсистемы. Этот режим не имеет непосредственного доступа к аппаратуре и вызывает системные службы через интерфейсы прикладных программ (API). Режим ядра (часто называемого микроядром) является привилегированным, имеет доступ ко всему адресному пространству, всем аппаратным ресурсам компьютера. Микроядро представляет наиболее общие службы ОС, такие как диспетчеризация задач, обработка прерываний распределение памяти; оно также обеспечивает взаимодействие между подсистемами ОС.

Реализация двух режимов работ делает функционирование ОС более надежным и эффективным, обеспечивает защиту данных и безопасное использование оборудования.

Многопроцессорные системы

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

Многопроцессорная обработка реализована в таких ОС, как Linux, Solaris, Windows NT, и ряде других.

Многопроцессорные ОС разделяют на симметричные и асимметричные.

1)В симметричных ОС на каждом процессоре функционирует одно и то же ядро, и задача может быть выполнена на любом процессоре, то есть обработка полностью децентрализована. При этом каждому из процессоров доступна вся память.

2)В асимметричных ОС процессоры неравноправны. Обычно существует главный процессор (master) и подчиненные (slave), загрузку и характер работы которых определяет главный процессор.

Литература: [1], [2], [3], [4].

2. Процессы

Понятие процесса.

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

54

К оглавлению ↑

Состояния процесса.

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

Как видим, каждый процесс может находиться как минимум в двух состояниях: процесс

исполняется и процесс не исполняется.

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

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

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

операционная система прекращает его деятельность;

он не может продолжать свою работу, пока не произойдет некоторое событие, и операционная система переводит его в состояние ожидание;

в результате возникновения прерывания в вычислительной системе (например, прерывания

от таймера по истечении предусмотренного времени выполнения) его возвращают в состояние готовность.

Из состояния ожидание процесс попадает в состояние готовность после того, как ожидаемое событие произошло, и он снова может быть выбран для исполнения.

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

55

К оглавлению ↑

Теперь для появления в вычислительной системе процесс должен пройти через состояние рождение. При рождении процесс получает в свое распоряжение адресное пространство, в которое загружается программный код процесса ; ему выделяются стек и системные ресурсы; устанавливается начальное значение программного счетчика этого процесса и т. д. Родившийся процесс переводится в состояние готовность. При завершении своей деятельности процесс из состояния исполнение попадает в состояние закончил исполнение.

В конкретных операционных системах состояния процесса могут быть еще более детализированы, могут появиться некоторые новые варианты переходов из одного состояния в другое. Так, например, модель состояний процессов для операционной системы Windows NT содержит 7 различных состояний, а для операционной системы Unix – 9. Тем не менее, так или иначе все операционные системы подчиняются изложенной выше модели.

Операции над процессами и связанные с ними понятия.

Процесс не может перейти из одного состояния в другое самостоятельно. Изменением состояния процессов занимается операционная система, совершая операции над ними.

Набор операций.

Набор операций:

создание процесса – завершение процесса Операции создания и завершения процесса являются одноразовыми, так как применяются к процессу не более одного раза (некоторые системные процессы при работе вычислительной системы не завершаются никогда).

приостановка процесса (перевод из состояния исполнение в состояние готовность) – запуск процесса (перевод из состояния готовность в состояние исполнение);

блокирование процесса (перевод из состояния исполнение в состояние ожидание) – разблокирование процесса (перевод из состояния ожидание в состояние готовность).

изменение приоритета процесса.

Все остальные операции, связанные с изменением состояния процессов, будь то запуск или блокировка, как правило, являются многоразовыми.

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

Создание процесса

Порождение нового PCB с состоянием процесса «рождение»

Присвоение идентификационного номера

Выделение ресурсов (из ресурсов родителя, из ресурсов ОС)

56

К оглавлению ↑

Занесение в адресное пространство кода и установка значения программного счетчика (дубликат родителя, из файла)

Окончание заполнения PCB

Изменение состояния процесса на «готовность»

Завершение процесса

Изменение состояния процесса на «закончил исполнение»

Освобождение ресурсов

Очистка соответствующих элементов в PCB

Сохранение в PCB информации о причинах завершения

Запуск процесса

Выбор одного из процессов, находящихся в состоянии «готовность»

Изменение состояния выбранного процесса на «исполнение»

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

Восстановление значений регистров

Передача управления по адресу, на который указывает программный счетчик

Приостановка процесса

Автоматическое сохранение программного счетчика и части регистров (работа оборудования)

Передача управления по специальному адресу (работа оборудования)

Сохранение динамической части регистрового и системного контекстов в PCB

Изменение состояния процесса на «готовность»

Обработка прерывания

Блокирование процесса

Обработка системного вызова

Сохранение контекста процесса в PCB

Перевод процесса в состояние «ожидание»

Разблокирование процесса

Уточнение того, какое именно событие произошло

Проверка наличия процесса, ожидающего этого события

Перевод ожидающего процесса в состояние «готовность»

Обработка произошедшего события

Process Control Block и контекст процесса.

Process Control Block и контекст процесса

Для того чтобы операционная система могла выполнять операции над процессами, каждый процесс представляется в ней некоторой структурой данных. Эта структура называется PCB (Process Control Block) или блок управления процессом. Блок управления процессом является моделью процесса для операционной системы. Любая операция, производимая операционной системой над процессом, вызывает определенные изменения в PCB. В рамках принятой модели состояний процессов содержимое PCB между операциями остается постоянным.

57

К оглавлению ↑

Информация, для хранения которой предназначен блок управления процессом, делится на две части. Содержимое всех регистров процессора (включая значение программного счетчика)

называется регистровым контекстом процесса, а все остальное – системным контекстом процесса. Знания регистрового и системного контекстов процесса достаточно для того, чтобы управлять его работой в операционной системе, совершая над ним операции. Однако этого недостаточно для того, чтобы полностью охарактеризовать процесс. Код и данные, находящиеся в адресном пространстве процесса, называются пользовательским контекстом. Совокупность регистрового, системного и пользовательского контекстов процесса для краткости принято называть просто контекстом процесса. В любой момент времени процесс полностью характеризуется своим контекстом.

Переключение контекста.

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

Рассмотрим, как в реальности может протекать операция разблокирования процесса, ожидающего ввода-вывода. При исполнении процессором некоторого процесса (на рисунке – процесс 1) возникает прерывание от устройства ввода-вывода, сигнализирующее об окончании операций на устройстве. Над выполняющимся процессом производится операция приостановки. Далее операционная система разблокирует процесс, инициировавший запрос на ввод-вывод (на рисунке – процесс 2) и осуществляет запуск приостановленного или нового процесса, выбранного при выполнении планирования (на рисунке был выбран разблокированный процесс). Как мы видим, в результате обработки информации об окончании операции ввода-вывода возможна смена процесса, находящегося в состоянии исполнение.

58

К оглавлению ↑

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

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

включающая в себя понятие threads of execution (нити исполнения или просто нити).

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

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

Литература: [1], [2], [3], [4].

3. Организация памяти компьютера

Простейшие схемы управления памятью.

Оперативная память (англ. Random Access Memory, память с произвольным доступом) — энергозависимая часть системы компьютерной памяти, в которой временно хранятся данные и команды, необходимые процессору для выполнения им операции. Обязательным условием является адресуемость (каждое машинное слово имеет индивидуальный адрес) памяти.

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

Простейшие схемы управления памятью.

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

59

К оглавлению ↑

1.Схема с фиксированными разделами (была реализована в IBM OS/360 (MFT), DEC RSX-

11 и ряде других систем)

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

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

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

Очевидный недостаток этой схемы – число одновременно выполняемых процессов ограничено числом разделов. Другим существенным недостатком является то, что предлагаемая схема сильно страдает от внутренней фрагментации – потери части памяти, выделенной процессу, но не используемой им. Фрагментация возникает потому, что процесс не полностью занимает выделенный ему раздел или потому, что некоторые разделы слишком малы для выполняемых пользовательских программ.

2.Один процесс в памяти

Частный случай схемы с фиксированными разделами – работа менеджера памяти однозадачной ОС. В памяти размещается один пользовательский процесс. Остается определить, где располагается пользовательская программа по отношению к ОС – в верхней части памяти, в нижней или в средней. Причем часть ОС может быть в ROM (например, BIOS, драйверы устройств). Главный фактор, влияющий на это решение, – расположение вектора прерываний, который обычно локализован в нижней части памяти, поэтому ОС также размещают в нижней. Примером такой организации может служить ОС MS-DOS.

Защита адресного пространства ОС от пользовательской программы может быть организована при помощи одного граничного регистра, содержащего адрес границы ОС.

3.Оверлейная структура

Так как размер логического адресного пространства процесса может быть больше, чем размер выделенного ему раздела (или больше, чем размер самого большого раздела), иногда используется техника, называемая оверлей (overlay) или организация структуры с перекрытием. Основная идея – держать в памяти только те инструкции программы, которые нужны в данный момент.

Потребность в таком способе загрузки появляется, если логическое адресное пространство системы мало, например 1 Мбайт (MS-DOS) или даже всего 64 Кбайта (PDP-11), а программа

относительно велика. Организация структуры с

перекрытием. Можно поочередно загружать в память ветви A-B, A-C-D и A-C-E программы

Коды ветвей оверлейной структуры программы находятся на

диске как абсолютные образы памяти и считываются драйвером оверлеев при необходимости. Для описания оверлейной структуры обычно используется специальный несложный язык (overlay

60

К оглавлению ↑ description language). Совокупность файлов исполняемой программы дополняется файлом (обычно с расширением .odl), описывающим дерево вызовов внутри программы. Для примера, приведенного на рисунке, текст этого файла может выглядеть так:

A-(B,C)

C-(D,E)

Синтаксис подобного файла может распознаваться загрузчиком. Привязка к физической памяти происходит в момент очередной загрузки одной из ветвей программы.

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

4.Динамическое распределение. Свопинг

Имея дело с пакетными системами, можно обходиться фиксированными разделами и не использовать ничего более сложного. В системах с разделением времени возможна ситуация, когда память не в состоянии содержать все пользовательские процессы. Приходится прибегать к свопингу (swapping) – перемещению процессов из главной памяти на диск и обратно целиком. Частичная выгрузка процессов на диск осуществляется в системах со страничной организацией (paging).

Выгруженный процесс может быть возвращен в то же самое адресное пространство или в другое. Это ограничение диктуется методом связывания. Для схемы связывания на этапе выполнения можно загрузить процесс в другое место памяти.

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

5.Схема с переменными разделами

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

свободные участки могут быть объединены.

Динамика распределения памяти между процессами (серым цветом показана неиспользуемая память)

В какой раздел помещать процесс?

Наиболее распространены три стратегии.

Стратегия первого подходящего (First fit). Процесс помещается в первый подходящий по размеру раздел.

Стратегия наиболее подходящего (Best fit). Процесс помещается в тот раздел, где после его загрузки останется меньше всего свободного места.

Стратегия наименее подходящего (Worst fit). При помещении в самый большой раздел в нем остается достаточно места для возможного размещения еще одного процесса.

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