А.В. Столяров - Введение в операционные системы (1114673), страница 19
Текст из файла (страница 19)
Äëÿ îáîçíà÷åíèÿ òåõ æåïîíÿòèé ìîãóò èñïîëüçîâàòüñÿ òåðìèíû áàéò-îðèåíòèðîâàííûå è áëîêîðèåíòèðîâàííûå óñòðîéñòâà.Îñíîâíûìè îïåðàöèÿìè íàä áàéò-îðèåíòèðîâàííûìè óñòðîéñòâàìè ÿâëÿþòñÿ çàïèñü è ÷òåíèå îäíîãî (î÷åðåäíîãî) ñèìâîëà (áàéòà).  ïðîòèâîïîëîæíîñòü ýòîìó, áëîê-îðèåíòèðîâàííûå óñòðîéñòâà âîñïðèíèìàþòñÿ êàê õðàíèëèùå äàííûõ, ðàçäåëåííûõ íà áëîêè ôèêñèðîâàííîãî ðàçìåðà; îñíîâíûìèîïåðàöèÿìè, ñîîòâåòñòâåííî, ÿâëÿþòñÿ ÷òåíèå è çàïèñü çàäàííîãî áëîêà.Ïðèìåðàìè áàéò-îðèåíòèðîâàííûõ óñòðîéñòâ ÿâëÿþòñÿ òåðìèíàë (êëàâèàòóðà è óñòðîéñòâî îòîáðàæåíèÿ), ïðèíòåð7 , ìàíèïóëÿòîð ìûøü, çâóêîâàÿ êàðòà.
Ñóùåñòâóþò òàêæå ÷èñòî âèðòóàëüíûå ñèìâîëüíûå óñòðîéñòâà,íå èìåþùèå ôèçè÷åñêîãî âîïëîùåíèÿ. Òàê, óñòðîéñòâî /dev/null ïîçâîëÿåòïðîèçâîäèòü â íåãî çàïèñü ëþáîé èíôîðìàöèè, êîòîðàÿ ïîïðîñòó èãíîðèðóåòñÿ; ïîïûòêà ÷èòàòü èç ýòîãî óñòðîéñòâà ñðàçó âûçûâàåò ñèòóàöèþ êîíåöôàéëà. Óñòðîéñòâî /dev/zero ïîçâîëÿåò ïðî÷èòàòü ëþáîå êîëè÷åñòâî áàéò,ïðè÷åì âñå ïðî÷èòàííûå áàéòû áóäóò ðàâíû íóëþ. Óñòðîéñòâî /dev/randomâûäàåò ÷èòàþùåìó ïðîöåññó ïîñëåäîâàòåëüíîñòü ïñåâäîñëó÷àéíûõ ÷èñåë, èò.ï.7 Òî÷íååáûëî áû ñêàçàòüïðèíòåðíûé ïîðò83 âèäå áëîê-îðèåíòèðîâàííûõ óñòðîéñòâ îáû÷íî ïðåäñòàâëÿþòñÿ äèñêè èäðóãèå ïîäîáíûå èì óñòðîéñòâà.
Äåéñòâèòåëüíî, äèñêîâûå óñòðîéñòâà îáû÷íî ïîçâîëÿþò ÷òåíèå èëè çàïèñü òîëüêî öåëûìè ñåêòîðàìè, ÷òî îáóñëîâëåíîîñîáåííîñòÿìè ôèçè÷åñêîé ðåàëèçàöèè òàêèõ óñòðîéñòâ.Íàðÿäó ñ äèðåêòîðèÿìè è ñèìâîëè÷åñêèìè ññûëêàìè, áëîêîðèåíòèðîâàííûå è áàéò-îðèåíòèðîâàííûå óñòðîéñòâà ïðåäñòàâëÿþò ñîáîéåùå äâà ñïåöèàëüíûõ òèïà ôàéëîâ.12.4.3Îïåðàöèè íàä óñòðîéñòâàìèÊàê ìîæíî çàêëþ÷èòü èç ïðåäûäóùåãî ïàðàãðàôà, ôàéëû óñòðîéñòâ ìîæíî îòêðûâàòü íà ÷òåíèå è çàïèñü, à ê ïîëó÷åííûì äåñêðèïòîðàì ïðèìåíÿòüâûçîâû read() è write().Êðîìå òîãî, áëîê-îðèåíòèðîâàííûå óñòðîéñòâà ïîääåðæèâàþò ïîçèöèîíèðîâàíèå ñ ïîìîùüþ âûçîâà lseek(). Ñëåäóåò îòìåòèòü, ÷òî ïîçèöèîíèðîâàòüñÿ ìîæíî â ëþáóþ (ñóùåñòâóþùóþ) òî÷êó óñòðîéñòâà, êîòîðàÿ, âîîáùåãîâîðÿ, íå îáÿçàíà íàõîäèòüñÿ òî÷íî íà ãðàíèöå ñåêòîðà.
Ïðî÷èòàòü èëè çàïèñàòü òàêæå ìîæíî ïðîèçâîëüíîå êîëè÷åñòâî äàííûõ; åñëè ÷èòàåìûé èëèçàïèñûâàåìûé ôðàãìåíò íà÷èíàåòñÿ è/èëè çàêàí÷èâàåòñÿ ãäå-òî, êðîìå ãðàíèö áëîêîâ, ñèñòåìà âîçüìåò íà ñåáÿ ðàáîòó ïî îòáðàñûâàíèþ ëèøíåé èíôîðìàöèè ïðè ÷òåíèè èëè ïî ïðåäâàðèòåëüíîìó ïðî÷òåíèþ èíôîðìàöèè èççàòðîíóòûõ ñåêòîðîâ, íàõîäÿùåéñÿ çà ïðåäåëàìè çàïèñûâàåìîãî ôðàãìåíòà,äëÿ ïîñëåäóþùåé çàïèñè ñåêòîðîâ öåëèêîì.Áàéò-îðèåíòèðîâàííûå óñòðîéñòâà îïåðàöèþ ïîçèöèîíèðîâàíèÿíå ïîääåðæèâàþò.
Ýòî, ïîæàëóé, îñíîâíîå îòëè÷èå áàéò-îðèåíòèðîâàííûõóñòðîéñòâ îò áëîê-îðèåíòèðîâàííûõ ñ òî÷êè çðåíèÿ ïðèêëàäíîãî ïðîãðàììèñòà.ßñíî, ÷òî óïðàâëåíèå óñòðîéñòâàìè íå ìîæåò îãðàíè÷èâàòüñÿ òîëüêî îïåðàöèÿìè ÷òåíèÿ è çàïèñè. Ïîýòîìó íàä ïî÷òè êàæäûì óñòðîéñòâîì îïðåäåëåíû òàêæå äîïîëíèòåëüíûå îïåðàöèè, ñïåöèôè÷åñêèå äëÿ äàííîãî óñòðîéñòâà.Ê òàêèì îïåðàöèÿì ìîæíî îòíåñòè, íàïðèìåð, îòêðûòèå è çàêðûòèå ëîòêàïðèâîäà CD-ROM; óñòàíîâêó ñêîðîñòè îáìåíà ïîñëåäîâàòåëüíîãî ïîðòà; íèçêîóðîâíåâóþ ðàçìåòêó ãèáêèõ äèñêîâ; óïðàâëåíèå ãðîìêîñòüþ âîñïðîèçâåäåíèÿ çâóêà çâóêîâîé êàðòîé, è ò.ï.Âñå îïåðàöèè ýòîé êàòåãîðèè âûïîëíÿþòñÿ ñ ïîìîùüþ ñèñòåìíîãî âûçîâàint ioctl(int fd, int request, ...);Ïàðàìåòð fd çàäàåò äåñêðèïòîð îòêðûòîãî ôàéëà óñòðîéñòâà, ïàðàìåòðrequest − êîä íåîáõîäèìîé îïåðàöèè.
Ïðè íåîáõîäèìîñòè âûçîâ ìîæåò ïîëó÷àòü äîïîëíèòåëüíûå ïàðàìåòðû, íåîáõîäèìûå äëÿ âûïîëíåíèÿ äàííîé îïåðàöèè. Òàê, íàïðèìåð, ñëåäóþùèé êîä84int fd = open("/dev/cdrom", O_RDONLY|O_NONBLOCK);ioctl(fd, CDROMEJECT);ioctl(fd, CDROMCLOSETRAY);îòêðîåò, à çàòåì çàêðîåò ëîòîê ïðèâîäà CD-ROM.ÏàðàìåòðO_NONBLOCK çàäàåòñÿ,÷òîáû èçáåæàòü ïîèñêà äèñêà â óñòðîéñòâå è îøèáêè â ñëó÷àå, åñëè äèñê â óñòðîéñòâî íåâñòàâëåí.Åñëè æå âñòàâèòü â òî æå óñòðîéñòâî ìóçûêàëüíûé äèñê (òî åñòü äèñê âôîðìàòå audio CD), êîästruct cdrom_ti cti;cti.cdti_trk0 = 2;cti.cdti_ind0 = 0;cti.cdti_trk1 = 2;cti.cdti_ind1 = 0;ioctl(fd, CDROMPLAYTRAKIND, &cti);çàñòàâèò âàøå óñòðîéñòâî âîñïðîèçâåñòè âòîðóþ äîðîæêó äèñêà.85Ëåêöèÿ 713Ïðîöåññû: îáùèå ñâåäåíèÿ13.1Ñâîéñòâà ïðîöåññàÊàê óæå ãîâîðèëîñü, ïîä ïðîöåññîì íåôîðìàëüíî ìîæíî ïîíèìàòü ïðîãðàììó, êîòîðàÿ âûïîëíÿåòñÿ ïîä óïðàâëåíèåì îïåðàöèîííîé ñèñòåìû.Ïðîöåññ îáëàäàåò, ïî ìåíüøåé ìåðå, ñëåäóþùèìè ñâîéñòâàìè:• ñåãìåíò êîäà1 ;• ñåãìåíò äàííûõ;• ñòåê;• ñ÷åò÷èê êîìàíä;• ïðàâà è ïîëíîìî÷èÿ;• ðåñóðñû, âûäàííûå â ïîëüçîâàíèå ïðîöåññà îïåðàöèîííîé ñèñòåìîé (íàïðèìåð, îòêðûòûå ôàéëû);• èäåíòèôèêàòîð ïðîöåññà.Åñëè òðåáóåòñÿ áîëåå ôîðìàëüíîå îïðåäåëåíèå ïðîöåññà, ìîæíî â îïðåäåëåíèè ïåðå÷èñëèòü åãî ñâîéñòâà.Ôèçè÷åñêèé ïðîöåññîð â ñèñòåìå ìîæåò áûòü è îäèí.
 îáùåì ñëó÷àå, ïðîöåññîâ â ñèñòåìå ìîæåò áûòü áîëüøå, ÷åì ïðîöåññîðîâ. Ïîýòîìó â êîíêðåòíûéòè,1 Ñëîâîñåãìåíò çäåñü óïîòðåáëÿåòñÿ óñëîâíî; åñëè â ñèñòåìå èñïîëüçóåòñÿ ñòðàíè÷íàÿ ìîäåëü ïàìÿñåãìåíò êîäà ïðåäñòàâëÿåò ñîáîé ìíîæåñòâî ñòðàíèö, ñîäåðæàùèõ êîä, è ò.ï.оввыполнениенирсиплаестыйнмзвыиковщблокировкаготовностьнаступлениесобы ожидатия емогоÐèñ. 18: Óïðîùåííàÿ äèàãðàììà ñîñòîÿíèé ïðîöåññà86ìîìåíò âðåìåíè ïðîöåññ ìîæåò êàê èñïîëíÿòüñÿ, òàê è íå èñïîëíÿòüñÿ, ïðè÷åì ïðîöåññ, êîòîðûé â íàñòîÿùåå âðåìÿ íå èñïîëíÿåòñÿ, ìîæåò áûòü êàêãîòîâ ê âîçîáíîâëåíèþ èñïîëíåíèÿ, òàê è íå ãîòîâ (íàïðèìåð, ïðîöåññ ìîæåò îæèäàòü ðåçóëüòàòîâ îïåðàöèè ââîäà-âûâîäà).
