Архитектура операционной системы UNIX   ::   Бах Морис Дж.

Страница: 151 из 715

Алгоритм чтения из файла

mode чтение или запись

count количество байт для чтения или записи

offset смещение в байтах внутри файла

address адрес места, куда будут копироваться данные, в памяти пользователя или ядра

flag отношение адреса к памяти пользователя или к памяти ядра

Рисунок 5.6. Параметры ввода-вывода, хранящиеся в пространстве процесса

Затем в алгоритме начинается цикл, выполняющийся до тех пор, пока операция чтения не будет произведена до конца. Ядро преобразует смещение в байтах внутри файла в номер блока, используя алгоритм bmap, и вычисляет смещение внутри блока до места, откуда следует начать ввод-вывод, а также количество байт, которые будут прочитаны из блока. После считывания блока в буфер, возможно, с продвижением (алгоритмы bread и breada) ядро копирует данные из блока по назначенному адресу в пользовательском процессе. Оно корректирует параметры ввода-вывода в адресном пространстве процесса в соответствии с количеством прочитанных байт, увеличивая значение смещения в байтах внутри файла и адрес места в пользовательском процессе, куда будет доставлена следующая порция данных, и уменьшая число байт, которые необходимо прочитать, чтобы выполнить запрос пользователя. Если запрос пользователя не удовлетворен, ядро повторяет весь цикл, преобразуя смещение в байтах внутри файла в номер блока, считывая блок с диска в системный буфер, копируя данные из буфера в пользовательский процесс, освобождая буфер и корректируя значения параметров ввода-вывода в адресном пространстве процесса.

|< Пред. 149 150 151 152 153 След. >|

Java книги

Контакты: [email protected]