Реферат: Планировщик и диспетчер процессов в системе разделения времени

<span Courier New"">Содержание

<span Courier New"">1 Введение … 3

<span Courier New"">2 Алгоритм

<span Courier New"; mso-ansi-language:EN-US">Round<span Courier New""> <span Courier New";mso-ansi-language: EN-US">Robin<span Courier New""> <span Courier New"">… 5

<span Courier New"">3Перепланировка процессов … 8

<span Courier New"">4Дескриптор и контекст процесса … 10

<span Courier New"">5Спецификация на разработку программного комплекса «Планировщик и диспетчерпроцессов» … 15

<span Courier New"">5.1 Общееописание … 15

<span Courier New"">5.2Основные компоненты … 15

<span Courier New"">5.3Ответственность компонентов … 16

<span Courier New"">5.4 Правилакоммуникации … 16

<span Courier New"">5.5Основные структуры данных … 16

<span Courier New"">6 Системныевызовы «Создать процесс» и «Удалить
процесс» … 18

<span Courier New"">6.1Системный вызов «Создать процесс» … 18

<span Courier New"">6.2Системный вызов «Удалить процесс» … 20

<span Courier New"">7Заключение … 22

<span Courier New"">ПриложениеА. Графические материалы … 23

<span Courier New"">Библиографическийсписок … 26

<span Courier New"; mso-fareast-font-family:«Times New Roman»;mso-ansi-language:RU;mso-fareast-language: RU;mso-bidi-language:AR-SA">

<span Courier New"">1 Введение

<span Courier New"">

<span Courier New"">1.1Когда компьютер работает в многозадачном режиме, на нем могут быть активными(находится в состоянии готовности) несколько процессов (от двух и более), пытающихсяодновременно получить доступ к одному процессору. Поэтому необходимо выбирать,какой процесс запустить следующим. Отвечающая за это часть Операционной системы(ОС) называется планировщиком, а используемый алгоритм – алгоритмом планирования.Помимо правильного выбора следующего процесса, планировщик также должензаботится об эффективном использовании процессора, поскольку переключение междупроцессами требует затрат.

<span Courier New";mso-ansi-language:EN-US">

<span Courier New"">1.2В многозадачном режиме процессы могут находиться в одном из трех основных состояний:исполнение, готовность или ожидание. Граф изменения состояний процессовпроиллюстрирован на рисунке 1.1. В состоянии исполнения может находиться толькоодин процесс. В состоянии готовности могут находиться несколько процессов. Дляоперативной выборки процессов на исполнение ОС всегда поддерживает двусвязныйсписок готовых процессов. В данном списке всегда находится хотя бы один элемент(процесс, запускаемый в случае «простаивания» системы). В состоянии ожиданиятакже могут находиться несколько процессов. Для организации ожидающих процессовтакже используются двусвязные списки. Но, в отличие от списка готовыхпроцессов, для ожидающих процессов используется один список для каждогоконкретного ресурса. Сколько разделяемых ресурсов, столько и списков заблокированныхпроцессов.

<span Courier New"">

<span Courier New"; mso-ansi-language:EN-US"> SHAPE  * MERGEFORMAT

<span Courier New"; mso-ansi-language:EN-US">

Ожидание

Исполнение

Готовность

1

2

3

4

<img src="/cache/referats/25882/image001.gif" v:shapes="_x0000_s1286 _x0000_s1287 _x0000_s1366 _x0000_s1289 _x0000_s1290 _x0000_s1291 _x0000_s1293 _x0000_s1294 _x0000_s1360 _x0000_s1361 _x0000_s1362 _x0000_s1363 _x0000_s1364 _x0000_s1365"><span Courier New"; mso-ansi-language:EN-US"><span Courier New"; mso-ansi-language:EN-US">

<span Courier New"">Рисунок 1.1– Граф изменения состояния процессов

<span Courier New"">

<span Courier New"">Нарисунке 1.1 номерами обозначены ситуации, когда происходит данный переход: 1 – планировщиквыбирает данный процесс из списка готовых процессов, 2 – квант данного процессаистек и планировщик выбирает другой процесс, 3 – процесс блокируется, ожидаявходных данных, 4 – поступили ожидаемые входные данные.

