Главная » Просмотр файлов » А.В. Столяров - Введение в операционные системы

А.В. Столяров - Введение в операционные системы (1114673), страница 18

Файл №1114673 А.В. Столяров - Введение в операционные системы (А.В. Столяров - Введение в операционные системы) 18 страницаА.В. Столяров - Введение в операционные системы (1114673) страница 182019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 18)

 ïîëüçîâàòåëüñêîì ïðîöåññå íàì äîñòóïåí ëèøü íîìåð äåñêðèïòîðà − öåëîå íåîòðèöàòåëüíîå ÷èñëî, èñïîëüçóåìîå, ÷òîáû ðàçëè÷àòü ìåæäó ñîáîé ôàéëîâûå äåñêðèïòîðû, ïðèíàäëåæàùèåîäíîìó è òîìó æå ïðîöåññó. Çàìåòèì, ÷òî íîìåð äåñêðèïòîðà ëîêàëåí ïî îòíîøåíèþ ê ïðîöåññó: ñêàæåì, äåñêðèïòîð 5 ìîæåò â îäíîì ïðîöåññå áûòüñâÿçàí ñ îäíèì ôàéëîì, â äðóãîì − ñ ñîâñåì äðóãèì, à â òðåòüåì è âîâñå íåñîîòâåòñòâîâàòü íèêàêîìó ïîòîêó ââîäà-âûâîäà.Äåñêðèïòîðû ìîãóò áûòü ñâÿçàíû íå òîëüêî ñ îòêðûòûìè ôàéëàìè íàäèñêå, íî è ñ ïîòîêàìè ââîäà-âûâîäà ïðîèçâîëüíîé ïðèðîäû. Äåñêðèïòîðû ñ5 Äåñêðèïòîðûîòêðûòûõ ôàéëîâ íè â êîåì ñëó÷àå íå ñëåäóåò ïóòàòü ñ èíäåêñíûìè äåñêðèïòîðàìè, ýòîñîâåðøåííî ðàçíûå è íèêàê ìåæäó ñîáîé íå ñîîòíîñÿùèåñÿ ñóùíîñòè.

Îòìåòèì, ÷òî â àíãëèéñêîì ÿçûêåñëîâî descriptor ïðèìåíÿåòñÿ òîëüêî äëÿ îáîçíà÷åíèÿ äåñêðèïòîðîâ îòêðûòûõ ôàéëîâ, òåðìèí æå èíäåêñíûé äåñêðèïòîð ïðåäñòàâëÿåò ñîáîé ïðèìåð íåóäà÷íîãî (íî ïðèæèâøåãîñÿ) ïåðåâîäà: îðèãèíàëüíûéàíãëîÿçû÷íûé òåðìèí index node âîîáùå íå ñîäåðæèò ñëîâà descriptor è áóêâàëüíî ìîæåò áûòü ïåðåâåäåíêàê èíäåêñíûé óçåë.79íîìåðàìè 0, 1 è 2 èãðàþò îñîáóþ ðîëü: ïðîãðàììû îáû÷íî èñõîäÿò èç ñîãëàøåíèÿ, ÷òî èìåííî äåñêðèïòîðû ñ ýòèìè íîìåðàìè ÿâëÿþòñÿ ñòàíäàðòíûìèïîòîêàìè ââîäà, âûâîäà è ñîîáùåíèé îá îøèáêàõ.

Îáû÷íî íà ìîìåíò çàïóñêàïðîãðàììû ýòè äåñêðèïòîðû óæå îòêðûòû.Ñêàçàííîå íå îçíà÷àåò, ÷òî ìû íå ìîæåì èñïîëüçîâàòü ýòè äåñêðèïòîðûäëÿ ñâîèõ öåëåé èëè ñâÿçàòü èõ ñ äðóãèìè ïîòîêàìè ââîäà-âûâîäà, â ÷àñòíîñòè, ñ ôàéëàìè. Ïîäðîáíåå ê ýòîìó âîïðîñó ìû åùå âåðíåìñÿ.12.3.2×òåíèå è çàïèñü×òåíèå èç ôàéëà (èëè, ãîâîðÿ áîëåå øèðîêî, èç ëþáîãî ïîòîêà ââîäà)ïðîèçâîäèòñÿ âûçîâîìint read(int fd, void *buf, int len);Ïàðàìåòð fd çàäàåò ôàéëîâûé äåñêðèïòîð; buf óêàçûâàåò íà áóôåð, â êîòîðûé ñëåäóåò ïîìåñòèòü ïðî÷èòàííûå äàííûå; len ñîîáùàåò âûçîâó ðàçìåðáóôåðà, ÷òîáû èçáåæàòü åãî ïåðåïîëíåíèÿ.Âûçîâ read() ïûòàåòñÿ ïðî÷èòàòü èç çàäàííîãî ïîòîêà len áàéò äàííûõ.Åñëè â óêàçàííîì ïîòîêå îòñóòñòâóþò äàííûå, ãîòîâûå ê ïðî÷òåíèþ, âûçîâáëîêèðóåò âûçâààâøèé ïðîöåññ äî òåõ ïîð, ïîêà äàííûå íå ïîÿâÿòñÿ, è òîëüêîïîñëå èõ ïðî÷òåíèÿ âåðíåò óïðàâëåíèå.

