Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС3_11.docx
Скачиваний:
5
Добавлен:
17.08.2019
Размер:
29.48 Кб
Скачать

2.2.6 Защита памяти

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

2.2.7 Таймеры и часы

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

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

2.2.13 Виртуальная память

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

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

2.2.14 Мультипроцессорная обработка

В мультипроцессорных машинах несколько процессоров работают с общей основной памятью и одной операционной системой. При мультипроцессорной работе возникает опасность конфликтных ситуаций определенных типов, которых не бывает в однопроцессорных машинах. Здесь необходимо обеспечить координированный упорядоченный доступ к каждой общей ячейке памяти, с тем чтобы два процессора не могли изменять ее содержимое одновременно -- и в результате, быть может, портить его. Подобная координация необходима также и в случае, когда один процессор пытается изменить содержимое ячейки, которую хочет прочитать другой процессор. Более подробно эти проблемы обсуждаются в гл. И. В гл.21 при описании операционной системы MVS, выбранной в качестве одного из примеров для иллюстрации, объясняется, каким образом реализуется мультипроцессорный режим в крупных машинах фирмы IBM. Упорядочение доступа необходимо также и для однопроцессорных машин. Подробно эта проблема рассматривается в гл. 3, 4 и 5.

Управление процессами.

 Термин «процесс» впервые начали применять разработчики системы MULTICS в 60-х годах. За прошедшее время термин «процесс» используемый в ряде случаев как синоним «задачи», получил много различных определений:

·        программа в стадии выполнения;

·        асинхронная работа;

·        «живая душа» процедуры»

·        «концентрация средств управления» для выполняемой процедуры;

·        нечто, представленное в виде «блока управления процессом» в операционной системе;

·        объект, которому выделяются процессоры;

·        «диспетчируемый» модуль.

Чаще всего под процессом понимается «программа во время выполнения» и её данные.

Процесс имеет 2 стороны: поток команд и адресное пространство. Процессы распадаются на нити. Нити – потоки команд различны. Адресное пространство одинаково. Нити – это более мелкий объем работ по сравнению с процессом.

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

За время своего существования процесс может находиться в различных

дискретных состояниях. Смена состояний процесса вызывается событиями.

Можно выделить следующие основные состояния произвольного процесса.

• Состояние выполнения. Говорят, что процесс выполняется, если в данный

момент ему выделен ЦП.

• Состояние готовности. Говорят, что процесс готов, если он мог бы сразу

использовать ЦП, предоставленный в его распоряжение.

• Состояние блокировки. Говорят, что процесс заблокирован, если он

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

ввода-вывода), чтобы получить возможность продолжать выполнение.

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

Переход процесса из состояния в состояние.

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

запуск(имяпроцесса): готов ® выполняется

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

истечение кванта (имяпроцесса): выполняется ® готов и

запуск (имяпроцесса): готов ® выполняется

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

блокирование(имяпроцесса): выполняется ® блокирован

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

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

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

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

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

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

пробуждение(имяпроцесса): блокирован ® готов

Таким образом, мы определили четыре возможные смены состояния процесса:

запуск(имяпроцесса): готов ® выполняется

истечениекванта(имяпроцесса): выполняется ® готов

блокирование(имяпроцесса): выполняется ® блокирован

пробуждение(имяпроцесса): блокирован ® готов

Отметим, что единственная смена состояния, инициируемая самим процессом пользователя, — это блокирование, остальные три смены состояния инициируются объектами, внешними по отношению к данному процессу.