Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » _syscalls_ sem10 - Интерфейс библиотечных функций и системных вызовов. Работа с файлами. Работа с файловой системой

_syscalls_ sem10 - Интерфейс библиотечных функций и системных вызовов. Работа с файлами. Работа с файловой системой (Мини-учебник с ejudge = Чернокнижка)

PDF-файл _syscalls_ sem10 - Интерфейс библиотечных функций и системных вызовов. Работа с файлами. Работа с файловой системой (Мини-учебник с ejudge = Чернокнижка) Практика расчётов на ПЭВМ (37192): Книга - 3 семестр_syscalls_ sem10 - Интерфейс библиотечных функций и системных вызовов. Работа с файлами. Работа с файловой системой (Мини-учебник с ejudge = Чернокниж2019-05-08СтудИзба

Описание файла

Файл "_syscalls_ sem10 - Интерфейс библиотечных функций и системных вызовов. Работа с файлами. Работа с файловой системой" внутри архива находится в папке "Мини-учебник с ejudge = Чернокнижка". PDF-файл из архива "Мини-учебник с ejudge = Чернокнижка", который расположен в категории "". Всё это находится в предмете "практика расчётов на пэвм" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст из PDF

1Интерфейс библиотечных функций и системных вызововЯзык Си не содержит никакой поддержки операций ввода/вывода, параллелизма и пр.Такие (и многие другие) функции реализованы в стандартной библиотеке языка. Прототипыфункций, типы данных и константы определяются в стандартных заголовочных файлах (например, <stdio.h>), а собственно тела (реализации) стандартных функций определяются вбиблиотечном файле, который подключается к программе на этапе компоновки. В современных системах библиотеки подключаются к программе не на этапе компоновки, а позднее, наэтапе запуска программы, что позволяет уменьшить размер исполняемого модуля программы на диске, и, что более важно, суммарный размер памяти, занимаемый программами привыполнении за, счёт того, что страницы кода стандартной библиотеки разделяются междувсеми процессами.Часть стандартных функций может быть реализована непосредственно в самом процессе без обращения к ядру операционной системы, например, функции работы со строками.Некоторые функции выполняют существенный объём работы в пользовательском режиме,но для выполнения какой-то части работы обращаются к системе.

Задача некоторых функций состоит в том, чтобы подготовить параметры так, как этого требует интерфейс с ядромоперационной системы, и передать управление ядру. Такие функции называются системными вызовами, хотя, строго говоря, это только функции-оболочки системных вызовов.Граница между библиотечными функциями и системными вызовами проходит по разному наразных системах. Например, на системах BSD операции работы с сокетами реализованы каксистемные вызовы, а на некоторых системах System V они же реализованы как библиотечные функции.Не всегда библиотечная функция или системный вызов завершаются успешно.

Например, операция открытия файла может закончится неудачно по разным причинам, напримерфайл не найден, или недостаточно прав доступа. В этом случае функция возвращает специальное значение, сигнализирующее об ошибке, а в глобальную переменную errno записывается код причины ошибки, например, EACCES — недостаточно прав доступа. Чтобы получить доступ к переменной errno и константам кодов ошибок программа должна подключитьзаголовочный файл <errno.h>.Чаще всего программе требуется напечатать пользователю некоторое осмысленное сообщение об ошибке. Например, в случае ошибки EACCES можно напечатать сообщение"Permission denied". Для этого стандартная библиотека содержит специальные функции.#include <string.h>char *strerror(int errnum);Функция strerror преобразовывает код ошибки, переданный в параметре errnum втекстовую строку-описание ошибки, указатель на которую возвращается. Эта текстоваястрока находится в статической памяти библиотеки и ни в коем случае не должна модифицироваться.#include <stdio.h>void perror(char const *str);Функция perror печатает сообщение о последней ошибке (текущее значение переменной errno) на стандартный поток ошибок.

Если параметр str не равен NULL, перед описанием ошибки будет напечатана строка str и символ двоеточия (’:’).12Работа с файламиПонятие «файл» — одно из основных понятий операционных систем Unix. Понятие«файл» здесь шире, чем в других операционных системах, а именно, файлом может представляться любая сущность, к которой применимы понятия «открытия», «чтения», «записи». Например, последовательность байт, хранящаяся в некоторых секторах диска и имеющая имя, — это обычный (так называемый «регулярный») файл. Но и сам диск тоже является с точки зрения Unix файлом (специальное блочное устройство). Последовательный порткомпьютера тоже является файлом (специальное символьное устройство).Для хранения файлов используется файловая система, причём почти все файлы (кромеанонимных каналов и интернет-сокетов) имеют некоторое соответствие в файловой системе.Для регулярных файлов файловая система хранит имена файлов, служебную информациюо файле и сами блоки данных, а для прочих типов файлов — только имена и служебнуюинформацию.

Файловая система имеет иерархическую структуру: корень файловой системыможет содержать файлы и каталоги, каждый каталог в свою очередь может содержать другие файлы и каталоги и так далее. Две (и более) файловые системы могут быть объединеныв одну файловую систему с помощью монтирования. При монтировании файловой системыкорневой каталог одной файловой системы подключается вместо некоторого каталога другойфайловой системы, так что в результате получается одна файловая система.

Все файловыесистемы, необходимые для работы операционной системы монтируются автоматически приначальной загрузке системы. Обычный пользователь чаще всего не имеет права самостоятельно монтировать файловые системы (из-за соображений безопасности).В «родных» для Unix файловых системах (например, оригинальной файловой системеSysV, файловой системе BSD, файловой системе Linux) информация о файле разбита на двечасти: запись в каталоге и индексный дескриптор.

Индексный дескриптор (inode) хранит всюслужебную информацию о файле: идентификаторы владельца и группы, права доступа, размер, блоки диска, занимаемые файлом и пр. Все индексные дескрипторы в файловой системе занумерованы, а максимальное количество индексных дескрипторов в данной файловойсистеме задаётся при её создании и не может быть потом изменено. Нумерация индексныхдескрипторов уникальна для каждой файловой системы без учёта монтирования, то есть вработающей системе может существовать несколько файлов с одним и тем же номером индексного дескриптора.Индексный дескриптор не хранит имя файла, которое хранится в каталогах.

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

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

Он необходим только на этапе открытия файла. После этого достаточно пары h номер устройства, номер индексного дескриптора i. По открытому файлу не существует простого способа узнать,какое имя было у открытого файла. Чтобы всё-таки узнать имя файла (точнее, одно из имён),нужно получить номер устройства и номер индексного дескриптора (вызовом fstat), а затем найти в файловой системе запись с теми же самыми характеристиками.Ядро может накладывать ограничения на максимальную длину пути.

Если в системныйвызов передаётся абсолютный или относительный путь, длина строки которого больше этогоограничения, системный вызов завершится с ошибкой ENAMETOOLONG. Эта константа называется PATH_MAX и определяется в заголовочном файле <limits.h>.Современные Unix-подобные системы поддерживают работу с самыми разнообразнымифайловыми системами, например VFAT, NTFS, NFS. Чтобы предоставить одинаковый интерфейс доступа к файлам, ядру приходится эмулировать индексные дескрипторы. Не всегдаэто можно сделать полностью корректно (особенно много исключений существует для сетевой файловой системы NFS), и в этих случаях возможны тонкие отличия в работе с файловойсистемой.Каждый тип файловой системы имеет свою структуру каталога. Поэтому некоторые операционные системы (например, Linux) вообще запрещают прямое чтение каталога с помощью системного вызова read, а требуют пользоваться специальным системным вызовом(getdents).С точки зрения операционной системы каждый файл является потоком байтов.

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