А.В. Столяров - Введение в операционные системы (1152218), страница 13
Текст из файла (страница 13)
Òàê, ñèñòåìà âåðñòêè LATEX, ñ ïîìîùüþêîòîðîé ïîäãîòîâëåíî äàííîå ïîñîáèå, áûëà âûïóùåíà çà ìíîãî ëåò äî ïîÿâëåíèÿ ash-áðåëêîâ, ÷òî ñîâåðøåííî íå ìåøàåò çàïèñûâàòü ðåçóëüòàòû ðàáîòûíà ash.Êðîìå òîãî, åñëè êàæäàÿ ïðîãðàììà áóäåò âûíóæäåíà ïîääåðæèâàòü (èëèõîòÿ áû ïûòàòüñÿ ïîääåðæèâàòü) âñå âîçìîæíûå óñòðîéñòâà, ýòî ïðèâåäåò êíåîáõîäèìîñòè îãðîìíûõ îáúåìîâ ïðîãðàììèðîâàíèÿ; àâòîðû ïðîãðàìì áóäóò âûíóæäåíû ñêîðåå òðàòèòü âðåìÿ íà áîðüáó ñ óñòðîéñòâàìè, ÷åì íà ïðèêëàäíûå çàäà÷è. ñâÿçè ñ ýòèì óïðàâëåíèå óñòðîéñòâàìè âîçëàãàåòñÿ íà îïåðàöèîííóþ ñèñòåìó. Ïðèêëàäíûì ïðîãðàììàì äëÿ âçàèìîäåéñòâèÿ ñ óñòðîéñòâàìè ïðåäîñòàâëÿåòñÿ ïðîñòîé èíòåðôåéñ, àáñòðàãèðîâàííûé îò êîíêðåòíûõ îñîáåííîñòåé îòäåëüíûõ óñòðîéñòâ.
Òàê, îòíîñèòåëüíî ëþáîãî óñòðîéñòâà, ñïîñîáíîãîñîäåðæàòü ôàéëû, ñëåäóåò çíàòü åãî ðàçìåð, âîçìîæíîñòü çàïèñè íà íåãî è,ìîæåò áûòü, ñìåííîñòü (òî åñòü ìîæåò ëè ïîëüçîâàòåëü äàííîå óñòðîéñòâîôèçè÷åñêè îòêëþ÷èòü âî âðåìÿ ðàáîòû).  ýòîì ïëàíå ïðèêëàäíàÿ ïðîãðàììà ìîæåò óçíàòü, ÷òî â ñèñòåìå íàëè÷åñòâóþò óñòðîéñòâî åìêîñòüþ 80Gb,56процессорввод-выводустройстваоперативная памятьÐèñ. 14: Ââîä-âûâîä ñ òî÷êè çðåíèÿ àïïàðàòóðûïîñòîÿííîå; åìêîñòüþ 1.4Mb, ñìåííîå; è åìêîñòüþ 256Mb, ñìåííîå. Òî, ÷òîïåðâîå èç íèõ ïðåäñòàâëÿåò ñîáîé æåñòêèé äèñê ñ èíòåðôåéñîì IDE, âòîðîå −òðåõäþéìîâóþ äèñêåòó, à òðåòüå − ash-áðåëîê, ïðîãðàììå çíàòü óæå íå îáÿçàòåëüíî (õîòÿ ïðè íåîáõîäèìîñòè òàêóþ èíôîðìàöèþ ìîæíî ïîëó÷èòü).11.2Äâå òî÷êè çðåíèÿ íà ââîä-âûâîäÑõåìàòè÷åñêè ââîä-âûâîä (èëè, ãîâîðÿ øèðå, óïðàâëåíèå óñòðîéñòâàìè )ïîêàçàí íà ðèñ. 14.
Öåíòðàëüíûé ïðîöåññîð è îïåðàòèâíàÿ ïàìÿòü çàíèìàþò â ýòîé ñõåìå íåñêîëüêî îñîáîå ìåñòî: íåñìîòðÿ íà òî, ÷òî è ïðîöåññîð,è ïàìÿòü, íåñîìíåííî, ÿâëÿþòñÿ òåõíè÷åñêèìè óñòðîéñòâàìè, îíè íå âõîäÿòâ ÷èñëî òåõ óñòðîéñòâ, îá óïðàâëåíèè êîòîðûìè èäåò ðå÷ü. Èíîãäà âî èçáåæàíèå ïóòàíèöû ãîâîðÿò îá óïðàâëåíèè âíåøíèìè óñòðîéñòâàìè, ïðè ýòîìïîäðàçóìåâàåòñÿ, ÷òî ïðîöåññîð è ïàìÿòü − óñòðîéñòâà âíóòðåííèå.Òàêèì îáðàçîì, âçàèìîäåéñòâèå ìåæäó ïðîöåññîðîì è ïàìÿòüþ íå âõîäèòâ ïîíÿòèå ââîäà-âûâîäà; ñ òî÷êè çðåíèÿ, ïðèíÿòîé ïðè îáñóæäåíèè àïïàðàòíîãî îáåñïå÷åíèÿ (â òîì ÷èñëå ñðåäè ïðîãðàììèñòîâ, ñîçäàþùèõ ÿäðà îïåðàöèîííûõ ñèñòåì), ÖÏ è ïàìÿòü ïðåäñòàâëÿþò ñîáîé åäèíûé êîíñòðóêòèâ, àââîäîì-âûâîäîì ñ÷èòàåòñÿ îáìåí èíôîðìàöèåé ìåæäó ýòèì êîíñòðóêòèâîìè âñåì îñòàëüíûì ìèðîì.Ñóùåñòâóåò è èíàÿ òî÷êà çðåíèÿ, ïðèíÿòàÿ ñðåäè ïðèêëàäíûõ ïðîãðàììèñòîâ.
Ýòà òî÷êà çðåíèÿ ìîãëà áû ïîëíîñòüþ ñîâïàäàòü ñ ïðåäûäóùåé, åñëè áûíå òîò ôàêò, ÷òî îäíà è òà æå ïðîãðàììà, âûïîëíÿÿ îäíè è òå æå äåéñòâèÿ, âçàâèñèìîñòè îò îáñòîÿòåëüñòâ, â êîòîðûõ åå çàïóñòèëè, ìîæåò êàê îñóùåñòâëÿòü àïïàðàòíûé ââîä-âûâîä, òàê è íå îñóùåñòâëÿòü åãî1 . Ïóñòü, íàïðèìåð,èìååòñÿ ïðîãðàììà prog1, ñîäåðæàùàÿ ñèñòåìíûé âûçîâ, âûäàþùèé ñòðîêó1 Èìååòñÿâ âèäó, åñòåñòâåííî, îñóùåñòâëåíèå ââîäà-âûâîäà ÷åðåç îáðàùåíèå ê ÎÑ57"Hello, world" â ïîòîê ñòàíäàðòíîãî âûâîäà ýòîé ïðîãðàììû (íàïðèìåð,ïðîãðàììà ìîæåò áûòü íàïèñàíà íà C è ñîäåðæàòü îáû÷íûé âûçîâ ôóíêöèèprintf). Åñëè òåïåðü âûçâàòü ýòó ïðîãðàììó êîìàíäîéprog1 > file1òî ñòðîêà áóäåò âûâåäåíà â ôàéë file1 íà äèñêå, ÷òî îçíà÷àåò, ÷òî ïðîèçîéäåòàïïàðàòíûé ââîä-âûâîä. Åñëè æå òà æå ñàìàÿ ïðîãðàììà áóäåò çàïóùåíàêîìàíäîéprog1 | prog2òî íèêàêîãî ââîäà-âûâîäà (ñ àïïàðàòíîé òî÷êè çðåíèÿ) íå ïîñëåäóåò: ñòðîêà,âûâåäåííàÿ ïðîãðàììîé prog1, áóäåò ïîäàíà íà âõîä ïðîãðàììå prog2, òàê÷òî âñå âçàèìîäåéñòâèå, ñêîðåå âñåãî, îñòàíåòñÿ â ðàìêàõ ñèñòåìû ïðîöåññîðïàìÿòü.Ïîýòîìó ïðèêëàäíûå ïðîãðàììèñòû îáû÷íî ïîä ââîäîì-âûâîäîì ïîíèìàþò ëþáîé îáìåí èíôîðìàöèåé ìåæäó ïðîãðàììîé (çàäà÷åé) è âíåøíèììèðîì, ê êîòîðîìó îòíîñèòñÿ, êðîìå ïðî÷åãî, è ïàìÿòü çà ïðåäåëàìè äàííîéçàäà÷è.11.311.3.1ÄðàéâåðûÍàçíà÷åíèå äðàéâåðîâÏîä äðàéâåðîì ïîíèìàåòñÿ ïðîãðàììà (îáû÷íî ÿâëÿþùàÿñÿ ÷àñòüþ ÿäðàîïåðàöèîííîé ñèñòåìû), îòâå÷àþùàÿ çà ðàáîòó ñ êîíêðåòíûì óñòðîéñòâîì.Çíàÿ, êàê íóæíî ðàáîòàòü ñ äàííûì êîíêðåòíûì àïïàðàòíûì óñòðîéñòâîì, äðàéâåð ñêðûâàåò îñîáåííîñòè ýòîãî óñòðîéñòâà îò âñåé îñòàëüíîéñèñòåìû.
Äðóãèå ÷àñòè ÿäðà îáðàùàþòñÿ ê äðàéâåðó, âûçûâàÿ åãî âíåøíèåôóíêöèè, ïðè÷åì ýòè ôóíêöèè îäèíàêîâû äëÿ âñåõ äðàéâåðîâ îïðåäåëåííîéêàòåãîðèè.Òàê, îáðàùåíèå ê äðàéâåðó æåñòêîãî äèñêà ñ öåëüþ çàïèñàòü ñåêòîð 55 èòàêîå æå îáðàùåíèå ê äðàéâåðó äèñêîâîäà äëÿ äèñêåò áóäåò (ñ òî÷êè çðåíèÿëþáîé ïîäñèñòåìû ÿäðà, êðîìå ñàìèõ ýòèõ äðàéâåðîâ) âûãëÿäåòü îäèíàêîâî, íåñìîòðÿ íà òî, ÷òî ýòè óñòðîéñòâà íà àïïàðàòíîì óðîâíå óïðàâëÿþòñÿñîâåðøåííî ïî-ðàçíîìó.Òàêèì îáðàçîì, äåòàëè ïðîöåññà óïðàâëåíèÿ êîíêðåòíûìè óñòðîéñòâàìèîêàçûâàþòñÿ ëîêàëèçîâàíû â êîäå äðàéâåðà. Ïðè íàïèñàíèè îñòàëüíûõ ÷àñòåé îïåðàöèîííîé ñèñòåìû, à òàêæå ïðè ñîçäàíèè ïîëüçîâàòåëüñêîãî ïðîãðàììíîãî îáåñïå÷åíèÿ ñòàíîâèòñÿ âîçìîæíî èõ íå ó÷èòûâàòü.5811.3.2Ñïîñîáû çàãðóçêè äðàéâåðàÎáû÷íî äðàéâåð äîëæåí âûïîëíÿòüñÿ â ïðèâèëåãèðîâàííîì ðåæèìå, òîåñòü áûòü ÷àñòüþ ÿäðà.
Òåîðåòè÷åñêè âîçìîæíî âûïîëíåíèå äðàéâåðà è âïîëüçîâàòåëüñêîì ðåæèìå, íî òàêîå ïðèìåíÿåòñÿ ðåäêî.Ñóùåñòâóåò òðè îñíîâíûõ ñïîñîáà çàãðóçêè äðàéâåðà â ÿäðî:1. Âêëþ÷åíèå êîäà äðàéâåðà â êà÷åñòâå ìîäóëÿ íà ýòàïå ñáîðêè ÿäðà. Ïðèýòîì äîáàâëåíèå èëè óäàëåíèå äðàéâåðà òðåáóåò ïåðåñáîðêè (ïåðåêîìïèëÿöèè) ÿäðà è ïåðåçàãðóçêè îïåðàöèîííîé ñèñòåìû. Çàìåòèì, ïðèýòîì ïîëüçîâàòåëþ äîëæíû áûòü äîñòóïíû èñõîäíûå òåêñòû ÿäðà ëèáî,êàê ìèíèìóì, åãî îáúåêòíûå ìîäóëè è ñîîòâåòñòâóþùèå èì èíòåðôåéñíûå ôàéëû.
Òàêîé ïîäõîä ÿâëÿåòñÿ òðàäèöèîííûì äëÿ Unix'îïîäîáíûõîïåðàöèîííûõ ñèñòåì.2. Ïîäêëþ÷åíèå äðàéâåðà íà ýòàïå çàãðóçêè îïåðàöèîííîé ñèñòåìû. Ïðèýòîì â ñèñòåìå èìååòñÿ ôàéë, ñîäåðæàùèé ñïèñîê äðàéâåðîâ, è ñàìèäðàéâåðû â âèäå îòäåëüíûõ ôàéëîâ. Ïðè çàãðóçêå ÿäðî àíàëèçèðóåòñïèñîê è ïîäêëþ÷àåò äðàéâåðû, ïîñëå ÷åãî íà÷èíàåò ðàáîòó.  ýòîìñëó÷àå äëÿ ïîäêëþ÷åíèÿ äîïîëíèòåëüíîãî äðàéâåðà äîñòàòî÷íî ïåðåçàãðóçèòü ñèñòåìó.
Ïåðåêîìïèëÿöèÿ ÿäðà íå òðåáóåòñÿ. Òðàäèöèîííî ýòîòïîäõîä èñïîëüçîâàëè ñèñòåìû ñåìåéñòâà Windows, à ðàíåå − è MS-DOS.3. Äèíàìè÷åñêàÿ çàãðóçêà ìîäóëåé â ÿäðî. Ïðè òàêîì ïîäõîäå äîñòàòî÷íîïîäãîòîâèòü ôàéë äðàéâåðà, ñîáëþäàþùèé îïðåäåëåííûå ñîãëàøåíèÿîá èìåíàõ, è âûäàòü ÿäðó ñîîòâåòñòâóþùèé ñèñòåìíûé âûçîâ, ïîñëå÷åãî ìîäóëü ñòàíîâèòñÿ ÷àñòüþ ÿäðà. Íè ïåðåçàãðóçêè, íè ïåðåêîìïèëÿöèè ÿäðà íå òðåáóåòñÿ.
Áîëåå òîãî, íåíóæíûå ìîäóëè ìîæíî èç ÿäðàèçúÿòü. Òàêàÿ âîçìîæíîñòü ïðèñóòñòâóåò ïðàêòè÷åñêè íà âñåõ ñîâðåìåííûõ Unix-ñèñòåìàõ, âêëþ÷àÿ Linux, FreeBSD è Solaris. Íåîáõîäèìîîòìåòèòü, ÷òî ïðè âûñîêîé ãèáêîñòè ýòà ìîäåëü ñ÷èòàåòñÿ íåáåçîïàñíîé, ò.ê. ïîçâîëÿåò çàïóñòèòü ïðîèçâîëüíûé êîä â ïðèâèëåãèðîâàííîìðåæèìå.11.4Ââîä-âûâîä íà ðàçíûõ óðîâíÿõ ÂÑÍà ïåðâîé ëåêöèè ìû ïðèâîäèëè óñëîâíóþ (óïðîùåííóþ) ìíîãîóðîâíåâóþ ñòðóêòóðíóþ ñõåìó âû÷èñëèòåëüíîé ñèñòåìû (ñì. ðèñ. 1 íà ñòð.
3). Ïîíÿòèå ââîäà-âûâîäà ïðèñóòñòâóåò ïðè îïèñàíèè ëþáîãî èç ýòèõ óðîâíåé, îäíàêî òåðìèíû, â êîòîðûõ îïèñûâàåòñÿ ñàì ââîä-âûâîä, ìåíÿþòñÿ. Êîìïîíåíòûêàæäîãî óðîâíÿ, ïîëó÷èâ îò óðîâíÿ áîëåå âûñîêîãî ñîîòâåòñòâóþùåå îáðàùåíèå, ïåðåâîäÿò åãî â òåðìèíû óðîâíÿ áîëåå íèçêîãî è ïåðåäàþò íèæå, à59пользовательprog > fileприкладные программыprintf("Hello, world");система программированияwrite(1, "Hello, world", 12);управление логическими устройствамиdisk#1, part#2, sector#127563управление физическими устройствамиаппаратураide#0, slave,cyl.125, head 8, sec.20Ðèñ. 15: Ââîä-âûâîä íà ðàçíûõ óðîâíÿõ âû÷èñëèòåëüíîé ñèñòåìûïîëó÷åííûé îòâåò ïåðåâîäÿò, íàîáîðîò, â òåðìèíû óðîâíÿ áîëåå âûñîêîãî èîòïðàâëÿþò íàâåðõ.
Òàêèì îáðàçîì, ïî ìåðå äâèæåíèÿ îò àïïàðàòóðû ê ïîëüçîâàòåëþ íàðàñòàåò óðîâåíü àáñòðàãèðîâàíèÿ, à ñëîæíîñòü îïèñàíèÿ ïàäàåò.Ðàññìîòðèì äëÿ ïðèìåðà çàïóñê ïðîãðàììû ñ âûâîäîì èíôîðìàöèè âôàéë (ðèñ. 15). Ïîëüçîâàòåëü ïîäàåò ïîëüçîâàòåëüñêîé ïðîãðàììå (â äàííîì ñëó÷àå − êîìàíäíîìó èíòåðïðåòàòîðó) êîìàíäó íà ïîíÿòíîì ïîëüçîâàòåëþ ÿçûêå. Ïðèêëàäíàÿ ïðîãðàììà äëÿ âûâîäà èñïîëüçóåò áèáëèîòå÷íóþôóíêöèþ ââîäà-âûâîäà âûñîêîãî óðîâíÿ. Áèáëèîòåêà ôóíêöèé, îòíîñÿùàÿñÿê ñëîþ ñèñòåì ïðîãðàììèðîâàíèÿ, ïåðåâîäèò ïîëó÷åííûé çàïðîñ íà ÿçûê, ïîíÿòíûé áîëåå íèçêîìó óðîâíþ (ÿäðó îïåðàöèîííîé ñèñòåìû); òàêèì ÿçûêîìÿâëÿåòñÿ èíòåðôåéñ ñèñòåìíûõ âûçîâîâ, à ïåðåâåäåííûé çàïðîñ ñòàíîâèòñÿâûçîâîì (íàïðèìåð, write()) ñ ñîîòâåòñòâóþùèìè ïàðàìåòðàìè.Îïåðàöèîííàÿ ñèñòåìà íà óðîâíå ïðîöåäóð óïðàâëåíèÿ ëîãè÷åñêèìèóñòðîéñòâàìè ïðåîáðàçóåò ïàðàìåòðû ñèñòåìíîãî âûçîâà write() â ïîñëåäîâàòåëüíîñòü äåéñòâèé, íåîáõîäèìûõ äëÿ çàïèñè ïîëó÷åííîé èíôîðìàöèè âôàéë, íà îòêðûòûé äåñêðèïòîð êîòîðîãî ñîñëàëñÿ âûçâàâøèé ïðîöåññ.
Ãîâîðÿ êîíêðåòíåå, äðàéâåð ôàéëîâîé ñèñòåìû ïåðåâîäèò çàïðîñ â ïîñëåäîâàòåëüíîñòü îïåðàöèé ïî ìîäèôèêàöèè ñåêòîðîâ ëîãè÷åñêîãî äèñêîâîãî óñòðîéñòâà,à äðàéâåð ñîîòâåòñòâóþùåãî ëîãè÷åñêîãî äèñêà, â ñâîþ î÷åðåäü,− â ïîñëåäîâàòåëüíîñòü îïåðàöèé íàä ñåêòîðàìè äèñêà ôèçè÷åñêîãî. Ñîîòâåòñòâóþùàÿ ïîñëåäîâàòåëüíîñòü çàïðîñîâ ïåðåäàåòñÿ áîëåå íèçêîóðîâíåâûì ïîäïðîãðàììàì ÿäðà, âêëþ÷àþùèì äðàéâåð ôèçè÷åñêîãî äèñêà.