<span Courier New"; mso-fareast-font-family:«Times New Roman»;mso-ansi-language:RU;mso-fareast-language: RU;mso-bidi-language:AR-SA">

<span Courier New"">2Алгоритм

<span Courier New";mso-ansi-language:EN-US">Round<span Courier New""><span Courier New";mso-ansi-language:EN-US">Robin<span Courier New"">

<span Courier New"">

<span Courier New"">2.1Одним из наиболее старых, простых, справедливых и часто используемых алгоритмовпланирования является алгоритм циклического планирования или

<span Courier New"; mso-ansi-language:EN-US">Round<span Courier New""> <span Courier New";mso-ansi-language: EN-US">Robin<span Courier New""> (<span Courier New";mso-ansi-language:EN-US">RR<span Courier New"">). Он работаетпо следующему принципу. Каждому процессу предоставляется некоторый интервалвремени процессора (квант времени). Если к концу кванта времени процесс все ещеработает, он прерывается, а управление передается другому процессу. Еслипроцесс блокируется или прекращает работу раньше отведенного ему квантавремени, то переход управления происходит в этот момент. Алгоритм работыпроиллюстрирован на рисунке 2<span Courier New";mso-ansi-language:EN-US">.1<span Courier New"">. Так какиспользуется приоритетное планирование, то сначала из списка готовых процессоввыбирается процесс с наивысшим приоритетом. Если в списке остались толькопроцессы с одинаковым приоритетом, то выбирается самый первый. После того, какновый процесс попадает в очередь готовых процессов, он помещается в конецочереди. Когда процесс отработал свой квант или вышел из состояния блокировки,он также помещается в конец очереди.

<span Courier New"; mso-ansi-language:EN-US"> SHAPE  * MERGEFORMAT

<span Courier New"; mso-ansi-language:EN-US">

А

Е

Б

В

Г

Д

2

2

3

1

Направление обхода списка процессов

Текущий
(работающий)
процесс

Приоритет
процесса

Г

А

Б

В

Д

Е

3

2

2

1

Направление обхода списка процессов

Текущий
(работающий)
процесс

Приоритет
процесса

Следующий
выбираемый
процесс

Следующий
выбираемый
процесс

t

<img src="/cache/referats/25882/image002.gif" v:shapes="_x0000_s1295 _x0000_s1296 _x0000_s1297 _x0000_s1298 _x0000_s1299 _x0000_s1300 _x0000_s1301 _x0000_s1302 _x0000_s1303 _x0000_s1304 _x0000_s1305 _x0000_s1306 _x0000_s1307 _x0000_s1308 _x0000_s1309 _x0000_s1310 _x0000_s1311 _x0000_s1312 _x0000_s1313 _x0000_s1314 _x0000_s1315 _x0000_s1316 _x0000_s1317 _x0000_s1318 _x0000_s1319 _x0000_s1320 _x0000_s1321 _x0000_s1322 _x0000_s1323 _x0000_s1324 _x0000_s1325 _x0000_s1326 _x0000_s1327 _x0000_s1328 _x0000_s1329 _x0000_s1330 _x0000_s1331 _x0000_s1332 _x0000_s1333 _x0000_s1334 _x0000_s1335 _x0000_s1336 _x0000_s1337 _x0000_s1338 _x0000_s1339 _x0000_s1340 _x0000_s1341 _x0000_s1342 _x0000_s1343 _x0000_s1344 _x0000_s1345 _x0000_s1346 _x0000_s1347 _x0000_s1348 _x0000_s1349 _x0000_s1350 _x0000_s1351"><span Courier New"; mso-ansi-language:EN-US"><span Courier New"; mso-ansi-language:EN-US">

<span Courier New"">Рисунок 2.1– Схема работы алгоритма

<span Courier New";mso-ansi-language:EN-US">RR<span Courier New"">

