
- •Глава 3
- •Раздел 3 Управление процессами и потоками
- •3.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. Создание потоков
Системное программное обеспечение и операционные системы
|
КР ВУЗ ФПТ
Учебное пособие
Глава 3
Управление процессами и потоками
2007
Рекомендуемая литература:
-
В.Г.Олифер, Н.А.Олифер. Сетевые операционные системы. Учебное пособие.-СПб.:БХВ-Петербург, 2006.-536с.
-
В.А.Шеховцов. Операційні системи. Підручник .-К.:Виканавча група ВНV. 2005. 576с.
-
Столлингс В. Операционные системы. М.: Вильямс, 2001. -672с.
Раздел 3 Управление процессами и потоками
3.1. Базовые понятия процессов и потоков
3.1.1. Процессы и потоки в современных ОС
В современной операционной системе одновременно выполняются код ядра (что принадлежит к его разным подсистемам) и код программ пользователя. При этом происходят разные действия: одни программы и подсистемы выполняют инструкции процессора, другие занятые вводом-выводом, еще некоторые ожидают запросы от пользователя или других приложений. Для упрощения управления этими действиями в системе целесообразно выделить набор элементарных активных элементов и определить интерфейс взаимодействия ОС с этими элементами. Если активный элемент системы связать с программой, которая выполняется, мы придем к понятию процесса.
Дадим предыдущее определение процесса.
Под процессом понимают абстракцию ОС, которая объединяет все необходимое для выполнение одной программы в определенный момент времени.
Программа - это некоторая последовательность машинных команд, которая сохраняется на диске, в случае необходимости загружается в память и выполняется.
Можно сказать, что во время выполнения программу представляет процесс.
Однозначное соответствие между программой и процессом устанавливается только в конкретный момент времени:
-один процесс в разное время может выполнять код нескольких программ,
-код одной программы могут выполнять несколько процессов одновременно.
Для успешного выполнения программы нужны определенные ресурсы. К ним принадлежат:
-ресурсы, необходимые для последовательного выполнения программного кода (прежде всего процессорное время);
-ресурсы, которые дают возможность сохранять информацию, которая обеспечивает выполнение программного кода (регистры процессора, оперативная память и т.п.).
Эти группы ресурсов определяют две составные части процесса:
-последовательность выполняемых команд процессора;
-набор адресов памяти (адресное пространство), в котором расположенные эти команды и данные для них.
Выделение этих частей оправдано еще и тем, что в рамках одного адресного просторную может быть несколько параллельно выполняемых последовательностей команд, которые совместно используют одни и те же самые данные. Необходимость размежевания последовательности команд и адресного пространства подводит к понятию потока.
Потоком ( іhгеаd) называют набор последовательно выполняемых команд процессора, которые используют общее адресное пространство процесса.
Поскольку в системе может одновременно быть много потоков, задача ОС состоит в организации переключения процессора между ними и планирование их выполнения. В многопроцессорных системах код отдельных потоков может выполняться на отдельных процессорах.
Теперь можно дать еще одно определение процесса.
Процессом называют совокупность одного или нескольких потоков и защищенного адресного пространства, в котором эти потоки выполняются.
Защищенность адресного пространства процесса есть его важнейшей характеристикой. Код и данные одного процесса не могут быть прямо прочитанные или перезаписанные другим процессом; таким образом защищаются от многих программных ошибок и попыток несанкционированного доступа. Естественно, что недопустимым будет только прямой доступ (например, запись в память с помощью простой инструкции перенесения данных); обмен данными между процессами принципиально возможный, но для этого должны быть использованы специальные средства, которые называют средствами межпроцессорного взаимодействия. Такие средства более сложные чем прямой доступ и работают медленнее, но при этом обеспечивают защиту от случайных ошибок в случае доступа к данным.
В отличие от процессов потоки распоряжаются общей памятью. Данные потока не защищены от доступа к ним других потоков при условии, что все они выполняются в адресном пространстве одного процесса. Это предоставляет дополнительные возможности для разработки приложений, но усложняет программирование.
Защищенное адресное пространство процесса задает абстракцию выполнения кода на отдельной машине, а поток обеспечивает абстракцию последовательного выполнения команд на одном выделенном процессоре.
Адресное пространство процесса не всегда отвечает адресам оперативной памяти. Например, у него могут отображаться файлы или регистры контроллеров ввода-вывода, а потому запись по определенному адресу в этом пространстве приведет к записи в файл или к выполнению операции ввода-вывода. Такую технологию называют изображением в память (mamory mapping).