Управление файлами и устройствами

 

Задачи ОС по управлению файлами

И устройствами

 

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

Драйвер устройства– это многовходовой программный модуль со своими статическими данными, который умеет инициировать работу с устройством, выполнять заказываемые пользователем обмены (на ввод или вывод данных), терминировать работу с устройством и обрабатывать прерывания от устройства.

Подсистема ввода-вывода (Input-Output Subsystem) мультипрограммной ОС при обмене данными с внешними устройствами компьютера должна решать ряд об­щих задач, из которых наиболее важными являются следующие:

 организация параллельной работы устройств ввода-вывода и процессора;

 согласование скоростей обмена и кэширование данных;

 разделение устройств и данных между процессами;

 обеспечение удобного логического интерфейса между устройствами и осталь­ной частью системы;

 поддержка широкого спектра драйверов с возможностью простого включения в систему нового драйвера;

 динамическая загрузка и выгрузка драйверов;

 поддержка нескольких файловых систем;

 поддержка синхронных и асинхронных операций ввода-вывода.

 

Организация параллельной работы устройств

Ввода-вывода и процессора

 

Каждое устройство ввода-вывода вычислительной системы – диск, принтер, терминал и т. п. – снабжено специализированным блоком управления, называемым контроллером. Контроллер взаимодействует с драйвером – системным программ­ным модулем, предназначенным для управления данным устройством. Контрол­лер периодически принимает от драйвера выводимую на устройство информацию, а также команды управления, которые говорят о том, что с этой информацией нужно сделать (например, вывести в виде текста в определенную область терми­нала или записать в определенный сектор диска). Под управлением контроллера устройство может некоторое время выполнять свои операции автономно, не тре­буя внимания со стороны центрального процессора. Это время зависит от мно­гих факторов – объема выводимой информации, степени интеллектуальности управляющего устройством контроллера, быстродействия устройства и т.д. Даже самый примитивный контроллер, выполняющий простые функции, обычно тра­тит довольно много времени на самостоятельную реализацию подобной функ­ции после получения очередной команды от процессора. Это же справедливо и для сложных контроллеров, так как скорость работы любого устройства ввода-вывода, даже самого скоростного, обычно существенно ниже скорости работы процессора.

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

Данная задача является классической задачей планирования систем реального времени и обычно решается на основе многоуровневой приоритетной схемы об­служивания по прерываниям. Для обеспечения приемлемого уровня реакции все драйверы (или части драйверов) распределяются по нескольким приоритетным уровням в соответствии с требованиями ко времени реакции и временем исполь­зования процессора. Для реализации приоритетной схемы обычно задействуется общий диспетчер прерываний ОС.