
- •Часть 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.1.2. Модели процессов и потоков
Максимально возможное количество процессов (защищенных адресных пространств) и потоков, которые в них выполняются, может варьироваться в разных системах.
-
В однозадачних системах есть только одно адресное пространство, в котором в каждый момент времени может выполняться один поток.
-
В некоторых встроенных системах тоже есть одно адресное пространство (один процесс), но в нем разрешенное выполнение многих потоков. В этом случае можно организовывать параллельные вычисления, но защита данных приложения не реализованы.
-
В системах, подобный традиционным версиям UNIX, допускается наличие многих процессов, но в рамках адресного пространства процесса выполняется только один поток. Это традиционная однопоточная модель процессов. Понятие потока в данной модели не применяют, а используют термин «переключение между процессами», «планирование выполнения процессов», «последовательность команд процесса» и т.п. (здесь под процессом понимают его единый поток).
-
В большинстве современных ОС (таких, как линия Windows ХР, современные версии UNIX) может быть много процессов, а в адресном пространстве каждого процесса - много потоков. Эти системы поддерживают многопотоковость или реализуют модель потоков. Процесс в такой системе называют многопотоковым процессом.
В дальнейшем для обозначения последовательности выполняемых команд будем употреблять термин «поток», за исключением ситуаций, когда будет обсуждаться реализация модели процессов.
3.1.3. Составные элементы процессов и потоков
К элементам процесса принадлежат:
-
защищенное адресное пространство;
-
данные, общие для всего процесса (эти данные могут совместно использовать все его потоки);
-
информация об использовании ресурсов (открытые файлы, сетевые соединения и т.п.);
-
информация о потоках процесса.
Поток содержит такие элементы:
-
состояние процессора (набор текущих данных из его регистров), в частности счетчик текущей инструкции процессора;
-
стек потока (участок памяти, где находятся адреса возвращения функций потока, которые вызваны в его коде).
3.2. Многопотоковость и ее реализация
3.2.1. Понятие параллелизма
Использование нескольких потоков в приложении означает внесение у него параллелизма. Параллелизм - это одновременное (с точки зрения прикладного программиста) выполнение действий разными фрагментами кода приложения.
Такая одновременность может быть реализована на одном процессоре путем переключения задач (случай псевдопаралелизма), а может основываться на параллельном выполнении кода на нескольких процессорах (случай настоящего параллелизма). Потоки абстрагируют это отличие, давая возможность разрабатывать приложение, которые в однопроцесорних системах используют псевдопаралелизм, а при нескольких процессоров -настоящий параллелизм (такие приложения масштабируются с увеличением количества процессоров).
3.2.2. Виды параллелизма
-
Можно выделить такие основные виды параллелизма:
-
параллелизм многопроцесорних систем;
-
параллелизм операций ввода-вывода;
-
параллелизм взаимодействия с пользователем;
-
параллелизм распределенных систем.
Параллелизм операций ввода-вывода
Во время выполнения операции ввода-вывода (например, обмена данными с диском) низкоуровневый код доступа к диску и код приложения не могут выполняться одновременно. В этом случае приложению надо подождать завершение операции ввода-вывода, освободив на это время процессор. Естественным считается занять на это время процессор инструкциями другой задачи.
Многопотоковые приложение может реализовать этот вид параллелизма через создание новых потоков, которые будут выполняться, когда текущий поток ожидает операции вывода. Так реализуется асинхронный ввод-вывод, когда приложение продолжает свое выполнение, не ожидая завершения операций ввода-вывода.
Параллелизм взаимодействия с пользователем
Во время интерактивного сеанса работы пользователь может выполнять разные действия с приложением (и ожидать немедленной реакции на них) к завершению обработки предыдущих действий. Например, после запуска команды «печатание документа» он может немедленно продолжить введение текста, не ждя завершение печатания.
Чтобы решить эту задачу, можно выделить отдельные потоки для непосредственного взаимодействия с пользователем (например, один поток может ожидать ввода c клавиатуры, другой - от мыши, дополнительные потоки - отображать интерфейс пользователя). Основные задачи приложения (расчеты, взаимодействие с базой данных и т.д.) в это время будут выполнять другие потоки.
Параллелизм распределенных применений
Рассмотрим серверное приложение, которое ожидает запросы от клиентов и выполняет действие в ответ на запрос. Если клиентов много, запросы могут поступать часто, почти вместе. Если продолжительность обработки запроса превышает интервал между запросами, сервер будет вынужден помещать запросы в очередь, вследствие чего снижается производительность. При этом использование потоков дает возможность организовать параллельное обслуживание запросов, когда основной поток принимает запросы, сразу передает их для выполнения другим потокам и ожидает новых.