Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
spz / шпори.doc
Скачиваний:
100
Добавлен:
23.02.2016
Размер:
1.56 Mб
Скачать

Реалізація поняття послідовного процессу в ос.

Для того щоб ОП могла керувати процесом вона повинна володіти всією необхідною інформацією про процес, тому на кожний процес заводиться дескриптор процесу і цей дескриптор процесу містить наступну інформацію:

  1. Ідентифікатор процесу (proces ID)

  2. Тип процесу який визначає для супервізора деякі правила надання ресурсу

  3. Пріоритет процесу

  4. Змінна стану ( 2 основних «Активний та Пасивний» Стан виконання, Стан очікування, Стан бездіяльності)

  5. Захищену область пам’яті в якій зберігається контекст задачі.

Контекст задачі це поточні значення регістрів процесора якщо процес перервався не закінчивши роботу.

  1. Інформація про ресурси якими процес володіє або має право користуватися.

  • Вказівники на відкриті файли

  • Інформація про не закінчені операції введення/виведення та ін..

7) Місце адреса обміну повідомленнями між процесорами

8) Пераметри часу запуску, тобто момент часу коли процес активується

9) У випадку відсутності адреси задачі на диску якшо її витісняє інша.

Threads=1024

Для апаратної підтримки ОС з дескрипторами задач в процесорі можуть бути реалізовані відповідні механізми TSS на сегмент задач. Таким чином рушійною силою яка міняє стан процесів є події, один з видів подій це переривання.

Процеси і треди. (немає) Блок керування процесом.

Для того, щоби ОС могла керувати процесами, вона повинна володіти всією необхідною інформацією. Для цього для кожного процесу створюється спеціальна інформаційна структура, яка називається – блоком керування процесом (Program Control Block, PCB), або дескриптором процесу, або описувачем задачі. В загальному випадку РСВ вміщує таку інформацію:

1. Ідентифікатор процесу (PID – process identifier).

2. Тип (або клас) процесу, який визначає для ОС деякі правила надання ресурсів.

3. Пріоритет процесу, відповідно до якого ОС надає ресурси. В рамках одного класу процесів у першу чергу обслуговуються процеси з вищим пріоритетом.

4. Змінну стану, яка визначає, в якому стані знаходиться процес (стані готовності, стані виконання, стані блокування).

5. Адресу захищеної ділянки пам’яті, в якій зберігаються біжучі значення регістрів процесора, якщо процес призупиняється (або переривається) не завершивши роботи. Ця інформація називається контекстом задачі.

6. Інформація про ресурси, якими володіє процес або має право користуватись.

7. Адреса місця для організації спілкування з іншими процесами.

8. Параметри часу запуску (момент часу, коли процес повинен активізуватись та періодичність цієї процедури).

9. Для диск–резидентних задач, які постійно знаходяться у зовнішній пам’яті і завантажуються в основну пам’ять тільки на час виконання зберігається адреса задачі на диску в її вихідному стані.

РСВ, як правило, з метою пришвидшення роботи ОС постійно розташовані в основній пам’яті. ОС організовує їх у черги, в залежності від змінної стану переносить процеси з черги в чергу. Для кожного стану ОС підтримує список процесів, що знаходяться в цьому стані.

Таким чином, РСВ – це об’єкт, який визначає процес для ОС.

Процеси в ос unix.

Процес в ОС UNIX — це програма, виконувана у власному віртуальному адресному просторі. Коли користувач входить у систему, автоматично створюється процес, у якому виконується програма командного інтерпретатора. Якщо командному інтерпретаторові зустрічається команда, що відповідає виконуваному файлу, то він створює новий процес і запускає в ньому відповідну програму, починаючи з функції main. Ця запущена програма, у свою чергу, може створити процес і запустити в ньому іншу програму (вона теж повинна містити функцію main) і т. д.

Для утворення нового процесу й запуску в ньому програми використаються два системних виклики (примітива ядра ОС UNI) — fork() і exec (ім'я-виконуван-файлу). Системний виклик fork приводить до створення нового адресного простору, стан якого абсолютно ідентично стану адресного простору основного процесу (тобто в ньому втримуються ті ж програми й дані).

Інакше кажучи, відразу після виконання системного виклику fork основний і породжений процеси є абсолютними близнюками; керування й у тім, і в іншому перебуває в крапці, що безпосередньо випливає за викликом fork. Щоб програма могла розібратися, у якому процесі вона тепер працює — в основна або породженому, функція fork повертає різні значення: 0 у породженому процесі й ціле позитивне число (ідентифікатор породженого процесу) в основному процесі.

Тепер, якщо ми хочемо запустити нову програму в породженому процесі, потрібно звернутися до системного виклику exec, указавши як аргументи виклику ім'я файлу, що містить нову виконувану програму, і, можливо, одну або кілька текстових рядків, які будуть передані як аргументи функції main нової програми. Виконання системного виклику exec приводить до того, що в адресний простір породженого процесу завантажується нова виконувана програма й із із адреси, що відповідає входу у функцію main.

У наступному прикладі користувальницька програма, викликувана як команда shell, виконує в окремому процесі стандартну команду shell ls, що видає на екран уміст поточного каталогу файлів:

Соседние файлы в папке spz