Главная » Просмотр файлов » Ю. Вахалия - UNIX изнутри (2003)

Ю. Вахалия - UNIX изнутри (2003) (1114670), страница 80

Файл №1114670 Ю. Вахалия - UNIX изнутри (2003) (Ю. Вахалия - UNIX изнутри (2003)) 80 страницаЮ. Вахалия - UNIX изнутри (2003) (1114670) страница 802019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Последующий вы- 8.2. Интерфейс доступа пользователя к файлам 341 зов функции геа0 или уггйе приведет к передаче данных начиная с указанной позиции. Вызовы геаб и игп1е имеют одинаковую семантику, поэтому мы приведем пример только одной из этих функций': псевд = гево' (1б. Ьоу. соилы: где й1 — это дескриптор файла, Ьцà — указатель на буфер в пользовательском адресном пространстве, в который должно производиться чтение данных, а параметр соцлт — количество считываемых байтов. Ядро считывает данные из файла, ассоциированного с И, начиная от смешения, сохраненного в объекте открытого файла. Возможно возникновение ситуации, когда количество считываемых байтов меньше, чем величина соцлг, Это может произойти при достижении конца файла или в случае отсутствия доступных данных при обращении к файлам Г1ГО или устройствам.

Например, при вызове геад с терминала, работающего в киггоггическодг режиме, выход из функции произойдет после ввода пользователем символа перевода каретки, даже в том случае, если строка содержит меньнгее количество символов, чем было указано. Олнако не существует каких-либо условий, при которых ядро системы могло бы передавать большее, чем значение соцлс, количество байтов. Ответственность за емкость буфера Ьц1, достаточную для помещения соцп1 байтов данных, несет пользователь. Вызов геаг1 возвращает количество переданных байтов (пгеаг1). Эта функция также производит смещение указателя на лгеас1 байтов, поэтому следующий вызов геаб или игп1е начнет передачу данных с точки завершения действий предыдущей функции.

Хотя ядро позволяет нескольким процессам производить открытие и совместное использование файла, на самом деле эти операции последовательны. Например, если двум процессам необходимо одновременно произвести запись в один и тот же файл, ядро системы произведет вторую операцию записи только после завершения первой. Такой подход позволяет каждой операции работать с файлами, находящимися в непротиворечивом состоянии. Файл может быть открыт в режиме добавления, для чего системному вызову орел необходимо передать флаг 0 АРРЕ1ч0.

В этом случас перед вызовом вгп1е для указанного дескриптора ядро установит указатель смещения на конец файла. Если пользователь открывает файл в режиме добавления, то это не повлияет на операции с этим файлом, производимые через другие дескрипторы. В многонитевых системах необходимо помнить о некоторых сложностях, связанных с возможностью совместного доступа к файлам. Например, в таких системах могут возникать ситуации, когда одна нить производит вызов ' Большинство программистов не применяет вызовы геад и ипге напрямую.

Вместо них используются стандартные библиотечные функции 1геаг1 и 1тгп1е, имеющие некоторые дополнительные возможности, такие как буферизация данных. 342 Глава 8, Базовые элементы и интерфейс файловой системы Веей перед тем, как другая нить вызовет геад. В результате вторая нить начнет чтение с совершенно иного, отличного от заданного ею смещения, В некоторых ОС, например Бо!аг1з, поддерживаются специальные системные вызовы ргеад и рвп1е, предлагающие неделимые операции позиционирования и чтения (записи). Более подробно эти функции обсуждались в разделе 3.6.6. 8.2.5.

Ввод-вывод методом сборки- рассоединения Системные вызовы Геай и хп1е передают определенное количество байтов между логически непрерывным фрагментом файла и непрерывным диапазоном адресов памяти в адресном пространстве процесса. Однако многим приложениям необходимо производить неделимые операции чтения или записи данных в адресное пространство некоторого количества буферов, расположенных непоследовательно.

Применение вызова геао для этой цели является неэффективным, так как процессу приходится первоначально считывать все данные в единый буфер и только затем копировать их в нужные участки памяти. Система П)ч!Х поддерживает два дополнительных вызова — геаву и аптеч, производящие ввод-вывод методом сборки-рассоединения данных, при котором передача данных осуществляется из файла сразу в несколько буферов, расположенных в пользовательском адресном пространстве. Примером использования метода сборки-рассоединения данных может служить сетевой протокол передачи файлов.

Файлы из удаленного узла передаются по сети и записываются на локальный диск. Данные поступают в наборах сетевых пакетов, в каждом из которых находится только часть файла. Без применения описываемой технологии протоколу необходимо сохранять все полученные пакеты в одном буфере и затем записывать информацию из них на диск. Используя югйеч, протокол может произвести единственный простой запрос, который соберет данные из всех пакетов. Синтаксис функции апач приведен ниже: вэу1ез = иг11еу (ГО. шоу. 1онсп+.), Формат геаду аналогичен.

