
- •Часть 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.3. Преимущества и недостатки многопотоковости
Назовем проблемы, которые могут быть решены с помощью потоков.
-
Использование потоков дает возможность реализовать разные виды параллелизма и разрешает применению масштабироваться с ростом количества процессоров.
-
Для поддержки потоков нужно меньше ресурсов, чем для поддержки процессов (например, нет необходимости выделять для потоков адресное пространство).
-
Для обмена данными между потоками может быть использованная общая память (адресное пространство их процесса). Это эффективнее, чем применять средства міжпроцесової взаимодействия.
Несмотря на пересчитанные преимущества, использование потоков не является универсальным средством решения проблем параллелизма, и связанное с некоторыми трудностями:
-разрабатывать и налаживать многопотоковость программы сложнее, чем обычные последовательные программы;
-довольно часто внедрение многопотоковости приводит к снижению надежности приложений.
-организация общего использования адресного пространства несколькими потоками требует, чтобы программист имел высокую квалификацию.
-использование потоков может вызвать снижение производительности приложений.
Преимущественно это случается в однопроцессорных системах (например, в таких системах попытка выполнить сложный расчет параллельно несколькими потоками вводит лишь в лишние расходы на переключение между потоками, количество выполненных полезных инструкций останется той же самой).
Преимущества и недостатки использования потоков нужно учитывать во время выполнения любого программного проекта. Прежде всего целесообразно рассматривать возможность решить задачу в рамках модели процессов. При этом, однако, следует принимать во внимание не только текущие требования заказчика, но и необходимость развития приложения, его масштабирование и т.п.. Возможно, с учетом этих факторов использования потоков будет оправданное.
3.2.4. Способы реализации модели потоков
Прежде чем рассмотреть основные подходы к реализации модели потоков, дадим определение важных понятий потока пользователя и потока ядра.
Поток пользователя - это последовательность выполнения команд в адресном пространстве процесса.
Ядро ОС не имеет информации о таких потоках, вся работа с ними выполняется в режиме пользователя. Средства поддержки потоков пользователя предоставляют специальные системные библиотеки; они доступные для прикладных программистов в виде библиотечных функций. Библиотеки поддержки потоков в наше время обычно реализуют набор функций, определенный стандартом POSIX (соответствующий раздел стандарта называют POSIХ.lb).
Поток ядра - это последовательность выполнения команд в адресному пространстве ядра.
Потоками ядра управляет ОС, переключение ими возможное только в привилегированном режиме. Есть потоки ядра, которые отвечают потокам пользователя, и потоки, которые не имеют такого соответствия.
Соотношение между двумя видами потоков определяет реализацию модели потоков. Есть несколько вариантов такой реализации (схем многопотоковости); рассмотрим важнейшие из них (рис. 3.1).
Схема многопотоковости М:1 (наилудшая) реализует многопотоковость исключительно в режиме пользователя. При этом каждый процесс может содержать много потоков пользователя, однако о наличии этих потоков ОС не известно, она работает только с процессами. За планирование потоков и переключение контекста отвечает библиотека поддержки потоков. Схема отличается эффективностью управления потоками (для этого нет потребности переходить в режим ядра) и не нуждается в для реализации изменения ядра ОС. Тем не менее ныне ее практически не используют через два существенных недостатка, которые не отвечают идеологии многопотоковости.
♦ Схема М:1 не дает возможности воспользоваться многопроцесорними архитектурами, поскольку определить, какой именно код будет выполняться на каждом из процессоров, может только ядро ОС. В результате все потоки одного процесса всегда будут выполняться на одном процессоре.
♦ Поскольку системные вызовы обрабатываются как равные в ядре ОС, то блокировочный системный вызов (например, вызов, который ожидает ввода данных пользователем) будет останавливать все потоки процесса, а не только тот, что сделал этот вызов.
Схема многопотоковости 1:1 ставит в соответствие каждому потоку пользователя один поток ядра. В этом случае планирования и переключение контекста задевают лишь потоки ядра, в режиме пользователя эти функции не реализованные. Поскольку ядро ОС имеет информацию о потоках, эта схема свободная от недостатков предыдущей (разные потоки могут выполняться на разных процессорах, а при остановке одного потока другие продолжают работу). Она простая и надежная в реализации и сегодня есть наиболее распространенной. Хотя схема предусматривает, что во время управления потоками надо постоянно переключаться между режимами процессора, на практике потеря продуктивности вследствие этого оказывается незначительной.
Схема многопотоковости М:N. В этой схеме присутствуют как потоки ядра, так и потоки пользователя, которые отображаются на потоки ядра так, что один поток ядра может отвечать нескольким потокам пользователя. Число потоков ядра может быть изменено программистом для достижения максимальной производительности. Распределение потоков пользователя по потокам ядра выполняется в режиме пользователя, планирование потоков ядра - в режиме ядра. Схема сложна в реализации и сегодня сдает свои позиции схеме 1:1.