Функции операционных систем. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Функции операционных систем.



Билеты 1-9

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

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

Функции операционных систем.

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

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

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

планирует доступ пользователей к общим ресурсам,

обеспечивает эффективное выполнение операций ввода-вывода,

осуществляет восстановление информации и вычислительного процесса в случае ошибок.

3. Решение задачи передачи данных одного процесса другому при помощи монитора (случай кольцевого буфера)

monitor Кольцевой_буфер;

var BUFFER: array [0..N-1] of Тип_данных;

Tpos: 0..N; {текущая позиция в буфере}

Zpos, Opos: 0..N-1; {соответственно, очередная заполняемая и

очередная освобождаемая позиции в буфере}

BUFNp, BUFNz: condition; { переменные-условия,

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

BUFNp- буфер непуст, является признаком, которого ждет потребитель, если обнаружит, что буфер пуст, этот признак устанавливается по сигналу производителя о том, что он только что поместил данные в некоторую позицию буфера }

Procedure Заполнить_позицию (Данные:Тип данных);

begin

if Tpos = N then Wait(BUFNz){ожидание сигнала- буфер незаполнен};

BUFFER[Zpos]:= Данные;

Tpos:=Tpos+1;

Zpos:=(Zpos +1) mod N;

Signal(BUFNp){сигнал, оповещающий, о том, что буфер непуст}

end;

Procedure Ocвободить_позицию (var Данные: Тип данных);

begin

if Tpos=0 then Wait(BUFNp);{ожидание сигнала- буфер непуст}

Данные:= BUFFER[Opos];

Tpos:=Tpos-1;

Opos:= (Opos+1) mod N;

Signal(BUFNz){сигнал, оповещающий о том, что буфер незаполнен}

end;

begin

Tpos:=0;

Opos:=0;

Zpos:=0

end;

Процессы и потоки

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

виртуальное адресное пространство;

исполнимый код и данные;

базовый приоритет;

описатели объектов;

переменные окружения.

Windows NT/2000 отводит для каждого процесса виртуальное адресное пространство в 4 Гбайт, защищенное от других процессов, которые выполняются в системе в то же самое время.Каждый процесс обязательно создает первичный поток (primary thread) выполнения. Он делает это автоматически и, если программист не предпринимает каких-либо специальных усилий по созданию второго потока, то первичный поток и породивший его процесс обычно отождествляются в сознании пользователя, а, часто и в сознании программиста. Но последний может создать еще один или несколько потоков, которые размещаются в одном и том же адресном пространстве, принадлежащем процессу. Когда они создаются, родительский процесс начинает выполняться не последовательно, а параллельно. Так реализуется потоковая многозадачность.Поток (thread) — это основной элемент системы, которому ОС выделяет машинное время. Поток может выполнять какую-то часть общего кода процесса, в том числе и ту часть, которая в это время уже выполняется другим потоком. Например, код функции, отображающей на экране степень продвижения процесса передачи информации, может одновременно выполняться двумя потоками, которые обслуживают двух клиентов одного сервера.

Аппаратные средства и программное обеспечение

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

 

 

Решение задачи передачи данных одного процесса другому при помощи монитора (случай информационной базы)

monitor Читатели_Писатели;

var

READERS: integer;{переменная указывает количество активных читателей, когда READERS = 0, ожидающий процесс-писатель получает возможность начать работу}

SmbWRITE: boolean;{somebody write - когда кто-то пишет эта

переменная имеет истинное значение}

PermREAD,

PermWRITE: condition; {permission read/write - пока не появится истинное значение условия читать разрешается,PermREAD - процесс-читатель не может продолжить свое выполнение; пока не появится истинное значение условия писать разрешается, Permwrite - процесс-писатель не может продолжить свое выполнение}

Procedure Начало_Чтения;

begin

if (SmbWRITE) or (Очередь(PermWRITE))

then Wait(PermREAD);{ожидание сигнала - читать разрешается}

READERS:=READEARS+1;

Signal(PermREAD);{сигнал, оповещающий о возможности чтения}

end;

Procedure Конец_Чтения;

begin

READERS:=READERS-1;

If READERS=0 then Signal(PermWRITE);{сигнал, оповещающий о

возможности записи}

end;

Procedure Начало_Записи;

begin

if (READERS>0) or (SmbWRITE)

then Wait(PermWRITE);{ожидание сигнала - писать разрешается}

SmbWRITE:=true

end;

Procedure Конец­_Записи;

