Для координации работы драйверов в подсистеме ввода вывода может выделяться особый модуль называемый
Первоначально термин «драйвер» применялся в достаточно узком смысле: под драйвером понимался программный модуль, который:
входит в состав ядра операционной системы, работая в привилегированном режиме;
непосредственно управляет внешним устройством, взаимодействуя с его контроллером с помощью команд ввода-вывода компьютера;
обрабатывает прерывания от контроллера устройства;
□ предоставляет прикладному программисту удобный логический интерфейс работы с устройством, экранируя от него низкоуровневые детали управления устройством и организации его данных;
□ взаимодействует с другими модулями ядра ОС с помощью строго оговоренного интерфейса, описывающего формат передаваемых данных, структуру буферов, способы включения драйвера в состав ОС, способы вызова драйвера, набор общих процедур подсистемы ввода-вывода, которыми драйвер может пользоваться, и т. п.
Согласно этому определению драйвер вместе с контроллером устройства и прикладной программой воплощали идею многослойного подхода к организации программного обеспечения. Контроллер представлял нижний слой управления устройством, выполняющий операции в терминах блоков и агрегатов устройства (например, передвижение головки дисковода, побитную передачу байта по двухпроводному кабелю). Драйвер выполнял более сложные операции, преобразуя, например, данные, адресуемые в терминах номеров цилиндров, головок и секторов диска, в линейную последовательность блоков или устанавливая логическое соединение между двумя модемами через телефонную сеть. В результате прикладная программа уже работала с данными, преобразованными в достаточно понятную для человека форму, — файлами, таблицами баз данных, текстовыми окнами на мониторе и т. п., не вдаваясь в детали представления этих данных в устройствах ввода-вывода. Кроме того, помещение драйвера в привилегированный режим и запрет для пользовательских процессов выполнять операции ввода-вывода защищают критически важные для работы самой ОС устройства ввода-вывода от ошибок прикладных программ, а также позволяют ОС надежно контролировать процесс разделения устройств и их данных между пользователями и процессами.
В описанной схеме драйверы не делились на слои. При этом они выполняли задачи разного уровня сложности: как самые примитивные, например просто последовательно передавали контроллеру байты для дальнейшего использования, так и достаточно сложные, связанные с отработкой протокола взаимодействия между модемами или вычерчиванием на экране математических кривых.
Постепенно, по мере развития операционных систем и усложнения структуры подсистемы ввода-вывода, наряду с традиционными драйверами в операционных системах появились так называемые высокоуровневые драйверы, которые располагаются в общей модели подсистемы ввода-вывода над традиционными драйверами. Появление высокоуровневых драйверов можно считать дальнейшим развитием идеи многослойной организации подсистемы ввода-вывода. Вместо того чтобы концентрировать все функции по управлению устройством в одном программном модуле, во многих случаях гораздо эффективней распределить их между несколькими модулями в соседних слоях иерархии. Традиционные драйверы, которые стали называть аппаратными драйверами, низкоуровневыми драйверами, или драйверами устройств, подчеркивая их непосредственную связь с управляемым устройством, освобождаются от высокоуровневых функций и занимаются только низкоуровневыми операциями. Эти низкоуровневые операции составляют фундамент, на котором можно построить тот или иной набор операций в драйверах более высоких уровней.
При таком подходе повышается гибкость и расширяемость функций по управлению устройством — вместо жесткого набора функций, сосредоточенных в единственном драйвере, администратор ОС может выбрать требуемый набор функций, установив нужный высокоуровневый драйвер. Если различным приложениям необходимо работать с различными логическими моделями одного и того же физического устройства, то для этого достаточно установить в системе несколько драйверов на одном уровне, работающих над одним аппаратным драйвером.
Количество уровней драйверов в подсистеме ввода-вывода обычно не ограничивается каким-либо пределом, но на практике чаще всего используют от двух до пяти уровней драйверов — слишком большое количество уровней может снизить скорость операций ввода-вывода. Несколько драйверов, управляющих одним устройством, но на разных уровнях, можно рассматривать как набор отдельных драйверов или как один многоуровневый драйвер.
Высокоуровневые драйверы оформляются по тем же правилам и придерживаются тех же внутренних интерфейсов, что и аппаратные драйверы. Единственным отличием является то, что высокоуровневые драйверы, как правило, не вызываются по прерываниям, так как взаимодействуют с управляемым устройством через посредничество аппаратных драйверов. Менеджер ввода-вывода управляет . драйверами однотипно, независимо от того, к какому уровню он относится. При наличии большого количества драйверов разного уровня усложняются связи между ними, что, в свою очередь, усложняет их взаимодействие, и именно эта ситуация привела к стандартизации внутреннего интерфейса в подсистеме ввода-вывода и выделения специальной оболочки в виде менеджера ввода-вывода, выполняющего служебные функции по организации работы драйверов.
Рассмотрим, как общие принципы построения многоуровневых драйверов могут быть реализованы при управлении определенными типами внешних устройств.
В подсистеме управления графическими устройствами, такими как графические мониторы и принтеры, также существует несколько уровней драйверов. На нижнем уровне работают аппаратные драйверы, которые позволяют управлять конкретным графическим адаптером или принтером определенного типа, заставляя их выполнять некоторый набор примитивных графических операций: вывод точки, окружности, заполнение области цветом, вывод символов и т. п. Высокоуровневые графические драйверы строят на базе этих операций более мощные операции, например масштабирование изображения, преобразование графического формата в соответствии с разрешающими возможностями устройства и т. п. Самый верхний уровень подсистемы составляет менеджер окон, который создает для каждого приложения виртуальный образ экрана в виде набора окон, в которые приложение может выводить свои графические данные. Менеджер управляет окнами, отображая их в определенную область физического экрана или делая их невидимыми, а также предоставляет к ним совместный доступ с контролем прав доступа. Менеджер окон уже не зависит от особенностей конкретного графического устройства, предоставляя высокоуровневым драйверам заниматься преобразованием форматов выводимых данных.
В подсистеме управления дисками аппаратные драйверы поддерживают для верхних уровней представление диска как последовательного набора блоков одинакового размера, преобразуя вместе с контроллером номер блока в более сложный адрес, состоящий из номеров цилиндра, головки и сектора. Однако такие понятия, как «файл» и «файловая система», аппаратные драйверы дисков не поддерживают — эти удобные для пользователя и программиста логические абстракции создаются на более высоком уровне программным обеспечением файловых систем, которое в современных ОС также оформляется как драйвер, только высокоуровневый. Наличие универсальной среды, создаваемой менеджером ввода-вывода, позволяет достаточно просто решить проблему поддержки в ОС нескольких файловых систем одновременно. Для этого в ОС устанавливается несколько высокоуровневых драйверов (на рисунке это драйверы файловых систем ufs, NTFS и FAT), работающих с общими аппаратными драйверами, но по-своему организующими хранение данных в блоках диска и по-своему представляющими файловую систему пользователю и прикладным процессам. Для унификации представления различных файловых систем в подсистеме ввода-вывода может использоваться общий драйвер верхнего уровня, играющий роль диспетчера нескольких драйверов файловых систем. На рисунке в качестве примера показан диспетчер VFS (Virtual File System), применяемый в операционных системах UNIX, реализованных на основе кода System V Release 4.
Необязательно все модули подсистемы ввода-вывода оформляются в виде драйверов. Например, в подсистеме управлениями дисками обычно имеется такой модуль, как дисковый кэш, который служит для кэширования блоков дисковых файлов в оперативной памяти. Достаточно специфические функции кэша делают нецелесообразным оформление его в виде драйвера, взаимодействующего с другими модулями ОС только с помощью услуг менеджера ввода-вывода. Другим примером модуля, который чаще всего не оформляется в виде драйвера, является диспетчер окон графического интерфейса. Иногда этот модуль вообще выносится из ядра ОС и реализуется в виде пользовательского процесса. Таким образом был реализован диспетчер окон (а также высокоуровневые графические драйверы) в Windows NT 3.5 и 3.51, но этот микроядерный подход заметно замедлял графические операции, поэтому в Windows NT 4.0 диспетчер окон и высокоуровневые графические драйверы, а также графическая библиотека GDI были перенесены в пространство ядра.
Аппаратные драйверы после запуска операции ввода-вывода должны своевременно реагировать на завершение контроллером заданного действия, и для решения этой задачи они взаимодействуют с системой прерываний. Драйверы более высоких уровней вызываются уже не по прерываниям, а по инициативе аппаратных драйверов или драйверов вышележащего уровня. Не все процедуры аппаратного драйвера нужно вызывать по прерываниям, поэтому драйвер обычно имеет определенную структуру, в которой выделяется секция обработки прерываний (Interrupt Service Routine, ISR), которая и вызывается при поступлении запроса от соответствующего устройства диспетчером прерываний. Диспетчер прерываний можно считать частью подсистемы ввода-вывода, как это показано на рис. 7.2, а можно считать и независимым модулем ядра ОС, так как он служит не только для вызова секций обработки прерываний драйверов, но и для диспетчеризации прерываний других типов.
В унификацию драйверов большой вклад внесла операционная система UNIX. В ней все драйверы были разделены на два больших класса: блок-ориентированные (block-oriented) драйверы и байт-ориентированные (character-oriented) драйверы. Это деление является более общим, чем показанное на рис. 7.2 деление на вертикальные подсистемы. Например, драйверы графических устройств и драйверы сетевых устройств относятся к классу байт-ориентированных.
Блок-ориентированные драйверы управляют устройствами прямого доступа, которые хранят информацию в блоках фиксированного размера, каждый из которых имеет собственный адрес. Самое распространенное внешнее устройство прямого доступа — диск. Адресуемость блоков приводит к тому, что для устройств прямого доступа появляется возможность кэширования данных в оперативной памяти, и это обстоятельство значительно влияет на общую организацию ввода-вывода для блок-ориентированных драйверов.
Устройства, с которыми работают байт-ориентированные драйверы, не адресуемы и не позволяют производить операцию поиска данных, они генерируют или потребляют последовательности байт. Примерами таких устройств, которые также называют устройствами последовательного доступа, служат терминалы, строчные принтеры, сетевые адаптеры.
Значительность отличий блок-ориентированных и байт-ориентированных драйверов иллюстрирует тот факт, что среда STREAMS разработана только для байт-ориентированных драйверов и включить в нее блок-ориентированный драйвер невозможно.
Блок- или байт-ориентированность является характеристикой как самого устройства, так и драйвера. Очевидно, что если устройство не поддерживает обмен адресуемыми блоками данных, а позволяет записывать или считывать последовательность байт, то и устройство, и его драйвер можно назвать байт-ориентированными. Для байт-ориентированного устройства невозможно разработать блок-ориентированный драйвер. Устройство прямого доступа с блочной адресацией является блок-ориентированным, и для управления им естественно использовать блок-ориентированный драйвер. Однако блок-ориентированным устройством можно управлять и с помощью байт-ориентированного драйвера. Так, диск можно рассматривать не только как набор блоков, но и как набор байт/первый из которых начинает первый блок диска, а последний завершает последний блок. Физический обмен с контроллером устройства по-прежнему осуществляется блоками, но байт-ориентированный драйвер устройства будет преобразовывать блоки в последовательность байт. Для устройств прямого доступа часто разрабатывают пару драйверов, чтобы к устройству можно было обращаться и по байт-ориентированному, и по блок-ориентированному интерфейсам в зависимости от потребностей.
Деление всех драйверов на блок-ориентированные и байт-ориентированные оказывается полезным для структурирования подсистемы управления вводом-выводом. Тем не менее необходимо учитывать, что эта схема является упрощенной — имеются внешние устройства, драйверы которых не относятся ни к одному классу, например таймер, который, с одной стороны, не содержит адресуемой информации, а с другой стороны, не порождает потока байт. Это устройство только выдает сигнал прерывания в некоторые моменты времени.
Операционная система UNIX в свое время сделала еще один важный шаг по унификации операций и структуризации программного обеспечения ввода-вывода. В ОС UNIX все устройства рассматриваются как некоторые виртуальные (специальные) файлы, что дает возможность использовать общий набор базовых операций ввода-вывода для любых устройств независимо от их специфики. Эти вопросы обсуждаются в следующем разделе, посвященном файлам и файловым системам.
Организация побайтного ввода-вывода. Организация ввода-вывода с использованием каналов ввода-вывода. Последовательность операций, выполняемых каналом ввода-вывода. Канальная программа. Вовлечение операционной системы в управление вводом-выводом. Рабочая область канала ввода-вывода. Очередь запросов на ввод-вывод. Алгоритм обработки прерываний по вводу-выводу. Пример управления вводом-выводом.
□Основными задачами подсистемы ввода-вывода являются:
организация параллельной работы процессора и устройств ввода-вывода, при обеспечении приемлемого уровня реакции каждого драйвера и минимизации общей загрузки процессора;
согласование скоростей работы процессора, оперативной памяти и устройств ввода-вывода;
разделение устройств ввода-вывода между процессами;
обеспечение удобного логического интерфейса к устройствам ввода-вывода.
□ Подсистема ввода-вывода обычно имеет ярко выраженную многослойную структуру, которая помогает объединить большое количество разнотипных драйверов в систему с общим интерфейсом.
□ Драйверы делятся на низкоуровневые, непосредственно управляющие работой контроллеров внешних устройств, и высокоуровневые, обеспечивающие логический интерфейс к устройствам, например драйверы файловых систем
□ Для координации работы драйверов в подсистеме ввода-вывода может выделяться особый модуль, называемый менеджером ввода-вывода.
□ Аппаратные драйверы делятся на блок-ориентированные, обеспечивающие доступ к устройствам с поблочной непосредственной адресацией, и байт-ориентированные, управляющие устройствами, поддерживающими побайтный не адресуемый обмен.
Одной из главных задач ОС является обеспечение
обмена данными между приложениями и периферийными устройствами компьютера. Собственно ради выполнения этой задачи и были разработаны первые системные программы, послужившие прототипами операционных систем. В современной ОС функции обмена данными с периферийными устройствами выполняет подсистема ввода-вывода. Клиентами этой подсистемы являются не только пользователи и приложения, но и некоторые компоненты самой ОС, которым требуется получение системных данных или их вывод, например подсистеме управления процессами при смене активного процесса необходимо записать на диск контекст приостанавливаемого процесса и считать с диска контекст активизируемого процесса.
Основными компонентами подсистемы ввода-вывода являются драйверы, управляющие внешними устройствами, и файловая система. К подсистеме ввода-вывода можно также с некоторой долей условности отнести и диспетчер прерываний.
Условность заключается в том, что диспетчер прерываний обслуживает не только модули подсистемы ввода-вывода, но и другие модули ОС, в частности такой важный модуль, как планировщик/диспетчер потоков. Но из-за того, что планирование работ подсистемы ввода-вывода составляет основную долю нагрузки диспетчера прерываний, его вполне логично рассматривать как ее составную часть (к тому же первопричиной появления в компьютерах системы прерываний были в свое время именно операции с устройствами ввода-вывода «П! принтер и диски, графический монитор и сетевой адаптер»).
Необходимость обеспечить программам возможность осуществлять обмен данными с внешними устройствами и при этом не включать в каждую двоичную программу соответствующий двоичный код, осуществляющий собственно управление устройствами ввода/вывода, привела разработчиков к созданию системного программного обеспечения и, в частности, самих операционных систем. Программирование задач управления вводом/выводом является наиболее сложным и трудоемким, требующим очень высокой квалификации. Поэтому код, позволяющий осуществлять операции ввода/вывода, стали оформлять в виде системных библиотечных процедур; потом его стали включать не в системы программирования, а в операционную систему с тем, чтобы в каждую отдельно взятую программу его не вставлять, а только позволить обращаться к такому коду. Системы программирования стали генерировать обращения к этому системному коду ввода/вывода и осуществлять только подготовку к собственно операциям ввода/вывода, то есть автоматизировать преобразование данных к соответствующему формату, понятному устройствам, избавляя прикладных программистов от этой сложной и трудоемкой работы. Другими словами, системы программирования вставляют в машинный код необходимые библиотечные подпрограммы ввода/вывода и обращения к тем системным программным модулям, которые, собственно, и управляют операциями обмена между оперативной памятью и внешними устройствами. Таким образом, управление вводом/выводом — это одна из основных функций любой ОС.
Организация побайтного ввода-вывода. Организация ввода-вывода с использованием каналов ввода-вывода. Последовательность операций, выполняемых каналом ввода-вывода. Канальная программа. Вовлечение операционной системы в управление вводом-выводом. Рабочая область канала ввода-вывода. Очередь запросов на ввод-вывод. Алгоритм обработки прерываний по вводу-выводу. Пример управления вводом-выводом.
□Основными задачами подсистемы ввода-вывода являются:
организация параллельной работы процессора и устройств ввода-вывода, при обеспечении приемлемого уровня реакции каждого драйвера и минимизации общей загрузки процессора;
согласование скоростей работы процессора, оперативной памяти и устройств ввода-вывода;
разделение устройств ввода-вывода между процессами;
обеспечение удобного логического интерфейса к устройствам ввода-вывода.
□ Подсистема ввода-вывода обычно имеет ярко выраженную многослойную структуру, которая помогает объединить большое количество разнотипных драйверов в систему с общим интерфейсом.
□ Драйверы делятся на низкоуровневые, непосредственно управляющие работой контроллеров внешних устройств, и высокоуровневые, обеспечивающие логический интерфейс к устройствам, например драйверы файловых систем
□ Для координации работы драйверов в подсистеме ввода-вывода может выделяться особый модуль, называемый менеджером ввода-вывода.
□ Аппаратные драйверы делятся на блок-ориентированные, обеспечивающие доступ к устройствам с поблочной непосредственной адресацией, и байт-ориентированные, управляющие устройствами, поддерживающими побайтный не адресуемый обмен.
Одной из главных задач ОС является обеспечение обмена данными между приложениями и периферийными устройствами компьютера. Собственно ради выполнения этой задачи и были разработаны первые системные программы, послужившие прототипами операционных систем. В современной ОС функции обмена данными с периферийными устройствами выполняет подсистема ввода-вывода. Клиентами этой подсистемы являются не только пользователи и приложения, но и некоторые компоненты самой ОС, которым требуется получение системных данных или их вывод, например подсистеме управления процессами при смене активного процесса необходимо записать на диск контекст приостанавливаемого процесса и считать с диска контекст активизируемого процесса.
Основными компонентами подсистемы ввода-вывода являются драйверы, управляющие внешними устройствами, и файловая система. К подсистеме ввода-вывода можно также с некоторой долей условности отнести и диспетчер прерываний.
Условность заключается в том, что диспетчер прерываний обслуживает не только модули подсистемы ввода-вывода, но и другие модули ОС, в частности такой важный модуль, как планировщик/диспетчер потоков. Но из-за того, что планирование работ подсистемы ввода-вывода составляет основную долю нагрузки диспетчера прерываний, его вполне логично рассматривать как ее составную часть (к тому же первопричиной появления в компьютерах системы прерываний были в свое время именно операции с устройствами ввода-вывода «П! принтер и диски, графический монитор и сетевой адаптер»).
Необходимость обеспечить программам возможность осуществлять обмен данными с внешними устройствами и при этом не включать в каждую двоичную программу соответствующий двоичный код, осуществляющий собственно управление устройствами ввода/вывода, привела разработчиков к созданию системного программного обеспечения и, в частности, самих операционных систем. Программирование задач управления вводом/выводом является наиболее сложным и трудоемким, требующим очень высокой квалификации. Поэтому код, позволяющий осуществлять операции ввода/вывода, стали оформлять в виде системных библиотечных процедур; потом его стали включать не в системы программирования, а в операционную систему с тем, чтобы в каждую отдельно взятую программу его не вставлять, а только позволить обращаться к такому коду. Системы программирования стали генерировать обращения к этому системному коду ввода/вывода и осуществлять только подготовку к собственно операциям ввода/вывода, то есть автоматизировать преобразование данных к соответствующему формату, понятному устройствам, избавляя прикладных программистов от этой сложной и трудоемкой работы. Другими словами, системы программирования вставляют в машинный код необходимые библиотечные подпрограммы ввода/вывода и обращения к тем системным программным модулям, которые, собственно, и управляют операциями обмена между оперативной памятью и внешними устройствами. Таким образом, управление вводом/выводом — это одна из основных функций любой ОС.
Существует ряд правил, которые определяют действие разрешений.
Пользователи не могут работать с каталогом или файлом, если они не имеют явного разрешения на это или же они не относятся к группе, которая имеет соответствующее разрешение.
Разрешения имеют накопительный эффект, за исключением разрешения No Access, которое отменяет все остальные имеющиеся разрешения. Например, если группа Engineering имеет разрешение Change для какого-то файла, а группа Finance имеет для этого файла только разрешение Read и Петров является членом обеих групп, то у Петрова будет разрешение Change. Однако если разрешение для группы Finance изменится на No Access, то Петров не сможет использовать этот файл, несмотря на то что он член группы, которая имеет доступ к файлу.
По умолчанию в окнах Windows Explorer находят свое отражение стандартные права, а переход к отражению индивидуальных прав происходит только при выполнении некоторых действий. Это стимулирует администратора и пользователей к использованию тех наборов прав, которые разработчики ОС посчитали наиболее удобными.
Встроенные группы пользователей и их права
Мощность и гибкость системы безопасности Windows NT во многом определяется наличием в ней достаточно широкого набора прав групп пользователей на выполнение системных действий. Для иллюстрации этого утверждения в следующих двух таблицах приводятся списки изменяемых и встроенных прав для встроенных групп Windows NT.
Первой показана таблица изменяемых прав встроенных групп.
В следующей таблице представлены встроенные права встроенных групп.
Server Opera- tors
Account Opera- tors
Print Opera- tors
Backup Opera- tors
Log on locally (локальный логический вход)
Access this computer from network (доступ к данному компьютеру через сеть)
Take ownership of files (установление прав собственности на файлы)
Manage auditing and security log (управление аудитом и учетом событий, связан- ных с безопасностью)
Change the system time (изменение системного времени)
Shutdown the system (оста- нов системы)
Force shutdown from remote system (инициирование останова с удаленной системы)
Backup files and directories (резервное копирование файлов и каталогов)
Restore files and directories (восстановление файлов и каталогов со стримера)
Load and unload device drivers (загрузка и выгрузка драйверов устройств)
Add work- station to domain (добавление рабочих станций к домену)
Server Opera- tors
Account Opera- tors
Print Opera- tors
Backup Opera- tors
Create and manage user accounts (создание и управление пользова- тельской учетной информацией)
Create and manage global groups (создание и управление глобальными группами)
Assign user rights (назначение прав для пользователей)
Manage auditing of system events (управление аудитом системных событий)
Lock the server (блоки- рование сервера)
Override the lock of the server ( преодоление блокировки сервера )
Format server's hard disk (форматирование жесткого диска сервера)
Create common groups (создание общих групп)
Keep local profile (хранение локального профиля)
Share and stop sharing directories (разделение и прекращение разделения каталогов)
Share and stop sharing printers (разделение и прекращение разделения принтеров)
При создании новых групп администратор может наделить их любым изменяемым правом, но распоряжаться встроенными правами он не может — они являются неотъемлемыми атрибутами встроенных и только встроенных групп.
Основными задачами подсистемы ввода-вывода являются:
организация параллельной работы процессора и устройств ввода-вывода при обеспечении приемлемого уровня реакции каждого драйвера и минимизации общей загрузки процессора;
согласование скоростей работы процессора, оперативной памяти и устройств ввода-вывода;
разделение устройств ввода-вывода между процессами; О обеспечение удобного логического интерфейса к устройствам ввода-вывода. Q Подсистема ввода-вывода обычно имеет ярко выраженную многослойную структуру, которая помогает объединить большое количество разнотипных драйверов в систему с общим интерфейсом.
Драйверы делятся на низкоуровневые, непосредственно управляющие работой контроллеров внешних устройств, и высокоуровневые, обеспечивающие логический интерфейс к устройствам, например драйверы файловых систем.
Для координации работы драйверов в подсистеме ввода-вывода может выделяться особый модуль, называемый менеджером ввода-вывода.
Аппаратные драйверы делятся на блок-ориентированные, обеспечивающие доступ к устройствам с поблочной непосредственной адресацией, и байт-ориентированные, управляющие устройствами, поддерживающими побайтный не адресуемый обмен.
Файл — это именованная область внешней памяти, в которую можно записывать и из которой можно считывать данные. Основными целями использования файлов являются: долговременное и надежное хранение информации, а также совместный доступ к данным.
Файловая система представляет собой комплекс системных программных средств, реализующих различные операции с файлами, таких как создание, уничтожение, чтение, запись, именование и поиск файлов. Под файловой системой понимают также набор всех файлов и служебных структур данных, хранящихся на внешнем устройстве.
Кроме обычных файлов ОС, как правило, поддерживает такие типы файлов, как каталоги, символьные связи, именованные конвейеры и специальные файлы.
Специальный файл является универсальной моделью устройства ввода-вывода, представляя его для остальной части операционной системы и прикладных процессов в виде неструктурированного набора байт, то есть в виде обычного файла.
Современные файловые системы имеют иерархическую структуру, упрощающую именование файлов и их поиск.
Физическая организация файловой системы подразумевает способы размещения и адресации отдельных частей файлов в разделах и секторах дисковой памяти, а также способы организации служебной информации, описывающей размещение файлов и их атрибуты.
Для синхронизации совместно работающих процессов, пытающихся использовать один и тот же файл одновременно, в файловых системах реализуется механизм блокировки файлов и отдельных записей в файлах.
Механизм контроля доступа к файлам позволяет администраторам многопользовательских ОС задавать для отдельных пользователей и групп пользователей набор операций, которые им разрешается выполнять над отдельным файлом или группой файлов, объединенных в каталог.
Управление доступом в ОС осуществляется на основе одного из двух базовых подходов: избирательного доступа, когда владелец файла самостоятельно может определить права доступа к файлу и мандатного доступа, при котором права доступа определяются членством пользователя в определенной группе, и пользователь не может их произвольно изменять или делегировать.
Права доступа к файлу могут присваиваться явно, а могут наследоваться у родительского каталога, что сокращает количество ручных операций и упрощает логику доступа.
Задачи и упражнения
1. За счет каких устройств удается распараллелить ввод-вывод даже в однопроцессорных системах?
2. Какие функции выполняет менеджер ввода-вывода?
3. Какие из следующих утверждений правильны?
А) драйвер выполняет низкоуровневые функции по управлению устройством ввода-вывода;
В) драйвер выполняет функции управления файловой системой;
С) все функции драйвера вызываются по прерываниям;
D) драйвер является частью подсистемы ввода-вывода;
Е) драйвер организует взаимодействие модулей ядра операционной системы;
F) драйвер работает в привилегированном режиме.
4. Какие два типа ресурсов, связанных с диском, требуется выделить процессу, чтобы он выполнил запись данных на диск?
5. Каким из двух типов драйверов — блок-ориентированным или байт-ориентированным — обслуживается диск?
6. С какой целью в некоторых файловых системах характеристики файла отделяются от его имени?
7. Какие программные компоненты поддерживают структуру файла в тех ОС, где файл представлен последовательносью байт?
8. С какого каталога начинается «раскрутка» полного имени файла?
9. Операционная система выделяет файлам пространство на диске:
10. Выберите размер кластера для файловой системы FAT16, устанавливаемой в разделе, который разделен на секторы размером 512 байт и имеет общий объем 272 Мбайт. Оцените, сколько в этом случае кластеров будет содержать область данных, а также какой размер необходимо отвести таблице FAT. Учтите, что размер кластера должен быть равен степени двойки. Примите во внимание также, что стандартным размером корневого каталога для жестких дисков является размер в 32 сектора.
11. При каких условиях можно автоматически гарантированно восстановить в файловой системе FAT удаленный файл?
12. Сформулируйте основную цель введения в ОС системного вызова open.
13. В какой из типов систем управления доступом — избирательной или мандатной — пользователю предоставляется большая свобода действий?
14. Какой смысл имеет операция «выполнить каталог» в ОС UNIX?
15. С помощью какого механизма пользовательский процесс может запускать на выполнение привилегированные утилиты операционной системы UNIX?
16. Чем отличается разрешение Full Control для файлов от разрешения Change в Windows NT?
17. Какие действия по отношению к файлу А разрешены пользователю ОС Windows NT, если он лично имеет разрешение Change, а для группы, в которую он входит, задано разрешение No Access?
Файл: Лекция 6 Ввод-Вывод и файловая система.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлена: 18.06.2021
Скачиваний: 9
В Windows NT однозначно определены правила, по которым вновь создаваемому объекту назначается список ACL. Если вызывающий код во время создания объекта явно задает все права доступа к вновь создаваемому объекту, то система безопасности приписывает этот ACL объекту.
Если же вызывающий код не снабжает объект списком ACL, а объект имеет имя, то применяется принцип наследования разрешений. Система безопасности просматривает ACL того каталога объектов, в котором хранится имя нового объекта. Некоторые из входов ACL каталога объектов могут быть помечены как наследуемые. Это означает, что они могут быть приписаны новым объектам, создаваемым в этом каталоге.
В том случае, когда процесс не задал явно список ACL для создаваемого объекта и объект-каталог не имеет наследуемых элементов ACL, используется список ACL по умолчанию из токена доступа процесса.
Наследование разрешений употребляется наиболее часто при создании нового объекта. Особенно оно эффективно при создании файлов, так как эта операция выполняется в системе наиболее часто.
Разрешения на доступ к каталогам и файлам
В Windows NT администратор может управлять доступом пользователей к каталогам и файлам только в разделах диска, в которых установлена файловая система NTFS. Разделы FAT не поддерживаются средствами защиты Windows NT, так как в FAT у файлов и каталогов отсутствуют атрибуты для хранения списков управления доступом. Доступ к каталогам и файлам контролируется за счет установки соответствующих разрешений.
Разрешения в Windows NT бывают индивидуальные и стандартные. Индивидуальные разрешения относятся к элементарным операциям над каталогами и файлами, а стандартные разрешения являются объединением нескольких индивидуальных разрешений.
В представленной ниже таблице показано шесть индивидуальных разрешений (элементарных операций), смысл которых отличается для каталогов и файлов.
Чтение имен файлов и каталогов, входящих в данный ка талог, а также атрибутов и владельца каталога
Чтение данных, атрибутов, - имени владельца и разрешений файла
Добавление файлов и каталогов, изменение атрибутов каталога, чтение владельца и разрешений каталога
• Чтение владельца и разрешений файла, изменение атрибутов файла, изменение и добавление данных файла
Чтение атрибутов каталога, выполнение изменений в каталогах, входящих в данный каталог, чтение имени владельца и разрешений каталога
Чтение атрибутов файла, имени владельца и разрешений. Выполнение файла, если он хранит код программы
Change Permission (P)
Изменение разрешений каталога
Изменение разрешений файла
Take Ownership (O)
Стать владельцем каталога
Стать владельцем файла
Для файлов в Windows NT определено четыре стандартных разрешения: No Access, Read, Change и Full Control, которые объединяют индивидуальные разрешения, перечисленные в следующей таблице.
Разрешение Full Control отличается от Change тем, что дает право на изменение разрешений (Change Permission) и вступление во владение файлом (Take Ownership).
Для каталогов в Windows NT определено семь стандартных разрешений: No Access, List, Read, Add, Add&Read, Change и Full Control. В следующей таблице показано соответствие стандартных разрешений индивидуальным разрешениям для каталогов, а также то, каким образом эти стандартные разрешения преобразуются в индивидуальные разрешения для файлов, входящих в каталог в том случае, если файлы наследуют разрешения каталога.
Индивидуальные разрешения для каталога
Индивидуальные разрешения для файлов каталога при наследовании
При создании файла он наследует разрешения от каталога указанным способом только в том случае, если у каталога установлен признак наследования его разрешений. Стандартная оболочка Windows NT — Windows Explorer — не позволяет установить такой признак для каждого разрешения отдельно (то есть задать маску наследования), управляя наследованием по принципу «все или ничего».
Существует ряд правил, которые определяют действие разрешений.
Пользователи не могут работать с каталогом или файлом, если они не имеют явного разрешения на это или же они не относятся к группе, которая имеет соответствующее разрешение.
Разрешения имеют накопительный эффект, за исключением разрешения No Access, которое отменяет все остальные имеющиеся разрешения. Например, если группа Engineering имеет разрешение Change для какого-то файла, а группа Finance имеет для этого файла только разрешение Read и Петров является членом обеих групп, то у Петрова будет разрешение Change. Однако если разрешение для группы Finance изменится на No Access, то Петров не сможет использовать этот файл, несмотря на то что он член группы, которая имеет доступ к файлу.
По умолчанию в окнах Windows Explorer находят свое отражение стандартные права, а переход к отражению индивидуальных прав происходит только при выполнении некоторых действий. Это стимулирует администратора и пользователей к использованию тех наборов прав, которые разработчики ОС посчитали наиболее удобными.
Встроенные группы пользователей и их права
Мощность и гибкость системы безопасности Windows NT во многом определяется наличием в ней достаточно широкого набора прав групп пользователей на выполнение системных действий. Для иллюстрации этого утверждения в следующих двух таблицах приводятся списки изменяемых и встроенных прав для встроенных групп Windows NT.
Первой показана таблица изменяемых прав встроенных групп.
В следующей таблице представлены встроенные права встроенных групп.
Server Opera- tors
Account Opera- tors
Print Opera- tors
Backup Opera- tors
Log on locally (локальный логический вход)
Access this computer from network (доступ к данному компьютеру через сеть)
Take ownership of files (установление прав собственности на файлы)
Manage auditing and security log (управление аудитом и учетом событий, связан- ных с безопасностью)
Change the system time (изменение системного времени)
Shutdown the system (оста- нов системы)
Force shutdown from remote system (инициирование останова с удаленной системы)
Backup files and directories (резервное копирование файлов и каталогов)
Restore files and directories (восстановление файлов и каталогов со стримера)
Load and unload device drivers (загрузка и выгрузка драйверов устройств)
Add work- station to domain (добавление рабочих станций к домену)
Server Opera- tors
Account Opera- tors
Print Opera- tors
Backup Opera- tors
Create and manage user accounts (создание и управление пользова- тельской учетной информацией)
Create and manage global groups (создание и управление глобальными группами)
Assign user rights (назначение прав для пользователей)
Manage auditing of system events (управление аудитом системных событий)
Lock the server (блоки- рование сервера)
Override the lock of the server ( преодоление блокировки сервера )
Format server's hard disk (форматирование жесткого диска сервера)
Create common groups (создание общих групп)
Keep local profile (хранение локального профиля)
Share and stop sharing directories (разделение и прекращение разделения каталогов)
Share and stop sharing printers (разделение и прекращение разделения принтеров)
При создании новых групп администратор может наделить их любым изменяемым правом, но распоряжаться встроенными правами он не может — они являются неотъемлемыми атрибутами встроенных и только встроенных групп.
Основными задачами подсистемы ввода-вывода являются:
организация параллельной работы процессора и устройств ввода-вывода при обеспечении приемлемого уровня реакции каждого драйвера и минимизации общей загрузки процессора;
согласование скоростей работы процессора, оперативной памяти и устройств ввода-вывода;
разделение устройств ввода-вывода между процессами; О обеспечение удобного логического интерфейса к устройствам ввода-вывода. Q Подсистема ввода-вывода обычно имеет ярко выраженную многослойную структуру, которая помогает объединить большое количество разнотипных драйверов в систему с общим интерфейсом.
Драйверы делятся на низкоуровневые, непосредственно управляющие работой контроллеров внешних устройств, и высокоуровневые, обеспечивающие логический интерфейс к устройствам, например драйверы файловых систем.
Для координации работы драйверов в подсистеме ввода-вывода может выделяться особый модуль, называемый менеджером ввода-вывода.
Аппаратные драйверы делятся на блок-ориентированные, обеспечивающие доступ к устройствам с поблочной непосредственной адресацией, и байт-ориентированные, управляющие устройствами, поддерживающими побайтный не адресуемый обмен.
Файл — это именованная область внешней памяти, в которую можно записывать и из которой можно считывать данные. Основными целями использования файлов являются: долговременное и надежное хранение информации, а также совместный доступ к данным.
Файловая система представляет собой комплекс системных программных средств, реализующих различные операции с файлами, таких как создание, уничтожение, чтение, запись, именование и поиск файлов. Под файловой системой понимают также набор всех файлов и служебных структур данных, хранящихся на внешнем устройстве.
Кроме обычных файлов ОС, как правило, поддерживает такие типы файлов, как каталоги, символьные связи, именованные конвейеры и специальные файлы.
Специальный файл является универсальной моделью устройства ввода-вывода, представляя его для остальной части операционной системы и прикладных процессов в виде неструктурированного набора байт, то есть в виде обычного файла.
Современные файловые системы имеют иерархическую структуру, упрощающую именование файлов и их поиск.
Физическая организация файловой системы подразумевает способы размещения и адресации отдельных частей файлов в разделах и секторах дисковой памяти, а также способы организации служебной информации, описывающей размещение файлов и их атрибуты.
Для синхронизации совместно работающих процессов, пытающихся использовать один и тот же файл одновременно, в файловых системах реализуется механизм блокировки файлов и отдельных записей в файлах.
Механизм контроля доступа к файлам позволяет администраторам многопользовательских ОС задавать для отдельных пользователей и групп пользователей набор операций, которые им разрешается выполнять над отдельным файлом или группой файлов, объединенных в каталог.
Управление доступом в ОС осуществляется на основе одного из двух базовых подходов: избирательного доступа, когда владелец файла самостоятельно может определить права доступа к файлу и мандатного доступа, при котором права доступа определяются членством пользователя в определенной группе, и пользователь не может их произвольно изменять или делегировать.
Права доступа к файлу могут присваиваться явно, а могут наследоваться у родительского каталога, что сокращает количество ручных операций и упрощает логику доступа.
Задачи и упражнения
1. За счет каких устройств удается распараллелить ввод-вывод даже в однопроцессорных системах?
2. Какие функции выполняет менеджер ввода-вывода?
3. Какие из следующих утверждений правильны?
А) драйвер выполняет низкоуровневые функции по управлению устройством ввода-вывода;
В) драйвер выполняет функции управления файловой системой;
С) все функции драйвера вызываются по прерываниям;
D) драйвер является частью подсистемы ввода-вывода;
Е) драйвер организует взаимодействие модулей ядра операционной системы;
F) драйвер работает в привилегированном режиме.
4. Какие два типа ресурсов, связанных с диском, требуется выделить процессу, чтобы он выполнил запись данных на диск?
5. Каким из двух типов драйверов — блок-ориентированным или байт-ориентированным — обслуживается диск?
6. С какой целью в некоторых файловых системах характеристики файла отделяются от его имени?
7. Какие программные компоненты поддерживают структуру файла в тех ОС, где файл представлен последовательносью байт?
8. С какого каталога начинается «раскрутка» полного имени файла?
9. Операционная система выделяет файлам пространство на диске:
10. Выберите размер кластера для файловой системы FAT16, устанавливаемой в разделе, который разделен на секторы размером 512 байт и имеет общий объем 272 Мбайт. Оцените, сколько в этом случае кластеров будет содержать область данных, а также какой размер необходимо отвести таблице FAT. Учтите, что размер кластера должен быть равен степени двойки. Примите во внимание также, что стандартным размером корневого каталога для жестких дисков является размер в 32 сектора.
11. При каких условиях можно автоматически гарантированно восстановить в файловой системе FAT удаленный файл?
12. Сформулируйте основную цель введения в ОС системного вызова open.
13. В какой из типов систем управления доступом — избирательной или мандатной — пользователю предоставляется большая свобода действий?
Читайте также: