Перечень тем, рассмотренных в лекциях
Лекция N1:	 1. Первоначальные сведения о курсе ОВП: структура общего программного обеспечения, понятие об ОС, терминология, ресурсы.
2. Эволюция аппаратных средств поддержки ОС и режимов работы в ЭВМ 1-го - 4-го поколений.
Лекция N2: 	1. Система прерывания программ.
2. Таймер, интервальный таймер.
Лекция N3. 	1. Концепции процесса.
	2. Ядро ОС.
		3. Планирование загрузки процессоров.
Лекция N4.	 Управление памятью. Организация памяти.
Лекция N5. 	Управление вводом-выводом данных в ЭВМ.
Лекция N6. 	Система управления данными (файловая система).
Лекция N7. 	Оценка производительности вычислительных систем.
Лекция N8. 	Локальные вычислительные сети.
Лекция N9. 	Локальные вычислительные сети (окончание).
Лекция N10.	Базы и банки данных.
Лекция N11.	1. Общие принципы функционирования MS DOS.
		2. Резидентные программы.
		3. Проблема реентерабельности программ в MS DOS.
Лекция N12.	1.Режимы работы ЭВМ с ЦП 80х86 (х > 2). Эмуляция MS DOS в режиме V86.
		2.Принципы обеспечения в ОС многозадачного и многопользовательского режимов.

	

Лекция N 1

Предмет курса "Организация вычислительного процесса"

В этом курсе изучаются:
- принципы организации вычислительного процесса (ОВП) в электронных вычислительных машинах (ЭВМ), вычислительных комплексах (ВК)и вычислительных системах (ВС);
- функции различных аппаратных и программных средств, используемых для ОВП;
- средства организации больших об'емов данных.

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

Структура ОПО:
В состав ОПО входят следующие основные компоненты:
•	операционные системы (ОС);
•	комплекс программ для системы технического обслуживания ЭВМ, ВК и ВС (программы контроля работоспособности аппаратуры, программы диагностического контроля аппаратуры, программы обеспечения живучести ЭВМ, ВК и ВС);
•	средства подготовки программ ППО к исполнению на ЭВМ (загрузчики, трансляторы с исходных текстов, записанных на каком-либо языке программирования, в последовательность машинных кодов для исполнения на ЭВМ, компоновщики, отладчики программ, написанных на языке	ассемблера или языке высокого уровня);
•	средства измерения параметров вычислительного процесса и комплексной отладки сложных программных систем, средства моделировании работы специализированных ЭВМ и ВС.
В курсе ОВП будут изучаться главным образом ОС; некоторое внимание будет также уделено средствам 2-й и 4-й групп.

Определение термина "ОС" и перечень функций, выполняемых ОС

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

Перечислим некоторые из наиболее часто используемых терминов.
Пользователь - любой желающий выполнить какую-то работу на ЭВМ.
Процесс - это некоторая деятельность, связанная с выполнением программы задачи на ЭВМ.
Мультипрограммирование - термин, относящийся к системе, которая может иметь несколько процессов в состоянии выполнения одновременно.
Привилегированные команды - их выполнение доступно только ОС, но не программам пользователей.
Состояния ЭВМ - состояние задачи и состояние супервизора, причем каждое из этих состояний соответствует одному из двух состояний соответствующего триггера; в ряде современных ЭВМ, например, в ЭВМ типа IBM PC  с центральным процессором (ЦП) типа 80х86, где х > 2, вместо двух состояний ЭВМ используется большее их число (4 в указанных ЭВМ) и каждое из таких состояний определяет свой уровень привилегий.
Аппаратные средства защиты памяти используются для управления доступом к соответствующим областям памяти.
Ресурс - аппаратные, программные и информационные компоненты системы, предоставляемые в распоряжение процесса для его реализации.

Типы ОС:
•	Однопользовательская однозадачная ОС, например  MS DOS для ЭВМ с ЦП типа 80х86.
•	Однопользовательская многозадачная ОС - запускается с одного терминала; примером ОС с ограниченным типом многозадачности является ОС Windows 3.1; для ЭВМ 2-го - 3-го поколений  к этому типу ОС можно было отнести те из них, в которых была организована так называемая пакетная обработка заданий.
•	Многопользовательская ОС - осуществляет одновременную работу нескольких пользователей на каждом из их терминалов, например, UNIX, Windows NT и т.д.
•	Многопроцессорная ОС, организующая работу в многопроцессорных ВК.
•	Операционная система реального масштаба времени, организующая работу  в  вычислительных системах реального времени, например VxWorks.

Основные принципы построения ОС

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

Общие принципы управления ресурсами

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

Эволюция аппаратных средств поддержки ОС и режимов работы 
в ЭВМ первого - четвертого поколений

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

В ЭВМ 1-го поколения из всех перечисленных средств существовали только средства прямого управления работой ПУ, с помощью которых обмен с ПУ производился через регистры арифметического устройства (АУ),  в результате  этого имели место простои центрального процессора при обменах с ПУ. Организация вычислительного процесса возлагалась на самих пользователей, так как ОС в этих ЭВМ  отсутствовали. Следствием такой организации являлась крайне низкая эффективность использования машинного времени в ЭВМ 1-го поколения, так как до 90% от него расходовалось на поиск и устранение ошибок в программах, выполняемых на ЭВМ, а центральный процессор при этом в основном простаивал.