<span Courier New"">Самымважным атрибутом данного алгоритма является длина кванта времени, отводимогопроцессу. Слишком малый квант времени приведет к частому переключению процессови небольшой эффективности. Слишком большой квант времени может привести кмедленному реагированию на короткие интерактивные запросы. «Значение квантавремени около 20-50 мс часто является разумным компромиссом [1].»

<span Courier New"; mso-fareast-font-family:«Times New Roman»;mso-ansi-language:RU;mso-fareast-language: RU;mso-bidi-language:AR-SA">

<span Courier New"">3Перепланировка процессов

<span Courier New"">

<span Courier New"">3.1Перепланировка — это процесс выбора следующего запускаемого процесса ипереключение на него. Перепланировка должна происходить только в строгоопределенные моменты времени. Пример выбора моментов перепланировки в ОС сотносительным приоритетом и фиксированным квантом времени представлен в таблице3.1.

<span Courier New"">

<span Courier New"">Таблица 3.1– Моменты перепланировки

<span Courier New"">№ п/п

<span Courier New"">Момент перепланировки

<span Courier New"">1

<span Courier New"">Завершение процессом своей работы (системные вызовы

<span Courier New";mso-ansi-language:EN-US">exit<span Courier New"">()<span Courier New"">, <span Courier New";mso-ansi-language:EN-US">cancel<span Courier New"">() <span Courier New"">и др.).

<span Courier New"">2

<span Courier New"">Блокирование процесса на системном вызове (операции ВВ, семафоре, в ожидании сигнала и т.д.).

<span Courier New"">3

<span Courier New"">Добровольное блокирование процесса (системный вызов

<span Courier New"; mso-ansi-language:EN-US">wait<span Courier New"">()<span Courier New"">, <span Courier New";mso-ansi-language:EN-US">sleep<span Courier New"">()<span Courier New""> и др.).

<span Courier New"">4

<span Courier New"">Истечение кванта времени, отведенного процессу.

<span Courier New"">

<span Courier New"">Этапыпереключения между процессами представлены в таблице 3.2.

<span Courier New"">

<span Courier New"">

<span Courier New"">Таблица 3.2– Этапы переключения между процессами

<span Courier New"">№ этапа

<span Courier New"">Описание этапа

<span Courier New"">1

<span Courier New"">Переключиться из режима пользователя
в режим ядра (через прерывание).

<span Courier New"">2

<span Courier New"">Сохранить контекст текущего процесса.

<span Courier New"">3

<span Courier New"">Сохранить карту памяти (биты-признаки обращения к страницам памяти) текущего процесса.

<span Courier New"">4

<span Courier New"">Запустить планировщик для выбора нового процесса.

<span Courier New"">5

<span Courier New"">Загрузить контекст нового процесса.

<span Courier New"">6

<span Courier New"">Загрузить карту памяти нового процесса
в блок управления памятью.

<span Courier New"">7

<span Courier New"">Запустить новый процесс.

<span Courier New"; mso-fareast-font-family:«Times New Roman»;mso-ansi-language:RU;mso-fareast-language: RU;mso-bidi-language:AR-SA">

<span Courier New"">4Дескриптор и контекст процесса

<span Courier New"">

<span Courier New"">4.1Для обеспечения многозадачности в ОС используется таблица процессов (список), вкоторой находятся указатели на дескрипторы процессов. Дескрипторы содержатстатическую информацию о процессе. Кроме этого в ОС также используетсядинамическая информация о текущем (работающем) процессе. Совокупность этойинформации называется контекстом процесса. Примеры дескриптора и контекстапроцесса представлены в таблицах 4.1 и 4.2 соответственно.

<span Courier New"">

<span Courier New"">Таблица 4.1 – Дескриптор процесса

<span Courier New"">Название
поля

<span Courier New"">Описание

<span Courier New"">Диапазон
допустимых
значений

<span Courier New"">Идентификатор процесса

<span Courier New"">Число, однозначно идентифи­цирующее процесс в ОС.
В системе не должно быть процессов с одинаковыми идентификаторами.

<span Courier New"">0 — 216

<span Courier New"">Оставшийся квант времени

<span Courier New"">Назначается ОС при создании процесса. С каждым прерыванием от таймера данное значение уменьшается на едини­ цу (у активного процесса).