Åñëè äàííûå ïðèñóòñòâóþò, íî èõìåíåå ÷åì len áàéò, âûçîâ ñîõðàíèò èõ â buf è âåðíåò óïðàâëåíèå.Âûçîâ âîçâðàùàåò −1 â ñëó÷àå îøèáêè.  ñëó÷àå óñïåøíîãî ÷òåíèÿ âîçâðàùàåòñÿ ïîëîæèòåëüíîå ÷èñëî, îçíà÷àþùåå êîëè÷åñòâî ïðî÷èòàííûõ áàéò.Åñòåñòâåííî, ýòî ÷èñëî íå ìîæåò áûòü áîëüøå len.Îñîáûì ñëó÷àåì ÿâëÿåòñÿ âîçâðàùàåìîå çíà÷åíèå 0. Åñëè read() âåðíóëíîëü, ýòî îçíà÷àåò, ÷òî â çàäàííîì ïîòîêå ââîäà íàñòóïèëà ñèòóàöèÿ êîíöà ôàéëà.

 ÷àñòíîñòè, äëÿ îáû÷íîãî ôàéëà ýòî îçíà÷àåò, ÷òî ìû äî÷èòàëèäî åãî êîíöà è áîëüøå òàì ÷èòàòü íå÷åãî.Äëÿ çàïèñè â ôàéë (èëè äðóãîé ïîòîê âûâîäà) ìîæíî ïîëüçîâàòüñÿ âûçîâîìint write(int fd, const void *buf, int len);Ïàðàìåòð fd çàäàåò ôàéëîâûé äåñêðèïòîð; buf óêàçûâàåò íà áóôåð, ñîäåðæàùèé äàííûå, êîòîðûå íåîáõîäèìî çàïèñàòü â ôàéë (èëè äðóãîé ïîòîê âûâîäà);len çàäàåò êîëè÷åñòâî ýòèõ äàííûõ.Âûçîâ âîçâðàùàåò −1 â ñëó÷àå îøèáêè.  ñëó÷àå óñïåøíîãî ÷òåíèÿ âîçâðàùàåòñÿ ïîëîæèòåëüíîå ÷èñëî, îçíà÷àþùåå êîëè÷åñòâî çàïèñàííûõ áàéò.Åñòåñòâåííî, ýòî ÷èñëî íå ìîæåò áûòü áîëüøå len.

 áîëüøèíñòâå ñëó÷àåâ80÷èñëî çàïèñàííûõ áàéò â òî÷íîñòè ðàâíÿåòñÿ çíà÷åíèþ len, îäíàêî ïîëàãàòüñÿ íà ýòî îïàñíî.  êîððåêòíî íàïèñàííîé ïðîãðàììå çíà÷åíèå, âîçâðàùàåìîåâûçîâîì write(), îáÿçàòåëüíî äîëæíî ïðîâåðÿòüñÿ.12.3.3Çàêðûòèå ôàéëàÏîñëå îêîí÷àíèÿ ðàáîòû ñ ôàéëîì åãî ñëåäóåò çàêðûòü. Ýòî îñîáåííî âàæíî, ïîñêîëüêó äåñêðèïòîðû ïðåäñòàâëÿþò ñîáîé îãðàíè÷åííûé ðåñóðñ (ïîïðîñòó ãîâîðÿ, èõ îáùåå êîëè÷åñòâî â ñèñòåìå íå ìîæåò ïðåâûøàòü íåêîòîðîãî÷èñëà, êàê è êîëè÷åñòâî äåñêðèïòîðîâ, îòêðûòûõ îäíèì ïðîöåññîì).Çàêðûòèå ôàéëà ïðîèçâîäèòñÿ âûçîâîìint close(int fd);ãäå fd − äåñêðèïòîð, ïîäëåæàùèé çàêðûòèþ. Âûçîâ âîçâðàùàåò 0 â ñëó÷àåóñïåõà, −1 â ñëó÷àå îøèáêè.Îòìåòèì, ÷òî ïðè çàâåðøåíèè ïðîöåññà âñå åãî äåñêðèïòîðû çàêðûâàþòñÿàâòîìàòè÷åñêè.12.3.4ÏîçèöèîíèðîâàíèåÏðè âûïîëíåíèè îïåðàöèé ÷òåíèÿ è çàïèñè äîñòóï àâòîìàòè÷åñêè îñóùåñòâëÿåòñÿ ê ïîñëåäîâàòåëüíûì ïîðöèÿì äàííûõ â ôàéëå.