Для устранения рассмотренных недостатков в ЭВМ  2-го поколения были реализованы некоторые аппаратные средства, повышающие эффективность вычислительного процесса:
- введена аппаратура преобразования адресов;
- в составе ЦП появились средства для выполнения привилегированных операций;
- для обмена информации с ПУ появились средства косвенного управления работой этих ПУ (так называемые каналы), с помощью которых АУ было освобождено от необходимости участвовать в процессе обмена с ПУ;
- в составе ЭВМ появилась СПП, одной из функций  которой  стала обработка сигналов, поступающих от каналов;
- в составе некоторых ЭВМ появились таймеры.
Внедрение перечисленных средств в ЭВМ 2-го поколения позволило начать использование ОС в этих ЭВМ, причем с целью уменьшения простоев ЦП в этих ОС был реализован так называемый пакетный режим рабо-ты. Суть его сводилась к следующему:
•	задания программистов-пользователей, набитые на перфокартах, сдавались в группу главного оператора ЭВМ для последующего использования их в пакете заданий на выполнение в ЭВМ;
•	результаты, полученные при выполнении каждого задания из такого пакета, выводились на бумажные носители для последующей передачи их пользователям;
•	пользователь, получивший в группе главного оператора результаты выполнения своей программы на ЭВМ, анализировал за своим рабочим столом эти результаты и при необходимости готовил новое задание для сдачи его в группу главного оператора и последующего выполнения на ЭВМ;
•	если в процессе выполнения на ЭВМ какого-либо задания из пакета проявлялась программная ошибка, в результате чего  выполнение этого задания на ЭВМ становилось невозможным (например, имело мест деление на ноль), то это задание автоматически исключалось из обработки, а для пользователя могли выдаваться на печать некоторые данные о прохождении его задания, например, так называемый посмертный дамп.
Очевидно, что при такой организации вычислительного  процесса на ЭВМ простои ЦП были  сведены к минимуму, однако и программисты-пользователи оказались отлученными от ЭВМ, что не могло не сказаться отрицательным образом на суммарном времени прохождения  задания каждого из этих пользователей на ЭВМ, т.е. от момента первой сдачи задания для исполнения на ЭВМ до окончательного завершения работы над этим заданием.

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

	Лекция N 2
Cистема прерывания программ (СПП)

1. Понятие о состоянии программы. Вектор (слово) состояния

Вектор состояния, или слово состояния программы (ССП), в любой момент времени должен содержать информацию, достаточную для продолжения выполнения программы с точки, соответствующей моменту формирования данного вектора состояния. При этом предполагается, что остальная информация, характеризующая состояние программы, например, содержимое всех или части  программно-адресуемых  регистров, может  при необходимости быть сохранена  программным  путем в оперативной памяти ЭВМ.
ССП формируется в соответствующих регистрах центрального процессора (ЦП), изменяясь после выполнения каждой команды. Разные ЭВМ имеют разные наборы  информационных  элементов, образующих ССП. Например, в реальном режиме работы микропроцессора 80х86 ССП, сохраняемое в стеке, содержит следующие составляющие:
•	значение регистра сегмента команд CS (в ячейках памяти этого сегмента содержатся команды выполняемой программы);
•	значение регистра указателя команд IP;
•	значение регистра флагов FLAGS.

2. Принципы организации СПП

При функционировании ЭВМ в ней самой и связанной с ней внешней среде могут возникать события, требующие немедленной реакции на них со стороны ЭВМ. Эта реакция состоит в том, что  ЭВМ  прерывает обработку текущей программы, которая  является прерываемой, и переходит к выполнению  другой  программы, называемой  прерывающей и специально предназначенной для обработки  данного  события. Рассматриваемый процесс называется прерыванием программ. Моменты возникновения некоторой части событий, требующих прерывания программ, заранее неизвестны и поэтому не могут быть учтены при программировании.
Любое событие, требующее прерывания, сопровождается  сигналом, оповещающим ЭВМ. Эти сигналы называются запросами  прерывания и генерируются несколькими  выполняющимися  параллельно во времени процессами, например: 
•	процессом выполнения текущей программы в ЦП и внутренней памяти ЭВМ; 
•	процессом аппаратного контроля правильности работы ЭВМ, каналов и периферийных устройств (ПУ);
•	процессом функционирования каналов и ПУ;
•	процессом функционирования таймера;
•	процессом функционирования ЭВМ, сопряженной с данной ЭВМ, и т.д.

Прерывания от устройства аппаратного контроля возникают при обнаружении этим устройством неисправности в ЭВМ, канале или ПУ.
Прерывания ввода-вывода происходят при завершении работы канала или ПУ.
Прерывания от таймера происходят при переполнении таймера.

Возможность прерывания программ - важное свойство ЭВМ, позволяющее существенно повысить эффективность  использования ее ресурсов, а также использовать ЭВМ для управления в системах реального времени. Для реализации прерывания в ЭВМ должны существовать соответствующие программные и аппаратные средства, называемые системой прерывания программ (СПП), или контроллером  прерываний. Основные  функции СПП состоят в запоминании  ССП  и переходе к прерывающей  программе, при этом для запоминания ССП используется фиксированная зона оперативной памяти (например, в ЭВМ типа IBM/360 и IBM/370 и соответственно в ЕС ЭВМ) или же стековая память (например, в ЭВМ типа IBM PC с МП типа 80х86).
При наличии нескольких  источников  запросов прерывания должен быть установлен определенный порядок (дисциплина) в обслуживании поступающих запросов. Другими словами, должны быть установлены приоритетные соотношения, определяющие, какой  из  нескольких поступивших запросов должен быть обработан в первую очередь и имеет ли он право прервать текущую программу. Приоритетный выбор запроса входит в процедуру перехода к прерывающей программе.

Важную роль играет регистр масок прерываний, разряды которого могут программно и аппаратно устанавливаться в "1" или "0". Этим достигается программно-управляемый приоритет  прерываний. Установленный в "1" триггер регистра масок запрещает соответствующее прерывание, а в положении "0" разрешает его. Некоторые причины прерывания в каких-то конкретных типах ЭВМ не могут быть программно замаскированы.

3. Векторное прерывание

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

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

Перечислим основные действия, который должен выполнить обработчик прерываний:
1.	Сохранять при необходимости содержимое всех или части программно-доступных регистров (эту процедуру иногда называют переключением контекста);
2.	Заблокировать все прерывания, возникновение которых в процессе выполнения обработчика может привести к конфликту (часто это выполняется аппаратурой ЭВМ без участия программы);
3.	Разрешить все прерывания, которые имеют право возникать во время обработки данного прерывания;
4.	Определить источник прерывания;
5.	Выполнить запланированную обработку прерывания;
6.	Восстановить ССП;
7.	Разрешить все прерывания, которые были запрещены при обработке данного прерывания.
8.	Возобновлять выполнение прерванного процесса; вместо этого обработчик прерывания может заканчивать свою работу переводом ЭВМ в состояние ожидания (например, при машинных сбоях) или передачей управления ОС.

 Основные типы прерываний в ЭВМ типа IBM PC с МП 80х86