<span Courier New"">0 — 255

<span Courier New"">Продолжение таблицы 4.1

<span Courier New"">Название
поля

<span Courier New"">Описание

<span Courier New"">Диапазон допустимых значений

<span Courier New"">

<span Courier New"">Когда значение достигнет 0, процесс переносится в конец очереди готовых процессов.

<span Courier New"">

<span Courier New"">Приоритет процесса

<span Courier New"">Условное значение, по которому планировщик определяет, какой процесс выбрать на обслуживание. От 0 до 4 – приоритеты, назначаемые ядром ОС для своих нужд. От 5 до 9 – приоритеты, назначаемые пользователем для своих нужд. 0 – самый высокий приоритет, 9 – самый низкий приоритет.

<span Courier New"">0 — 9

<span Courier New"">Базовый адрес контекста процесса

<span Courier New"">Содержимое регистра

<span Courier New";mso-ansi-language:EN-US">TR<span Courier New""> (содержит селектор дескриптора в <span Courier New";mso-ansi-language:EN-US">GDT<span Courier New"">). Команда <span Courier New";mso-ansi-language:EN-US">LTR<span Courier New""> загружает регистр <span Courier New"; mso-ansi-language:EN-US">TR<span Courier New"">. Кроме загрузки непосредственно селектора, процессор автоматически загружает базовый адрес, лимит и атрибуты из дескриптора, находящегося в <span Courier New";mso-ansi-language:EN-US">GDT<span Courier New"">. Команда <span Courier New";mso-ansi-language:EN-US">STR<span Courier New""> <span Courier New"">сохраняет содержимое регистра <span Courier New";mso-ansi-language:EN-US">TR<span Courier New""> в РОН или ОЗУ.

<span Courier New"">0 — 216

<span Courier New"; mso-fareast-font-family:«Times New Roman»;mso-ansi-language:RU;mso-fareast-language: RU;mso-bidi-language:AR-SA">

<span Courier New"">Продолжениетаблицы 4.1

<span Courier New"">Название
поля

<span Courier New"">Описание

<span Courier New"">Диапазон допустимых значений

<span Courier New"">Информация о ресурсах

<span Courier New"">Список, содержащий информацию об открытых файлах, программных каналах, именованных каналах, общих областях ОП и т.д.

<span Courier New"">0 — 216

<span Courier New"">Идентификатор родительского процесса

<span Courier New"">Для ускоренной работы системного вызова

<span Courier New";mso-ansi-language:EN-US">getppid<span Courier New"">()<span Courier New"">.

<span Courier New"">0 — 216

<span Courier New"">Список идентификаторов процессов-потомков

<span Courier New"">Для ускоренной работы системного вызова

<span Courier New";mso-ansi-language:EN-US">wait<span Courier New"">()<span Courier New"">.

<span Courier New"">0 — 216

<span Courier New"">Идентификатор пользователя

<span Courier New"">Для обеспечения многопользовательского режима.

<span Courier New"">0 — 216

<span Courier New"">

<span Courier New"; mso-fareast-font-family:«Times New Roman»;mso-ansi-language:RU;mso-fareast-language: RU;mso-bidi-language:AR-SA">

<span Courier New"">Таблица 4.2 – Контекст процесса

<span Courier New"">Название
поля

<span Courier New"">Описание

<span Courier New"">Диапазон
допустимых
значений

<span Courier New"">РОН

<span Courier New"">Содержимое всех регистры общего назначения.

<span Courier New";mso-ansi-language:EN-US">EAX<span Courier New"">, <span Courier New"; mso-ansi-language:EN-US">EBX<span Courier New"">, <span Courier New";mso-ansi-language:EN-US">ECX<span Courier New"">, <span Courier New"; mso-ansi-language:EN-US">EDX<span Courier New"">. Данное поле должно интерпретироваться как 4 подряд сохраненных 4-байтных значений.

<span Courier New"">4 * (

<span Courier New"; mso-ansi-language:EN-US">0 – 232<span Courier New"">)

<span Courier New"">Селекторы

