- •Министерство образования российской федерации
- •Содержание
- •Введение
- •Предмет и задачи курса
- •Рекомендации по литературе
- •Краткий очерк истории ос
- •Предыстория ос
- •Пакетные ос
- •Ос с разделением времени
- •Однозадачные ос для пэвм
- •Многозадачные ос для пк с графическим интерфейсом
- •Классификация ос
- •Критерии оценки ос
- •Надежность
- •Эффективность
- •Удобство
- •Масштабируемость
- •Способность к развитию
- •Мобильность
- •Основные функции и структура ос
- •Ос, используемые в дальнейшем изложении
- •Управление устройствами
- •Основные задачи управления устройствами
- •Классификация периферийных устройств и их архитектура
- •Прерывания
- •Архитектура подсистемы ввода/вывода
- •Способы организации ввода/вывода
- •Ввод/вывод по опросу и по прерываниям
- •Активное и пассивное ожидание
- •Синхронный и асинхронный ввод/вывод
- •Буферизация и кэширование
- •Понятие буферизации
- •Сглаживание неравномерности скоростей процессов
- •Распараллеливание ввода и обработки
- •Согласование размеров логической и физической записи
- •Редактирование при интерактивном вводе
- •Кэширование дисков
- •Опережающее чтение.
- •Драйверы устройств
- •Управление устройствами в ms-dos
- •Уровни доступа к устройствам
- •Драйверы устройств в ms-dos
- •Управление символьными устройствами
- •Управление блочными устройствами
- •Структура диска
- •Разделы и логические тома
- •Средства доступа к дискам
- •Управление устройствами вWindows
- •Драйверы устройств в Windows
- •Доступ к устройствам
- •Управление устройствами вUnix
- •Драйверы устройств вUnix
- •Устройство как специальный файл
- •Управление данными
- •Основные задачи управления данными
- •Характеристики файлов и архитектура файловых систем
- •Размещение файлов
- •Защита данных
- •Разделение файлов между процессами
- •Файловая системаFaTи управление данными вMs-dos
- •Общая характеристика системы fat
- •Структуры данных на диске
- •Структура записи каталога файловой системы fat
- •Создание и удаление файла
- •Работа с файлами в ms-dos
- •Системные функции
- •Доступ к данным
- •Структуры данных в памяти
- •Новые версии системы fat
- •Файловые системы и управление данными вUnix
- •Архитектура файловой системы unix
- •Жесткие и символические связи
- •Монтируемые тома
- •Типы и атрибуты файлов
- •Управление доступом
- •Структуры данных файловой системыUnix
- •Доступ к данным в unix
- •Развитие файловых системUnix
- •Файловая системаNtfSи управление данными вWindows
- •Особенности файловой системы ntfs
- •Структуры дисковых данных
- •Главная таблица файлов
- •Атрибуты файла
- •Доступ к данным
- •Защита данных
- •Аутентификация пользователя
- •Дескриптор защиты
- •Управление процессами
- •Основные задачи управления процессами
- •Реализация многозадачного режима
- •Понятия процесса и ресурса
- •Квазипараллельное выполнение процессов
- •Состояния процесса
- •Вытесняющая и невытесняющая многозадачность
- •Дескриптор и контекст процесса
- •Реентерабельность системных функций
- •Дисциплины диспетчеризации и приоритеты процессов
- •Проблемы взаимодействия процессов
- •Изоляция процессов и их взаимодействие
- •Проблема взаимного исключения процессов
- •Двоичные семафоры Дейкстры
- •Средства взаимодействия процессов
- •Целочисленные семафоры
- •Семафоры с множественным ожиданием
- •Сигналы
- •Сообщения
- •Общая память
- •Программные каналы
- •Проблема тупиков
- •Управление процессами вMs-dos
- •Процессы в ms-dos
- •Среда программы
- •Запуск программы
- •Завершение работы программы
- •Перехват прерываний и резидентные программы
- •Управление процессами вWindows
- •Понятие объекта в Windows
- •Процессы и нити
- •ПланировщикWindows
- •Процесс и нить как объекты
- •Синхронизация нитей
- •Способы синхронизации
- •Объекты синхронизации и функции ожидания
- •Типы объектов синхронизации
- •Критические секции
- •Сообщения
- •Управление процессами в unix
- •Жизненный цикл процесса
- •Группы процессов
- •Программные каналы
- •Сигналы
- •Средства взаимодействия процессов в стандарте posix
- •Планирование процессов
- •Состояния процессов в unix
- •Приоритеты процессов
- •Интерпретатор команд shell
- •Управление памятью
- •Основные задачи управления памятью
- •Виртуальные и физические адреса
- •Распределение памяти без использования виртуальных адресов
- •Настройка адресов
- •Распределение с фиксированными разделами
- •Распределение с динамическими разделами
- •Сегментная организация памяти
- •Страничная организация памяти
- •Сравнение сегментной и страничной организации
- •Управление памятью в ms-dos
- •Управление памятью вWindows
- •Структура адресного пространства
- •Регионы
- •Отображение исполняемых файлов
- •Файлы, отображаемые на память
- •Стеки и кучи
- •Управление памятью вUnix
- •Литература
- •Дроздов Сергей Николаевич операционные системы Конспект лекций
Процессы и нити
Общее понятие процесса, рассмотренное выше в п. 4.2.1, для ОС Windowsкак бы распадается на два понятия: собственно процесса инити(thread; в некоторых книгах используется терминпоток). При этом нить является единицей работы, она участвует в конкуренции за процессорное время, изменяет свое состояние и приоритет, как было описано выше для процесса. Что же касается процесса вWindows, то он может состоять из нескольких нитей, использующих общую память, открытые файлы и другие ресурсы, принадлежащие процессу. В двух словах: процесс –владеет(памятью, файлами), нити –работают, при этом совместно используя ресурсы своего процесса. Правда, нить тоже кое-чем владеет: окнами, очередью сообщений, стеком.
Процесс создается при запуске программы (EXE-файла). Одновременно создается одна нить процесса (должен же кто-то работать!). Создание процесса выполняется с помощьюAPI-функции CreateProcess. Основными параметрами при вызове этой функции являются следующие.
Имя файла запускаемой программы.
Командная строка, передаваемая процессу при запуске.
Атрибуты защиты для создаваемых процесса и нити. И процесс, и нить являются объектами ядра Windowsи в этом качестве могут быть защищены от несанкционированного доступа (например, от попыток других процессов вмешаться в работу данного процесса).
Различные флаги, уточняющие режим создания процесса. Среди них следует отметить класс приоритета процесса, флаг отладочного режима (при этом система будет уведомлять процесс-родитель о действиях порожденного процесса), а также флаг создания приостановленного процесса, который не начнет работать, пока не будет вызвана функция возобновления работы.
Блок среды процесса.
Текущий каталог процесса.
Параметры первого окна, которое будет открыто при запуске процесса.
Адрес блока информации, через который функция возвращает родительскому процессу четыре числа: идентификатор созданного процесса, идентификатор нити, хэндл процесса и хэндл нити.
Если процесс успешно создан, функция CreateProcessвозвращает ненулевое значение.
Класс приоритета процесса используется при определении приоритетов его нитей. Подробнее об этом в п. 4.5.3.
Хэндл объекта ядра Windows(в данном случае процесса или нити) позволяет выполнять различные операции с этим объектом. Подробнее о хэндлах и идентификаторах см. п. 4.5.4.
После создания процесса его единственная нить начинает выполнять программу процесса, работая параллельно с нитями других запущенных процессов. Если логика работы программы предполагает параллельное выполнение каких-либо действий в рамках одного процесса, то могут быть созданы дополнительные нити. Для этого используется функция CreateThread. Ее основные параметры следующие:
атрибуты защиты для создаваемой нити;
размер стека нити;
стартовый адрес нити (обычно нить связывается с выполнением одной из функций, описанных в программе процесса, при этом в качестве стартового адреса указывается имя функции);
параметр-указатель, позволяющий передать нити при запуске некоторое значение в качестве аргумента;
флаг создания нити в приостановленном состоянии;
указатель на переменную, в которой функция должна возвратить идентификатор созданной нити.
Возвращаемым значением функции CreateThreadявляется хэндл созданной нити либоNULL, если создать нить не удалось.
Прекрасным примером многонитевой программы является MicrosoftWord. В то время как основная нить обрабатывает ввод с клавиатуры, отдельная нить может динамически рассчитывать разбиение текста на страницы, еще одна нить может в это же время выполнять печать документа или его сохранение.
Для завершения работы нити используется вызов функции ExitThread. Для завершения работы всего процесса любая из его нитей может вызвать функциюExitProcess. Единственным параметром каждой из этих функций является код завершения нити или процесса.
Завершение процесса приводит к освобождению всех ресурсов, которыми владел процесс: памяти, открытых файлов и т.п.
При завершении процесса завершаются все его нити. И наоборот, при завершении последней нити процесса завершается и сам процесс.
Не слишком широко известно, что нить не является самой мелкой единицей организации вычислений. На самом деле Windowsпозволяет создать внутри нити нескольковолокон(fiber), которые в обычной терминологии могут быть описаны как сопрограммы или как задачи с невытесняющей диспетчеризацией, работающие в рамках одной и той же задачи с вытесняющей диспетчеризацией. Переключение волокон выполняется только явно, с помощью функцииSwitchToFiber. Об использовании сопрограмм см. /15/.