Виртуальные команды ввода-вывода

Виртуальные команды ввода-вывода

Xalion

В прошлой статье мы разобрали как ОС может запустить внутри себя несколько других. Этот способ называется виртуализацией.

Команды ввода-вывода на уровне операционки называются виртуальными, они отличаются от команд ввода-вывода на уровне ISA по двум причинам:

  1. Чтобы не перезаписать или удалить сектора памяти с данными операционной системы и не сломать её.
  2. Чтобы файловые операции проходили в фоновом режиме.

Для упрощения ввода-вывода, в операционную систему добавили объединение байтов — файл. С файлом работают виртуальные команды ввода-вывода.


Файл в домашнем компьютере

Для пользователя, файл — текст, картинка или экселевская таблица.
Файлы хранят однотипные или смешанные данные:
вордовский документ со списком покупок — однотипные данные,
презентация — смешанные данные.

Для операционной системы, файл — группа байтов в памяти.
ОС знает какие группы относятся к конкретным файлам.

Чтобы работать с файлом виртуальные команды используют несколько системных вызовов: открытия, чтения, записи и закрытия файла.
Системные вызовы мы разбирали в вводной статье про ОС.

Например, программе нужно прочитать данные пользователя из вордовского документа. Процесс чтения будет выглядеть так:

  1. Вызов открытия файла найдёт для ОС файл на жёстком диске и загрузит в оперативку информацию для открытия этого файла.
  2. Файл открыт, начинает работать вызов чтения файла.
    Он принимает три параметра:
    Какой файл нужно считать,
    Откуда считать файл,
    Сколько весит файл.

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


Файл в мейнфреймах

Обычно в мейнфреймах стоят UNIX подобные ОС, но в некоторых до сих пор стоят старые операционки, например OS/390 1995 года. В старых мейнфреймовских ОС, структура файла отличается от структуры в домашних ОСках.

Для мейнфрейма, файл — последовательность логических записей.
Каждая запись имеет свою структуру, например, запись может состоять из двух символьных строк, двух целых чисел и одного логического значения.

Для считывания файла системный вызов должен получить два параметра: какой файл считывать и куда его считывать.

Можно передать третий параметр — какую запись из файла нужно считать. Например: файл хранит данные работников офиса, одна логическая запись — один работник. Если пользователю нужны данные по одному работнику, а не по всем, команда чтения найдет его запись и прочитает. Системные вызовы находят записи по ключу или по их месту в файле.


В следующей статье повторим уровень ОС и соберем все статьи по теме.

Report Page