Àðõèòåêòóðà Unix



6.3 ÊÎÍÒÅÊÑÒ ÏÐÎÖÅÑÑÀ



6.3 ÊÎÍÒÅÊÑÒ ÏÐÎÖÅÑÑÀ




Êîíòåêñò ïðîöåññà âêëþ÷àåò â ñåáÿ ñîäåðæèìîå àäðåñíîãî ïðîñòðàíñòâà çàäà÷è, âûäåëåííîãî ïðîöåññó, à òàêæå ñîäåðæèìîå îòíîñÿùèõñÿ ê ïðîöåññó àïïàðàòíûõ ðåãèñòðîâ è ñòðóêòóð äàííûõ ÿäðà. Ñ ôîðìàëüíîé òî÷êè çðåíèÿ, êîíòåêñò ïðîöåññà îáúåäèíÿåò â ñåáå ïîëüçîâàòåëüñêèé êîíòåêñò, ðåãèñòðîâûé êîíòåêñò è ñèñòåìíûé êîíòåêñò (*). Ïîëüçîâàòåëüñêèé êîíòåêñò ñîñòîèò èç êîìàíä è äàííûõ ïðîöåññà, ñòåêà çàäà÷è è ñîäåðæèìîãî ñîâìåñòíî èñïîëüçóåìîãî ïðîñòðàíñòâà ïàìÿòè â âèðòóàëüíûõ àäðåñàõ ïðîöåññà. Òå ÷àñòè âèðòóàëüíîãî àäðåñíîãî ïðîñòðàíñòâà ïðîöåññà, êîòîðûå ïåðèîäè÷åñêè îòñóòñòâóþò â îïåðàòèâíîé ïàìÿòè âñëåäñòâèå âûãðóçêè èëè çàìåùåíèÿ ñòðàíèö, òàêæå âêëþ÷àþòñÿ â ïîëüçîâàòåëüñêèé êîíòåêñò.

Ðåãèñòðîâûé êîíòåêñò ñîñòîèò èç ñëåäóþùèõ êîìïîíåíò:

Ñèñòåìíûé êîíòåêñò ïðîöåññà èìååò "ñòàòè÷åñêóþ ÷àñòü" (ïåðâûå òðè ýëåìåíòà â íèæåñëåäóþùåì ñïèñêå) è "äèíàìè÷åñêóþ ÷àñòü" (ïîñëåäíèå äâà ýëåìåíòà). Íà ïðîòÿæåíèè âñåãî âðåìåíè âûïîëíåíèÿ ïðîöåññ ïîñòîÿííî ðàñïîëàãàåò îäíîé ñòàòè÷åñêîé ÷àñòüþ ñèñòåìíîãî êîíòåêñòà, íî ìîæåò èìåòü ïåðåìåííîå ÷èñëî äèíàìè÷åñêèõ ÷àñòåé. Äèíàìè÷åñêóþ ÷àñòü ñèñòåìíîãî êîíòåêñòà ìîæíî ïðåäñòàâèòü â âèäå ñòåêà, ýëåìåíòàìè êîòîðîãî ÿâëÿþòñÿ êîíòåêñòíûå óðîâíè, êîòîðûå ïîìåùàþòñÿ â ñòåê ÿäðîì èëè âûòàëêèâàþòñÿ èç ñòåêà ïðè íàñòóïëåíèè ðàçëè÷íûõ ñîáûòèé. Ñèñòåìíûé êîíòåêñò âêëþ÷àåò â ñåáÿ ñëåäóþùèå êîìïîíåíòû:

(*) Èñïîëüçóåìûå â äàííîì ðàçäåëå òåðìèíû "ïîëüçîâàòåëüñêèé êîíòåêñò" (user-level context), "ðåãèñòðîâûé êîíòåêñò" (register context), "ñèñòåìíûé êîíòåêñò" (system-level context) è "êîíòåêñòíûå óðîâíè" (context layers) ââåäåíû àâòîðîì.

