Файлы в Linux

Конспект будет дорабатываться Определение файла в Linux, специальные файлы, блочные устройства, символьные устройства, именованные каналы, доменные сокеты

    Файлы

    Обычные файлы в linux содержат байты данных, организованные в виде массивов. Любые байты в файле могут использоваться для считывания или записи.
    Операция записи и считывания всегда начинаются с указанного байта - это место называется файловой позицией или смещением файла.
    Файловая позиция это элемент метаданных, который система использует для открытия файла. При открытии файла, файловая позиция равна 0
    Длина файла измеряется операцией называемой усечением
    Каждому октрытому экземпляру файла присваевается уникальный дескриптор. Один дескриптор может использоваться несколькими процессами
    Ядро не накладывает ограничений на параллельный доступ к файлу. Результат такой параллельной работы с файлом непредсказуем. Поэтому программы должны между собой координироваться, чтобы обеспечить правильную синхронизацию при обращении к файлу
    Доступ к файлу осуществляется не по имени, а по его индексному дескриптору, уникальному в рамках файловой системы
    В индексном дескрипторе хранятся различные метаданные файла, например отметка о времени изменения, владельца, тип, длина и местоположение, но имя файла там не хранится
    Из пользовательского пространства, обращение к файлу осуществляется по имени. Для предоставления имен, по которым идет обращение к файлам, используются каталоги.
    Имена в каталогах указывают на дескриптор. Имя и дескриптор это так называемая ссылка
    Каталог не отличается от обычного файла, за исключением того, что в нем хранятся только имена и соответствующие им номера дескрипторов
    Так же как и обычный файл, каталогу соответствует индексный дескриптор
    По имени файла ядро получает номер его индексного дескриптора, по этому номеру находится сам индексный дескриптор
    Помимо метаданных найденный дескриптор содержит фрагмент диска на котором записанны данные файла
    ием того, что в нем хранятся только имена и соответствующие им номера дескрипторов
    По имени файла ядро получает номер его индексного дескриптора, по этому номеру находится сам индексный дескриптор
    Помимо метаданных найденный дескриптор содержит фрагмент диска на котором записанны данные файла

    Специальные файлы

    Специальные файлы - это объекты ядра, представленные в виде файлов. Существуют 4 типа:
    Блочные устройства
    Символьные устройства
    Именованные каналы
    Доменные сокеты
    Для создания специального файла предоставляется специальный системный вызов
    Доступ к устройствам осуществляется через файлы устройств, с которых можно списывать или в которые можно записывать информацию
    Все устройства в Linux разделяются на блочные и символьные


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

    Блочные устройства это устройства для хранения информации ( диски, флэшки и пр. )

    Именованные каналы ( FIFO - первый пришел, первым обслужен )- механизм межпроцессорного взаимодействия ( IPC ), представляет собой канал связи для дескриптора файла
    Доступ к именнованному каналу предоставляется через специальный файл.
    Обычные конвееры применяются для соединения вывода одной программы в ввод другой
    Именнованные каналы действуют как обычные, но обращение к ним осуществляется через специальный файл FIFO. Таким образом не связанные процессы могут обращаться к нему и обмениваться информацией

    Сокеты - предназначены для межпроцессорного взаимодейтствия между двумя несвязанными процессами ( не только в рамках одной машины, но и между несколькими )
    Доменные сокеты Linux используются для взаимодействия процессов в рамках локальной машины и для обмена используют специальный файл(сокет-файл)

    Пространства имен

    Linux предоставляет глобальное и единное пространство имен
    Файловую систему можно добавить в глобальное пространство имен путем монтирования в любой каталог файловой системы, данный каталог будет называться точкой монтирования
    Жесткий диск является сегментируемым, т.е. может разбиваться на несколько файловых систем
    Наименьшим адресуемым элементом блочного устройства является сектор
    Сектор - физический атрибут устройства, объем сектора может быть равен различным степеням двойки, например 512 байт наиболее распространенный.
    Наименьшим адресуемым элементом файловой системы является блок
    Блок - это астракция в файловой системе ( не на физическом носителе ). Блок по объему равен степени двойки от размера сектора
    Блок как правило крупнее сектора, но меньше размера страницы. Страница это наименьший элемент, адресуемый блоком управления памятью - аппаратным контроллером.
    Обычно размер блока составляет 512 байт, 1 Кбайт, 4 Кбайта
    В linux поддерживается отдельное пространство имен для определенных процессов. Таким образом каждый процесс имеет уникальное представление файла системы и иерархии каталогов


    Источники
    Последнее изменение: 30.09.2024 15:08


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