<span Courier New"">Селектор кодового сегмента (

<span Courier New";mso-ansi-language:EN-US">CS<span Courier New"">), селектор сегмента данных (<span Courier New";mso-ansi-language:EN-US">DS<span Courier New"">), селектор сегмента стека (<span Courier New";mso-ansi-language:EN-US">SS<span Courier New"">) и селекторы  <span Courier New";mso-ansi-language:EN-US">ES<span Courier New"">, <span Courier New"; mso-ansi-language:EN-US">FS<span Courier New"">, <span Courier New";mso-ansi-language:EN-US">GS<span Courier New""> <span Courier New"">дескрипторов в <span Courier New";mso-ansi-language:EN-US">LDT<span Courier New"">. Данное поле должно интерпретироваться как 6 подряд идущих 2-байтных значений.

<span Courier New"">6 * (0 – 216)

<span Courier New"">Регистры
смещений

<span Courier New"">Содержимое всех регистров смещений.

<span Courier New";mso-ansi-language:EN-US">EIP<span Courier New"">, <span Courier New"; mso-ansi-language:EN-US">ESP<span Courier New"">, <span Courier New";mso-ansi-language:EN-US">EBP<span Courier New"">, <span Courier New"; mso-ansi-language:EN-US">ESI<span Courier New""> <span Courier New"">и <span Courier New"; mso-ansi-language:EN-US">EDI<span Courier New"">. 5 подряд идущих 4-байтных значений.

<span Courier New"">5 * (0 – 232)

<span Courier New"">Регистр флагов

<span Courier New"">Содержимое регистра

<span Courier New";mso-ansi-language:EN-US">EFLAGS<span Courier New"">.

<span Courier New"">0 — 232

<span Times New Roman",«serif»; mso-fareast-font-family:«Times New Roman»;mso-ansi-language:RU;mso-fareast-language: RU;mso-bidi-language:AR-SA">

<span Courier New"">Продолжение таблицы 4.2

<span Courier New"">Название
поля

<span Courier New"">Описание

<span Courier New"">Диапазон
допустимых
значений

<span Courier New"">Регистр

<span Courier New"; mso-ansi-language:EN-US">LDTR<span Courier New"">

<span Courier New"">Селектор дескриптора

<span Courier New";mso-ansi-language:EN-US">LDT<span Courier New""> в <span Courier New"; mso-ansi-language:EN-US">GDT<span Courier New"">.

<span Courier New"">0 — 247

<span Courier New"">Регистр

<span Courier New"; mso-ansi-language:EN-US">CR<span Courier New"">3

<span Courier New"">Содержимое регистра, содержащего базовый адрес каталога страниц.

<span Courier New"">0 — 232

<span Courier New"">Базовый адрес битового массива разрешенных операций ввода/вывода

<span Courier New"">Используется для ограничения доступа процесса к определенным портам ВВ. 0 – доступ к порту запрещен, 1 – доступ к порту разрешен.

<span Courier New"">0 — 255

<span Courier New"; mso-fareast-font-family:«Times New Roman»;mso-ansi-language:RU;mso-fareast-language: RU;mso-bidi-language:AR-SA">

<span Courier New"">5 Спецификацияна разработку программного
компонента «Планировщик и диспетчер процессов (ПИДП)»

<span Courier New"">

<span Courier New"">5.1Общее описание

<span Courier New"">

<span Courier New"">5.1.1ПИДП – это программный комплекс, который вызывается, когда требуется любоедействие, связанное с администрированием процессов в системе (создание/удалениепроцесса, перенос процесса из очереди заблокированных в очередь готовых и т.д.).Данная программа должна максимально быстро выполнять свои действия, так как онавызывается достаточно часто.

<span Courier New"">

<span Courier New"">5.2Основные компоненты

<span Courier New"">

<span Courier New"">5.2.1Планировщик – часть комплекса ПИДП, предназначенная для принятия решения  о выборе следующего процесса на исполнение ипереноса процессов между очередями.

<span Courier New"">5.2.2Диспетчер – это часть программного комплекса ПИДП, предназначенная дляреализации решения, выбранного планировщиком.

