- •Операционная система. Функции, назначение. Многопользовательские системы. Мультипрограммные системы.
- •Языки управления заданиями (языки команд операционной системы). Процедуры.
- •Средства управления вводом/выводом. Понятия наборов данных и файлов. Операции поддерживаемые на системном уровне.
- •Управление данными на носителях. Ограничения доступа к наборам данных.
- •Процессы в операционных системах. Общие понятия. Ресурсы процесса.
- •Процессы в операционных системах. Создание и уничтожение процесса. Наследование свойств.
- •Процессы в операционных системах. Взаимодействие процессов. Сигналы и их обработка.
Средства управления вводом/выводом. Понятия наборов данных и файлов. Операции поддерживаемые на системном уровне.
Подсистема ввода-вывода ядра ОС выполняет запросы файловой подсистемы и подсистемы управления процессами на доступ к периферийным устройствам (дискам, терминалам, портам и т.п.). Она обеспечивает буферизацию данных – промежуточное хранение части данных, полученных с внешнего устройства и взаимодействие с драйверами устройств.
Данные на внешних носителях хранятся в виде наборов данных, которые состоят из отдельных дисковых блоков, содержащих собственно данные и метаданных – описателя, содержащего информацию о наборе – права доступа к нему, списки блоков и всю информацию, которая позволяет выполнять операции над этим набором – открытие, закрытие, чтение, запись, создание, удаление.
Файлы – логические имена наборов данных, связываемые с метаданными. Один набор данных может быть представлен несколькими файлами. Файлы организуются в систему каталогов, образующих файловую систему (вторая трактовка термина «файловая система» – физический формат дисковых блоков, хранящих данные, и метаданных).
Доступ к данным, обслуживаемым системой ввода-вывода осуществляется при помощи имен блоков данных – имен файлов или устройств. При открытии файла происходит его связывание с блоком данных, хранящимся на диске и перемещение системой ввода-вывода части файла в буфер в оперативной памяти. Собственно, чтение данных прикладной программой идет не с внешнего носителя, а из буфера. Набор данных сам по себе не имеет имени, а описывается только метаданными, содержащими информацию о наборе, в т.ч. права доступа, список физических блоков, входящих в набор и т.п. Связывание имени файла происходит именно с метаданными. Один набор данных может иметь несколько имен.
Для доступа к файлам и работы с данными ОС предоставляется интерфейс (являющийся частью интерфейса системных вызовов). Основные операции, определенные в этом интерфейсе (примеры – интерфейс системных вызовов 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”)
Имя файла в операциях используется только для упрощения работы конечных пользователей. После открытия файла по имени происходит обращение к набору данных и файловая переменная-дескриптор, при помощи которой происходит взаимодействие с системой ввода-вывода связывается уже не с файлом, а с набором данных.
Организация данных на внешних носителях. Связывание программы с набором данных. Перенаправление стандартных потоков ввода-вывода.
Данные на внешних носителях хранятся в виде наборов данных, которые состоят из отдельных дисковых блоков, содержащих собственно данные и метаданных – описателя, содержащего информацию о наборе – права доступа к нему, списки блоков и всю информацию, которая позволяет выполнять операции над этим набором – открытие, закрытие, чтение, запись, создание, удаление.
Файлы – логические имена наборов данных, связываемые с метаданными. Один набор данных может быть представлен несколькими файлами. Файлы организуются в систему каталогов, образующих файловую систему (вторая трактовка термина «файловая система» – физический формат дисковых блоков, хранящих данные, и метаданных).
При открытии файла программой пользователя
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
