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

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



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

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

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

  • Ñ÷åò÷èêà êîìàíä, óêàçûâàþùåãî àäðåñ ñëåäóþùåé êîìàíäû, êîòîðóþ áóäåò âûïîëíÿòü öåíòðàëüíûé ïðîöåññîð; ýòîò àäðåñ ÿâëÿåòñÿ âèðòóàëüíûì àäðåñîì âíóòðè ïðîñòðàíñòâà ÿäðà èëè ïðîñòðàíñòâà çàäà÷è.
  • Ðåãèñòðà ñîñòîÿíèÿ ïðîöåññîðà (PS), êîòîðûé óêàçûâàåò àïïàðàòíûé ñòàòóñ ìàøèíû ïî îòíîøåíèþ ê ïðîöåññó. Ðåãèñòð PS, íàïðèìåð, îáû÷íî ñîäåðæèò ïîäïîëÿ, êîòîðûå óêàçûâàþò, ÿâëÿåòñÿ ëè ðåçóëüòàò ïîñëåäíèõ âû÷èñëåíèé íóëåâûì, ïîëîæèòåëüíûì èëè îòðèöàòåëüíûì, ïåðåïîëíåí ëè ðåãèñòð ñ óñòàíîâêîé áèòà ïåðåíîñà è ò.ä. Îïåðàöèè, âëèÿþùèå íà óñòàíîâêó ðåãèñòðà PS, âûïîëíÿþòñÿ äëÿ îòäåëüíîãî ïðîöåññà, ïîòîìó-òî â ðåãèñòðå PS è ñîäåðæèòñÿ àïïàðàòíûé ñòàòóñ ìàøèíû ïî îòíîøåíèþ ê ïðîöåññó.  äðóãèõ èìåþùèõ âàæíîå çíà÷åíèå ïîäïîëÿõ ðåãèñòðà PS óêàçûâàåòñÿ òåêóùèé óðîâåíü ïðåðûâàíèÿ ïðîöåññîðà, à òàêæå òåêóùèé è ïðåäûäóùèé ðåæèìû âûïîëíåíèÿ ïðîöåññà (ðåæèì ÿäðà/çàäà÷è). Ïî çíà÷åíèþ ïîäïîëÿ òåêóùåãî ðåæèìà âûïîëíåíèÿ ïðîöåññà óñòàíàâëèâàåòñÿ, ìîæåò ëè ïðîöåññ âûïîëíÿòü ïðèâèëåãèðîâàííûå êîìàíäû è îáðàùàòüñÿ ê àäðåñíîìó ïðîñòðàíñòâó ÿäðà.
  • Óêàçàòåëÿ âåðøèíû ñòåêà, â êîòîðîì ñîäåðæèòñÿ àäðåñ ñëåäóþùåãî ýëåìåíòà ñòåêà ÿäðà èëè ñòåêà çàäà÷è, â ñîîòâåòñòâèè ñ ðåæèìîì âûïîëíåíèÿ ïðîöåññà.  çàâèñèìîñòè îò àðõèòåêòóðû ìàøèíû óêàçàòåëü âåðøèíû ñòåêà ïîêàçûâàåò íà ñëåäóþùèé ñâîáîäíûé ýëåìåíò ñòåêà èëè íà ïîñëåäíèé èñïîëüçóåìûé ýëåìåíò. Îò àðõèòåêòóðû ìàøèíû òàêæå çàâèñèò íàïðàâëåíèå óâåëè÷åíèÿ ñòåêà (ê ñòàðøèì èëè ìëàäøèì àäðåñàì), íî äëÿ íàñ ñåé÷àñ ýòè âîïðîñû íåñóùåñòâåííû.
  • Ðåãèñòðîâ îáùåãî íàçíà÷åíèÿ, â êîòîðûõ ñîäåðæèòñÿ èíôîðìàöèÿ, ñãåíåðèðîâàííàÿ ïðîöåññîì âî âðåìÿ åãî âûïîëíåíèÿ. ×òîáû îáëåã÷èòü ïîñëåäóþùèå îáúÿñíåíèÿ, âûäåëèì ñðåäè íèõ äâà ðåãèñòðà - ðåãèñòð 0 è ðåãèñòð 1 - äëÿ äîïîëíèòåëüíîãî èñïîëüçîâàíèÿ ïðè ïåðåäà÷å èíôîðìàöèè ìåæäó ïðîöåññàìè è ÿäðîì.

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

  • Çàïèñü â òàáëèöå ïðîöåññîâ, îïèñûâàþùàÿ ñîñòîÿíèå ïðîöåññà (ðàçäåë 6.1) è ñîäåðæàùàÿ ðàçëè÷íóþ óïðàâëÿþùóþ èíôîðìàöèþ, ê êîòîðîé ÿäðî âñåãäà ìîæåò îáðàòèòüñÿ.
  • ×àñòü àäðåñíîãî ïðîñòðàíñòâà çàäà÷è, âûäåëåííàÿ ïðîöåññó, ãäå õðàíèòñÿ óïðàâëÿþùàÿ èíôîðìàöèÿ î ïðîöåññå, äîñòóïíàÿ òîëüêî â êîíòåêñòå ïðîöåññà. Îáùèå óïðàâëÿþùèå ïàðàìåòðû, òàêèå êàê ïðèîðèòåò ïðîöåññà, õðàíÿòñÿ â òàáëèöå ïðîöåññîâ, ïîñêîëüêó îáðàùåíèå ê íèì äîëæíî ïðîèçâîäèòüñÿ çà ïðåäåëàìè êîíòåêñòà ïðîöåññà.
  • Çàïèñè ÷àñòíîé òàáëèöû îáëàñòåé ïðîöåññà, îáùèå òàáëèöû îáëàñòåé è òàáëèöû ñòðàíèö, íåîáõîäèìûå äëÿ ïðåîáðàçîâàíèÿ âèðòóàëüíûõ àäðåñîâ â ôèçè÷åñêèå, â ñâÿçè ñ ÷åì â íèõ îïèñûâàþòñÿ îáëàñòè êîìàíä, äàííûõ, ñòåêà è äðóãèå îáëàñòè, ïðèíàäëåæàùèå ïðîöåññó. Åñëè íåñêîëüêî ïðîöåññîâ ñîâìåñòíî èñïîëüçóþò îáùèå îáëàñòè, ýòè îáëàñòè âõîäÿò ñîñòàâíîé ÷àñòüþ â êîíòåêñò êàæäîãî ïðîöåññà, ïîñêîëüêó êàæäûé ïðîöåññ ðàáîòàåò ñ ýòèìè îáëàñòÿìè íåçàâèñèìî îò äðóãèõ ïðîöåññîâ.  çàäà÷è óïðàâëåíèÿ ïàìÿòüþ âõîäèò èäåíòèôèêàöèÿ ó÷àñòêîâ âèðòóàëüíîãî àäðåñíîãî ïðîñòðàíñòâà ïðîöåññà, íå ÿâëÿþùèõñÿ ðåçèäåíòíûìè â ïàìÿòè.
  • Ñòåê ÿäðà, â êîòîðîì õðàíÿòñÿ çàïèñè ïðîöåäóð ÿäðà, åñëè ïðîöåññ âûïîëíÿåòñÿ â ðåæèìå ÿäðà. Íåñìîòðÿ íà òî, ÷òî âñå ïðîöåññû ïîëüçóþòñÿ îäíèìè è òåìè æå ïðîãðàììàìè ÿäðà, êàæäûé èç íèõ èìååò ñâîþ ñîáñòâåííóþ êîïèþ ñòåêà ÿäðà äëÿ õðàíåíèÿ èíäèâèäóàëüíûõ îáðàùåíèé ê ôóíêöèÿì ÿäðà. Ïóñòü, íàïðèìåð, îäèí ïðîöåññ âûçûâàåò ôóíêöèþ creat è ïðèîñòàíàâëèâàåòñÿ â îæèäàíèè íàçíà÷åíèÿ íîâîãî èíäåêñà, à äðóãîé ïðîöåññ âûçûâàåò ôóíêöèþ read è ïðèîñòàíàâëèâàåòñÿ â îæèäàíèè çàâåðøåíèÿ ïåðåäà÷è äàííûõ ñ äèñêà â ïàìÿòü. Îáà ïðîöåññà îáðàùàþòñÿ ê ôóíêöèÿì ÿäðà è ó êàæäîãî èç íèõ èìååòñÿ â íàëè÷èè îòäåëüíûé ñòåê, â êîòîðîì õðàíèòñÿ ïîñëåäîâàòåëüíîñòü âûïîëíåííûõ îáðàùåíèé. ßäðî äîëæíî èìåòü âîçìîæíîñòü âîññòàíàâëèâàòü ñîäåðæèìîå ñòåêà ÿäðà è ïîëîæåíèå óêàçàòåëÿ âåðøèíû ñòåêà äëÿ òîãî, ÷òîáû âîçîáíîâëÿòü âûïîëíåíèå ïðîöåññà â ðåæèìå ÿäðà.  ðàçëè÷íûõ ñèñòåìàõ ñòåê ÿäðà ÷àñòî ðàñïîëàãàåòñÿ â ïðîñòðàíñòâå ïðîöåññà, îäíàêî ýòîò ñòåê ÿâëÿåòñÿ ëîãè÷åñêè-íåçàâèñèìûì è, òàêèì îáðàçîì, ìîæåò ïîìåùàòüñÿ â ñàìîñòîÿòåëüíîé îáëàñòè ïàìÿòè. Êîãäà ïðîöåññ âûïîëíÿåòñÿ â ðåæèìå çàäà÷è, ñîîòâåòñòâóþùèé åìó ñòåê ÿäðà ïóñò.
  • Äèíàìè÷åñêàÿ ÷àñòü ñèñòåìíîãî êîíòåêñòà ïðîöåññà, ñîñòîÿùàÿ èç íåñêîëüêèõ óðîâíåé è èìåþùàÿ âèä ñòåêà, êîòîðûé îñâîáîæäàåòñÿ îò ýëåìåíòîâ â ïîðÿäêå, îáðàòíîì ïîðÿäêó èõ ïîñòóïëåíèÿ. Íà êàæäîì óðîâíå ñèñòåìíîãî êîíòåêñòà ñîäåðæèòñÿ èíôîðìàöèÿ, íåîáõîäèìàÿ äëÿ âîññòàíîâëåíèÿ ïðåäûäóùåãî óðîâíÿ è âêëþ÷àþùàÿ â ñåáÿ ðåãèñòðîâûé êîíòåêñò ïðåäûäóùåãî óðîâíÿ.

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

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

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



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