Прерывания в этой ЭВМ могут быть разбиты на следующие группы:
o	Немаскируемое аппаратное прерывание, возникающее в результате серьезного аппаратного сбоя в работе МП и внутренней  памяти.
o	Внешние аппаратные прерывания, возникающие при возникновении сигналов прерывания от таймера, клавиатуры и различных ПУ;
o	Внутренние события, называемые исключениями и возникающие в том случае, если процессор не может выполнить очередную команду, например, вследствие равенства делителя нулю при выполнении операции деления, недопустимом коде команды и т.д.; к этой же группе относится прерывание, называемое  исключением  отладки и возникающее в том случае, если по заданию программиста в команде при трансляции ????	был установлен признак так называемой ловушки;
o	Программные прерывания, возникающие при выполнении процессором команды int с числовым аргументом.

Таймер. Интервальный таймер

Другим аппаратным устройством, имеющим важнейшее значение для организации вычислительного процесса, является таймер. Его использование позволяет программно-аппаратным способом задавать программные события, наступающие по истечении заданного промежутка времени, считая от момента задания этих событий. Эти события  реализуются путем выработки сигнала прерывания от таймера и включения оответствующего обработчика прерывания. Рассмотрим более подробно работу таймера на примере его устройства в ЭВМ типа IBM PC с МП типа 80х86.
Этот таймер состоит из трех почти одинаковых каналов – каналов "0", "1" и "2". При работе программ главным образом используется канал "0", поэтому он и будет рассмотрен; на рис.1 приведена его схема. Генератор  импульсов (ГИ) вырабатывает с частотой f=1193180 Гц непрерывную последовательность импульсов, поступающих на импульсные входы всех трех каналов. При каждом поступлении импульса на вход 16-разрядного счетчика из содержимого последнего вычитается "1" и при 	переходе этого  счетчика из состояния 000...01 в состояние 000...00 вырабатывается  сигнал  прерывания, поступающий в СПП для включения последним программы-обработчика прерывания от таймера. Если исходно состояние счетчика таймера равно 00...0, то при поступлении очередного импульса из ГИ состояние счетчика становится равным 11...1 и далее уменьшается на "1" при каждом поступлении импульса из ГИ. В этом случае сигнал прерывания будет выработан таймером после поступления на его вход 65536 импульсов, т.е. по прошествии интервала времени, примерно равного 55 мсек, что соответствует частоте срабатывания таймера, примерно равной 18,2 Гц. В случае, если интервал времени срабатывания таймера должен иметь меньшее значение, чем 55 мсек, то в счетчик таймера необходимо занести код, соответствующий числу импульсов N, вычисляемому по формуле
    где F - требуемое значение частоты срабатывания таймера, причем долно выполняться неравенство  F > 18,2 Гц. Например, для F = 72,8 Гц получим, что N = 16389,8; округляя, получим, что в счетчик таймера должен быть занесен двоичный код 0 100 000 000 000 110.

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

Рис.1. Схема таймера в ПЭВМ IBM PC для канала "0"

Рассмотрим теперь работу программы, которую обычно называют интервальным таймером. Необходимость использования этой программы определяется  тем обстоятельством, что в большинстве типов ЭВМ, в том числе и в ЭВМ типа IBM PC, используется только один таймер, хотя во многих случаях при функционировании достаточно сложных программ возникает необходимость организации нескольких  параллельно существующих программ, которые должны быть включены в различные заранее опре	деленные моменты времени. Один из возможных способов организации интервального таймера состоит в следующем. Этой программой, для управления процессом параллельного выполнения нескольких программ, в оперативной памяти составляется  таблица, в которой для каждой из этих программ выделяется несколько строк, содержащих следующие параметры:
•	адрес начала i-й программы;
•	значение Т(i) интервала времени, по истечении  которого должна быть включена эта программа, причем отсчет этого интервала начинается с момента организации интервальным таймером этой программы;
•	текущее значение интервала времени t(i), по истечении которого должна быть включена эта программа;
•	признак c(i) режима включения этой программы - циклический или разовый (пусть, например, с(i)=0 для разового режима).
Кроме того, в этой таблице должна  быть еще одна строка, общая для всех программ, в которой содержится значение интервала  времени Т, которое задано для текущего включения таймера. Тогда при каждом включении программы-обработчика прерывания от таймера в этой таблице корректируются все интервалы времени, величина которых больше нуля, путем уменьшения их значений на величину Т. Если после корректировки окажется, что для каких-то программ величина t(i)=0 или t(i)<0, то должно быть организовано  последовательное включение этих программ. Если для каких-то программ с(i)=1, то должно быть выполнено присвоение t(i)=T(i) и затем организовано очередное включение этих программ по истечении соответствующих им интервалов времени, равных t(i).

Лекция N 3
Концепции процесса

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

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

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

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

Представителем процесса в ОС является блок управления процессом (БУП). Это структура данных, содержащая определенную авжную информацию о процессе, в том числе:
•	текущее состояние процесса;
•	уникальный идентификатор процесса;
•	приоритет процесса;
•	указатели памяти процесса;
•	указатели выделенных процессу ресурсов;
•	область сохранения регистров.
Когда ОС переключает ЦП с одного процесса на другой, она использует области  сохранения  регистров, предусмотренные в БУП, чтобы запомнить информацию,необходимую для рестарта (повторного  запуска) каждого процесса, когда этот процесс в следующий раз получит в свое распоряжение ЦП.

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

Основные функции ядра ОС

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

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

Планирование загрузки процессоров

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

Уровни планирования

