Управление процессами
• Создание и завершение процессов
• Планирование и диспетчеризация процессов
• Переключение процессов
• Синхронизация и поддержка обмена информацией между процессами
• Организация управляющих блоков процессов
Управление памятью
• Выделение адресного пространства процессам
• Свопинг
• Управление страницами и сегментами
Управление вводом-выводом
• Управление буферами
• Выделение процессам каналов и устройств ввода-вывода
Функции поддержки
• Обработка прерываний
• Учет использования ресурсов
• Текущий контроль системы
Нетрудно понять, зачем нужны два вышеуказанных режима. Необходимо защитить операционную систему и ее основные таблицы, такие, как управляющие блоки процессов, от воздействия пользовательских программ. Программы, работающие в режиме ядра, обладают полным контролем над процессором и всеми его командами и регистрами, а также имеют доступ ко всем ячейкам памяти. Такой уровень привилегий пользовательским программам не нужен, поэтому, исходя из соображений безопасности, лучше сделать его недоступным для пользовательских программ.
В связи с этим возникают два вопроса: каким образом процессор может определить, в каком режиме должна выполняться данная программа, и как происходит переключение из одного режима в другой? Что касается ответа на первый вопрос, то в слове состояния программы имеется бит, в котором указывается режим выполнения. При некоторых событиях происходит изменение этого бита. Например, если пользователь вызывает службу операционной системы, устанавливается режим ядра (обычно это происходит в результате выполнения команд изменения режима). В качестве примера приведем команду Change Mode (CHM), с помощью которой происходит переключение режима на машинах VAX. Когда пользователь вызывает службу операционной системы или когда в результате прерывания управление переходит к процедуре операционной системы, эта процедура выполняет команду СНМ, чтобы включить более привилегированный режим. Перед тем как вернуть управление пользовательскому процессу, она снова выполняет эту команду, переводя процессор в режим с меньшими привилегиями. Если же команду СНМ попытается выполнить пользовательская программа, это приведет к передаче управления операционной системе, и если такое изменение режима пользовательской программой не разрешено, произойдет ошибка выполнения.
Создание процессов
В разделе 3.1 обсуждались события, влекущие за собой создание новых процессов. Ознакомившись со структурами данных, связанными с процессами, опишем вкратце этапы создания этих процессов.
Если операционная система по какой-либо причине (см. табл. 3.1) приняла решение создать процесс, она может сделать это следующим образом.
1. Присвоить новому процессу уникальный идентификатор. На этом этапе в первичную таблицу процессов вносится новая запись.
2. Выделить пространство для процесса. Сюда включаются все элементы образа процесса. Операционная система должна знать, сколько места нужно для пользовательского адресного пространства (для программ и данных) и для пользовательского стека. Эти значения могут назначаться по умолчанию исходя из типа процесса, или могут быть установлены на основе запроса пользователя при создании задания. Если процесс порождается другим процессом, родительский процесс может передать операционной системе необходимые величины, поместив их в запрос на создание процесса. Если вновь создающийся процесс будет использовать какую-то часть адресного пространства совместно с другими процессами, необходимо установить соответствующие связи. И, наконец, нужно выделить место для управляющего блока процесса.
3. Инициализировать управляющий блок процесса. Информация о процессе содержит его идентификатор, а также некоторые другие идентификаторы, например идентификатор родительского процесса. Информация о состоянии процессора обычно инициализируется нулевыми значениями, за исключением счетчика команд (который содержит точку входа в программу) и указателей системного стека (задающие границы стека процесса). Инициализация управляющей информации происходит на основе значений, установленных по умолчанию, с учетом атрибутов из запроса на создание процесса. Например, состояние процесса обычно инициализируется значением "готов" или "готов и приостановлен". Что касается приоритета, то по умолчанию он может быть установлен минимальным, если не поступил явный запрос на установку более высокого приоритета. Поначалу процесс может не владеть никакими ресурсами (типа устройств ввода-вывода или файлов), если не сделан явный запрос или если эти ресурсы не были переданы по наследству от родительского процесса.
4. Установить необходимые связи. Если операционная система, например, поддерживает очередь планируемых заданий в виде списка со связями, тоновый процесс необходимо поместить в список готовых или готовых приостановленных процессов.
5. Создать или расширить другие структуры данных. Операционная система может, например, поддерживать для каждого процесса файл с учетом используемых ресурсов, который позже будет использован для оценки производительности системы.
Дата добавления: 2016-06-05; просмотров: 1848;