Äîïóñòèì, ìûîòêðûëè ôàéë íà ÷òåíèå. Åñëè òåïåðü íà÷àòü âûçûâàòü read() ñ ïàðàìåòðîìlen, ðàâíûì 100, òî ïåðâûé âûçîâ ïðî÷èòàåò èç ôàéëà áàéòû ñ íóëåâîãî ïî99é, âòîðîé âûçîâ − áàéòû ñ 100ãî ïî 199é, òðåòèé − áàéòû ñ 200ãî ïî 299éè ò.ä.Ýòîò ïîðÿäîê ìîæíî ïðè íåîáõîäèìîñòè íàðóøèòü, èçìåíèâ â ÿâíîì âèäå çíà÷åíèå òåêóùåé ïîçèöèè, ñâÿçàííîé ñ ôàéëîâûì äåñêðèïòîðîì6 . Ýòîäåëàåòñÿ âûçîâîìint lseek(int fd, int offset, int whence);Ïàðàìåòð fd, êàê îáû÷íî, çàäàåò íîìåð ôàéëîâîãî äåñêðèïòîðà. Ïàðàìåòðoffset óêàçûâàåò, íà ñêîëüêî áàéò ñëåäóåò ñìåñòèòüñÿ, è ïàðàìåòð whenceîïðåäåëÿåò, îò êàêîãî ìåñòà ýòè áàéòû ñëåäóåò îòñ÷èòûâàòü. Ïðè çíà÷åíèèwhence, ðàâíîì êîíñòàíòå SEEK_SET, îòñ÷åò ïîéäåò îò íà÷àëà ôàéëà; ïðè çíà÷åíèè SEEK_CUR − îò òåêóùåé ïîçèöèè, è ïðè çíà÷åíèè SEEK_END − îò êîíöàôàéëà.

Âûçîâ âîçâðàùàåò íîâîå çíà÷åíèå òåêóùåé ïîçèöèè, ñ÷èòàÿ îò íà÷àëà.6 Êàêìû óâèäèì èç äàëüíåéøåãî, ýòî ìîæíî ñäåëàòü íå äëÿ ëþáîãî ôàéëîâîãî äåñêðèïòîðà.81Ðàññìîòðèì íåñêîëüêî ïðèìåðîâ. lseek(fd, 0, SEEK_SET) óñòàíîâèò òåêóùóþ ïîçèöèþ íà íà÷àëî ôàéëà, lseek(fd, 0, SEEK_END) − íà êîíåö ôàéëà. Âûçîâ lseek(fd, 0, SEEK_CUR) íèêàê ïîçèöèþ íå èçìåíèò, íî åãî ìîæíîèñïîëüçîâàòü, ÷òîáû óçíàòü òåêóùåå çíà÷åíèå ïîçèöèè. Ïðî÷èòàòü ïîñëåäíèå100 áàéò ôàéëà ìîæíî ñ ïîìîùüþ âûçîâîâ:int rc;char buf[100];/* ...

*/lseek(fd, -100, SEEK_END);rc = read(fd, buf, 100);Îòìåòèì, ÷òî ïðè ñìåíå ïîçèöèè ìîæíî çàéòè çà êîíåö ôàéëà. Ñàìî ïî ñåáå ýòî íå ïðèâîäèòê èçìåíåíèþ ðàçìåðà ôàéëà, íî åñëè ïîñëå ýòîãî ïðîèçâåñòè çàïèñü, ðàçìåð ôàéëà óâåëè÷èòñÿ (êîíå÷íî, ôàéë ïðè ýòîì äîëæåí áûòü îòêðûò â ðåæèìå, äîïóñêàþùåì çàïèñü). Ïðè ýòîìâîçìîæíî îáðàçîâàíèå äûðêè ìåæäó ïîñëåäíèìè äàííûìè ïåðåä ñòàðûì êîíöîì ôàéëà èïåðâûìè äàííûìè, çàïèñàííûìè ñ íîâîé ïîçèöèè. Òàêèì îáðàçîì, íàïðèìåð, ìîæíî ñîçäàòüíà ìåãàáàéòíîé äèñêåòå ôàéë ðàçìåðîì â ãèãàáàéò. Ýòî êîððåêòíî, ò.ê.