Для ЭВМ 2-го и отчасти 3-го поколений основным режимов функционирования была пакетная обработка. Суть ее состояла в том, что из задач, сданных пользователями для решения на ЭВМ и введенных в нее оператором этой машины, ОС формировала так называемые задания. В любой момент времени задание состояло из нескольких задач. Поэтому для рассматриваемых ОС можно было  говорить  одвух уровнях планирования загрузки ЦП:
o	долгосрочном планировании, или планировании на верхнем уровне, при котором ОС решала сложную проблему набора таких задач в задание (т.е. формирования пакета задач), чтобы обеспечить достаточно высокую загрузку ЦП;
o	краткосрочном, или диспетчерском планировании, т.е. планировании на нижнем уровне самих процессов.
Учитывая, что в настоящее время мультипрограммные ОС используются главным образом в режиме разделения времени, будем  рассматривать только проблемы краткосрочного планирования.

Основные цели планирования
Дисциплина планирования должна:
1. быть "справедливой", т.е. одинаково относиться ко всем процессам и не задерживать достаточно долго обслуживание какого-то процесса;
2. обеспечивать  максимальную  пропускную способность системы, т.е. обслуживать максимальное число процессов в единицу времени;
3. обеспечивать максимальному числу  пользователей  приемлемые времена ответа.

Планирование с переключением и без переклячения

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

Использование приоритетов при планировании процессов

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

Дисциплины распределения ресурсов, используемые в ОС

Использование несколькими параллельно существующими в ВС процессами того или иного ресурса, который в любой момент времени может обслуживать лишь один процесс, осуществляется с помощью дисциплин распределения ресурса. Их основой являются:
дисциплины формирования очередей на ресурс;
дисциплины обслуживания очередей.
В ВС используются ряд дисциплин обслуживания очередей, ставших классическими. Наиболее часто используются  следующие одноочередные дисциплины:
1. Дисциплина обслуживания в порядке поступления: первый пришедший обслуживается первым (FIFO : first in - first out); все заявки при этом поступают в конец очереди, а первыми  обслуживаются заявки из начала очереди; один из главных  его недостатков - короткие процессы должны ждать полного выполнения  длинных  процессов, поэтому эту дисциплину не рекомендуется использовать в интерактивных системах, таккак она не может обеспечить приемлемые времена ответа; обычно эта дисциплина применяется в комбинации с другими методами, например, в многоуровневых очередях с обратными связями;
2. Дисциплина обслуживания в порядке, обратном порядку поступления (LIFO : last in - first out); широко используется на практике, в частности, при использовании стеков в оперативной памяти;
3. Круговой циклический алгоритм, основанный на принципе FIFO, но в данном случае время обслуживания ограничено и меньше или равно значения кванта времени Т; если запрос не успевает быть обслуженным за время Т, то он прерывается и становится в хвост очереди; эта дисциплина достаточно эффективна в интерактивных системах, обеспечивая приемлемые времена ответа для каждого пользователя.

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

О выборе величины кванта времени

Программно-аппаратная реализация выделения процессу кванта времени Т обеспечивается  аппаратными  (таймером и СПП) и программными (обработчик  прерывания от таймера и соответствующими  блоками ядра ОС) средствами. Выбор величины Т для нахождения процесса в состоянии выполнения имеет критическое значение для эффективной работы ВС, работающей в режиме разделения времени. Обозначим через t время ответа системы, т.е. время от момента ввода задания с терминала  до выдачи ответа на соответствующий дисплей. Рассмотрим характерные точки примерного графика зависимости t=f(Т). Обозначим через Т(пер) время, затрачиваемое ЦП на переключение из одного процесса в другой. При выполнении условия  Т < T(пер) очевидно, что величина t будет бесконечно велика, так как все время работы ЦП будет  затрачиваться только на переключение из процесса в процесс. Далее по мере роста Т величина t будет сначала уменьшаться и достигнет своего минимального значения min t; это значение Т обозначим  opt Т. При дальнейшем росте Т величина t снова начнет возрастать, так как процессы с малым временем ответа будут сравнительно долго ждать, пока будет идти выполнение процессов с относительно большими временами ответа; при этом величина t будет стремиться снизу к некоторому  предельному  значению max t, характерному для ВС с дисциплиной обслуживания FIFO. Конечно, величина  opt T  меняется внутри системы в зависимости от ее нагрузки и тем более при переходе на другую систему.

Лекция N 4
Управление памятью

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

Иерархия памяти

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

Связное и несвязное распределение памяти

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

Блочная организация памяти

В настоящее время в большинстве случаев используют блочную организацию  оперативной  памяти, суть которой состоит в разбиении всего пространства адресов этой памяти на блоки. Если блоки могут иметь только одинаковый размер, то они называются страницами, а сама организация - страничной. Если блоки могут быть различных размеров, то они называются сегментами, а сама организация - сегментной.  В некоторых системах оба эти подхода комбинируются, т.е. сегменты реализуются как объекты переменных размеров, формируемые  из  страниц фиксированного размера.
Адреса в системе поблочного отображения при отсутствии комбинированной организации памяти являются двухкомпонентными("двумерными").
Чтобы обратиться к конкретному элементу данных, программа указывает блок, в котором этот элемент располагается, и смещение этого элемента относительно начала блока, т.е. в упорядоченной паре (b, d) b является номером блока, в котором размещается соответствующий элемент, а d - смещением относительно начального адреса этого блока. Подобная организация внутренней памяти используется, например, в так называемом реальном режиме функционирования ЭВМ типа IBM PC с микропроцессором 80х86, при этом обе величины - b и d - содержат по 4 шестнадцатеричных цифры; для получения физического адреса, соответствующего паре (b, d), величина b сдвигается в сторону старших разрядов на четыре двоичных разряда, а затем к младшим шестнадцати двоичным разрядам b добавляется d и в результате сложения получается физический адрес элемента.

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

