Викигимназијалац:Оперативни системи/Контролни блок процеса
Да би оперативни системи били у могућности да воде прецизну евиденцију о процесима, обично се користе структуре података које чувају информације о сваком покренутом процесу. Ова динамичка структура се назива Контролни блок процеса и садржи најзначајније податке који омогућавају идентификацију и управљање процесима. Никад се не налази у истом меморијском подручију као и процес. Због података у контролном блоку процес се може прекидати и настављати више пута.
У већини имплементација оперативних система контролни блок процеса садржи следеће информације о процесима:
- Јединствени идентификатор процеса (Process ID – PID) – број који процес добија у тренутку покретања. Сви процеси на једном систему имају различите PID-ове, чиме је систему омогућено да их разликује на крајње једноставан начин.
- Стање процеса – информација о тренутном стању у којем се процес налази. На пример, процес се може наћи у неком од стања која су дефинисана у претходном тексту: Спреман, Извршавање, Чекање, Суспендован и спреман итд.
- Програмски бројач – чува информацију о следећој инструкцији коју процес треба да изврши.
- Садржај регистара процесора – вредности које се налазе у регистрима како би процес после губитка права да користи процесор могао да настави са радом тамо где је заустављен.
- Приоритет процеса – информација о важности процеса у односу на остале процесе у систему.
- Адреса меморије где се налази процес – показивачи на адресе у меморији где се налазе сегменти процеса.
- Адресе заузетих ресурса – како би оперативни систем имао информацију о томе на којим локацијама треба да тражи потребне податке.
Поља које чине контролни блок се могу сврстати у оне које се односе на:
- Процесе;
- Меморију;
- Фајлове.
Оперативни системи обезбеђују ефикасне механизме за манипулацију контролним блоковима процеса како би се реализовали следећи задаци:
- Креирање контролног блока за нови процес;
- Уништавање контролног блока процеса који се извршио;
- Мењање стања процеса;
- Мењање приоритета процеса;
- Избор процеса за извршавање.
Пребацивање контекста представља поступак којим се процес који се тренутно извршава на процесору прекида, памте његови параметри, а затим се уместо њега покреће неки други процес и при томе се учитавају параметри другог процеса.
Процес P0 је у стању извршавања, али би требало да се прекине и да процес P1 крене да се извршава. Прво се стање P0 уписује у одговарајући контролни блок, затим се учитава контролни блок новог процеса и он може да настави са извршавањем. Програмски бројач процеса P1 дохвата следећу инструкцију и он почиње да се извршава. Када се, из неког разлога донесе одлука да постоји потреба да се P1 прекине, а процес P0 настави са извршавањем, уписују се подаци о извршавању P1 у његов контролни блок, а учитавају се подаци процеса P0.
Модул који је одговоран да извршава пребацивање контекста често се назива диспечер (Dispatcher). Он је задужен за пуњење регистара процеса, пребацивање у кориснички режим рада и скок на одговарајућу локацију у корисничком програму како би се он наставио.