ßäðî ïîìåùàåò êîíòåêñòíûé óðîâåíü â ñòåê ïðè âîçíèêíîâåíèè ïðåðûâàíèÿ, ïðè îáðàùåíèè ê ñèñòåìíîé ôóíêöèè èëè ïðè ïåðåêëþ÷åíèè êîíòåêñòà ïðîöåññà. Êîíòåêñòíûé óðîâåíü âûòàëêèâàåòñÿ èç ñòåêà ïîñëå çàâåðøåíèÿ îáðàáîòêè ïðåðûâàíèÿ, ïðè âîçâðàòå ïðîöåññà â ðåæèì çàäà÷è ïîñëå âûïîëíåíèÿ ñèñòåìíîé ôóíêöèè, èëè ïðè ïåðåêëþ÷åíèè êîíòåêñòà. Òàêèì îáðàçîì, ïåðåêëþ÷åíèå êîíòåêñòà âëå÷åò çà ñîáîé êàê ïîìåùåíèå êîíòåêñòíîãî óðîâíÿ â ñòåê, òàê è èçâëå÷åíèå óðîâíÿ èç ñòåêà: ÿäðî ïîìåùàåò â ñòåê êîíòåêñòíûé óðîâåíü ñòàðîãî ïðîöåññà, à èçâëåêàåò èç ñòåêà êîíòåêñòíûé óðîâåíü íîâîãî ïðîöåññà. Èíôîðìàöèÿ, íåîáõîäèìàÿ äëÿ âîññòàíîâëåíèÿ òåêóùåãî êîíòåêñòíîãî óðîâíÿ, õðàíèòñÿ â çàïèñè òàáëèöû ïðîöåññîâ.

Íà Ðèñóíêå 6.8 èçîáðàæåíû êîìïîíåíòû êîíòåêñòà ïðîöåññà. Ñëåâà íà ðèñóíêå èçîáðàæåíà ñòàòè÷åñêàÿ ÷àñòü êîíòåêñòà.  íåå âõîäÿò: ïîëüçîâàòåëüñêèé êîíòåêñò, ñîñòîÿùèé èç ïðîãðàìì ïðîöåññà (ìàøèííûõ èíñòðóêöèé), äàííûõ, ñòåêà è ðàçäåëÿåìîé ïàìÿòè (åñëè îíà èìååòñÿ), à òàêæå ñòàòè÷åñêàÿ ÷àñòü ñèñòåìíîãî êîíòåêñòà, ñîñòîÿùàÿ èç çàïèñè òàáëèöû ïðîöåññîâ, ïðîñòðàíñòâà ïðîöåññà è çàïèñåé ÷àñòíîé òàáëèöû îáëàñòåé (èíôîðìàöèè, íåîáõîäèìîé äëÿ òðàíñëÿöèè âèðòóàëüíûõ àäðåñîâ ïîëüçîâàòåëüñêîãî êîíòåêñòà). Ñïðàâà íà ðèñóíêå èçîáðàæåíà äèíàìè÷åñêàÿ ÷àñòü êîíòåêñòà. Îíà èìååò âèä ñòåêà è âêëþ÷àåò â ñåáÿ íåñêîëüêî ýëåìåíòîâ, õðàíÿùèõ ðåãèñòðîâûé êîíòåêñò ïðåäûäóùåãî óðîâíÿ è ñòåê ÿäðà äëÿ òåêóùåãî óðîâíÿ. Íóëåâîé êîíòåêñòíûé óðîâåíü ïðåäñòàâëÿåò ñîáîé ïóñòîé óðîâåíü, îòíîñÿùèéñÿ ê ïîëüçîâàòåëüñêîìó êîíòåêñòó; óâåëè÷åíèå ñòåêà çäåñü èäåò â àäðåñíîì ïðîñòðàíñòâå çàäà÷è, ñòåê ÿäðà íåäåéñòâèòåëåí. Ñòðåëêà, ñîåäèíÿþùàÿ ìåæäó ñîáîé ñòàòè÷åñêóþ ÷àñòü ñèñòåìíîãî êîíòåêñòà è âåðõíèé óðîâåíü äèíàìè÷åñêîé ÷àñòè êîíòåêñòà, îçíà÷àåò òî, ÷òî â òàáëèöå ïðîöåññîâ õðàíèòñÿ èíôîðìàöèÿ, ïîçâîëÿþùàÿ ÿäðó âîññòàíàâëèâàòü òåêóùèé êîíòåêñòíûé óðîâåíü ïðîöåññà.



Ñîäåðæàíèå ðàçäåëà