В настоящее время именно концепция виртуальной памяти получила наибольшее распространение при организации внутренней памяти современных ЭВМ. Суть концепции виртуальной памяти заключается в том, что адреса, к которым обращается выполняющийся процесс, отделяются от адресов, реально существующих в первичной памяти. Те адреса, на которые делает ссылки выполняющийся процесс, называются виртуальными адресами, а те адреса, которые  существуют  в первичной памяти, называются реальными (или физическими)  адресами. Диапазон виртуальных адресов, к которым может обращаться выполняющийся процесс, называется пространством V виртуальных адресов этого процесса. Диапазон реальных адресов, существующих в конкретной ЭВМ, называется пространством R реальных адресов этой ЭВМ.
Несмотря на то, что процессы обращаются только к виртуальным адресам, в действительности они должны работать с реальной  физической памятью. Для этого во время выполнения  процесса  виртуальные адреса необходимо с помощью соответствующих аппаратных средств преобразовывать в реальные, причем это преобразование должно быть достаточно быстрым, так как в противном случае производительность ЭВМ будет существенно снижаться и тем самым сведутся на нет те преимущества, которые призвана обеспечить прежде всего концепция виртуальной памяти.
В процессе написания программы пользователь освобождается от необходимости учитывать размещение частей своей программы и данных для нее в реальной памяти. Решение этих вопросов берут на себя соответствующие программы, относящиеся к общему программному обеспечению: трасляторы, компоновщики, загрузчики, операционные системы. Для реализации указанного размещения и быстрого преобразования адресов в совре	менных ЭВМ используются соответствующие аппаратурные средства, загрузка данных в которые производится ОС при подготовке процесса к выполнению.
В случае, когда используется только сегментная или только страничная адресация, виртуальный адрес, как уже указывалось, состоит из двух компонент: номера блока и смещения  в  рамках этого блока. Если же используется комбинированная сегментно-страничная организация, то применяется трехкомпонентная (трехмерная) организация, т.е. для элемента виртуальной памяти адрес определяется как  упорядоченная трой	ка v = (s, p, d), где s - номер сегмента, p - номер  страницы, а d - смещение в рамках страницы; по этой тройке находится  нужный физический элемент.
В блочных системах могут  быть  использованы  различные способы преобразования  виртуального  адреса в реальный физический: прямого, ассоциативного или комбинированного (ассоциативно-прямого) преобразования. В качестве примера рассмотрим общий вид схемы прямого преобразования виртуального адреса (b,d) в реальный (b'+ d), представленной на рис.1.

Рис.1. Схема прямого преобразования виртуального адреса в реальный

Программно-аппаратные средства защиты виртуальной памяти

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

p	a	L	R	W	E	A	b'	
Рис.2. Строка таблицы блоков
На этом рисунке использованы следующие обозначения:
р - бит присутствия;
а - адрес внешней памяти для случая, когда р=0, т.е. блока нет в физической внутренней памяти;
L - длина блока;
R - бит разрешения только чтения данных;
W - бит разрешения записи и чтения данных;
Е - бит разрешения выполнения команд, содержащихся в этом блоке;
А - бит разрешения дополнения данного блока данных новыми данными, записываемыми в конец этого блока;
b' - базовый адрес блока, если он уже находится в реальной ОП.
Работа программных средств по считыванию блока из внешней памяти в случае, если бит р=0, инициируется с помощью прерывания, программа обработки которого относится к программным средствам поддержки реализации виртуальной памяти, а сами эти средства принадлежат ОС.
После загрузки блока продолжается обработка виртуального адреса, при этом в первую очередь смещение d сравнивается с длиной  блока L. 
При  d > L  вырабатывается прерывание  по  выходу за пределы блока и затем  ОС  прекращает  выполнение данного процесса. Если  d < L  или d=L, то происходит контроль по битам защиты R, W, Е и А, чтобы удостовериться, что соответствующая операция доступа разрешена. Если такое разрешение имеется, то с помощью аппаратных средств вычисляется физический адрес, соответствующий поступившему виртуальному адресу. Если же соответствующий вид доступа запрещен, то происходит прерывание по защите блока и затем ОС прекращает выполнение текущего процесса.

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

1. Стратегии выталкивания страниц

В вычислительных системах со страничной организацией ОП при работе в мультипрограммном режиме работы с высокой вероятностью может возникнуть ситуация, при которой все страницы ОП оказываются занятыми. В этом случае программы управления памятью, входящие в ОС, должны решать, какую страницу следует удалить из первичной памяти, чтобы освободить место для поступающей страницы. Наиболее известными являются следующие стратегии выталкивания страниц:
•	использование принципа оптимальности;
•	выталкивание случайной страницы;
•	выталкивание первой по времени пришедшей страницы(принцип FIFO);
•	выталкивание дольше всего не использовавшейся страницы;
•	выталкивание наименее часто использовавшейся страницы;
•	выталкивание не использовавшейся в последнее время страницы;
•	использование рабочего множества.
Принцип оптимальности говорит о том, что для достижения оптимальных скоростных характеристик и эффективного использования ресурсов следует заменять ту страницу, к которой  в дальнейшем не будет новых обращений в течение наиболее длительного времени. Очевидно, что реализация такой стратегии возможна только в том случае, когда повторяется выполнение ранее решавшейся задачи с той же последовательностью выполняемых команд; однако подобная ситуация на практике может иметь место в относительно редком числе случаев, например, в некоторых системах реального времени. Поэтому из остальных стратегий выталкивания страниц следует выбрать такие стратегии, которые по даваемым ими результатам наиболее близко приближаются к принципу оптимальности. Эта задача не имеет решения в общем случае, так как условия функционирования различных задач и даже одной задачи на различных  участках ее выполнения могут существенно  отличаться друг от друга. Одной из наиболее эффективных стратегий выталкивания страниц может в ряде случаев, в частности, в системах реального  времени, оказаться стратегия, основанная на использовании рабочих множеств. Под рабочим множеством в этом случае понимают подмножество страниц, к которым процесс наиболее часто обращается. Исследования  различных  авторов показали, что в большинстве случаев объем рабочего множества не превосходит 10% от объема всей памяти, использовавшейся для процесса; поэтому в ОП в первую очередь должно содержаться рабочее множество процесса, а остальные блоки затребованной памяти должны загружаться в ОП при возникновении соответствующего запроса со стороны выполняемого процесса.

2. Стратегии подкачки страниц

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

3. Стратегии размещения

Их цель состоит в определении того места ОП, в которое  следует поместить поступающую страницу или сегмент. В системах со страничной организацией ОП эта проблема тривиальна, так как берется любая свободная страница.
Системы с сегментной организацией ОП требуют более сложных стратегий размещения, так как  существует  возможность  выбора по объему участков свободной памяти и могут быть трудности типа так называемой фрагментации памяти. Суть ее состоит в том, что в  ОП  накапливается значительное число свободных, небольших по объему, участков, которые невозможно использовать для размещения вновь запрошенных сегментов, так как все эти сегменты больше по своему объему указанных свободных участков памяти. В итоге может оказаться, что существенная часть ОП окажется непригодной для использования без принятия специальных мер со стороны ОС по проведению дефрагментации ОП, однако процедура дефрагментации требует  приостановки процесса обслуживания пользователей на некоторое время. Возможно, что именно по этой причине некоторые ОС не используют сегментную организацию памяти.
Большинство имеющихся в литературе данных, как  теоретических, так и эмпирических, свидетельствуют о том, что в ЭВМ целесообразно выбирать страницы относительно небольшого размера. Например, в защищенном режиме работы ЭВМ с микропроцессором 80х86 при  х > 2  используется размер страницы, равный 4 Кб.
Лекция N 5
Управление вводом-выводом данных в ЭВМ

Одной из систем, имеющихся в любой ЭВМ общего назначения, является аппаратура ввода-вывода данных, состоящая из каналов (процессоров обмена), устройств управления периферийными устройствами (ПУ) и самих ПУ. ПУ разделяют на 2 основных группы: устройства ввода-вывода и запоминающие устройства (ЗУ).
В составе любой ОС существует специальная подсистема, управляющая аппаратурой  ввода-вывода. Основные задачи, решаемые  с помощью этой подсистемы, состоят в следующем: подсистема должна обеспечить пользователей  удобным и понятным интерфейсом для  обращения к ПУ как в однопользовательском, так и в многопользовательском режимах работы ЭВМ; при этом часто выдвигается требование на достижение унифицированного интерфейса для доступа к различным по своим физическим характеристикам ПУ, для чего реализуется принцип независимости от устройств; в мультипрограммном  режиме  работы  систем разделения времени подсистема должна обеспечить такое планирование процесса ввода-вывода данных, чтобы достичь максимального перекрытия во времени работы центрального процессора (ЦП) и аппаратуры ввода-вывода.
Состав подсистемы ОС для устройств  ввода-вывода  и аппаратура ввода-вывода существенно отличаются для различных ЭВМ, но можно выделить и единое концептуальное  начало, свойственное всем подсистемам. Аппаратуру ввода-вывода  можно  рассматривать как совокупность аппаратурных процессоров, которые способны работать параллельно друг относительно друга, а также относительно ЦП. На таких процессорах выполняются так называемые внешние процессы. Например, для печатающего устройства процесс может состоять из совокупности действий, обеспечивающих перевод каретки, продвижение бумаги на одну строку, печать любого заданного числа символов на строке.
Внешние процессы взаимодействуют с программными процессами, выполняемыми ЦП и оперативной памятью (ОП). Существенно, что скорость выполнения программного процесса может на несколько порядков превосходить скорость внешнего процесса.
Подсистема ОС для управления вводом-выводом с точки зрения программных процессов является интерфейсом с ПУ. Различают три типа действий с ПУ:
1. операции чтения-записи данных;
2. операции управления ПУ;
3. операции по проверке состояния ПУ.

Методы управления ПУ

Используют в основном 2 метода управления ПУ - прямой и косвенный.
1. Прямой метод управления

	     Рис.1. Обобщенная схема прямого управления

В этом случае существует непосредственная связь между ЦП и ПУ; на ЦП при этом возлагается обязанность непосредственного управления работой ПУ. Поэтому в состав команд ЦП должны быть специальные команды  по  инициированию работы ПУ, проверке готовности его к работе, останову его, записи в ПУ или считыванию из него и т.д. Существенно, что если ЦП обратится к ПУ для записи или считывания данных в момент, когда ПУ занято выполнением ранее  заданной операции, то выполнение команды ЦП блокируется до освобождения ПУ. Этой блокировки можно избежать, если в ПУ ввести триггер занятости (ТрЗ), опрашиваемый ЦП; если ТрЗ (флажок) занят при опросе ЦП, то программист может запрограммировать ЦП на продолжение выполнения программы, если это возможно для созданной им программы.
Например, в ЭВМ IBM PC с микропроцессором (МП) 80х86 существуют кокоманда in для чтения из порта ПУ данных (байта) в МП и команда out для записи в порт данных, поступающих из МП.
Главный недостаток прямого метода управления вводом-выводом заключается в низкой скорости обмена центральной части ЭВМ, состоящей из ЦП и внутренней памяти, с таким ПУ в том случае, когда требуется обменяться с этим ПУ относительно большим объемом данных, например, несколько десятков байт или более. Поэтому прямой метод используют для ПУ, интенсивность обмена с которым невысока, например, с таймером, системными часами и т.д., а сам обмен при этом производится побайтно или пословно.
2. Косвенный метод управления

Рис.2. Обобщенная схема косвенного управления

Канал является специальным процессором, который, получив определенную команду от ЦП, затем ведет обмен самостоятельно по своей программе. При реализации этого метода ЦП, канал и ПУ работают параллельно. Для синхронизации параллельной работы ЦП и канала используют различные средства:
1. флажок занятости канала, опрашиваемый ЦП;
2. вместо того, чтобы ЦП периодически опрашивал этот флажок, можно использовать запись команд для канала  в  специально  выделенные ячейки ОП, откуда канал их сосчитает и начнет выполнять после завершения предыдущей операции (такой принцип использован в ЕС ЭВМ и в ЭВМ IBM 360/370);
3. прерывание от канала, поступающее в ЦП и возникающее при завершении каналом заданной ему операции или при его ошибке. Наиболее часто используется  именно  прерывание от канала и при этом происходит включение программы-обработчика прерывания, входящей в состав ядра ОС, причем очевидно, что этот процесс требует определенных временных затрат на работу ЦП. В том случае, когда объем данных, участвовавших в обмене, мал и составляет, например, не более 10 байт, расходы времени ЦП на подготовку и завершение этого обмена при использовании метода косвенного управления могут превысить аналогичные расходы ЦП при использовании  метода  прямого управления, т.к. в последнем случае отсутствует необходимость выполнения как самого прерывания, так и программы его обработки.

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

Рис.3. Использование одного буфера в процессе обмена с ПУ

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

Рис.4. Использование двух буферов в процессе обмена с ПУ

При определении длины буфера находят компромисс между эффективностью функционирования ПУ, канала и ОП. Каналу и внешнему ЗУ (ВЗУ) более "выгодны" большие порции данных, которые можно хранить непрерывными участками на носителях ВЗУ и пересылать  за  одну операцию ввода-вывода, реализуемую каналом: чем длиннее блок, тем дольше канал работает автономно от ЦП. Однако в отношении эффективности использования ОП требования к длине  буфера  противоположны, т.е. длина буфера должна быть сравнительно невелика при мультипрограммной работе ЭВМ, но в настоящее время ввиду значительного удешевления стоимости компонентов ОП и соответственно значительного возрастания объема ОП в современных ЭВМ длина буферов может выбираться сравнительно большой. На рис.5 изображена временная диаграмма, поясняющая возрастание производительности ЭВМ при использовании для обмена  с ПУ  двух буферов вместо одного.
	ПУ - буфер 1		ПУ - буфер 2					
 	 	 	 	 	 	 	 	t		
			 				 			
 	 	 	 	 	 	 	 	t		
			перепись из буфера 1 в рабочую зону программы		перепись из буфера 2 в рабочую зону программы	
						
Рис.5. Временная диаграмма использования двух буферов

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

Принципы, заложенные в подсистему управления вводом-выводом в ОС UNIX

•	Эта подсистема построена единообразно с подсистемой управления данными (файловой системой). Пользователю предоставляется унифицированный способ доступа как к ПУ, так и к файлам. Под файлом в ОС UNIX понимают набор данных на диске, видеотерминале и т.д.; любое ПУ рассматривается как специальный файл. При запросе программного процесса о выводе данных в специальный файл ОС перехватывает запрос и аправляет данные на соответствующее устройство. Аналогично организуется чтение данных из специального файла - это прием данных с ПУ. Таким образом, доступ, например, к файлу на диске и к специальному файлу дисплея обеспечивается одним и тем же набором системных вызовов.
•	Другая особенность подсистемы ввода-вывода в ОС UNIX заключается в том, что она работает как синхронная система. Любой прогаммный процесс, требующий ввода данных, приостанавливается в точке, где он выдал запрос, до тех пор,  пока не завершится операция ввода из указанного специального файла. При выводе процесс приостанавливается в точке запроса  на  вывод данных вплоть до того момента, пока выводимые данные будут приняты системой в буфер пользователя. Такая организация вода-вывода приводит в мультипрограммном  режиме работы ЭВМ к повышению эффективности использования времени  ЦП  вследствие уменьшения простоев этого ЦП. Заметим, что в системах реального времени (СРВ) чаще  используется асинхронный принцип работы подсистемы ввода-вывода, так как в этом случае уменьшается время реакции СРВ на события, требующие немедленной обработки.
•	Для управления ПУ в ОС UNIX используются 2 вида интерфейса с этими ПУ: байториентированный и блокориентированный. Блокориентированный интерфейс обеспечивает связь с ПУ, к которым можно адресоваться как к последовательности блоков по 512 байт. Такими ПУ в основном являются ВЗУ. Основой организации такого интерфейса является система буферизации, поддерживаемая в ОП. Байториентированный интерфейс используется для доступа к печатающему устройству, клавиатуре дисплея и некоторым другим устройствам, при этом буферизация не используется.
•	В состав системы управления вводом-выводом входят также драйверы и набор специальных таблиц для логического подключения ядра ОС к драйверам различных устройств. Каждый драйвер  содержит 2 части и может обслуживать несколько устройств одного типа. Первая часть драйвера содержит набор программных модулей для выполнения операций по открытию, закрытию, чтению и записи специальных файлов, а также для управления специальными режимами работы ПУ. Чтобы начать работать  с  некоторым устройством, необходимо открыть или создать  специальный файл, сопоставляемый с этим устройством. Открытие файла - это процесс установления связи между именем файла и некоторой переменной, хранимой  в  области памяти того процесса, который открывает файл. Эта переменная, называемая номером дескриптора файла, используется  далее в операциях над открытым файлом. После открытия файла процессу, проводившему открытие, разрешен доступ к устройству. Операция закрытия  обратна по назначению и приводит к разрыву связи между программным процессом и указываемым ПУ. Вторая часть драйвера - это модуль обработки прерываний. При управлении большинством ПУ в ОС UNIX используется метод прерываний. Для байториентированного ПУ прерывание  возникает  после передачи байта, для блокориентированного ПУ - после передачи блока. Модуль обработки прерывания, являющийся частью драйвера, или прекращает работу с ПУ, или продолжает работу с ним, выдавая ему новое задание. 
•	Некоторые из изложенных принципов построения системы ввода-вывода ОС UNIX были реализованы в ОС, созданных  позднее, например, в MS DOS, функционирующей в ЭВМ IBM РС с МП типа 80х86.

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

Лекция N 6
Система управления данными (файловая система)

Наличие в составе современных ЭВМ таких внешних запоминающих устройств (ВЗУ), которые способны хранить большие массивы данных в течение сколь угодно длительного времени, поставило перед разработчиками ОС задачу создания специальных систем по управлению данными. Такая система фактически является интерфейсом между процессами (системными и пользовательскими), с одной стороны, и данными, хранимыми в ВЗУ, с другой стороны, т.е. эта система должна обеспечить эти процессы комплексом услуг по управлению данными. Таким образом, система управления данными (СУД) - это фактически  виртуальная  система  управления вводом-выводом данных, построенная на следующей базе:
1. существующей подсистемы управления вводом-выводом;
2. использования специальных аппаратных средств;
3. специальных информационных структур.
СУД называют файловыми системами, где файл - поименованная совокупность данных, обычно размещаемая в ВЗУ. Взаимодействие программных процессов и файлов может быть представлено в виде следующей схемы:

Рис.1. Схема взаимодействия программных процессов и файлов

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

Логическая организация файлов

Арабские цифры от 0 до 9, буквы латинского и других алфавитов, специальные знаки (/, *, (, ) и т.д.) представляются  в  ЭВМ в виде комбинации битов, в настоящее время  чаще всего 8-битовых (байтов). Эти комбинации обычно называются символами. Группа  взаимосвязанных символов называется полем. Группа взаимосвязанных полей носит название записи. Например, запись, относящаяся к студенту, может содержать отдельные поля, где будут указаны идентификационный номер, фамилия, имя, отчество, адрес, изучавшиеся дисциплины и отметки по ним и т.д.
Ключ записи - это управляющее поле, которое однозначно идентифицирует данную запись. Например, при составлении платежной ведомости о выдаче стипендии студентам в качестве ключа  записи  может  использоваться идентификационный номер студента. Группа взаимосвязанных записей составляет файл. Например, файл может состоять из записей, относящихся ко всем студентам одного из факультетов университета.
Под логической организацией файлов понимается способ раположения записей файла во внешней памяти. В качестве примера рассмотрим 2 из наиболее известных видов логической организации файлов: последовательную и библиотечную.

1. Последовательная организация.

Записи располагаются в физическом порядке, а сам файл рассмат	ривается как одномерный массив логических записей, при этом доступ к логическим записям - последовательный, т.е. после записи или считывания i-й записи доступна только (i+1)-я запись.  Такая организация 	применяется для файлов, хранящихся на магнитной ленте и выводимых на печать. Очевидный недостаток такой организации для файлов, хранимых на дисках, состоит в большом времени поиска записи в файле.

2. Библиотечная организация.

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

Каталог библиотеки						
Название элемента и его начальный адрес	 	 	 	. . . 	 	 	
А	В	С				Z	
Библиотека							
Элемент D	Элемент А	Элемент W	Элемент С				
Элемент В	. . . 	Элемент К				

Рис.2. Структура библиотечной организации

Физическая организация файлов

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

1. Распределение при помощи цепочек блоков.

Рис.3. Цепочка блоков

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

2. Распределение при помощи цепочек индексов

			    Рис.3. Цепочка индексных блоков

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

Рис.4. Таблица поблочного отображения файлов
Принцип действия этого способа ясен из рис.4. Преимущество способа заключается в простоте процедуры изменения структуры файла и наглядности распределения дискового пространства. Способ используется в MS DOS.
Организация каталогов файлов в ОС

Перечислим основные типы каталогов файлов:
1.	одноуровневые, т.е. для одного диска существует единый каталог (использовался, например, в ОС РАФОС для СМ ЭВМ);
2.	многоуровневые иерархические, связанные в древовидную структуру (примеры - UNIX и MS DOS); полное имя файла задает траекторию перехода между каталогами различного уровня, при этом любой каталог рассматривается как файл, имеющий собственное имя.

Дескриптор файла (ДФ)

Другие названия дескриптора - блок управления файлом, элемент каталога файлов.
ДФ - это управляющий блок, содержащий информацию, необходимую ОС для различных операций с файлом. Конкретный вид ДФ определяется используемой ОС.
Типичный ДФ содержит следующие данные:
•	символическое имя файла;
•	тип файла (объектная программа, программа, записанная на языке программирования, например, С++ и т.п.);
•	атрибуты файла, в том числе данные, используемые для доступа;
•	дата и время создания файла;
•	данные о размещении файла во внешней памяти;
•	тип организации файла (последовательная, индексно-последовательная и т.д.);
•	дата и время последней модификации;
•	счетчики активности доступа (например, количество обращений по чтению).
Отметим, что ДФ в MS DOS содержит данные, приведенные в пунктах с 1-го по 5-й.
Как правило, ДФ хранятся во внешней памяти и передаются в ОП только после открытия соответствующего файла. Дескриптором файла управляет файловая система, хотя в некоторых ОС, например, в MS DOS пользователь может к обратиться к ДФ с помощью специальных программных средств, например, с помощью пакета PC TOOLS.
Матрица управления доступом (МтУД)

Один из возможных способов управлением доступом к файлам состоит в создании двумерной МтУД, в которой указываются все пользователи и все файлы системы.
Пользователи\файлы	 	1	2	3	4	5	6	
	1	1	1	0	0	0	0	
	2	0	0	1	0	1	0	
	3	0	1	0	1	0	0	
	4	1	0	0	0	0	0	
	5	1	1	1	1	1	1	
	6	0	0	0	0	0	1	

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

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

МтУД может быть настолько велика, что реализовать ее в системе будет практически  нецелесообразно или даже невозможно. Существует способ, требующий намного меньше места в памяти системы, - это управление доступом к файлам в зависимости от классов пользователей.
Обычно предусматривают следующие категории пользователей:
1. "Владелец"; как правило, это  пользователь, который  создал этот файл;
2. "Указанный владельцем", т.е. пользователь, которому разрешил работать создатель файла;
3. "Группа", или "проект"; пользователи часто являются членами группы, совместно работающими над конкретным проектом, и в этом случае всем членам данной группы предоставляется  возможность работы с данным файлом;
4. "Общедоступный", т.е. доступ к нему разрешается для всех пользователей данной системы; обычно в этом случае пользователи могут читать или выполнять файл, но производить запись в него запрещается.

Копирование и восстановление информации

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