Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические материалы СПтаОС (3курс).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
929.79 Кб
Скачать

2.10. Управление процессами

Перед тем как обсудить метод, который ОС использует для управления процессами, рассмотрим сначала расхождения между режимами работы процессора при выполнении кода ОС, и при выполнении кодов программ пользователя. Большинство процессоров поддерживают два режима работы. Определенные команды выполняются только в более привилегированном режиме. К ним относятся команды чтения или внесения изменений в управляющие регистры (LDTR , GDTR и др.), команды ввода-вывода, а также команды, которые связанные с управлением памятью. Кроме того, доступ к некоторым участкам памяти может быть разрешен только в привилегированном режиме.

Режим с меньшими привилегиями называют режимом пользователя, так как в нем выполняются программы пользователя. Режим с более высокими привилегиями называется системным режимом (system mode), режимом управления (control mode) или режимом ядра (kernel mode). Ядро - это часть ОС, которая выполняет важнейшей ее функции. Приблизительный перечень функций ядра.

Управление процессами

- Создание и завершение процессов

- Планирование и диспетчеризация процессов

- Переключение процессов

- Синхронизация и поддержка обмена информацией между процессами

- Организация управляющих блоков процессов

Управление памятью

- выделение адресного пространства процессам

- Свопинг

- Управление страницами и сегментами

Управление ввдом-выводом

- Управление буферами

- Выделение процессам каналов и устройств ввода-вывода

Функции поддержки

- Обработка прерываний

- Учет использования ресурсов

- Текущий контроль системы

С приведенного легко понять, для чего нужны два выше упомянутых режима. Это необходимо для защиты ОС и ее основных структур, таких как управляющие блоки процессов, от возможного влияния программ пользователей. Программы, которые работают в режиме ядра, имеют полный контроль над процессором и всеми его командами и регистрами, а также имеют доступ к всем ячейкам памяти. Такой уровень привилегий для программ пользователей не нужный, поэтому, исходя из соображений безопасности, лучше сделать его недоступным для программ пользователя.

В связи с этим возникает два вопроса: каким образом процессор может определить, в каком режиме может выполняться данная программа, и как осуществляется переключение с одного режима в другой? Относительно первого вопроса, то в PSW программы есть специальный бит (VM), где указан режим выполнения. При некоторых событиях возникает изменение этого бита. Например, если программа вызовет сервис ОС, устанавливается режим ядра (обычно это возникает в результате выполнения команд изменения режима).

2.11. Потоки. Симметричная многопроцессорная обработка

2.11.1. Понятие потока

Говоря о процессах, мы отмечали, что операционная система поддерживает их обособленность: у каждого процесса имеется свое виртуальное адресное пространство, каждому процессу назначаются свои ресурсы - файлы, окна и т.д. Такая обособленность нужна для того, чтобы защитить один процесс от другого, поскольку они, совместно используя все ресурсы машины, конкурируют друг с другом. В общем случае процессы принадлежат разным пользователям, разделяющим один компьютер, и ОС берет на себя роль арбитра в спорах процессов за ресурсы. Понятие процесса было введено для реализации идей мультипрограммирования. При мультипрограммировании повышается пропускная способность системы, но отдельный процесс никогда не может быть выполнен быстрее, чем если бы он выполнялся в однопрограммном режиме (всякое разделение ресурсов замедляет работу одного из участников за счет дополнительных затрат времени на ожидание освобождения ресурса).

Однако задача, решаемая в рамках одного процесса, может обладать внутренним параллелизмом, который в принципе позволяет ускорить ее решение. Например, в ходе выполнения задачи происходит обращение к внешнему устройству, и на время этой операции можно не блокировать полностью выполнение процесса, а продолжить вычисления по другой "ветви" процесса. Таким образом, для реализации “мультизадачности” в ее истинном толковании необходимо тоже ввести соответствующую сущность. Такой сущностью и стали так называемые “легковесные” процессы, или, как их теперь называют, - потоки или треды (нити, thread). Рассмотрим эти понятия подробнее.