
- •1.Лекция 1.Операционная система. Введение
- •1.1.Структура вычислительной системы
- •1.2.Что такое операционная система
- •1.2.1. Операционная система как виртуальная машина.
- •1.2.2.Операционная система как менеджер ресурсов
- •1.2.3.Операционная система как защитник пользователей и программ
- •1.2.4.Операционная система как постоянно функционирующее ядро
- •1.3.История эволюции вычислительных систем
- •1.3.1.Первый период (1945–1955 гг.). Ламповые машины. Операционных систем нет
- •1.3.2.Второй период (1955 г.–начало 60-х). Компьютеры на основе транзисторов. Пакетные операционные системы
- •1.3.3.Третий период (начало 60-х – 1980 г.). Компьютеры на основе интегральных микросхем. Первые многозадачные ос
- •1.3.4.Четвертый период (с 1980 г. По настоящее время). Персональные компьютеры. Классические, сетевые и распределенные системы
- •1.4. Функции операционной системы.
- •1.5.Основные понятия, концепции ос
- •1.5.1.Системные вызовы
- •1.5.2.Прерывания
- •1.5.3.Исключительные ситуации
- •1.5.4.Файлы
- •1.6.Архитектурные особенности ос
- •1.6.1.Монолитное ядро
- •1.6.2.Многоуровневые или слоеные системы (Layered systems)
- •1.6.3.Виртуальные машины
- •1.6.4.Микроядерная архитектура
- •1.6.5.Смешанные системы
- •1.7.Классификация операционных систем
- •1.7.1.Реализация многозадачности
- •1.7.2.Поддержка многопользовательского режима
- •1.7.3.Многопроцессорная обработка
- •1.7.4.Системы реального времени
- •2 Процессы
- •2.1.Понятие процесса
- •2.2.Состояния процесса
- •2.3.Операции над процессами и связанные с ними понятия
- •2.3.1.Набор операций
- •2.3.2.Блок управления процессом (рсв Process Control Block) и контекст процесса
- •2.3.3.Одноразовые операции
- •2.3.4.Многоразовые операции
- •2.3.5.Переключение контекста
- •2.3.7.Нити исполнения
- •2.4.Заключение
- •3. Планирование процессов
- •3.1.Уровни планирования
- •3.2.Цели планирования
- •3.4. Критерии планирования
- •3.5.Вытесняющее и не вытесняющее планирование
- •3.5.Алгоритмы планирования
- •3.5.1.Планирование по принципу fifo
- •3.5.2.Циклическое планирование)
- •3.5.3. Планирование по принципу кратчайшее задание - первым
- •3.5.4.Гарантированное планирование
- •3.5.5.Приоритетное планирование
- •3.5.6.Многоуровневые очереди (Multilevel Queue)
- •3.5.7.Многоуровневые очереди с обратной связью (Multilevel Feedback Queue)
- •3.6.Заключение
- •4. Лекция: Кооперация процессов и основные аспекты ее логической организации
- •4.1.Взаимодействующие процессы
- •4.2.Средства обмена информацией
- •4.3.Логическая организация механизма передачи информации
- •4.4.Информационная валентность процессов и средств связи
- •4.5.Особенности передачи информации с помощью линий связи
- •4.5.1.Буферизация
- •4.5.2.Поток ввода/вывода и сообщения
- •4.5.3.Надежность средств связи
- •4.5.4.Завершение связи
- •4.6.Нити исполнения
- •4.7.Заключение
4.5.3.Надежность средств связи
Связь является надежной, если выполняются 4 условия:
Не происходит потери информации.
Не происходит повреждения информации.
Не появляется лишней информации.
Не нарушается порядок данных в процессе обмена.
Передача данных через разделяемую память является надежным способом связи, поскольку информация, сохраняемая в разделяемой памяти, читается другими процессами в первозданном виде.
В вычислительных системах для надежности средств связи используют различные средства.
Для обнаружения повреждения информации с помощью сообщений каждое передаваемое сообщение снабжают контрольной суммой, которая вычисляется по посланной информации. При приеме сообщения контрольную сумму определяют заново и проверяют ее на соответствие пришедшему значению. Если контрольные суммы совпадают, то данные не повреждены. В этом случае подтверждается правильность получения информации. Несовпадение контрольных сумм означает повреждение данных. В этом случае подтверждения правильности получения информации отсылать не надо. Вместо контрольной суммы можно использовать кодирование передаваемых данных с помощью кодов, исправляющих ошибки. Такое кодирование позволяет при небольшом числе искажений информации восстановить первоначальные данные. Процесс, который передал данные, ожидает подтверждения правильности полученной информации. Если по истечении некоторого интервала времени подтверждения не получена, информация считается утерянной и требуется ее повторная передача. Во избежание двойного получения одной и той же информации, на приемном конце линии связи должен осуществляться контроль. Контроль передаваемой информации могут быть возложены на операционную систему, на процессы, между которыми осуществляется обмен данными; или совместно на систему и процессы.
4.5.4.Завершение связи
Организация прекращения обмена ставит следующие вопросы:
Нужны ли специальные действия для прекращения использования средств связи? Отсутствие инициализирующих действий при организации связи не требует специальных действий для завершения связи. Использование инициализации при установлении связи требует выполнения ряда операций при ее завершении, например, сообщить операционной системе об освобождении выделенного ресурса
Влияет ли прекращение связи на поведение других процессов? Если процессы, участвующие в обмене, работают согласованно, то прекращение связи не влияет на их дальнейшее поведение. Если один из процессов, заканчивает участие в обмене информации без согласования с другими процессом, то может возникнуть ситуация, когда данный процесс будет находиться в состоянии ожидания данных. Операционная система должна исключить вечное блокирование этого процесса. Обычно это либо прекращение работы ожидающего процесса, либо извещение его о том, что связи больше нет
4.6.Нити исполнения
Если алгоритм решения задачи обладает параллелизмом, то параллельная обработка и взаимодействие нескольких процессов одной задачи позволит ускорить решение задачи. Рассмотрим следующий пример.
Ввести массив a
Ввести массив b
Ввести массив c
a = a + b
c = a + c
Вывести массив c
При последовательном выполнении данной программы, процесс будет четырежды блокироваться, ожидая окончания операций ввода-вывода. Представленный алгоритм обладает внутренним параллелизмом. Вычисление суммы массивов a + b можно совместить с ожиданием окончания операции ввода массива c.
Ввести массив a
Ожидание окончания операции ввода
Ввести массив b
Ожидание окончания операции ввода
Ввести массив с
Ожидание окончания операции ввода a = a + b
c = a + c
Вывести массив с
Ожидание окончания операции вывода
Такое совмещение операций по времени можно реализовать с помощью двух взаимодействующих процессов, которые могут выглядеть следующим образом:
Процесс 1 Процесс 2
Ввести массив a Ожидание ввода
Ожидание окончания операции ввода массивов a и b
Ввести массив b
Ожидание окончания операции ввода
Ввести массив с
Ожидание окончания операции ввода a = a + b
c = a + c
Вывести массив с
Ожидание окончания операции ввода
Вышеприведенный пример работы двух взаимодействующих процессов не учитывает вопросы создания процесса, переключения контекста, использования общей памяти. С учетом данных моментов реальное поведение процессов будет выглядеть следующим образом:.
Процесс 1 Процесс 2
Создать процесс 2
Переключение контекста
Выделение общей памяти
Ожидание ввода a и b
Переключение контекста
Выделение общей памяти
Ввести массив a
Ожидание окончания операции ввода
Ввести массив b
Ожидание окончания операции ввода
Ввести массив с
Ожидание окончания операции ввода
Переключение контекста
a = a + b
Переключение контекста
c = a + c
Вывести массив с
Ожидание окончания операции вывода
Выполнение всех необходимых действий может привести не только к выигрышу во времени, но и к временным потерям. Время на создание процесса, выделение общей памяти и переключение контекста могут превысить выигрыш за счет совмещения операций.
Для организации параллелизма вводится новое понятие нить исполнения. Нити исполнения разделяют у процесса программный код, глобальные переменные и системные ресурсы. Каждая нить имеет собственный программный счетчик, свое содержимое регистров и свой стек. Процесс представляется как совокупность взаимодействующих нитей и выделенных ему ресурсов. Процесс, содержащий одну нить исполнения, идентичен самому процессу. Нити могут порождать нити-потомки внутри своего процесса и переходить из одного состояния в другое. Состояния нитей аналогичны состояниям процессов. Процесс, приходящий из состояния «рождение» содержит одну нить исполнения. Другие нити процесса являются потомками этой нити-прародительницы. Процесс находится в состоянии «готовность», если хотя бы одна из его нитей находится в состоянии «готовность» и ни одна из нитей не находится в состоянии «исполнение». Процесс находится в состоянии «исполнение», если одна из его нитей находится в состоянии «исполнение». Процесс находится в состоянии «ожидание», если все его нити находятся в состоянии «ожидание». Процесс находится в состоянии «закончил исполнение», если все его нити находятся в состоянии «закончил исполнение». Пока одна нить процесса заблокирована, другая нить того же процесса может выполняться. Нити разделяют процессор так же, как это делали традиционные процессы, в соответствии с рассмотренными алгоритмами планирования.
Нити одного процесса разделяют существенно больше ресурсов, чем различные процессы. Операции создания новой нити и переключения контекста между нитями одного процесса занимают значительно меньше времени, чем аналогичные операции для процессов в целом.
Нить 1 Нить 2
Создать нить 2
Переключение контекста нитей
Ожидание ввода a и b
Переключение контекста нитей
Ввести массив a
Ожидание окончания
операции ввода
Ввести массив b
Ожидание окончания
операции ввода
Ввести массив с
Ожидание окончания
операции ввода
Переключение контекста нитей
a = a + b
Переключение контекста нитей
c = a + c
Вывести массив с
Ожидание окончания
операции вывода
Различают операционные системы, поддерживающие нити на уровне ядра и на уровне библиотек. В операционных системах, поддерживающих нити на уровне ядра планирование использования процессора происходит в терминах нитей, а управление памятью и другими системными ресурсами остается в терминах процессов. В операционных системах, поддерживающих нити на уровне библиотек пользователей планирование процессора и управление системными ресурсами осуществляются в терминах процессов. Распределение использования процессора по нитям в рамках выделенного процессу временного интервала осуществляется средствами библиотеки. В подобных системах блокирование одной нити приводит к блокированию всего процесса, т.к. ядро операционной системы не имеет представления о существовании нитей. По сути дела, в таких вычислительных системах просто имитируется наличие нитей исполнения.