<span Courier New"">5.3Ответственность компонентов

<span Courier New"">

<span Courier New"">5.3.1Сначала происходит поиск решения, а потом его реализация, то есть сначала вызываетсяпланировщик, а потом уже диспетчер. Также может вызываться только планировщик,а диспетчер – нет (например, когда требуется просто перенести процесс изочереди заблокированных процессов в очередь готовых, если он получил данные отВУ). Алгоритмы работы планировщика и диспетчера процессов представлены вприложении А.

<span Courier New"">

<span Courier New"">5.4Правила коммуникации

<span Courier New"">

<span Courier New"">5.4.1Функции, обеспечивающие планировку процессов, обмениваются указателями надескрипторы процессов. Функция, обеспечивающая переключение контекста, работаетс указателями на контексты процессов.

<span Courier New"">

<span Courier New"">5.5Основные структуры данных

<span Courier New"">

<span Courier New"">5.5.1Дескриптор (представлен в таблице 4.1), контекст (представлен в таблице 4.2),список готовых процессов (организован по принципу алгоритма

<span Courier New"; mso-ansi-language:EN-US">RR<span Courier New""> с относительными приоритетами), список заблокированныхпроцессов (организован по принципу список списков, то есть внутри списказаблокированных процессов находятся списки процессов, ожидающих ответ от НЖМД,ожидающих ответ от НГМД, ожидающих определенный семафор, ожидающих определеннуюочередь сообщений, ожидающих определенного сигнала и т.д.).

<span Courier New"">5.5.2Указатель на начало списка готовых процессов, указатель на конец списка готовыхпроцессов.

<span Courier New"">5.5.3Указатель на структуру-описатель списка списков заблокированных процессов.Данная структура хранит в себе информацию о начале и конце каждой очереди. Вслучае появления нового устройства в системе необходимо только создать новуюочередь и добавить информацию об ее начале и конце в данную структуру.

<span Courier New"; mso-fareast-font-family:«Times New Roman»;mso-ansi-language:RU;mso-fareast-language: RU;mso-bidi-language:AR-SA">

<span Courier New"">6 Системныевызовы «Создать процесс» и «Удалить процесс»

<span Courier New"">

<span Courier New"">6.1Системный вызов «Создать процесс»

<span Courier New"">

<span Courier New"">Системныйвозов «Создать процесс» служит для создания почти полной копии родительскогопроцесса (процесса, в котором был инициирован системный вызов). Для созданияпочти полной копии вызывающего процесса ОС должна скопировать некоторые данныеиз процесса-родителя в процесс-потомок. Выполнение процессов разделяется последанного системного вызова. Имя системного вызова вызова:

<span Courier New"; mso-ansi-language:EN-US">creat<span Courier New"">_<span Courier New";mso-ansi-language:EN-US">proc<span Courier New"">. Входныеданные: отсутствуют. Выходные данные: идентификатор процесса. Сам системныйвызов реализован в ядре ОС, к которому обращается программа-заглушка всистемной библиотеке (через прерывание). Перечень действий, совершаемым ядромОС, представлен в таблице 6.1.

<span Courier New"">

<span Courier New"; mso-fareast-font-family:«Times New Roman»;mso-ansi-language:RU;mso-fareast-language: RU;mso-bidi-language:AR-SA">

<span Courier New"">Таблица 6.1 – Системный вызов«Создать процесс»

<span Courier New"">№ этапа

<span Courier New"">Описание этапа

<span Courier New";mso-ansi-language:EN-US">

<span Courier New"">1

<span Courier New"">Проверить возможность создания нового процесса (кол-во процессов < 65535).

<span Courier New"">2

<span Courier New"">Выделить память в области ОС для дескриптора процесса.

<span Courier New"">3

<span Courier New"">Создать дескриптор для нового процесса.

<span Courier New"">4

<span Courier New"">Назначить новому процессу идентификатор

<span Courier New";mso-ansi-language:EN-US">.

<span Courier New"">5

<span Courier New"">Записать в поле «Идентификатор родительского процесса» идентификатор процесса-родителя.

