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



ЗНАЕТЕ ЛИ ВЫ?

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

Поиск

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

 

 

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

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;



Поделиться:


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

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