begin

SmbWRITE:=false;

if Очередь(PermREAD)

then Signal(PermREAD) {сигнал, оповещающий о возможности чтения}

else Signal(PermWRITE);{сигнал, оповещающий и возможности записи}

end;

begin

READERS:=0;

SmbWRITE:=false

end;

Классификация ОС

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

однозадачные (например, MS-DOS, MSX) и

многозадачные (OC EC, OS/2, UNIX, Windows 95).

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

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

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

однопользовательские (MS-DOS, Windows 3.x, ранние версии OS/2);

многопользовательские (UNIX, Windows NT).

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

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

невытесняющая многозадачность (NetWare, Windows 3.x);

вытесняющая многозадачность (Windows NT, OS/2, UNIX).

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

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

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

Прерывание(interrupt) - это событие, при котором меняется нормальная последовательность команд, выполняемых процессором. Если произошло прерывание, то

управление передается ОС;

ОС запоминает состояние прерванного процесса;

ОС анализирует тип прерывания и передает управление соответствующей программе обработки прерывания.

Рассмотрим основные типы прерываний.

SVС(supervisor call instruction)-прерывания.

Инициатором этих прерываний является работающий процесс, который выполняет команду SVС, т.е. генерируемый программой пользователя запрос на предоставление конкретной системной услуги (например, на выполнение операции ввода-вывода, на увеличение размера выделенной памяти и т.п.). Механизм SVC позволяет защитить ОС от пользователей.

Прерывания ввода-вывода.

Инициируются аппаратурой ввода-вывода и сигнализируют ЦП о том, что произошло изменение состояния канала или устройства ввода-вывода, например, произошло завершение операции ввода-вывода, возникла ошибка или устройство перешло в состояние готовности.

Внешние прерывания.

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

Прерывания по рестарту.

Эти прерывания происходят по команде рестарта ОС.

Прерывания по контролю программы.

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

Прерывания по контролю машины.

Эти прерывания вызываются аппаратными ошибками.

Рандеву в языке Ада

Реализация кольцевого буфера с помощью рандеву

module BoundedBuffer op deposit(typeT), fetch(result typeT); body process Buffer { typeT buf[n]; int front = 0, rear = 0, count = 0; while (true) in deposit(item) and count < n -> buf[rear] = item; rear = (rear + 1) mod n; count = count + 1; [] fetch(item) and count > 0 -> item = buf[front]; front = (front + 1) mod n; count = count - 1; ni } end BoundedBuffer

Основные функции ОС

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

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

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

планирует доступ пользователей к общим ресурсам,

обеспечивает эффективное выполнение операций ввода-вывода,

осуществляет восстановление информации и вычислительного процесса в случае ошибок.

Планирование и диспетчеризация процессов

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

12. Решение задачи передачи данных одного процесса другому с помощью задач на языке Ада (случай кольцевого буфера)

monitor Читатели_Писатели;

var

READERS: integer;{переменная указывает количество активных читателей, когда READERS = 0, ожидающий процесс-писатель получает возможность начать работу}

SmbWRITE: boolean;{somebody write - когда кто-то пишет эта

переменная имеет истинное значение}

PermREAD,

PermWRITE: condition; {permission read/write - пока не появится истинное значение условия читать разрешается,PermREAD - процесс-читатель не может продолжить свое выполнение; пока не появится истинное значение условия писать разрешается, Permwrite - процесс-писатель не может продолжить свое выполнение}

Procedure Начало_Чтения;

begin

if (SmbWRITE) or (Очередь(PermWRITE))

then Wait(PermREAD);{ожидание сигнала - читать разрешается}

READERS:=READEARS+1;

Signal(PermREAD);{сигнал, оповещающий о возможности чтения}

end;

Procedure Конец_Чтения;

begin

READERS:=READERS-1;

If READERS=0 then Signal(PermWRITE);{сигнал, оповещающий о

возможности записи}

end;

Procedure Начало_Записи;

begin

if (READERS>0) or (SmbWRITE)

then Wait(PermWRITE);{ожидание сигнала - писать разрешается}

SmbWRITE:=true

end;

Procedure Конец­_Записи;

begin

SmbWRITE:=false;

if Очередь(PermREAD)

then Signal(PermREAD) {сигнал, оповещающий о возможности чтения}

else Signal(PermWRITE);{сигнал, оповещающий и возможности записи}

end;

begin

READERS:=0;

SmbWRITE:=false