â ÎÑ Unix òàêèå äûðêè íå çàïîëíÿþòñÿ ðåàëüíûìè äàííûìè è íå çàíèìàþò ìåñòà íà äèñêå, ïîêà êòî-íèáóäü íåïðîèçâåäåò îïåðàöèþ çàïèñè.12.412.4.1Ôàéëû óñòðîéñòâ è êëàññèôèêàöèÿ óñòðîéñòâÎáîáùåííîå ïîíÿòèå ôàéëàÎäíèì èç çàìå÷àòåëüíûõ ñâîéñòâ ÎÑ Unix ÿâëÿåòñÿ îáîáùåííàÿ êîíöåïöèÿ ôàéëà êàê óíèâåðñàëüíîé àáñòðàêöèè. Ïðàêòè÷åñêè ëþáîå âíåøíåóñòðîéñòâî ïðåäñòàâëÿåòñÿ íà ïîëüçîâàòåëüñêîì óðîâíå êàê ôàéë ñïåöèàëüíîãî òèïà. Ýòî êàñàåòñÿ, â ÷àñòíîñòè, è æåñòêèõ äèñêîâ, è âñåâîçìîæíûõ ïîñëåäîâàòåëüíûõ è ïàðàëëåëüíûõ ïîðòîâ, è âèðòóàëüíûõ òåðìèíàëîâ, è ò.ï..Òàê, ÷àñòî âîçíèêàåò çàäà÷à ñîçäàíèÿ îáðàçà êîìïàêò-äèñêà (CD).

Òàêîå ìîæåò ïîòðåáîâàòüñÿ, íàïðèìåð, ïðè ñîçäàíèè êîïèè äèñêà.  íåêîòîðûõäðóãèõ îïåðàöèîííûõ ñèñòåìàõ äëÿ ïðîâåäåíèÿ òàêîé îïåðàöèè íåîáõîäèìîñïåöèàëüíîå ïðîãðàììíîå îáåñïå÷åíèå. ×òî êàñàåòñÿ ÎÑ Unix, òî òóò îáû÷íîäîñòàòî÷íî âñòàâèòü äèñê â ïðèâîä è äàòü êîìàíäócat /dev/cdrom > image.isoÒî÷íî òàê æå, ÷òîáû, ñêàæåì, îòïðàâèòü ôàéë íà ïå÷àòü, äîñòàòî÷íî êîìàíäûcat myfile.ps > /dev/lp0Êîíå÷íî, îáû÷íî òàê íå äåëàþò, ïîëàãàÿñü íà ïîäñèñòåìó ïå÷àòè, îäíàêî íàìâ äàííîì ñëó÷àå âàæíåå ñàì ôàêò òàêîé âîçìîæíîñòè.82Äåëî â òîì, ÷òî òàêîé ïîäõîä ïîçâîëÿåò îñóùåñòâëÿòü ðàáîòó ñ óñòðîéñòâàìè â îñíîâíîì ñ ïîìîùüþ òåõ æå ñàìûõ ñèñòåìíûõ âûçîâîâ, ÷òî è ðàáîòóñ îáû÷íûìè ôàéëàìè.

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

Èìåííî òàê îñóùåñòâëÿåòñÿ, íàïðèìåð, âûñîêîóðîâíåâàÿ ðàçìåòêà (ôîðìàòèðîâàíèå) äèñêîâ.Òî÷íî òàê æå, íàïðèìåð, ïðè ââîäå çâóêîâîãî ñèãíàëà ñ ìèêðîôîíà ìîæíî îòêðûòü íà ÷òåíèå ôàéë, ñîîòâåòñòâóþùèé çâóêîâîìó óñòðîéñòâó, è ïðîèçâåñòè ÷òåíèå. Åñëè ïðî÷èòàííóþ èíôîðìàöèþ çàòåì çàïèñàòü îáðàòíî âçâóêîâîå óñòðîéñòâî, çâóê áóäåò âîñïðîèçâåäåí.Íàäî îòìåòèòü, ÷òî íåêîòîðûå ïåðèôåðèéíûå óñòðîéñòâà ìîãóò è íå èìåòüôàéëîâîãî ïðåäñòàâëåíèÿ. Íàïðèìåð, íå âî âñåõ ÎÑ ñåìåéñòâà Unix ñóùåñòâóþò ôàéëû, ñâÿçàííûå ñ ñåòåâûìè èíòåðôåéñàìè.12.4.2Äâà òèïà óñòðîéñòâÓñòðîéñòâà, äëÿ êîòîðûõ èìååòñÿ ïðåäñòàâëåíèå â âèäå ôàéëà, äåëÿòñÿ íàäâà òèïà: ñèìâîëüíûå (èëè ïîòîêîâûå ) è áëî÷íûå.

Характеристики

Тип файла
PDF-файл
Размер
1,27 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6455
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее