Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СППО.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
41 Кб
Скачать
☆
  1. Средства управления вводом/выводом. Понятия наборов данных и файлов. Операции поддерживаемые на системном уровне.

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

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

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

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

Для доступа к файлам и работы с данными ОС предоставляется интерфейс (являющийся частью интерфейса системных вызовов). Основные операции, определенные в этом интерфейсе (примеры – интерфейс системных вызовов UNIX, язык C):

1) открытие файла fileDescr = fopen(“filename”,”rt”)

2) закрытие файла fclose(fileDescr)

3) чтение данных из файла fscanf(fileDescr,”%s\n”,str)

4) запись данных в файл fprintf(fileDescr,”string\n”)

5) создание файла fileDescr = fopen(“filename”,”wt”)

6) удаление файла unlink(“filename”)

Имя файла в операциях используется только для упрощения работы конечных пользователей. После открытия файла по имени происходит обращение к набору данных и файловая переменная-дескриптор, при помощи которой происходит взаимодействие с системой ввода-вывода связывается уже не с файлом, а с набором данных.

  1. Организация данных на внешних носителях. Связывание программы с набором данных. Перенаправление стандартных потоков ввода-вывода.

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

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

При открытии файла программой пользователя

fileDescr = fopen(“filename”,”rt”)

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

Все дальнейшее взаимодействие с файлами происходит при помощи файлового дескриптора, данные помещаются в буфер из набора данных и помещаются в набор данных из буфера системой ввода-вывода.

По умолчанию система ввода-вывода предоставляет доступ в виде специальных файлов к терминалу пользователя – клавиатуре и экрану. Эти файлы получили название потоков ввода-вывода:

  • stdout – поток вывода (по умолчанию – экран терминала);

  • stderr – поток вывода ошибок (по умолчанию – экран терминала);

  • stdin – поток ввода (по умолчанию – клавиатура).

Вместо этих потоков может быть использован любой файл, при этом вывод, который производится по умолчанию на экран, перенаправляется в этот файл, а ввод – считывается из файла вместо клавиатуры. Для этого существуют команды перенаправления ввода-вывода. В случае языка BASH:

prog > file.txt – stdout программы prog перезаписывает содержимое файла file.txt

prog >> file.txt – stdout программы prog добавляется в конец файла file.txt

prog < file.txt – stdin для программы prog берется из файла file.txt

prog1 | prog2 – stdout программы prog1 перенаправляется на stdin программы prog2