<span Courier New"">6

<span Courier New"">Скопировать содержимое полей (приоритет, информация о ресурсах и идентификатор пользователя, запустившего процесс) дескриптора процесса-родителя.

<span Courier New"">7

<span Courier New"">Выделить память в области пользователя для процесса.

<span Courier New"">8

<span Courier New"">Выделить память в области ОС для контекста процесса.

<span Courier New"">9

<span Courier New"">Настроить содержимое контекста нового процесса.

<span Courier New"">10

<span Courier New"">Полностью скопировать образ памяти из процесса-родителя.

<span Courier New"">11

<span Courier New"">Обновить информацию у процесса-родителя о потомках.

<span Courier New"">12

<span Courier New"">Добавить указатель о новом процессе список готовых процессов.

<span Courier New"">

<span Courier New"">6.2Системный вызов «Удалить процесс»

<span Courier New"">

<span Courier New"">Системныйвызов «Удалить процесс» служит для удаления уже существующего процесса. Причемудаление совершается самим ядром в принудительном порядке. Имя системноговызова:

<span Courier New";mso-ansi-language:EN-US">kill<span Courier New"">_<span Courier New"; mso-ansi-language:EN-US">proc<span Courier New"">. Входные данные: идентификатор процесса. Выходныеданные: отсутствуют. Сам системный вызов реализован в ядре ОС, к которомуобращается программа-заглушка в системной библиотеке (через прерывание). Такжепрограмма-заглушка проверяет допустимость входного параметра. То есть идентификаторпроцесса должен быть беззнаковым 2-байтным целым числом. Перечень действий,совершаемым ядром ОС, представлен в таблице 6.2.

<span Courier New"">

<span Courier New"">Таблица 6.2– Системный вызов «Удалить процесс»

<span Courier New"">№ этапа

<span Courier New"">Описание этапа

<span Courier New"">1

<span Courier New"">Проверить существование данного идентификатора в таблице процессов.

<span Courier New"">2

<span Courier New"">Удалить информацию о текущем процессе из процесса-родителя.

<span Times New Roman",«serif»; mso-fareast-font-family:«Times New Roman»;mso-ansi-language:RU;mso-fareast-language: RU;mso-bidi-language:AR-SA">

<span Courier New"">Продолжение таблицы 6.2

<span Courier New"">№ этапа

<span Courier New"">Описание этапа

<span Courier New"">3

<span Courier New"">Удалить из всех очередей указатель на дескриптор текущего процесса.

<span Courier New"">4

<span Courier New"">Освободить память от дескриптора, контекста и ОП уровня пользователя текущего процесса.

<span Courier New"">5

<span Courier New"">Вызвать планировщик.

<span Courier New";mso-ansi-language:EN-US"> <span Courier New"; mso-fareast-font-family:«Times New Roman»;mso-ansi-language:RU;mso-fareast-language: RU;mso-bidi-language:AR-SA">

<span Courier New"">7Заключение

<span Courier New"">

<span Courier New"">7.1В данном проекте была рассмотрена разработка программно-аппаратного комплекса«Планировщик и диспетчер процессов в системе разделения времени» с алгоритмомпланирования

<span Courier New";mso-ansi-language:EN-US">RR<span Courier New""> иотносительным приоритетом, а также некоторые системные вызовы. Проект показал,что программу планировщик надо разрабатывать очень тщательно, так как онаявляется основой любой многозадачной ОС. В итоге получилось, что для нормальнойработы планировщика и диспетчера процессов необходимо иметь в области ОП ОС какминимум дескриптор и контекст для каждого процесса, список готовых изаблокированных процессов. Также выяснилось, что переключение процессов – этодлительная операция, так как приходится переключаться из режима пользователя врежим ядра, запускать процесс планировки, потом диспетчеризации, а потом сновапереключаться обратно, на уровень пользователя. Системные вызовы создания иудаления процесса также требуют времени на обработку, так как им тоже нужноманипулировать данными в области ОЗУ ОС, для чего требуется также переключатьсяна уровень ядра.<span Courier New";mso-fareast-font-family: «Times New Roman»;mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language: AR-SA">

