
- •Введение. Основные понятия и определения.
- •Раздел 1. Организация программ.
- •1 .1. Модульный принцип разработки и организации программ
- •1.2. Связи между модулями.
- •Связь по управлению
- •Связь по данным
- •1.3. Структура объектного модуля
- •1.3.1. Принцип редактирования связей9.
- •1.4. Структура программ.
- •1. Программы простой структуры
- •2. Структуры с перекрытиями12
- •1.5. Первоначальная загрузка (Initial Program Loading) – ipl.
- •1.6. Замечание об адресных пространствах:
- •1.7. Динамическая организация программ
- •1.7.1. Загрузка модуля
- •1.7.2. Выделение памяти под загружаемый модуль
- •1.7.3. Реентерабельные14 программы
- •1.7.4. Замечание о динамических параллельных процессах:
- •Раздел 2. Организация мультиобработки
- •Типы систем обработки данных
- •Раздел 3. Управление процессами.
- •3.1 Понятие Процесс. Состояния процесса
- •3.2. Планирование процессов. Понятие очереди.
- •3.3. Взаимодействие процессов. Пользовательский уровень.
- •3.4. Планирование процессора.
- •3.4.1. Критерии планирования процессора.
- •3.4.2. Стратегии планирования процессора. Первый пришел – первый обслуживается (fifo). First Come – First Served (fcfs)
- •Стратегия наиболее короткая работа —sjf
- •Приоритетное планирование.
- •Планирование с использованием многоуровневой очереди.(Multilevel queue scheduling)
- •Планирование с использованием многоуровневой очереди с обратными связями (multilevel feedback queue sheduling)
- •3.5. Многопотоковые процессы
- •Раздел 4. Файловая система.
- •4.1. Основные понятия организации данных
- •4.2. Организация файла
- •4.2.1. Последовательная и произвольная обработка
- •4.3. Организация дисковой памяти
- •4.3.1. Диски – физическая структура
- •4.3.2. Диски – логическая структура
- •4.3.3. Распределение дискового пространства
- •4.3.4. Особенности жестких дисков
- •4.4. Древовидная файловая организация
- •4.4.1. Организация каталогов
- •4.4.2. Создание и удаление файла
- •4.5. Управление дисковым пространством и способы размещения файлов на поверхности
- •4.5.1. Непрерывное распределение
- •4.5.2. Распределение в разброс
- •2. Индексирование кластеров.
- •4.6. Связь программ с файлами.
- •4.6.1. Проблема обеспечения независимости программ от расположения и характеристик файлов
- •4.6.2. Действия open.
- •4.6.2. Действия close.
- •4.7.3. Логическая буферизация.
- •Раздел 5. Управление невиртуальной памятью.
- •5.1. Своппинг. (swapping)
- •5.2. Смежное размещение процессов.
- •5.2.1. Однопрограммный режим.
- •5.2.2 Мультипрограммный режим с фиксированными границами.
- •5.2.3. Мультипрограммирование с переменными разделами. (multiprogramming with a variable number of tasks (mvt).
- •5.2.4. Мультипрограммирование с переменными разделами и уплотнением памяти.
- •5.2.5. Основные стратегии заполнения свободного раздела.
- •5.3. Страничная организация памяти.
- •5.3.1. Базовый метод.
- •5.3.2. Аппаратная поддержка страничной организации памяти.
- •5.4. Сегментная организация памяти.
- •5.4.1. Базовый метод сегментной организации памяти.
- •5.4.2. Разделение сегмента между несколькими процессами.
- •5.4.3. Фрагментация.
- •Раздел 6. Управление виртуальной памятью.
- •6.1. Страничирование по запросу (demand paging).
- •6.2. Замещение страниц.
- •6.3.1. Fifo.
- •6.3.2. Оптимальный алгоритм.
- •6.3.3. Lru — алгоритм (least recently used)
Типы систем обработки данных
Принято выделять системы:
Специализированные системы, основной признак которых - ограниченный класс задач.
Системы общего применения. Универсальность означает, что в архитектуре и принципах работы операционной системы нет ориентации на определенные задачи; разнородная и труднопредсказуемая нагрузка.
требования к ресурсам
частоты или вероятности исполнения программ такой нагрузки
Каждая нагрузка имеет определенную структуру в каждом конкретном случае, которая может широко варьироваться.
Обычно выделяют несколько классов
класс процессорноемких задач (научно-технические задачи, САПР, статический анализ)
задачи, емкие по вводу/выводу
относительно короткие задачи (операции с базами данных - запрос, модификация)
вспомогательные обслуживающие действия в системе - вспомогательные задачи
другие программы
Ограничения воспринимаются чаще, как ограничения в среднем.
Вероятностный характер нагрузки
По вероятностным свойствам нагрузку делят следующим образом:
стационарная нагрузка (статические свойства не зависят от времени, можно получить усреднением по количеству)
нестационарная нагрузка (интенсивность чего-то во времени) - сложнее в изучении.
Задача организации мультиобработки в том, чтобы исполнять нагрузку в заданном объеме и качестве (классы 1, 2 - в объеме; класс 3 - в объеме и во времени)
Время ответа - временная характеристика
Число транзакций в единицу времени - характеристика объема
Часто в реальной нагрузке комбинируются разные типы - смешанная нагрузка.
Производительность системы обработки данных (на рабочей нагрузке).
Типы нагрузки 1 и 2 (без ограничения времени)
Чтобы производительность была максимальной необходимо перейти к полному использованию ресурсов.
Если имеются ограничения на время, то это влечет ограничения на уровень мультиобработки. В системах со смешанной нагрузкой критерий оказывается противоречивым.
Для типа 1 и 2 надо стремиться к увеличению загрузки процессора, а для типа 3 это недопустимо.
Раздел 3. Управление процессами.
Процесс — это программный модуль, выполняемый в CPU. Операционная система контролирует следующую деятельность, связанную с процессами:
создание и удаление процессов
планирование процессов
синхронизация процессов
коммуникация процессов
разрешение тупиковых ситуаций
В одиночном режиме в системе существует только один прикладной процесс. Для выполнения необходимо минимум информации.
В мультипрограммном режиме ОС должна иметь информацию о каждом процессе. Создаются управляющие структуры – Control Block – таблицы, содержащие информацию, необходимую операционной системе для управления вычислительным процессом.
Process Control Block
Task Control Block
Атрибуты (имя пользователя, имя программы, имя процесса, группа/класс, входной приоритет).
Временные параметры и характеристики (время создания, время завершения, ограничения времени ЦП, реальное время ЦП, время пребывания).
3.1 Понятие Процесс. Состояния процесса
Не следует смешивать понятия процесс и программа. Программа — это план действий, а процесс — это само действие. Понятие процесс включает:
программный код
данные
содержимое стека
содержимое адресного и других регистров CPU.
Таким образом, для одной программы могут быть созданы несколько процессов, в том случае, если с помощью одной программы в компьютере выполняется несколько несовпадающих последовательностей команд. За время существования процесс многократно изменяет свое состояние.
Различают следующие состояния процесса:
новый (new, процесс только что создан)
выполняемый (running, команды программы выполняются в CPU)
ожидающий (waiting, процесс ожидает завершения некоторого события, чаще всего операции ввода - вывода)
готовый (ready, процесс ожидает освобождения CPU)
завершенный (terminated, процесс завершил свою работу)
Переход из одного состояния в другое не может выполняться произвольным образом. На рисунке приведена типовая диаграмма переходов для состояний процессора.
Каждый процесс представлен в операционной системе набором данных, называемых process control block . В process control block процесс описывается набором значений, параметров, характеризующих его текущее состояние и используемых операционной системой для управления прохождением процесса через компьютер.
Вычислительный процесс создается либо непосредственно введенной с клавиатуры командой, либо через командный файл. Создание вычислительного процесса включает в себя как минимум загрузку программы и создание управляющих блоков.
В результате создания в системе появляется новый процесс, который включается в мультипрограммную смесь и ОС начинает его видеть. Таким образом процесс находится в состоянии готовности.
Процесс может быть диспетчеризован.
Диспетчеризация– это действие, в результате которого один из готовых процессов становится активным. Выбор одного процесса, который станет активным, из нескольких основан на правиле, называемомдисциплиной диспетчеризации. Диспетчер просматривает список готовых процессов и применяет алгоритм.
L
FIFO – First In First Out
SJF – Short Job First
Приоритеты бывают:
относительными
абсолютными
Эти дисциплины особенно важны в системах оперативной обработки, когда критерием является время ответа.
Все дисциплины можно использовать с квантованием и без квантования. Квантование– прием, при котором время обслуживания делят на части постоянной или переменной длины, называемые квантами. Если обслуживание за один квант не закончено, то оно искусственно прерывается и ресурс отдается следующей работе. Такая дисциплина называетсяциклическим обслуживанием.
Диспетчеризация является составной частью каждого цикла переключения при реализации процессов.
Когда процесс находится в активном состоянии выполняются команды процесса.
Фундаментальная проблема – взаимная блокировка.
Существует два подхода:
файлы распределяются предварительно
ресурсы распределяются динамически (в момент когда они нужны).
Тупиковая ситуация, взаимная блокировка, тупик (deadlock) – ситуация, возникающая при параллельной обработке, когда несколько процессов, использующих общие ресурсы, не позволяют друг другу продолжить работу. Например, пусть есть два процесса А и Б, которым требуются ресурсыX и Y. Пусть процесс А сначала запрашивает ресурс Xи захватывает его, а процесс Б параллельно захватывает ресурсY, который в это время еще сободен. В результате возникает ситуация, когда ни один из двух процессов не может продолжать работу: процесс А ждет, когда процесс Б закончит свою работу и освободит ресурсY, а процесс Б ждет, когда процесс Б закончит свою работу и освободит ресурсX.
Если процессы развивающиеся динамически, например, пытаются обратится к одним и тем же файлам, то они блокируют друг друга – это и называется полной блокировкой или тупиком
Активное состояние может быть прервано:
По особому состоянию. Особое состояние – ошибка в программе. Происходит аварийное завершение. При этом Ос пытается сохранить информацию для последующего анализа причины особого состояния. Объем этой информации может быть разным (dump).Dump – распечатка содержимого ОП или файла, обычно без учета внутренней структуры данных. Копия содержимого регистров, нужного участка ОП, блока данных или файла выводится на печать последовательно в форме двоичного, восьмеричного или шестнадцатеричного кодов. Дамп применяется для анализа работы программных средств. Например, дамп, полученный после аварийного завершения программы, служит материалом для выявления причин аварийного завершения.
Естественное завершение. Процесс остается в памяти и получает флаг – завершенный процесс.
По прераванию. При этом процесс переводится в состояние ожидания.
Логика обработки прерывания зависит от архитектуры процессора. При этом учитывается два обстоятельства:
Необходим некий механизм связи между процессом, находящимся в состоянии ожидания и ОС, который должен устанавливать тот факт, что событие наступило. Для связи с процессом создается таблица ожиданий.
Обращение к ОС не всегда может быть реализовано немедленно. ОС пытается выполнить функцию, которую у нее запросили. Например, обращение к устройству. Если оно свободно, то это возможно. Если же устройство занято, то должна возникнуть очередь к устройству. Процесс уже попал в состояние ожидания и повторное обращение со стороны процесса невозможно. Поэтому необходим механизм ведения очередей отложенных запросов. При выполнении запроса ОС создает соответствующую структуру, которая описывает этот запрос (Request Control Block). Эту структуру и ставят в очередь.
О
Из состояния ожидания процесс выходит по прерыванию от ВУ. Можно организовать синхронное ожидание. Для этого должен работать таймер.
В состоянии завершения может находится много процессов. Если завершение аварийное, то надо сделать дамп.
Необходимо освободить ресурсы, имеющиеся у процессора. В этот момент:
файлы становятся доступными (после CLOSE)
уничтожаются временные файлы
освобождается физическая память
уничтожаются управляющие структуры, предварительно все системы формируют файлы хронологии.
Для выполнения отложенного ввода/вывода существует 2 способа:
использование выделенного ВУ
спулинг.
Спулинг – процесс разделения физически неразделяемых устройств.
Спулинг (spooling) – способ применения буферной памяти при организации ввода и вывода данных в компьютерах с многозадачной операционной системой. При спулинге все выходные данные задачи временно запоминаются в буферном файле, а после ее окончания выводятся независимо от других задач. Аналогично все входные данные задачи загружаются в буферный файл до ее выполнения. Причем, эти действия совмещаются с выполнением процессором команд той же или другой задачи. Применение спулинга особенно эффективно в случае использования принтеров, графопостроителей и других медленных устройств. ОС перехватывает обращения к таким устройствам и накапливает их в буферном файле (делает прозрачным для процесса). Когда процесс завершается, то ОС сама осуществляет вывод на реальное устройство.
Любое количество процессов может работать мультипрограммно, осуществлять вывод в отложенном виде. Процесс окончательно завершается после окончательного вывода.