44
марказий процессордан (ўз буйруқларини бажариш учун) фойдаланаётган бўлса, жараён
тўхтатилган (блокировка қилинган) дейилади, агар унинг бажарилиши маълум бир шарт
бажарилгандан кейингина давом эттирилиши мумкин бўлса.
Тўхтатилмаган ва
актив
бўлмаган жараёнга
тайёр ҳолдаги жараён дейилади. Қуйидаги расмда бир ҳолатдан
иккинчи ҳолатга ўтиш кўрсатилган:
Ҳар қандай вақт моментида битта жараён актив бўлади. Операцион тизим
бошқарувини фойдаланувчи жараёнига узатганда интервал таймерини ўрнатади
(аниқлайди). Шу орқали топшириқ учун марказий
процессордан фойдаланишга
ажратилган максимал вақтни-
вақт квантини аниқлайди. Бу вақт тугаши билан жараён
актив ҳолатдан тайёр ҳолатга ўтади. Кейин ОС режалаштириш стратегиясига кўра
навбатдаги жараённи танлайди (тайёр ҳолатдаги) ва уни актив ҳолатга ўтказиб, унга
бошқарувни узатади. ОСнинг функциясига
диспетчирлик дейилади. Шундай бўлиши
мумкинки, жараён ўзига ажратилган максимал вақтдан тўлиқ фойдаланмаган
(ишлатмаган ) ҳолда қандайдир шарт бажарилишини кутиш мумкин, бунда жараён тўхташ
ҳолатига ўтказилади ва қандайдир бошқа жараён активлашади. Кутилган ҳолат
юзага
келганда тўхтатилган жараён активлашишига даъвогар бўлиши мумкин. Бир жараён
тугагунча бир неча марта
актив-
тўхтатилган-тайёр ҳолатларда бўлиши мумкин. Бу
ҳолатлар ҳисоблаш натижасига таъсир қилмаслиги учун унинг ҳолати сақлаб қ
олиниши
керак. ОСда ҳар бир жараённинг ҳолати Жараён ҳолати блокида (PSB) сақланади. Унда
жараён қайси ҳолатда бўлганлиги, машина регистрларини сақлаш адреси ва бошқа
маълумотлар сақланади (PC ва SW қийматлари).
PSB учун зарур маълумотларни ОТ қуйидагилардан олиши мумкин:
•
Вақт кванти бўйича маълумотни таймер бўйича узилиш соҳасидан;
•
Бошқарув узатилган жараён ҳақидаги маълумотни SW узилиш
соҳасидан олади.
Диспетчирликда фойдалниладиган алгоритмнинг умумий кўриниши :
Procedure Dispatch;
Актив жараён PSBси янгилансин (актив жараён бўлса);
Навбатдаги тайёр жараён танлансин ва унга бошқарув узатилсин;
If таймер жараён топилган бўлса then
Begin
Танланган жараён Актив деб белгилансин;
STI буйруғи билан вақт кванти ўрнатилсин;
LPS буйруғи билан танланган жараёнга бошқарув узатилсин;
end
else
45
LPS буйруғи билан марказий процессор бўш ҳолатига келтирилсин.
Бошқарув бир жараёндан иккинчисига узатилганда, шу жараённинг қандай сабаб
билан тўхтатилганлигига қараб PSB учун зарур маълумотларни қуйидагилардан олиниши
мумкин: вақт кванти тугаган жараёнлар маълумотини таймер бўйича узилиш соҳасидан,
бошқарувни берган жараён ҳақида маълумот SVC- узилиш соҳасидан олинади.
Навбатдаги жараённи бир нечта усулда амалга ошириш мумкин:
•
Барча жараёнлар бир қийматли (баҳоли) деб ҳисобланади ва циклик танлаш
орқали барча PSB қаралади, улар ичидан тайёри танланади. Барча
жараёнларга бир хил вақт кванти берилади.
•
Жараёнлар фойдаланувчи ёки ОТ томонидан берилган приоритетлар
(имтиёзлар) асосида танланади.
Актив жараён кутиш нуқтасига етиб келганда бу ҳақда ОСга хизмат учун сўров –
WAIT ёрдамида хабар беради (SVC 0). Жараён кутаётган ҳолат
учун юзага келганлиги
ҳақидаги хабар ОСга
SIGNAL сўрови (SVC 1) орқали берилади.
Procedure WAIT (ESB)
If ESBFLAG қ1 then
{ҳолат рўй беради}
LPS
буйруғи ёрдамида бошқарув сўраётган жараёнга қайтарилсин
Else
Begin
Сўраётган жараёнини тўхтатилган деб белгилаш
Жараённи ESBQUE га киритиш
DISPATCH
END;
Procedure SIGNAL (ESB)
ESBFLAG:қ1
{ҳолат рўй беради}
For ESBQUE
даги ҳар бир жараён
учун DO
Begin
Жараённи тайёр деб белгилаш;
Жараённи ESBQUE дан ўчириш
End
Бошқарувни сўраган жараёнга LPS ёрдамида қайтариш.
Бу ерда ESB (ҳолатни аниқлаш блоки) кутилаётганлиги ёки рўй бериш ҳақида
хабар берилган ҳолат блокининг адреси. ESBFLAG-
бит байроғига эга бўлиб мос ҳолат
рўй берган ёки йўқлигини билдиради. Бундан ташқари ESB да ESBQUE – бу ҳолатларни
кутаётган жараёнлар рўйхатига кўрсатгич бўлади. WAIT сўрови актив жараён томонидан
берилиб, у ESB кўрсатган ҳолат юзага келмагунча жараён
давом эта олмаслигини
билдиради. Агар ESBFLAG текширилиб, керакли ҳолат юзага келганлиги аниқланса,
бошқарув дарҳол жараённинг ўзига қайтарилади. Имтиёзли режалаштиришда WAIT ва
SIGNAL бошқача амалга ишлатилади. WAITда мос ҳолатда бошқарувни сўраган жараёнга
дарҳол қайтариш ўрнига бошқарувни диспетчерга узатади ва у приоритет бўйича юқори
бўлган жараёнларни активлаштиради.
Do'stlaringiz bilan baham: