Реферат: Планировщик и диспетчер процессов в системе разделения времени
Таблица 6.1 – Системный вызов «Создать процесс»
№ этапа | Описание этапа |
1 | Проверить возможность создания нового процесса (кол-во процессов < 65535). |
2 | Выделить память в области ОС для дескриптора процесса. |
3 | Создать дескриптор для нового процесса. |
4 | Назначить новому процессу идентификатор. |
5 | Записать в поле «Идентификатор родительского процесса» идентификатор процесса-родителя. |
6 | Скопировать содержимое полей (приоритет, информация о ресурсах и идентификатор пользователя, запустившего процесс) дескриптора процесса-родителя. |
7 | Выделить память в области пользователя для процесса. |
8 | Выделить память в области ОС для контекста процесса. |
9 | Настроить содержимое контекста нового процесса. |
10 | Полностью скопировать образ памяти из процесса-родителя. |
11 | Обновить информацию у процесса-родителя о потомках. |
12 | Добавить указатель о новом процессе список готовых процессов. |
6.2 Системный вызов «Удалить процесс»
Системный вызов «Удалить процесс» служит для удаления уже существующего процесса. Причем удаление совершается самим ядром в принудительном порядке. Имя системного вызова: kill_proc. Входные данные: идентификатор процесса. Выходные данные: отсутствуют. Сам системный вызов реализован в ядре ОС, к которому обращается программа-заглушка в системной библиотеке (через прерывание). Также программа-заглушка проверяет допустимость входного параметра. То есть идентификатор процесса должен быть беззнаковым 2-байтным целым числом. Перечень действий, совершаемым ядром ОС, представлен в таблице 6.2.
Таблица 6.2 – Системный вызов «Удалить процесс»
№ этапа | Описание этапа | ||
1 | Проверить существование данного идентификатора в таблице процессов. | ||
2 | Удалить информацию о текущем процессе из процесса-родителя. | ||
№ этапа | Описание этапа | ||
3 | Удалить из всех очередей указатель на дескриптор текущего процесса. | ||
4 | Освободить память от дескриптора, контекста и ОП уровня пользователя текущего процесса. | ||
5 | Вызвать планировщик. |
7 Заключение
7.1 В данном проекте была рассмотрена разработка программно-аппаратного комплекса «Планировщик и диспетчер процессов в системе разделения времени» с алгоритмом планирования RR и относительным приоритетом, а также некоторые системные вызовы. Проект показал, что программу планировщик надо разрабатывать очень тщательно, так как она является основой любой многозадачной ОС. В итоге получилось, что для нормальной работы планировщика и диспетчера процессов необходимо иметь в области ОП ОС как минимум дескриптор и контекст для каждого процесса, список готовых и заблокированных процессов. Также выяснилось, что переключение процессов – это длительная операция, так как приходится переключаться из режима пользователя в режим ядра, запускать процесс планировки, потом диспетчеризации, а потом снова переключаться обратно, на уровень пользователя. Системные вызовы создания и удаления процесса также требуют времени на обработку, так как им тоже нужно манипулировать данными в области ОЗУ ОС, для чего требуется также переключаться на уровень ядра.
Приложение А
Графические материалы
Рисунок А.1 – Блок-схема алгоритма работы планировщика
с очередью готовых процессов
Рисунок А.2 – Блок-схема алгоритма работы планировщика
с очередью заблокированных процессов
Рисунок А.3 – Блок-схема алгоритма работы планировщика
Рисунок А.4 – Блок-схема алгоритма диспетчеризации
Рисунок А.5 – Структурно-функциональная схема
планировщика и диспетчера процессов
Список литературы
Таненбаум Э.С. Современные операционные системы. 2-е изд. – М.: ПИТЕР, 2006.
Embedded X86 Programming: Protected Mode by Jean Gareau
Руководство по процессору Intel i80486.
http://www.brokensword.narod.ru/
http://asmdev.narod.ru/asmos/asmos.html
http://lowlevel.ru/
http://xkernel.excode.ru/
Исходный код ядра ОС Linux версии 0.01
http://www.citforum.ru/operating_systems/bach/contents.shtml