Аргумент й задает дескриптор файла, 1оу является указателем на массив пар ~Ьазе, 1епйй (начало, длина) в структуре 1оуес, описывающих набор буферов-источников. Аргумент 1оусп~ используется для передачи количества элементов в массиве. Как и в случае функции апре, возвращаемой величиной вызова уггйеч является число переданных байтов. Указатель смещения определяет начало данных в файле, ядро смещает его на величину пЬу1ез перед завершением работы вызова.

На рис. 8.4 показано применение метода для записи файла, Ядро для управления операцией создает структуру шо и инициализирует ее, используя входные аргументы системного вызова и данные объекта открытого файла. Затем ядро передает указатель на структуру функциям нижнего уровня, 8.2. Интерфейс доступа пользователя к файлам 343 производя1цим ввод-вывод. Функция ептеч выполняет неделимую операцию передачи данных из всех заданных буферов в файл. Структура кда о1с 1стес Файл на диска стр Рис. 8.4. Ввод-вывод методом сборки-разъединения данных 8.2.6. Блокировка файлов В системах 11М1Х по умолчанию разрешен одновременный доступ к файлу нескольким процессам на чтение или запись.

Каждый отдельный вызов гезу или чгп1е является неделимым, однако на уровне системы в целом синхронизация действий не производится. В результате если процесс производит чтение из файла порционно (применяя несколько вызовов геаб), другой процесс может между двумя операциями чтения внести изменения в этот файл. Такой подход является абсолютно неудовлетворительным для большинства приложений, которым обычно требуется защищать файлы, к которым производится неоднократный доступ.

Следовательно, система 1ЛЯ1Х должна поддерживать некие средства блокировки файлов. Блокировка может быть рекомендательной или директивной. Рекомендательная блокировка производится без участия ядра и используется для защиты файла. При этом совместно работаюшие процессы должны явно проверять наличие блокировки. Обязалгельпая блокировка производится ядром, которое и отсеивает операции, приводящие к конфликту. Запросы могут быть блокирующими либо неблокируювгими.

В последнем случае при невозможности получения объекта блокировки процесс получит код ошибки Егг011ЕОВЕОСК. В системе 4ВЯР поддерживается вызов 11оск, реализующий рекомендательную блокировку отрытых файлов, но при этом разрешающий использовать как разделяемые, так и эксклюзивные объекты блокировки.

Синхронизация доступа к файлам в ОС Яузсет 'ч' отличается от версии к версии. Система Я~гс2 поддерживает только рекомендательную блокировку, как для файлов, 344 Глава 8. Базовые элементы и интерфейс файловой системы так и для записей (диапазонов байтов внутри файлов). В ЯУКЗ разработчики добавили возможность обязательной блокировки, но при этом необходимо предварительно разрешить применять к файлу рекомендательную блокировку через вызов с1ппод (см.

раздел 8.2.2). Это средство совместимо на двоичном уровне с функциями ХЕХ1Х. В систему ЯЪ"К4 добавлены функции синхронизации файлов В80, а также поддержка блокировки одного пишущего/множества читающих процессов. Для блокировки служит системный вызов (сп11, но большинство приложений использует более простой программный интерфейс, предлагаемый функцией библиотеки С, — 1осК 8.3. Файловые системы Файловая иерархия системы 13Х1Х видится как монолитная структура, но в реальности она представляет собой композицию нескольких отдельных деревьев, каждое из которых является отдельной, полной файловой сисаемой. Одна из файловых систем настраивается как корневая файловая сиппема, а ее корневой каталог становится системным корпевььч каталогом.

Остальные файловые системы присоединяются к существующей структуре при помощи монтирования каждой новой файловой системы в каталог, находящийся в существующем дереве. После монтирования корневой каталог системы «покрывается» каталогом, на который система была смонтирована. Любой доступ к монтировочному каталогу преобразуется в доступ к корневому каталогу смонтированной файловой системы. Оиа остается видимой до тех пар, пока не будет произведена операция размонтирования.

На рис. 8.5 показана иерархия файлов, получаемая при композиции двух файловых систем. В примере система (эО установлена как корневая файлован система машины, а (ь1 смонтирована в каталоге /шп системы (эО. Каталог/вп называется монтировочным или точкой монтирования. Все попытки доступа к нему приведут к обращению к корневому каталогу монтированиой на нем файловой системы. Если каталог /пм содержит какие-либо файлы, они окажутся скрытыми в том случае, если на него будет смонтирована система Ы.

Эти файлы окажутся недоступными для пользователей. При размоитировании (э1 файлы снова становятся видимыми и доступными для использования. Процедуры ядра для установления соответствия полных файловых имен должны обладать информацией о точках монтирования и корректно отрабатывать их пересечение в обоих направлениях. В оригинальной системе э5Ь и различных реализациях ЕЕ8 для отслеживания монтированных файловых систем при. меняется таблица монтирования.

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

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

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

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