Каков референт дескриптора файла?

Это означает "бесперебойный сон".

D    Uninterruptible sleep (usually IO)

В этом состоянии процесс не просыпается сразу же для обработки сигналов. При выполнении устройства I/O это - единственный способ пойти (иначе, повреждение данных могло закончиться).

5
15.04.2011, 14:52
2 ответа

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

Файлы на диске часто упоминаются как inodes, хотя технически inode является частью метаданных файла. Однако, так как отношения между inode и блоками данных являются непосредственными, отношение к inode неявно относится к данным, на которые это указывает. Более современные файловые системы могут поддерживать функции, такие как копия на записи, где блоки данных могут быть совместно использованы, таким образом, это не универсально верно, но для традиционного Unix. Однако, учитывая термин файловая система, это не маленький прыжок, чтобы полагать, что содержание этого файлы.

inodes также читаются в память как inodes в ядре, когда файл на диске открывается и сохраняется в inode таблице, но это - один уровень абстракции далее, чем Вы спрашиваете.

Это приводит к конфликту в терминологии: файлы на диске (ссылаемый inode) и открытые файлы (ссылаемый записями в таблице файлов).

Я предположил бы, что "открытый файл" или "запись таблицы файлов" являются оба соответствующими описаниями того, что Вы надеетесь описывать.

Одна довольно краткая ссылка, которую я нашел, в: http://www.hicom.net/~shchuang/Unix/unix4.html. Ссылки формы (Bach nn) являются ссылками на книгу Дизайн Операционной системы Unix Maurice J. Bach.

8
27.01.2020, 20:36
  • 1
    , я думаю, что в некоторых операционных системах "открытый файл" является конкретным термином, который может также включать отображения. Существует также то, что, IIRC, "копируя" дескриптор файла не копирует некоторые вещи, как положение, поэтому действительно все, что можно обоснованно назвать, это - " –  Random832 16.04.2011, 00:09
  • 2
    @Random832" записи таблицы дескрипторов файлов: таблица дескрипторов файлов является отдельной к таблице файлов. Я конкретно обращался к таблице файлов, следовательно названной этим "запись таблицы файлов". Но я предполагаю, что вопрос мог быть считан так или иначе. –  camh 16.04.2011, 01:08

В 7-м Unix Выпуска дескриптор файла является индексом к таблице в пользовательской структуре, которая является просто массивом указателей в [система, глобальная] открытая таблица файлов. Таким образом, сам дескриптор файла является действительно косвенной ссылкой, 'указателем на указатель', своего рода. Это также индексирует массив однобайтовых полей признака (который только включал, в то время по крайней мере, флаг замыкаться-должностного-лица).

struct user {
    ...
    struct file *u_ofile[NOFILE]; /* pointers to file structures of open files */
    char u_pofile[NOFILE]; /* per-process flags of open files */
}

Сама открытая таблица файлов содержит режим чтения-записи, файл был открыт с, указатель на inode, положение и вероятно десятки других вещей в современных системах. Я понятия не имею, содержит ли таблица дескрипторов файлов что-то большее чем это в современных системах.

См.:

1
27.01.2020, 20:36

Теги

Похожие вопросы