end;

Begin

While (true) do

begin мыслить; есть

End

end;

Procedure Типичный_философ_А;

Begin

While (true) do

begin мыслить_некоторое время;

взять_обе_вилки;

есть_некоторое время;

положить_обе_вилки

End

end;

Procedure Типичный_философ_В;

Begin

While (true) do

begin мыслить_некоторое время;

Repeat

взять_левую_вилку;

if правой_вилки_нет then положить_левую_вилку

else взять_правую_вилку

until в_руках_обе_вилки;

есть_некоторое время;

положить_левую_вилку;

положить_правую_вилку

End

end;

 

 

Билет № 10

1) Понятие виртуальной памяти

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

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

2) Стратегия управления памятью

Управление памятью можно представлять, как отображение информации в память посредством трех функций13.

· Именующей функции f1, однозначно отображающей данное пользователем имя в идентификатор информации, к которой это имя относится.

· Функции памяти f2, отображающей однозначно определенные идентификаторы в истинные адреса памяти, в которых они находятся.

· Функции содержимого f3,отображающей каждый адрес памяти в значение, которое по этому адресу находится.

 

Результат каждого из этих трех отображений зависит от времени. Это значит, что он может меняться в продолжение всего времени обработки задания системой, Например, результат отображения f1 не устанавливается до тех пор, пока задание не будет связано с системными модулями и файлами, которые в нем упоминаются. Результат отображения f2 может быть зафиксирован после загрузки задания. Однако при некоторых стратегиях распределения памяти отображение f2 меняется в течение всего времени, пока задание находится в оперативной памяти. Ясно, что результат отображения f3 меняется каждый раз, когда выполняется команда записи в память. Действие, состоящее в закреплении результатов одного из упомянутых отображений, называется привязкой. Время, когда происходит привязка отображения, называется моментом привязки. отображения. Привязка может происходить во время программирования задания или во время обработки задания операционной системой, например, во время компиляции. Иногда привязка отображения происходит так часто, что естественнее считать, что привязки вообще не происходит, например, для функции содержимого. Если функцию содержимого определяет пользователь, то функцию памяти и именующую функцию определяет ОС, а избранные изготовителем ОС моменты привязки являются важными ее характеристиками. Так ранняя привязка реализуется значительно проще, но, с другой стороны, для достижения большей гибкости системы, желательно, чтобы привязка происходила достаточно поздно, так как это дает возможность ОС перемещать задание в памяти, добиваясь ее максимальной загруженности

 

3) Решение задачи передачи данных одного процесса другому при помощи монитора (случай информационной базы)

 

monitor Читатели_Писатели;

Var

READERS: integer; {переменная указывает количество активных читателей, когда READERS = 0, ожидающий процесс-писатель получает возможность начать работу}

SmbWRITE: boolean; {somebody write - когда кто-то пишет эта

переменная имеет истинное значение}

PermREAD,

PermWRITE: condition; {permission read/write - пока не появится истинное значение условия читать разрешается,PermREAD - процесс-читатель не может продолжить свое выполнение; пока не появится истинное значение условия писать разрешается, Permwrite - процесс-писатель не может продолжить свое выполнение}

Procedure Начало_Чтения;

Begin

Begin

READERS:=READERS-1;

If READERS=0 then Signal(PermWRITE); {сигнал, оповещающий о

возможности записи}

end;

Procedure Начало_Записи;

Begin

if (READERS>0) or (SmbWRITE)

then Wait(PermWRITE); {ожидание сигнала - писать разрешается}

SmbWRITE:=true

end;

Procedure Конец­_Записи;

Begin

SmbWRITE:=false;

If Очередь(PermREAD)

then Signal(PermREAD) {сигнал, оповещающий о возможности чтения}

else Signal(PermWRITE); {сигнал, оповещающий и возможности записи}

end;

Begin

READERS:=0;

SmbWRITE:=false

end;

Билет №11

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

Управление внешней памятью реализуется с помощью файловой системы, которая содержит такие программные компоненты:

 

1. Средства взаимодействия с процессами пользователей, обеспечивающие прием и интерпретацию запросов на обработку файлов. В операционной системе MS-DOS это файл программы command.com.

2. Средства доступа к составным элементам файла.

3. Средства распределения внешней памяти для хранения данных.

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


