А.В. Столяров - Введение в операционные системы (1152218), страница 10
Текст из файла (страница 10)
ßñíî, ÷òî õðàíèòü èíôîðìàöèþ î ñòðàíè÷íîì ñîîòâåòñòâèè â ðåãèñòðîâîé ïàìÿòè íå ïîëó÷èòñÿ èç-çà áîëüøîãî îáúåìà.Ðåøèòü ïðîáëåìó ïîçâîëÿåò âñòðîåííîå â ïðîöåññîð ñïåöèàëüíîå óñòðîéñòâî, íàçûâàåìîå àññîöèàòèâíîé ïàìÿòüþ 7 . Óñòðîéñòâî ïðåäñòàâëÿåò ñîáîéòàáëèöó èç äâóõ ïîëåé − íîìåð âèðòóàëüíîé ñòðàíèöû è èíôîðìàöèÿ î ñîîòâåòñòâóþùåì åé êàäðå (íîìåð êàäðà è åãî àòðèáóòû). Ýëåêòðîííàÿ ñõåìààññîöèàòèâíîé ïàìÿòè óñòðîåíà òàê, ÷òî çàïðîñ ê íåé ôîðìèðóåòñÿ íå ïîíîìåðó ñòðîêè òàáëèöû, à ïî çíà÷åíèþ ïåðâîãî ïîëÿ, òî åñòü ïî êëþ÷ó.Ñëè÷åíèå ïðåäúÿâëåííîãî çíà÷åíèÿ ñî çíà÷åíèÿìè êëþ÷åâîãî ïîëÿ ïðîèçâîäèòñÿ îäíîâðåìåííî âî âñåõ ñòðîêàõ òàáëèöû (ïàðàëëåëüíûìè ñõåìàìè).Åñëè â îäíîé èç ñòðîê çíà÷åíèå ñîâïàäàåò, â êà÷åñòâå ðåçóëüòàòà âûäàåòñÿâòîðîå ïîëå òîé æå ñòðîêè (òî åñòü íîìåð êàäðà è åãî àòðèáóòû).Ñëîæíîñòü ðåàëèçàöèè àññîöèàòèâíîé ïàìÿòè ðàñòåò íåëèíåéíî ñ óâåëè÷åíèåì êîëè÷åñòâà ñòðîê, òàê ÷òî îáû÷íî ÷èñëî ñòðîê òàáëèöû íå ïðåâûøàåòíåñêîëüêèõ äåñÿòêîâ (16 ñòðîê ìîæíî ñ÷èòàòü òèïè÷íûì ïðèìåðîì åìêîñòèàññîöèàòèâíîé ïàìÿòè).Ïðè îáðàùåíèè ê ñòðàíèöå, î êîòîðîé â àññîöèàòèâíîé ïàìÿòè íåò èí7Âàíãëîÿçû÷íîé ëèòåðàòóðå ÷àñòî âñòðå÷àåòñÿ òåðìèíñêîÿçû÷íîé − áóôåð áûñòðîãî ïðåîáðàçîâàíèÿ àäðåñà40Translation Lookaside Buer, TLB, à â ðóñ-ôîðìàöèè, ïðîèçâîäèòñÿ ïðåîáðàçîâàíèå ÷åðåç ñòðàíè÷íûå òàáëèöû (òî åñòüê ñòðàíèöàì âñå-òàêè ïðèõîäèòñÿ îáðàòèòüñÿ), íî ïîñëå ýòîãî èíôîðìàöèÿ,ïîëó÷åííàÿ èç òàáëèö, çàïèñûâàåòñÿ â àññîöèàòèâíóþ ïàìÿòü.
Åñëè òåïåðüïðîãðàììà îáðàòèòñÿ ê òîé æå ñàìîé ñòðàíèöå, îáðàùåíèÿ ê òàáëèöàì íåïîòðåáóåòñÿ. Êîãäà âñå ñòðîêè òàáëèöû îêàçûâàþòñÿ çàïîëíåíû, î÷åðåäíîåîáðàùåíèå ê íåèçâåñòíîé ñòðàíèöå ïðèâîäèò ê òîìó, ÷òî èíôîðìàöèÿ îá îäíîé èç èçâåñòíûõ ñòðàíèö èç àññîöèàòèâíîé ïàìÿòè óäàëÿåòñÿ.Ñëåäóåò îòìåòèòü, ÷òî èíôîðìàöèÿ îá îòîáðàæåíèè ñòðàíèö ÿâëÿåòñÿ ëîêàëüíîé äëÿ êàæäîé çàäà÷è, òàê ÷òî ïðè ñìåíå àêòèâíîé çàäà÷è ñîäåðæèìîåàññîöèàòèâíîé ïàìÿòè ïðèõîäèòñÿ ñáðàñûâàòü, è íåêîòîðîå âðåìÿ íîâàÿ çàäà÷à òðàòèò íà çàïîëíåíèå àññîöèàòèâíîé ïàìÿòè ñâîèìè äàííûìè.
Òàêèìîáðàçîì, ïðè ñòðàíè÷íîé îðãàíèçàöèè ïàìÿòè ñìåíà çàäà÷è ñòàíîâèòñÿ åùåáîëåå äîðîãîñòîÿùåé îïåðàöèåé, îäíàêî âûáîðà ó íàñ íåò.Îòìåòèì òàêæå, ÷òî óïðàâëåíèå àññîöèàòèâíîé ïàìÿòüþ ìîæíî âîçëîæèòü íà îïåðàöèîííóþ ñèñòåìó.  ýòîì ñëó÷àå ïðîöåññîð âîîáùå íå äåëàåòíèêàêèõ ïðåäïîëîæåíèé î òîì, êàê óñòðîåíû ñòðóêòóðû äàííûõ, îòâå÷àþùèå çà îòîáðàæåíèå ñòðàíèö; ýòî ïîëíîñòüþ îòäàíî íà îòêóï îïåðàöèîííîéñèñòåìå.  ñëó÷àå, åñëè â àññîöèàòèâíîé ïàìÿòè îòñóòñòâóåò ñòðîêà îòíîñèòåëüíî òðåáóåìîãî íîìåðà ñòðàíèöû, ïðîöåññîð ãåíåðèðóåò ïðåðûâàíèå, ïîñëå÷åãî îïåðàöèîííàÿ ñèñòåìà äîëæíà ïðîãðàììíî ïðîèçâåñòè ïîèñê èëè èíîåâû÷èñëåíèå ñîîòâåòñòâóþùåé èíôîðìàöèè è çàíåñòè ýòó èíôîðìàöèþ â àññîöèàòèâíóþ ïàìÿòü, ïîñëå ÷åãî âîçîáíîâèòü èñïîëíåíèå àêòèâíîé çàäà÷è.8.3.4Ñåãìåíòíî-ñòðàíè÷íàÿ îðãàíèçàöèÿ ïàìÿòèÊàê ãîâîðèëîñü ðàíåå, ñåãìåíòíàÿ ìîäåëü îðãàíèçàöèè ïàìÿòè èìååò ñâîèñïåöèôè÷åñêèå äîñòîèíñòâà, äåëàÿ àäðåñíîå ïðîñòðàíñòâî çàäà÷è ìíîãîìåðíûì.
Ñåãìåíòíî-ñòðàíè÷íàÿ ìîäåëü ïðåäñòàâëÿåò ñîáîé ïîïûòêó îáúåäèíèòüäîñòîèíñòâà ñåãìåíòíîé è ñòðàíè÷íîé îðãàíèçàöèè ïàìÿòè.  ýòîé ìîäåëè çàäà÷à èìååò íåñêîëüêî ñåãìåíòîâ, ïðè÷åì êàæäûé ñåãìåíò ïðåäñòàâëÿåò ñîáîéñàìîñòîÿòåëüíîå âèðòóàëüíîå àäðåñíîå ïðîñòðàíñòâî, ïîäåëåííîå íà ñòðàíèöû. Èíà÷å ãîâîðÿ, êàæäîé çàäà÷å ïðèïèñûâàåòñÿ, â îáùåì ñëó÷àå, íå îäíîîòîáðàæåíèå ñòðàíèö â ôèçè÷åñêèå êàäðû, à íåñêîëüêî (ïî îäíîìó íà êàæäûé ñåãìåíò).Ñåãìåíòíî-ñòðàíè÷íàÿ îðãàíèçàöèÿ ðåàëèçîâàíà, íàïðèìåð, íà i386ñîâìåñòèìûõ ïðîöåññîðàõ. Îñíîâíûì íåäîñòàòêîì ýòîé ìîäåëè ÿâëÿåòñÿ åå÷ðåçìåðíàÿ ñëîæíîñòü; ïðàêòè÷åñêè íå èçâåñòíû îïåðàöèîííûå ñèñòåìû, ñóùåñòâåííî èñïîëüçóþùèå ñåãìåíòíî-ñòðàíè÷íóþ ìîäåëü.41Ëåêöèÿ 49Èñòîðèÿ ÎÑ Unix êîíöå 1960-x ãîäîâ êîíñîðöèóì â ñîñòàâå êîíöåðíà General Electrics,Ìàññà÷óñåòñêîãî Òåõíîëîãè÷åñêîãî Èíñòèòóòà (MIT) è èññëåäîâàòåëüñêîéêîìïàíèè Bell Laboratories (íà òîò ìîìåíò − ïîäðàçäåëåíèÿ AT&T) ðàçðàáàòûâàëè îïåðàöèîííóþ ñèñòåìó MULTICS.Î ïðîåêòå MULTICS èíîãäà ãîâîðÿò êàê î íåóäà÷íîì; òàê èëè èíà÷å, BellLabs â íåêèé ìîìåíò èç ïðîåêòà âûøëà. ÷èñëî ñîòðóäíèêîâ Bell Labs, ó÷àñòâîâàâøèõ â ïðîåêòå MULTICS, âõîäèë Êåí Òîìïñîí.
Ïî îäíîé èç ëåãåíä, â òå âðåìåíà åãî èíòåðåñîâàëà íîâàÿíà òîò ìîìåíò îáëàñòü ïðîãðàììèðîâàíèÿ − êîìïüþòåðíûå èãðû.  ñèëóäîðîãîâèçíû âû÷èñëèòåëüíîé òåõíèêè òîãî âðåìåíè ó Êåíà Òîìïñîíà áûëè îïðåäåëåííûå ñëîæíîñòè ñ ïîëó÷åíèåì êîìïüþòåðíîãî âðåìåíè äëÿ èãðû â íàïèñàííóþ èì Star Travel, ïîýòîìó îí çàèíòåðåñîâàëñÿ èìåâøåéñÿ âBell Labs è ìàëîâîñòðåáîâàííîé íà òîò ìîìåíò ìàøèíîé PDP-7. Íàëè÷åñòâîâàâøåå äëÿ ýòîé ìàøèíû ñèñòåìíîå ïðîãðàììíîå îáåñïå÷åíèå Òîìïñîíà íåóñòðîèëî, è, ïîëüçóÿñü îïûòîì, ïîëó÷åííûì â ïðîåêòå MULTICS, îí íàïèñàëäëÿ PDP-7 ñâîþ îïåðàöèîííóþ ñèñòåìó. Ïåðâîíà÷àëüíî ñèñòåìà Òîìïñîíàáûëà äâóõ çàäà÷íîé, òî åñòü ïîçâîëÿëà çàïóñê äâóõ íåçàâèñèìûõ ïðîöåññîâ −ïî ÷èñëó ïîäêëþ÷åííûõ ê PDP-7 òåðìèíàëîâ [9].Íàçâàíèå UNICS (ïî àíàëîãèè ñ MULTICS) â øóòêó ïðåäëîæèë ÁðàéàíÊåðíèãàí.
Íàçâàíèå çàêðåïèëîñü, òîëüêî ïîñëåäíèå áóêâû CS áûëè ïîçæåçàìåíåíû íà îäíó X (ïðîèçíîøåíèå ïðè ýòîì íå èçìåíèëîñü).Ê Êåíó Òîìïñîíó â åãî ðàçðàáîòêå ïðèñîåäèíèëñÿ Äåííèñ Ðèò÷è, è âäâîåìîíè ïåðåíåñëè ñèñòåìó íà áîëåå ñîâåðøåííûé ìèíèêîìïüþòåð PDP-11. Òîãäàæå âîçíèêëà èäåÿ ïåðåïèñàòü ñèñòåìó (ïî êðàéíåé ìåðå, êàê ìîæíî áîëüøóþåå ÷àñòü) íà ÿçûêå âûñîêîãî óðîâíÿ. Òîìïñîí ïîïûòàëñÿ èñïîëüçîâàòü äëÿýòîãî óñå÷åííûé äèàëåêò ÿçûêà BCPL, êîòîðûé îí íàçâàë B. Îäíàêî ÿçûêîêàçàëñÿ äëÿ ýòîãî ñëèøêîì ïðèìèòèâåí, â íåì íå áûëî äàæå ñòðóêòóðíûõäàííûõ. Ðèò÷è ïðåäëîæèë ðàñøèðèòü ÿçûê.
Òàê ïîÿâèëàñü ïåðâàÿ âåðñèÿÿçûêà C. 1973 ãîäó ñèñòåìó óäàëîñü ïåðåïèñàòü íà C. Äëÿ òîãî âðåìåíè ýòîáûë áîëåå ÷åì ñîìíèòåëüíûé øàã: ãîñïîäñòâîâàëà òî÷êà çðåíèÿ, ÷òî âûñîêîóðîâíåâîå ïðîãðàììèðîâàíèå ñ óðîâíåì îïåðàöèîííûõ ñèñòåì ïðèíöèïèàëüíî íåñîâìåñòèìî. Âðåìÿ ïîêàçàëî, îäíàêî, ÷òî èìåííî ýòîò øàã îïðåäåëèë íà ìíîãî ëåò òåíäåíöèè ðàçâèòèÿ èíäóñòðèè. ßçûê ïðîãðàììèðîâàíèÿ Cè îïåðàöèîííàÿ ñèñòåìà Unix ñîõðàíÿþò ïîïóëÿðíîñòü ñïóñòÿ áîëåå ÷åì 3042ëåò ïîñëå îïèñûâàåìûõ ñîáûòèé â-îñíîâíîì áëàãîäàðÿ òîìó, ÷òî Unix îêàçàëñÿ ïåðâîé ÎÑ, ïåðåïèñàííîé íà ÿçûêå âûñîêîãî óðîâíÿ, à C îêàçàëñÿ ýòèìÿçûêîì. 1974 ãîäó âûøëà ñòàòüÿ Òîìïñîíà è Ðèò÷è, â êîòîðîé îíè ðàññêàçàëèî ñâîèõ äîñòèæåíèÿõ.
PDP-11 íà òîò ìîìåíò áûëà ìàøèíîé âåñüìà ïîïóëÿðíîé, óñòàíîâëåííîé âî ìíîãèõ óíèâåðñèòåòàõ è äðóãèõ îðãàíèçàöèÿõ, òàê ÷òîïîñëå âûõîäà â ñâåò ñòàòüè íàøëîñü íåìàëî æåëàþùèõ ïîïðîáîâàòü âîñïîëüçîâàòüñÿ íîâîé ñèñòåìîé. Íà ýòîì èñòîðè÷åñêîì ýòàïå âàæíóþ ðîëü ñûãðàëîîñîáîå ïîëîæåíèå êîìïàíèè AT&T: àíòèìîíîïîëüíûå îãðàíè÷åíèÿ íå ïîçâîëÿëè åé ó÷àñòâîâàòü â êîìïüþòåðíîì áèçíåñå (êàê è âîîáùå â ëþáîì áèçíåñåçà ïðåäåëàìè òåëåôîíèè).  ñâÿçè ñ ýòèì êîïèè Unix ñ èñõîäíûìè òåêñòàìèïðåäîñòàâëÿëèñü âñåì æåëàþùèì íà íåêîììåð÷åñêîé îñíîâå. Ñîãëàñíî îäíîéèç ëåãåíä, Êåí Òîìïñîí ïîäïèñûâàë êàæäûé ýêçåìïëÿð ñëîâàìè ñ ëþáîâüþ,Êåí (love, ken) [3].Ñëåäóþùèì ñåðüåçíûì øàãîì ñòàë ïåðåíîñ Unix íà íîâóþ àðõèòåêòóðó.Èäåÿ ýòîãî áûëà âûäâèíóòà Äåííèñîì Ðèò÷è è Ñòåôàíîì Äæîíñîíîì; äëÿïðîâåäåíèÿ ýêñïåðèìåíòà áûëà ïðèîáðåòåíà ìàøèíà Interdata 8/32.  ðàìêàõ ýòîãî ïðîåêòà Äæîíñîí ðàçðàáîòàë ïåðåíîñèìûé êîìïèëÿòîð ÿçûêà C,ñòàâøèé, êñòàòè, åäâà ëè íå ïåðâûì ïåðåíîñèìûì êîìïèëÿòîðîì â èñòîðèè.Ïåðåíîñ áûë çàâåðøåí â 1977 ãîäó.Âàæíåéøèé âêëàä â ðàçâèòèå Unix âíåñëè èññëåäîâàòåëè èç óíèâåðñèòåòàÁåðêëè.
Îäíà èç íàèáîëåå ïîïóëÿðíûõ âåòîê Unix, BSD, ïðåäñòàâëåííàÿ âíàñòîÿùåå âðåìÿ òàêèìè ñèñòåìàìè, êàê FreeBSD, NetBSD, OpenBSD è BSDi,áûëà ñîçäàíà èìåííî òàì (ñîáñòâåííî, àêðîíèì BSD îçíà÷àåò Berkley SoftwareDistribution). Èññëåäîâàíèÿ, ñâÿçàííûå ñ Unix, íà÷àëèñü çäåñü â 1974 ãîäó;îïðåäåëåííóþ ðîëü ñûãðàëè ëåêöèè Êåíà Òîìïñîíà, ïðî÷èòàííûå â Áåðêëèâ 1975-1976 ãã. Ïåðâàÿ âåðñèÿ BSD áûëà ñîçäàíà â 1977 ãîäó Áèëëîì Äæîåì. 1984 ãîäó ñ AT&T ïîñëå ðàçäðîáëåíèÿ îäíîãî èç åå ïîäðàçäåëåíèéáûëè ñíÿòû àíòèìîíîïîëüíûå îãðàíè÷åíèÿ.  èòîãå ìåíåäæìåíò AT&T íà÷àë ñòðåìèòåëüíóþ êîììåðöèàëèçàöèþ Unix. Ñâîáîäíîå ðàñïðîñòðàíåíèå èñõîäíûõ òåêñòîâ Unix áûëî ïðåêðàùåíî.
Ïîñëåäóþùèå ãîäû îçíàìåíîâàëèñüïðîòèâîñòîÿíèÿìè è èçíóðèòåëüíûìè ñóäåáíûìè òÿæáàìè ìåæäó ðàçðàáîò÷èêàìè Unix, â ÷àñòíîñòè − ìåæäó âñå òîé æå AT&T è êîìïàíèåé BSDi,ïûòàâøåéñÿ ïðîäîëæàòü ðàçðàáîòêè íà îñíîâå BSD. Íåÿñíîñòè ñ þðèäè÷åñêèì ñòàòóñîì BSD çàòîðìîçèëè ðàçâèòèå âñåãî Unix-ñîîáùåñòâà. Íà÷èíàÿ ñ1987 ãîäà â Áåðêëè ïðîâîäèëèñü ðàáîòû ïî óäàëåíèþ êîäà, ÿâëÿþùåãîñÿ ñîáñòâåííîñòüþ AT&T, èç ñèñòåìû. Ïðàâîâûå ñïîðû áûëè óðåãóëèðîâàíû ëèøüâ 1993 ãîäó, êîãäà AT&T ïðîäàëà ñâîå ïîäðàçäåëåíèå, çàíèìàâøååñÿ Unix(Unix Software Labs, USL) ôèðìå Novell; þðèñòû ïîñëåäíåé èäåíòèôèöèðîâàëè òðè èç 18000 (!) ôàéëîâ, ñîñòàâëÿâøèå äåéñòâèòåëüíûé ïðåäìåò ñïîðà, è43çàêëþ÷èëè ñ óíèâåðñèòåòîì Áåðêëè ñîãëàøåíèå, óñòðàíèâøåå ðàçíîãëàñèÿ.Ìåæäó òåì, ïîêà ðàçðàáîò÷èêè Unix áûëè çàíÿòû ìåæäîóñîáèöåé, ðûíîêîêàçàëñÿ çàïîëíåí äåøåâûìè êîìïüþòåðàìè íà îñíîâå ïðîöåññîðîâ Intel èîïåðàöèîííûìè ñèñòåìàìè îò Microsoft.
Ïîÿâèâøèéñÿ åùå â 1986 ãîäó ïðîöåññîð Intel 80386 áûë ïðèãîäåí äëÿ Unix; áîëåå òîãî, äåëàëèñü è ïîïûòêèïåðåíîñà BSD íà ïëàòôîðìó i386, îäíàêî (íå â ïîñëåäíþþ î÷åðåäü èç-çà ïðàâîâûõ ïðîáëåì) äî íà÷àëà 1992 ãîäà îá ýòèõ ðàçðàáîòêàõ íè÷åãî ñëûøíî íåáûëî.Äðóãàÿ èíòåðåñíàÿ ëèíèÿ ñîáûòèé ïðîñëåæèâàåòñÿ ñ 1984 ãîäà, êîãäàÐè÷àðä Ñòîëëìàí îñíîâàë Ôîíä ñâîáîäíîãî ïðîãðàììíîãî îáåñïå÷åíèÿ è èçäàë ñîîòâåòñòâóþùèé èäåîëîãè÷åñêèé ìàíèôåñò.
Íàðîæäàþùååñÿ îáùåñòâåííîå äâèæåíèå äëÿ íà÷àëà ïîñòàâèëî ñåáå öåëüþ ñîçäàòü ñâîáîäíóþ îïåðàöèîííóþ ñèñòåìó. Ïî íåêîòîðûì ñâåäåíèÿì, èìåííî Ñòîëëìàí â 1987 ãîäó óáåäèëèññëåäîâàòåëåé èç Áåðêëè â íåîáõîäèìîñòè î÷èñòêè BSD îò êîäà, íàõîäÿùåãîñÿ â ñîáñòâåííîñòè AT&T.Ñòîðîííèêè Ñòîëëìàíà óñïåëè ñîçäàòü ñóùåñòâåííîå êîëè÷åñòâî ñâîáîäíûõ ïðîãðàììíûõ èíñòðóìåíòîâ, íî áåç ïîëíîñòüþ ñâîáîäíîãî ÿäðà ÎÑ öåëüîñòàâàëàñü âñå æå äàëåêà. Ïîëîæåíèå èçìåíèëîñü ëèøü â íà÷àëå 1990-õ. Â1991 ãîäó ôèíñêèé ñòóäåíò Ëèíóñ Òîðâàëüäñ íà÷àë ðàáîòó íàä ÿäðîì Unixïîäîáíîé îïåðàöèîííîé ñèñòåìû äëÿ ïëàòôîðìû i386, ïðè÷åì â ýòîé ðàáîòåêîä èç äðóãèõ îïåðàöèîííûõ ñèñòåì íå èñïîëüçîâàëñÿ âîîáùå.Êàê ðàññêàçûâàåò ñàì Òîðâàëüäñ, åãî òâîðåíèå ñíà÷àëà çàäóìûâàëîñü êàê ýìóëÿòîð òåðìèíàëà äëÿ óäàëåííîãî äîñòóïà ê óíèâåðñèòåòñêîìó êîìïüþòåðó.