Аппаратные устройства поддержки мультипрограммного режима.




История появления ОС. Предпосылки появления ОС. Мульти програмный режим

 

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

 

1)0 эра компьютеров 40-е гг. Изготовлены на электронных лампах.

1 эра:

2)50-е гг. Машины стали меньше, так как появились транзисторы. Появились первые ОС называемыми …

3)2 эра: ЭВМ на больших интегральных схемах (БИС). 60-70гг. Появилась первая нормальная ОС. ОС нового времени (должны реагировать на какое-то событие быстро) Windows NT, RT Linux, QNX.

4)3эра: Компьютера на сверх больших интегральных схемах (СБИС). Появилось система разделения времени.

Мультипрограммный режим и его задачи

Определение: Мультипрограммный режим-это такой режим ОС в котором возможно одновременное выполнение нескольких процессов.

В задачи входит

1)Защита памяти (защита от посягательств одного процесса на память, принадлежащую другому процессу)

2)Защита команд(должна быть обеспеченна недопустимость выполнения запрещённых команд).

3)Управление памятью (мультипрограммный режим должен обеспечивать выделение и отъём определённого объёма оперативной памяти тому или иному процессу).

4)Управление процессами (мультипрограммный режим должен обеспечивать помещение одного процесса в процессор и временное “выкидывание” другого процесса из процессора).

5)Управление процессором (умение определять в какой момент необходимо поменять процесс в процессоре).

6)Управление внешними устройствами (умение работать с внешними устройствами на низком уровне и предоставлять некий интерфейс работы с ними конечному пользователю).

7)SWAPPING(умение выгружать часть оперативной памяти во внешнюю память, а при необходимости подгружать её обратно) - нужен при нехватке оперативной памяти.

 

 

Аппаратные устройства поддержки мультипрограммного режима.

1.Расслоение памяти:

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

2.Защита памяти бывает:

1)Защита памяти по граничным регистрам. В процессоре существует два спец регистра, называемые граничными, в которые ОС записывает адрес начала и адрес конца фрагментов памяти, которым может пользоваться выполняющийся процесс. При любом обращении процессом к оперативной памяти на аппаратном уровне адрес, по которому может обратиться процесс сверяется с содержимым граничным регистром. Если адрес не попадает в данный интервал, то генерируется прерывание по защите памяти и при этом как следствие управление передаётся ОС которая решает что делать с данным процессом. Как правило, процесс аварийно завершается. Недостатки: процессу нельзя выделить различные фрагменты памяти.

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

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

3.Средство поддержки мультипрограммного режима

Защита команд

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

1)ОС приняв выполнение на себя, завершает аварийно “провинившийся” процесс.

2)Если исполненная привилегированная команда была зарезервирована в системе как специальная программа для обращения к ОС, то происходит системный вызов с помощью которого, как правило, делается какая либо операция ввода-вывода, такая схема называется виртуальной схемой команд.

4.Таймер. Это устройство, которое с определённой частотой генерирует прерывание. Таймер служит как для подсчёта времени, так и для гарантированного получения управления ОС.

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

При прерывании в стек сохраняется 2-а регистра:

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

2)Слово состояние процессора(PSV).

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

 

N- становится в 1, если результат последней выполнений выполненной операции отрицателен.

Z- в 1, если в результате последней выполненной операции стал 0

V- в 1, если в результате последней выполненной операции произошло переполнение

C- в 1, если в результате последней выполненной операции произошёл перенос

 

Управление памятью.

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

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

В первом случае говорят о распределении физической памяти, во-втором о распределении виртуальной памяти.

Управление физической памятью

Управление физической памятью делят на:

= Управление физической памятью с фиксированными разделами

= Управление физической памятью с переменными разделами.

Управление физической памятью с фиксированными разделами

Вся оперативная память изначально делится на фрагменты одинаковой или различных(но постоянной) длины.

Алгоритм выделения процессу памяти предельно прост. Если имеется свободный раздел требуемого процессу объёма, то этот раздел выделяется процессу, в противном случае процесс ставится в очередь и ждёт, пока раздел требуемого объёма не освободится.

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

Очередь может быть организованна:

1. В единую очередь процесса ко всем разделам сразу

2. Количество очередей = количеству фиксированных разделов.

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

Фрагментация – ситуация когда простаивает часть памяти. Делят на внутреннюю и внешнюю.

Внутренняя: когда простаивает небольшая часть внутри одного раздела.

Внешняя: простаивает весь раздел.

Управление физической памятью с переменными разделами

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

Динамическое распределение с неявным освобождением.

В системе существует так называемый “сборщик мусора”, который периодически запускается и пытается сделать следующее:

Все фрагменты памяти изначально рассматриваются как объект. При этом если объект используется, то он должен быть достижим по какой либо ссылке. Сборщик мусора действует в 2-а этапа: 1) Маркировка. Находит все достижимые по ссылкам объекты и маркирует их как используемые.

2) Проходит по всем объектам в системе и высвобождает те, которые он не поместил на 1-ом шаге как используемые.

Динамическое распределение памяти с явным высвобождением.

Все свободные фрагменты памяти провязываются в L1 список. В самом начале список состоит из 1-ого элемента, а именно всей свободной памяти.

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

Ещё бывают:

= алгоритм динамической распределении памяти наилучшего подходящего

= алгоритм динамической распределении памяти наихудшего подходящего

Из всех подходящих выбирается блок минимального размера.

Наихудший: выбирается свободный блок максимально размера.

При запросе на освобождение уже не использующейся памяти система должна ввязать освобождающийся блок в L1 список, причём делать это следует сохраняя упорядоченность адресов. Каждый следующий элемент в L1 списке должен быть больше предыдущего. Чтобы избежать фрагментации система должна посмотреть, нет ли соприкасающихся свободных блоков. Если таковые присутствуют, разумно их “склеить” т.е. объединить несколько маленьких свободных фрагментов в один большой.

Метод близнецов

При выделении памяти с помощью этого метода система увеличивает запрашиваемый объем памяти до ближайшей степени двойки. В системе есть массив указателей на L1 список, состоящий из свободных элементов размером 2k . При запросе памяти подъёма 2m система индексируется поэтому массиву с помощью m и если данный L1 список не пуст, то вывязывает один из элементов этого списка и выдает его пользователю. В противном случае система начинает просматривать m+1, m+2 и т.д. до тех пор, пока не найдет не пустой список, после вывязывается из данного найденного списка элемент и делит его пополам. Одну из половин вывязывает в список на уровень выше, а вторую половину снова делит пополам, и так до тех пор, пока не получим фрагмент размером 2m , который в итоге и отдается пользователю.

 

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



Поделиться:




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

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-20 Нарушение авторских прав и Нарушение персональных данных


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