Перечисленные программные средства составляют логический уровень управления данными, а подсистема ввода/вывода – физический уровень, который вместе с логическим уровнем составляет файловую систему. Файл может быть представлен как некоторое виртуальное внешнее устройство, имеющее собственную систему команд. В UNIX - противоположный подход: с внешними устройствами работают как с файлами.

Существуют такие логические структуры файлов:

 

1. Последовательная.

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

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


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

Рандеву в языке Ада

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

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

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

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

В случаях, когда вызовы к входу задачи-сервера осуществляют сразу несколько задач-клиентов, эти вызовы ставятся в очередь. Порядок обслуживания такой очереди зависит от соответствия конкретной реализации Ада-системы требованиям приложения D (Annex D) стандарта Ada95, в котором указываются требования для систем реального времени. Если реализация Ада-системы не обеспечивает соответствия этим требованиям, то очередь обслуживается в порядке поступления вызовов (FIFO - First-In-First-Out).

Билет № 12

1) Сегментный способ организации виртуальной памяти

Естественным способом разбиения программы на части является её разбиение на логические фрагменты - сегменты. Обычно сегментом является модуль или совокупность программных модулей. Логическое обращение к элементам программы будет означать указание имени сегмента, и смещения относительно его начала. Каждый сегмент, размещенный в памяти, имеет информационную структуру – дескриптор сегмента. Операционная система строит для каждого выполняемого процесса таблицу дескрипторов сегмента и при размещении каждого из сегментов в ОЗУ или внешней памяти в дескрипторе отмечается его текущее местоположение. Для этого используется бит присутствия. В поле «Адрес» диспетчер памяти записывает адрес физической памяти, с которого начинается сегмент, а в поле «Длина сегмента» его размер в байтах. Это поле используется для того, чтобы избежать наложения сегментов друг на друга и для того, чтобы контролировать, не обращается ли подзадача за пределы текущего сегмента (если это так то генерируется прерывание). Если сегмент находится во внешней памяти, то поля адреса и длины используются для указания адреса сегмента в координатах внешней памяти. В дескрипторе сегмента также содержатся данные о его типе (код или данные), права доступа, отметка об обращениях к сегменту. При передаче управления следующей задаче операционная система заносит в соответствующий регистр микропроцессора адрес таблицы дескрипторов сегментов этой задачи. Сама таблица дескрипторов сегмента также является сегментом данных, которые обрабатываются диспетчером памяти.

Билет № 13

Кража ключевой информации

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

Подбор пароля

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

Сборка мусора

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

Превышение полномочий

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

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

Программные закладки

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

 

 

Билет № 14

Билет № 15

Основные понятия и концепции организации ввода-вывода в ОС

 

Самым главным является следующий принцип: любые операции по управлению вводом/выводом объявляются привилегированными и могут выполняться только кодом самой ОС. Для обеспечения этого принципа в большинстве процессоров вводятся режимы пользователя и супервизора. Как правило, в режиме супервизора (в привилегированном режиме) выполнение команд ввода/вывода разрешено, а в пользовательском режиме — запрещено.

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

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

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

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

Управление вводом/выводом осуществляется операционной системой, компонентом, который чаще всего называют супервизором ввода/вывода. Основные задачи, выполняемые супервизором, следующие:

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

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

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

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

· супервизор ввода/вывода осуществляет передачу сообщений об ошибках, если таковые происходят в процессе управления операциями ввода/вывода;

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

 

Планирование задач

 

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

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

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

Типы планировщиков в операционных системах

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

Среднесрочный планировщик

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

Краткосрочный планировщик

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

Долговременный планировщик

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

 

Алгоритм банкира

 

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

Рассмотрим систему, в которой процессы конкурируют из-за устройств вывода информации. Каждый процесс, до того как он получит возможность запрашивать доступ к устройству вывода, должен указать максимальное число устройств, которое ему может понадобиться одновременно. Алгоритм должен обеспечивать реализацию такой последовательности выполнения процессов, при которой не возникает тупиков, т.е. каждый процесс может быть завершен.

Пусть система состоит из трех процессов, которые пронумерованы I=1..N, где N=3 и десяти устройств вывода, КОЛ=10.

Каждому процессу соответствует:

· максимальная потребность в устройствах, МАКС[I], где I номер процесса;

· количество устройств, выделенных процессу в данный момент ВЫД[I];

· оставшееся количество, которое процесс может еще потребовать ОСТ[I].

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

 

Таблица 1

 



Поделиться:


Последнее изменение этой страницы: 2016-08-16; просмотров: 534; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.221.187.121 (0.184 с.)