<span Courier New"">Приложение А

<span Courier New"">Графические материалы

<span Courier New"">

<span Courier New""> SHAPE * MERGEFORMAT

<span Courier New"">

Начало

Конец

Выбрать первый элемент из списка в качестве максимального (по приоритету). Указатель на текущий элемент равен указателю на голову списка

Сдвинуть указатель текущего элемента на следующий элемент

Указатель на текущий элемент равен указателю на хвост списка

Нет

Да

Настроить указатель головы на максимальный элемент

Приоритет следующего элемента больше приоритета текущего элемента

Выбрать следующий элемент в качестве максимального элемента

Да

Нет

<img src="/cache/referats/25882/image003.gif" v:shapes="_x0000_s1125 _x0000_s1126 _x0000_s1406 _x0000_s1128 _x0000_s1129 _x0000_s1130 _x0000_s1131 _x0000_s1132 _x0000_s1133 _x0000_s1134 _x0000_s1146 _x0000_s1147 _x0000_s1148 _x0000_s1149 _x0000_s1150 _x0000_s1151 _x0000_s1152 _x0000_s1153 _x0000_s1154 _x0000_s1155 _x0000_s1159 _x0000_s1223 _x0000_s1224 _x0000_s1390 _x0000_s1391 _x0000_s1392 _x0000_s1393 _x0000_s1394 _x0000_s1395 _x0000_s1398 _x0000_s1399 _x0000_s1400 _x0000_s1401"><span Courier New""><span Courier New"">

<span Courier New"">Рисунок А.1 – Блок-схемаалгоритма работы планировщика
с очередью готовых процессов

<span Courier New""> SHAPE * MERGEFORMAT

<span Courier New"">

Начало

Конец

Выбрать из параметров вызова нужную очередь заблокированных процессов

Настроить указатель головы на первый элемент списка

<img src="/cache/referats/25882/image004.gif" v:shapes="_x0000_s1227 _x0000_s1226 _x0000_s1407 _x0000_s1249 _x0000_s1232 _x0000_s1251 _x0000_s1230 _x0000_s1231 _x0000_s1250 _x0000_s1403"><span Courier New""><span Courier New"">

<span Courier New"">

<span Courier New"">Рисунок А.2 – Блок-схемаалгоритма работы планировщика
с очередью заблокированных процессов

<span Courier New"">

<span Courier New"; mso-ansi-language:EN-US"> SHAPE  * MERGEFORMAT

<span Courier New"; mso-ansi-language:EN-US">

Начало

Если планировщик вызван по прерыванию или системному вызову, связанному с разделяемым ресурсом, то запустить функцию работы с очередью заблокированных процессов

Если требуется планирование, то запустить функцию работы с очередью готовых процессов

Если требуется диспетчеризация процессов, то запустить диспетчер

Конец

<img src="/cache/referats/25882/image005.gif" v:shapes="_x0000_s1254 _x0000_s1253 _x0000_s1408 _x0000_s1257 _x0000_s1259 _x0000_s1260 _x0000_s1261 _x0000_s1262 _x0000_s1263 _x0000_s1264 _x0000_s1266 _x0000_s1258"><span Courier New"; mso-ansi-language:EN-US"><span Courier New"; mso-ansi-language:EN-US">

<span Courier New"">Рисунок А.3– Блок-схема алгоритма работы планировщика

<span Courier New"">

<span Courier New""> SHAPE * MERGEFORMAT

<span Courier New"">

Начало

Конец

Сохранить контекст текущей задачи

Загрузить контекст новой
задачи

<img src="/cache/referats/25882/image006.gif" v:shapes="_x0000_s1136 _x0000_s1137 _x0000_s1161 _x0000_s1139 _x0000_s1140 _x0000_s1141 _x0000_s1142 _x0000_s1143 _x0000_s1144 _x0000_s1145"><span Courier New""><span Courier New"">

<span Courier New"">Рисунок А.4– Блок-схема алгоритма диспетчеризации

<span Courier New"">

<span Courier New""><s

еще рефераты
Еще работы по программному обеспечению