Òàêèì îáðàçîì, ïðîöåññìîæåò íàõîäèòüñÿ â îäíîì èç òðåõ ñîñòîÿíèé: âûïîëíåíèå, áëîêèðîâêà (â îæèäàíèè ñîáûòèÿ) è ãîòîâíîñòü (ñì. ðèñ. 18). Ìåæäó ñîñòîÿíèÿìè âûïîëíåíèÿè ãîòîâíîñòè ïðîöåññ ïåðåõîäèò ïðè âìåøàòåëüñòâå ïëàíèðîâùèêà ñèñòåìíîãî âðåìåíè (íàïðèìåð, îäèí ïðîöåññ ìîæåò áûòü ñíÿò ñ âûïîëíåíèÿ, òî åñòüïåðåâåäåí èç ñîñòîÿíèÿ âûïîëíåíèÿ â ñîñòîÿíèå ãîòîâíîñòè, à äðóãîé ïðèýòîì, íàîáîðîò, ïîñòàâëåí íà âûïîëíåíèå). ñîñòîÿíèå áëîêèðîâêè ïðîöåññ ìîæåò ïîïàñòü òîëüêî â ñëó÷àå, åñëèýòîò ïðîöåññ ïðîèçâåë òàêîé ñèñòåìíûé âûçîâ, ïîñëå êîòîðîãî íåìåäëåííîåïðîäîëæåíèå âûïîëíåíèÿ íåâîçìîæíî.
Íàïðèìåð, ïðîöåññ ìîã çàòðåáîâàòü÷òåíèå äàííûõ ñ äèñêà; â ýòîì ñëó÷àå ïðîäîëæàòü âûïîëíåíèå èìååò ñìûñëíå ðàíüøå, ÷åì äàííûå áóäóò ïðî÷èòàíû, ÷òî òðåáóåò âðåìåíè. Òàêæå ïðîöåññìîã â ÿâíîì âèäå ïîòðåáîâàòü ïðèîñòàíîâèòü åãî âûïîëíåíèå íà íåñêîëüêî ñåêóíä (âûçîâ sleep()) èëè äî ïîñòóïëåíèÿ âíåøíåãî ñèãíàëà (âûçîâ pause()).13.2Ëåãêîâåñíûå ïðîöåññû íåêîòîðûõ ñèñòåìàõ ïîääåðæèâàåòñÿ ïîíÿòèå ëåãêîâåñíîãî ïðîöåññà 2 .Ëåãêîâåñíûé ïðîöåññ ïðåäñòàâëÿåò ñîáîé äîïîëíèòåëüíóþ åäèíèöó ïëàíèðîâêè â ðàìêàõ îäíîãî îáû÷íîãî ïðîöåññà; èíà÷å ãîâîðÿ, îáû÷íûé ïðîöåññ âòàêèõ ñèñòåìàõ ìîæíî ïðåäñòàâèòü êàê ãðóïïó ëåãêîâåñíûõ ïðîöåññîâ, ðàáîòàþùèõ îäíîâðåìåííî íàä îäíèìè è òåìè æå êîäîì, äàííûìè è ðåñóðñàìè.Óäà÷íûì ïðèìåðîì èñïîëüçîâàíèÿ ëåãêîâåñíûõ ïðîöåññîâ ìîæåò ñëóæèòüèíòåðàêòèâíàÿ ïðîãðàììà, ðàáîòàþùàÿ ñî ñæàòûìè äàííûìè (íàïðèìåð, ìóçûêàëüíûé ðåäàêòîð, ñïîñîáíûé ðàáîòàòü ñ mp3-ôàéëàìè).
Ñ îäíîé ñòîðîíû,îïåðàöèè óïàêîâêè/ðàñïàêîâêè äàííûõ òðåáóþò áîëüøèõ îáúåìîâ âû÷èñëåíèé è ìîãóò äëèòüñÿ ïî íåñêîëüêî ìèíóò è äàæå äåñÿòêîâ ìèíóò. Ñ äðóãîé ñòîðîíû, èíòåðàêòèâíàÿ ïðîãðàììà íå ìîæåò ñåáå ïîçâîëèòü â òå÷åíèåíåñêîëüêèõ ìèíóò íå ðåàãèðîâàòü íà äåéñòâèÿ ïîëüçîâàòåëÿ: íàïðèìåð, ïîëüçîâàòåëü ìîæåò ïåðåìåñòèòü îêíî ïðîãðàììû íà ýêðàíå (÷òî ïîòðåáóåò åãîîòðèñîâêè) èëè äàæå ïðèíÿòü ðåøåíèå îá îòìåíå òåêóùåé îïåðàöèè.  òàêîéñèòóàöèè ëîãè÷íî èñïîëüçîâàòü îäèí ëåãêîâåñíûé ïðîöåññ äëÿ âûïîëíåíèÿâû÷èñëåíèé (óïàêîâêè/ðàñïàêîâêè) è äðóãîé − äëÿ îáðàáîòêè èíòåðôåéñíûõ ñîáûòèé, òî åñòü äëÿ ðåàêöèè íà äåéñòâèÿ ïîëüçîâàòåëÿ.2Âàíãëîÿçû÷íûõ èñòî÷íèêàõ îáû÷íî èñïîëüçóåòñÿ òåðìèí thread, ðåæå − lightweight process.
Íà ðóññêèé ÿçûê òåðìèí òàêæå ìîæåò áûòü ïåðåâåäåí êàê óïðîùåííûé ïðîöåññ, ïîòîê, íèòü èëè äàæå òðåä ;ïîñëåäíèé âàðèàíò ÷àñòî èñïîëüçóåòñÿ â ïðîãðàììèñòñêîì æàðãîíå.87Ëåãêîâåñíûå ïðîöåññû, ðàáîòàþùèå â ðàìêàõ îäíîãî îáû÷íîãî ïðîöåññà,èñïîëüçóþò åãî ñåãìåíòû êîäà è äàííûõ, íî ïðè ýòîì ó êàæäîãî ëåãêîâåñíîãî ïðîöåññà èìååòñÿ ñâîé ñîáñòâåííûé ñòåê (äëÿ õðàíåíèÿ ëîêàëüíûõ ïåðåìåííûõ è àäðåñîâ âîçâðàòà èç ïîäïðîãðàìì) è ñ÷åò÷èê êîìàíä. Êîãäà âðàìêàõ ïðîöåññà âûïîëíÿþòñÿ ëåãêîâåñíûå ïðîöåññû, î ñîñòîÿíèè (âûïîëíåíèå, ãîòîâíîñòü, áëîêèðîâêà) èìååò ñìûñë ãîâîðèòü â îòíîøåíèè êàæäîãî èçëåãêîâåñíûõ ïðîöåññîâ.Ñëåäóåò ó÷èòûâàòü, ÷òî ïðîãðàììèðîâàíèå ñ èñïîëüçîâàíèåì ëåãêîâåñíûõïðîöåññîâ òðåáóåò îïðåäåëåííîãî ìàñòåðñòâà è êðàéíå âûñîêîé àêêóðàòíîñòè,êàê è ëþáîå ïàðàëëåëüíîå ïðîãðàììèðîâàíèå ñ èñïîëüçîâàíèåì ðàçäåëÿåìûõäàííûõ.Ê ðàññìîòðåíèþ ëåãêîâåñíûõ ïðîöåññîâ ìû âåðíåìñÿ íà îäíîé èç ïîñëåäíèõ ëåêöèé.1414.1Ïðîöåññû â ÎÑ UnixÑâîéñòâà ïðîöåññà îïåðàöèîííûõ ñèñòåìàõ ñåìåéñòâà Unix ïðîöåññû èìåþò, ïî ìåíüøåéìåðå, ñëåäóþùèå ñâîéñòâà:1.
Ñåãìåíò êîäà (âîçìîæíî, ðàçäåëÿåìûé). Ñîáñòâåííî ïðîãðàììà, âûïîëíÿþùàÿñÿ â äàííîì ïðîöåññå. Èçìåíÿòü äàííûå â ýòîé îáëàñòè ïàìÿòè ïðîöåññ íå ìîæåò, ÷òî ïîçâîëÿåò ïðè çàïóñêå íåñêîëüêèõ êîïèéîäíîé è òîé æå ïðîãðàììû äåðæàòü â ïàìÿòè îäèí ýêçåìïëÿð êîäà.2. Ñåãìåíò äàííûõ, âêëþ÷àÿ ñòåê.3. Ñîñòîÿíèå ðåãèñòðîâ, âêëþ÷àÿ ñ÷åò÷èê êîìàíä, ñëîâî ñîñòîÿíèÿ(PSW), óêàçàòåëü ñòåêà è âñå ðåãèñòðû îáùåãî íàçíà÷åíèÿ. Êîãäà ïðîöåññ ïî òåì èëè èíûì ïðè÷èíàì íàõîäèòñÿ âíå ñîñòîÿíèÿ âûïîëíåíèÿ(òî åñòü îí ëèáî çàáëîêèðîâàí, ëèáî ãîòîâ ê âûïîëíåíèþ, íî íå âûïîëíÿåòñÿ èç-çà çàíÿòîñòè ïðîöåññîðà), ñîäåðæèìîå åãî ðåãèñòðîâ õðàíèòñÿâ ñïåöèàëüíîé ñòðóêòóðå äàííûõ â ÿäðå.4.