Главная » Просмотр файлов » А. Робачевский - Операционная система UNIX

А. Робачевский - Операционная система UNIX (1114671), страница 27

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

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

При создании буфера библиотека выбирает оптимальныйразмер для данного потока. Обычно этот размер равен значению поляs t _ b l k s i z e структуры stat, возвращаемой системным вызовомрассмотренный в разделе "Метаданные файла" этой главы. Если опреде!лить оптимальный размер невозможно, например для каналов или специ!альных файлов устройств, выбирается стандартное значениеопре!деленное в файле <stdio.h>.Рис. 2.9. Структурыданных потокаСвязиВ метаданных каждого файла файловой системы UNIX хранится числосвязей, определяющее количество имен, которое имеет данный файл. На!www.books-shop.com134Глава 2.программирования UNIXпример, файлы(илиetc/rc0.d/K201p, /etc/rc2.d/K20Ipиимеют различные имена, но ссылаются на один и тот жефизический файл (точнее, метаданные файла) и тем самым обеспечиваютдоступ к одним и тем же данным. В данном случае число связей файларавно 4.

Каждый раз, когда одно из имен файла удаляется, число связейсоответственно уменьшается. Когда оно достигнет нуля — данные файлабудут удалены. Такой тип связи называется жесткой.Жесткая связь создается с помощью системного вызоваintcharconst charПри этом будет образована новая запись каталога с именем new и номеромinode указывающим на метаданные файла existing. Также будет увеличе!но число связей. Этим системным вызовом, в частности, пользуется ко!мандарассмотренная в главе 1.Для удаления жесткой связи используется системный вызовttinclude <unistd.h>intcharЭту функцию вызывает командапри удалении файла.

При этом необязательно будут удалены данные файла. Заметим, что системный вызов,явно удаляющий данные файла, отсутствует, поскольку у файла может су!ществовать несколько жестких связей, часть из которых может быть недос!тупна процессу, вызывающему такую функцию (например, одно из именфайла может быть расположено в недоступном каталоге).В противоположность жестким связям, которые, как отмечалось в главеявляются естественным способом адресации данных файла, в UNIX при!меняются символические связи, адресующие не данные файла, а его имя.Например, если файл является символической связью, то в его данныххранится имя файла, данные которого косвенно адресуются.Символическая связь позволяет косвенно адресовать другой файл файло!вой системы. Системный вызовслужит для создания символиче!ской связи.

Этим вызовом, кстати, пользуется команда!s.ttinclude <unistd.h>intchar *name,const charПосле создания символической связи, доступ к целевому файлу name мо!жет осуществляться с помощью symname. При этом, функцияпринимая в качестве аргумента имя символической связи, на самом делеоткрывает целевой файл. Такая особенность называется следованием симво!лической связи. Не все системные вызовы обладают этим свойством. На!пример, системный вызовудаляющий запись в каталоге, дейст!вует только на саму символическую связь. В противном случае, мы неимели бы возможности удалить ее.

В табл.показано, как работают ссимволическими связями различные системные вызовы.www.books-shop.comРабота с файламиТаблицаСистемныйвызов/35Интерпретация символической связи различными системными вызовамисвязиaccess (2)chdir(2)chmod(2)chown(2)++++creat(2)exec(2)link(2)++++Не следует символическойсвязи+mknod(2)open(2)readlink(2)lstat(2)unlink(2)++++++Для чтения содержимого файла — символической связи используется сис!темный вызовttincludeintchar *path, void *buf, size_tАргумент path содержит имя символической связи. В буфереразме!ромвозвращается содержимое файла — символической связи.Для иллюстрации к вышеприведенным рассуждениям приведем примерпрограммы, которая сначала выводит содержимое символической связи, азатем — целевого файла, пользуясь в обоих случаях символическим име!нем:lincludettincludettinclude <fcntl.h><stdio.h>BUFSZ 256/*B качестве аргумента программа принимаетимя символическойargc, charwww.books-shop.com136Глава 2.charint n r e a d ,программирования UNIXfd;/*Прочитаем содержимое самой символическойсиволическуюnread =buf,if (nread < 0){}/*readlink не завершает строку=/*Теперъ прочитаем содержимое целевогоцелевойfd =if (fd < 0){}nread =if (nread < 0){buf,}=exit}Перед тем как запустить программу, создадим символическую связь с фай!лом unix0.txt:$$s111andyuseruser10498Jan 6 0 9 : 5 4Jan 6 0 9 : 5 3s y m l i n k .

t x t !>unix0.txt$Читаем сиволическую связьСимволическаяЧитаем целевой файлЦелевойНачиная с 1975 года фирма AT&T начала предоставлять лицензии наиспользование операционной системы как научнообразовательнымучреждениям, так и коммерческим организациям. Поскольку основнаячасть системы поставлялась в исходных текстах, написанных наязыке С, опытным программистам не требовалось детальнойдокументации, чтобы разобраться в архитектуре UNIX. С ростомпопулярности микропроцессоровwww.books-shop.comРабота с файламиФайлы, отображаемые в памятиСистемный вызовпредоставляет механизм доступа к файлам, аль!тернативный вызовамиС помощью этого вызова процессимеет возможность отобразить участки файла в собственное адресное про!странство.

После этого данные файла могут быть получены или записаныпутем чтения или записи в память. Функцияопределяется сле!дующим образом:#includecaddr_tintaddr, size_tint prot,f l a g s , int f i l d e s ,Этот вызов задает отображение len байтов файла с дескриптором fildes,начиная со смещения o f f , в область памяти со стартовым адресом addr.Разумеется, перед вызовомфайл должен быть открыт с помощьюфункцииАргумент prot определяет права доступа к области памя!ти, которые должны соответствовать правам доступа к файлу, указанным всистемном вызове ореп(2).

В табл. 2.12 приведены возможные значенияаргумента prot и соответствующие им права доступа к файлу. Возможнологическое объединение отдельных значений prot. Так значениеPROT_READ |соответствует доступук файлу.Таблица 2.12. Права доступа к области памятиЗначение аргу[мента protОписаниеПрава доступа к файлуPROT READОбласть доступна для чтенияPROT WRITEОбласть доступна для записиwPROT EXECОбласть доступна для испол%ненияXPROT NONEОбласть недоступна—Обычно значение addr задается равным 0, что позволяет операционнойсистеме самостоятельно выбрать виртуальный адрес начала области ото!бражения. В любом случае, при успешном завершении возвращаемое сис!темным вызовом значение определяет действительное расположение об!ласти памяти.Операционная система округляет значение len до следующей страницывиртуальнойНапример, если размер файла 96 байтов, а размерстраницы 4 Кбайт, то система все равно выделит область памяти размером4096 байтов.

При этом 96 байтов займут собственно данные файла, а ос!тальные 4000 байтов будут заполнены нулями. Процесс может модифици!Организация виртуальной памяти подробно рассматривается в главе 3.www.books-shop.com1382.программирования UNIXровать и оставшиеся 4000 байтов, но эти изменения не отразятся на со!держимом файла. При обращении к участку памяти, лежащему за преде!лами файла, ядро отправит процессу сигналНесмотря на то чтообласть памяти может превышать фактический размер файла, процесс неимеет возможности изменить его размер.Использование права на исполнение (prot = PROT_EXEC) позволяет про!цессу определить собственный механизм загрузки кода. В частности, такойподход используется редактором динамических связей при загрузке дина!мических библиотек, когда библиотека отображается в адресное простран!ство процесса.

Значениепозволяет приложению определитьсобственные механизмы контроля доступа к разделяемым объектам(например, к разделяемой памяти), разрешая или запрещая доступ к об!ласти памяти.Аргументопределяет дополнительные особенности управления об!ластью памяти. В табл. 2.13 приведены возможные типы отображения, оп!ределяемые аргументомТаблица 2.13. Типыаргумента flagsMAP_FIXEDMAP_NORESERVEОписаниеОбласть памяти может совместно использовать%ся несколькими процессамиОбласть памяти используется только вызываю%щим процессомТребует выделения памяти, начиная точно с ад%реса addrHe требует резервирования области свопингаВ случае указаниядля процесса, определившего этот типотображения, будет создана собственная копия страницы памяти, которуюон пытается модифицировать.

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

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

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

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