
- •Часть 1
- •В.Г.Олифер, н.А.Олифер. Сетевые операционные системы. Учебное пособие.-сПб.:бхв-Петербург, 2006.-536с.
- •В.А.Шеховцов. Операційні системи. Підручник .-к.:Виканавча група внv. 2005. 576с.
- •Столлингс в. Операционные системы. М.: Вильямс, 2001. -672с. Оглавление
- •Раздел 1 введение
- •1.1. Понятие операционной системы, ее назначение и функции
- •1.1.1. Понятие операционной системы
- •1.1.2. Назначение операционной системы
- •1.1.3. Операционная система как расширеная машина
- •1.1.4. Операционная система как распределитель ресурсов
- •1.2. История развития операционных систем
- •1.3. Классификация современных операционных систем
- •1.4. Функциональные компоненты операционных систем
- •1.4.1. Управление процессами и потоками
- •1.4.2. Управление памятью
- •1.4.3. Управление вводом-выводом
- •1.4.4. Управление файлами и файловые системы
- •1.4.5. Сетевая поддержка
- •1.4.6. Безопасность данных
- •1.4.7. Интерфейс пользователя
- •Раздел 2
- •2.1. Базовые понятия архитектуры операционных систем
- •2.2. Реализация архитектуры операционных систем
- •2.2.1. Монолитные системы
- •2.2.2. Многоуровневые системы
- •2.2.3. Системы с микроядром
- •2.2.4. Концепция виртуальных машин
- •2.3. Операционная система и ее окружение
- •2.3.1. Взаимодействие ос и аппаратного обеспечения
- •2.3.2. Взаимодействие ос и выполняемого программой
- •2.4. Особенности архитектур
- •Раздел 3
- •3.1. Базовые понятия процессов и потоков
- •3.1.1. Процессы и потоки в современных ос
- •3.1.2. Модели процессов и потоков
- •3.1.3. Составные элементы процессов и потоков
- •3.2. Многопотоковость и ее реализация
- •3.2.1. Понятие параллелизма
- •3.2.2. Виды параллелизма
- •3.2.3. Преимущества и недостатки многопотоковости
- •3.2.4. Способы реализации модели потоков
- •3.2.5 Состояния процессов и потоков
- •3.3 Описание процессов и потоков
- •3.3.1. Управляющие блоки процессов и потоков
- •3.3.2. Образы процесса и потока
- •3.4. Переключение контекста и обработка прерываний
- •3.4.1. Организация переключения контекста
- •3.4.2. Обработка прерываний
- •3.5 Создание и завершение процессов и потоков
- •3.5.1 Создание процессов
- •3.5.2. Иерархия процессов
- •3.5.3. Управление адресным пространством во время создания процессов
- •3.5.4. Особенности завершения процессов
- •3.5.5. Синхронное и асинхронное выполнение процессов
- •3.5.6. Создание и завершение потоков
- •3.6 Управление потоками в Linux
- •3.6.1. Базовая поддержка многотопотоковости
- •3.6.2. Особенности новой реализации многопоточности в ядре Linux
- •3.6.3. Потоки ядра Linux
- •3.7 Управление процессами в Windows хр
- •3.7.1. Составные элементы процесса
- •3.7.2. Структуры данных процесса
- •3.7.3. Создание процессов
- •3.7.4. Завершение процессов
- •3.7.5. Процессы и ресурсы. Таблица объектов процесса
- •3.8 Управление потоками в Windows хр
- •3.8.1. Составные элементы потока
- •3.8.2. Структуры данных потока
- •3.8.3. Создание потоков
- •Раздел 4
- •4.1. Виды межпроцесорного взаимодействия
- •4.1.1. Методы распределения памяти
- •4.1.2. Методы передачи сообщений
- •4.1.3. Технология отображаемой памяти
- •4.1.4. Особенности межпроцесорного взаимодействия
- •4.2. Базовые механизмы межпроцессового взаимодействия
- •4.2.1. Межпроцессовое взаимодействие на базе общей памяти
- •4.2.2. Основы передачи сообщений
- •4.2.3. Технологии передачи сообщений
- •Глава 5
- •5.1 Функции ос по управлению памятью
- •5.2 Типы адресов
- •5.3 Алгоритмы распределения памяти
- •5.3.1 Распределение памяти фиксированными разделами
- •5.3.2 Распределение памяти динамическими разделами
- •5.3.3 Перемещаемые разделы
- •5.4 Свопинг и виртуальная память
- •5.4.1 Страничное распределение
- •5.4.2 Сегментное распределение
- •5.4.3 Сегментно-страничное распределение
- •5.5 Разделяемые сегменты памяти
- •5.6 Кэширование данных
- •5.6.1 Иерархия запоминающих устройств
- •5.6.3 Принцип действия кэш-памяти
- •5.6.4 Проблема согласования данных
- •5.6.5 Способы отображения основной памяти на кэш
- •5.6.6 Схемы выполнения запросов в системах с кэш-памятью
- •Раздел 6 Логическая и физическая организация файловой системы
- •6.1 Логическая организация файловой системы
- •6.1.1 Цели и задачи файловой системы
- •5.1.2 Типы файлов
- •5.1.3 Иерархическая структура файловой системы
- •5.1.4 Имена файлов
- •5.1.5 Монтирование
- •5.1.6 Атрибуты файлов
- •5.1.7 Логическая организация файла
- •5.2 Физическая организация файловой системы
- •5.2.1 Диски, разделы, секторы, кластеры
- •5.2.2 Физическая организация и адресация файла
- •5.2.3 Физическая организация fat
- •5.2.4 Физическая организация ntfs
3.2.5 Состояния процессов и потоков
Для потока разрешенные такие состояния:
♦ создание (new) — поток находится в процессе создания;
♦ выполнение (running) — инструкции потока выполняет процессор (в конкретный момент времени на одном процессоре только один поток);
♦ ожидание (waiting) — поток ожидает некоторого события (например, завершение операции ввода-вывода); такое состояние называют заблокированным, а поток - прекращенным;
♦ готовность (ready) — поток ожидает, что планировщик переключит процессор на него, при этом он имеет все необходимые ему ресурсы, кроме процессорного времени;
♦ завершение (terminated) — поток завершил выполнение (если при этом его ресурсы не были изъяты с системы, он переходит в дополнительное состояние - зомби).
Возможные переходы между состояниями потока изображены на рис. 3.2
Переход потоков между состояниями ожидания и готовности реализовано на основе планирования задач, или планирование потоков. Во время планирования потоков определяют, который из потоков надо восстановить после завершения операции ввода-вывода, как организовать ожидание событий в системе.
Для осуществления перехода потоков между состояниями готовности и выполнение необходимое планирование процессорного времени. На основе алгоритмов такого планирования определяют, который из готовых потоков нужно выполнять в конкретный момент, когда нужно прервать выполнение потока, чтобы переключиться на другой готовый поток и т.п..
Относительно систем, которые реализуют модель процессов, принято говорить о состоянии процессов, а не потоков, и о планировании процессов; фактически состояние процесса в этом случае однозначно отвечают состоянию его единого потока.
В многотопотоковых системах также можно выделять состояния процессов.
Например, в многотопотоковости, реализованной по схеме М:1, потоки изменяют свои состояния в режиме пользователя, а процессы - в режиме ядра.
3.3 Описание процессов и потоков
Как мы уже знаем, одним из основных задач операционной системы есть распределение ресурсов между процессами и потоками. Такими ресурсами есть прежде всего процессорное время (его распределяют между потоками во время планирования), средства ввода-вывода и оперативная память (их распределяют между процессами).
Для управления распределением ресурсов ОС должна поддерживать структуры данных, которые содержат информацию, которая описывает процессы, потоки и ресурсы. К таким структурам данных принадлежат:
-
таблицы распределения ресурсов: таблицы памяти, таблицы ввода-вывода, таблицы файлов и т.п.;
-
таблицы процессов и таблицы потоков, где содержится информация о процессах и потоках, присутствуют в системе в конкретный момент.
3.3.1. Управляющие блоки процессов и потоков
Информацию о процессах и потоках в системе сохраняют в специальных структурах данных, которые называют управляющими блоками процессов и управляющими блоками потоков. Эти структуры очень важные для работы ОС, поскольку на основании их информации система осуществляет управление процессами и потоками.
Управляющий блок потока (Thread Control Block, ТСВ) отвечает активному потоку, который находится в состоянии готовности, ожидание или выполнение. Этот блок может содержать такую информацию:
-
идентификационные данные потока (обычно его уникальный идентификатор);
-
состояние процессора потока: управляющие регистры процессора, счетчик инструкций, указатель стека;
-
информацию для планирования потоков.
Таблица потоков - это список или массив управляющих блоков потока. Она расположена в защищенной области памяти ОС.
Управляющий блок процесса (Ргосеss Соntrol Вlоск, РСВ) отвечает процессу, который присутствует в системе. Такой блок может содержать:
-
идентификационные данные процесса (уникальный идентификатор, информацию о других процессах, связанных с данным);
-
информацию о потоках, которые выполняются в адресном пространстве процесса (например, указатели на их управляющие блоки);
-
информацию, на основе которой можно определить права процесса на использование разных ресурсов (например, идентификатор пользователя, который создал процесс);
-
информацию из распределения адресного пространства процесса;
-
информацию о ресурсах ввода-вывода и файлы, которые использует процесс. Укажем, что для систем, в которых реализованная модель процессов, в управляющем блоке процесса сохраняют не ссылку на управляющие блоки его потоков, а информацию, необходимую непосредственно для его выполнения (счетчик инструкций, данные для планирования и т.п.).
Таблицу процессов организовывают аналогично таблице потоков. Как элементы в ней будут сохраняться управляющие блоки процессов.