Лекционный материал по теме "ОПЕРАЦИОННАЯ СИСТЕМА MS-DOS"

  • docx
  • 09.04.2020
Публикация в СМИ для учителей

Публикация в СМИ для учителей

Бесплатное участие. Свидетельство СМИ сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала лекция 12.docx

Лекция 12. ОПЕРАЦИОННАЯ СИСТЕМА MS-DOS

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

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

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

Основные составные части MS-DOS

Операционная система MS-DOS состоит из следующих частей:

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

- Загрузчик операционной системы - это очень короткая программа, находящаяся в первом секторе каждой дискеты с операционной системой MS-DOS и жесткого диска. Функция этой программы заключается в считывании в память еще двух модулей операционной системы, которые и завершают процесс загрузки MS-DOS .

- Дисковые файлы IO.SYS и MSDOS.SYS. Они загружаются в память загрузчиком операционной системы и остаются в памяти компьютера постоянно. Файл IO.SYS представляет собой дополнение к базовой системе ввода-вывода в ПЗУ (постоянное запоминающее устройство), а файл MSDOS.SYS реализует основные высокоуровневые услуги MS-DOS.

- Командный процессор MS-DOS обрабатывает команды, вводимые пользователем. Командный процессор находится в дисковом файле Command.com на диске, с которого загружается система. Внутренние команды командный процессор выполняет сам, а при внешних командах он ищет соответствующие программы на диске и если он их находит, то он их запускает и передает им управление. По окончании работы программы командный процессор удаляет программу из памяти и выводит сообщение о готовности к выполнению команд (приглашение MS-DOS).

- Драйверы устройств - это специальные программы, которые дополняют систему ввода-вывода MS DOS и обеспечивают обслуживание новых устройств или нестандартное использование имеющихся устройств. Например, с помощью драйверов возможна работа с "электронным диском", т.е. частью памяти компьютера, которая используется аналогично жесткому диску. Драйверы загружаются в память ПК при загрузке ОС, их имена указываются в специальном файле CONFIG.SYS. При загрузке ОС также выполняется командный файл AUTOEXEC.BAT. В файле AUTOEXEC.BAT указываются программы и команды, выполняемые при каждом запуске компьютера. Например, можно указать запуск программы, обеспечивающей работу с русскими буквами на клавиатуре. В структуре файлов CONFIG.SYS и AUTOEXEC.BAT возможно создание нескольких вариантов конфигурации ПК, например для игр, научной работы и работы с текстами.

Диалог пользователя с MS DOS осуществляется в форме команд. Каждая команда пользователя означает, что MS DOS должна выполнить то или иное действие, например, напечатать файл или выдать на экран оглавление каталога. Команда MS DOS состоит из имени команды и, возможно, параметров, разделенных пробелами. Имя команды MS DOS и параметры могут набираться как прописными, так и строчными латинскими буквами. Ввод каждой команды заканчивается нажатием клавиши [ENTER].

Команды MS DOS бывают двух типов: внутренние и внешние. Внутренние команды выполняются самим командным процессором MS DOS (программой COMMAND.COM). Всего таких команд около 30 (27) .Вот некоторые из них:

CD – Сменить текущий каталог; CLS – Очистить экран монитора; COPY – Копирование файлов; DATE               – Получить или изменить текущую дату; DEL – Удаление файлов; DIR – Выдать список файлов в каталоге; REN – Изменить имя файла; RD – Удалить каталог; TIME  – Получить или изменить текущее время; TYPE – Просмотр файла; VER – Выдать номер версии MS DOS.

Внешние команды MS DOS - это программы, поставляемые вместе с операционной системой в виде отдельных файлов. Приведем некоторые из них.

CHKDSK - Проверка диска на правильность файловой системы; DISKCOPY - Копирование дискет;  EDIT - Примитивный редактор текстов; FC - Сравнение файлов; FDISK - Разметка жесткого диска на логические; FORMAT - Форматирование диска; SYS - Копирование системных файлов на диск.

Во многих командах MS DOS в именах файлов можно употреблять символы "*" и "?" для указания группы файлов из одного каталога. Символ * обозначает любое число любых символов в имени файла или в расширении имени файла. Символ "?" обозначает один произвольный символ или отсутствие символа в имени файла или в расширении имени файла.

Примеры:

*.bak - все файлы с расширением .bak из текущего каталога;

с*.d* - все файлы с именем, начинающимся с С, и с расширением, начинающимся с D, из текущего каталога;

a:\doc\abc???.* - все файлы с именем, начинающимся с ABС и состоящим не более чем из 6 символов, из каталога \doc на диске А.

Конкретный формат внешних и внутренних команд MS DOS можно узнать, набрав имя команды и через пробел после кэша поставив знак "?". Например, Dir /? Format /?

MS DOS -- первая операционная система для персональных компьютеров, которая получила широкое распространение. Со временем она была практически вытеснена новыми, современными операционными системами, типа Windows и Linux, но в ряде случаев MS DOS остается удобной и единственно возможной для работы на ЭВМ (устаревшая техника, давно написанное программное обеспечение и т. п.)

Работа пользователей с операционной системой DOS осуществляется с помощью командной строки, ведь собственный графический интерфейс у нее отсутствует. Предпринималось множество попыток упростить общение с системой и самое удачное решение предложил Питер Нортон (Pеter Norton). У многих пользователей работа в операционной системе DOS ассоциируется именно с его программой -- Norton Commander. Оболочка NC скрывает от пользователя множество неудобств, возникающих при работе с файловой системой MS DOS, например, такие, как необходимость набирать команды из командной строки. Простота и удобство в использовании -- вот что делает оболочки типа NC популярными и в наше время (к ним можно отнести QDos, PathMinder, XTree, Dos Navigator, Volkov Commander и др.). Принципиально отличаются от них графические оболочки Windows 3.1 и Windows 3.11. В них применяется концепция так называемых "окон", которые можно открывать, перемещать по экрану и закрывать.

В MS DOS используется файловая система FAT. Одним из ее недостатков являются жесткие ограничения на имена файлов и каталогов. Имя может состоять не более чем из восьми символов. Расширение указывается после точки и состоит из не более чем трех символов. Присутствие расширения в имени файла не является обязательным, оно добавляется для удобства, так как расширение позволяет узнать, какая программа создала его и тип содержимого файла. DOS не делает различий между одноименными строчными и прописными буквами. Кроме букв и цифр имя и расширение файла могут состоять из следующих символов: -, _, $, #, &, @, !, %, (, ), {, }, ', ^ . Примеры имен файлов в MS DOS: doom.exe, referat.doc.

Так как MS DOS была создана довольно давно (известно, как стремительно развиваются и устаревают компьютеры и, как следствие, программы для них), она совершенно не соответствует требованиям, предъявляемым к современным операционным системам. Она не может напрямую использовать большие объемы памяти, устанавливаемые в современные ЭВМ. В файловой системе используются только короткие имена файлов (8 символов в имени и 3 в расширении), плохо поддерживаются разные устройства типа звуковых карт, видео-ускорителей и т. д.

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

Перечислим некоторые компоненты операционной системы MS DOS. Дисковые файлы IO.SYS и MSDOS.SYS (они могут называться и по-другому, например IBMBIO.COM иIBMDOS.COM для PC DOS) помещаются в оперативную память при загрузке и остаются в ней постоянно. Файл IO.SYS представляет собой дополнение к базовой системе ввода-вывода, а MSDOS.SYS реализует основные высокоуровневые услуги операционной системы.

Командный процессор DOS обрабатывает команды, вводимые пользователем. Командный процессор находится в дисковом файле COMMAND.COM на диске, с которого загружается операционная система. Некоторые команды пользователя, например type, dir или copy, командный процессор выполняет сам. Такие команды называются внутренними или встроенными. Для выполнения остальных (внешних) команд пользователя командный процессор ищет на дисках программу с соответствующим именем и, если находит ее, загружает в память и передает ей управление. По окончании работы программы командный процессор удаляет программу из памяти и выводит сообщение о готовности к выполнению команд (приглашение DOS).

Внешние команды DOS -- это программы, поставляемые вместе с операционной системой в виде отдельных файлов. Эти программы выполняют действия обслуживающего характера, например форматирование дискет (format.com), проверку состояния дисков (scandisk.exe) и т. д.

Драйверы устройств -- это специальные программы, которые дополняют систему ввода-вывода DOS и обеспечивают обслуживание новых или нестандартное использование имеющихся устройств. Например, с помощью драйвера DOS ramdrive.sys возможна работа с "электронным диском", т. е. частью памяти компьютера, с которой можно работать так же, как с диском. Драйверы помещаются в память компьютера при загрузке операционной системы, их имена указываются в специальном файле CONFIG.SYS. Такая схема облегчает добавление новых устройств и позволяет делать это, не затрагивая системные файлы DOS. 

Файлы и файловая система


 

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

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

Для того чтобы избавить пользователя компьютера от сложностей взаимодействия с аппаратурой, была применена абстрактная (логическая) модель файловой системы, в которой операции записи или чтения файла концептуально проще, чем низкоуровневые операции работы с устройствами. Логическая модель файловой системы «материализуется» в виде дерева каталогов, выводимого на экран такими утилитами, как Norton Commander или Windows Explorer, в символьных составных именах файлов, в командах работы с файлами. Базовым элементом этой модели является файл, который так же, как и файловая система в целом, может характеризоваться как логической, так и физической структурой.

Цели и задачи файловой системы


 

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

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

2.      Совместное использование информации. Файлы обеспечивают естественный и легкий способ разделения информации между приложениями и пользователями за счет наличия понятного человеку символьного имени и постоянства хранимой информации и расположения файла. Пользователь должен иметь удобные средства работы с файлами, включая каталоги-справочники, объединяющие файлы в группы, средства поиска файлов по признакам, набор команд для создания, модификации и удаления файлов. Файл может быть создан одним пользователем, а затем использоваться другим пользователем, при этом создатель файла или администратор могут определить права доступа к нему других пользователей.

Файловая система, являющаяся неотъемлемой частью любой современной ОС, включает:

·         совокупность всех файлов на диске;

·         наборы структур данных, используемых для управления файлами (каталоги файлов, дескрипторы файлов, таблицы распределения свободного и занятого пространства на диске);

·         комплекс системных программных средств, реализующих различные операции над файлами (создание, уничтожение, чтение, запись, именование и поиск файлов).

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

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

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

·         именование файлов;

·         программный интерфейс для приложений;

·         отображение логической модели файловой системы на физическую организацию хранилища данных;

·         устойчивость файловой системы к сбоям питания, ошибкам аппаратных и программных средств.

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

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

·         идентификация файлов – связывание имени файла с выделенным ему пространством внешней памяти;

·         распределение внешней памяти между файлами – для работы с конкретным файлом не требуется иметь информацию о местоположении этого файла на внешнем носителе информации (сторона магнитного диска, цилиндр, сектор);

·         обеспечение надежности и отказоустойчивости;

·         обеспечение защиты от несанкционированного доступа;

·         обеспечение совместного доступа к файлам (пользователь не должен прилагать специальных усилий по обеспечению синхронизации доступа);

·         обеспечение высокой производительности.

Типы файлов


 

Файловые системы поддерживают несколько функционально различных типов файлов, в число которых, как правило, входят:

·         обычные файлы;

·         файлы-каталоги;

·         специальные файлы;

·         отображаемые в память файлы;

·         именованные конвейеры;

·         другие.

Рассмотрим каждый из этих типов файлов.

Обычные файлы, или просто файлы, содержат информацию произвольного характера, которую заносит в них пользователь или которая образуется в результате работы системных и пользовательских программ. Большинство современных ОС (например, Unix или MS Windows) никак не ограничивает и не контролирует содержимое и структуру обычного файла. Содержание обычного файла определяется приложением, которое с ним работает. Обычные файлы бывают двух типов – текстовые и двоичные. Обычно прикладные программы, работающие с файлами, распознают тип файла по его имени в соответствии с общепринятыми соглашениями. Например, файлы с расширениями .c.pas.txt – ASCII-файлы, файлы с расширениями .exe – исполняемые, файлы с расширениями .obj.zip – бинарные и т.д. Все ОС должны уметь распознавать хотя бы один тип файлов – собственные исполняемые файлы.

Для пользователей файл обозначается с помощью идентификаторов – внешних имен (могут быть и внутренние имена файлов). Пользователи дают файлам символьные имена, при этом учитываются ограничения ОС как на используемые символы, так и на длину имени. До недавнего времени эти границы были весьма узкими. Так, в популярной файловой системе FAT длина имен ограничивается известной схемой 8.3 (8 символов – собственно имя, 3 символа – расширение имени), а в ОС Unix System V имя не может содержать более 14 символов. Однако пользователю гораздо удобнее работать с длинными именами, поскольку они позволяют дать файлу действительно мнемоническое название, по которому даже через достаточно большой промежуток времени можно будет вспомнить, что содержит этот файл. Поэтому современные файловые системы, как правило, поддерживают длинные символьные имена файлов. Например, файловая система NTFS, появившаяся в Windows NT, устанавливает, что имя файла может содержать до 255 символов, не считая завершающего нулевого символа.

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

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

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

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

Отображаемые в память файлы (англ. memory-mapped files) – это мощная возможность ОС, позволяющая приложениям осуществлять доступ к файлам на диске тем же самым способом, каким осуществляется доступ к динамической памяти, то есть через указатели. Смысл отображения файла в память заключается в том, что содержимое файла (или часть содержимого) отображается в некоторый диапазон виртуального адресного пространства процесса, после чего обращение по какому-либо адресу из этого диапазона означает обращение к файлу на диске. Естественно, не каждое обращение к отображенному в память файлу вызывает операцию чтения/записи. Менеджер виртуальной памяти кэширует обращения к диску и тем самым обеспечивает высокую эффективность работы с отображенными файлами.

Именованные конвейеры (именованные каналы) – одно из средств межпроцессного взаимодействия, детали которого рассмотрены в п. 3.3.6.

Атрибуты файла


 

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

·         • информация о разрешенном доступе;

·         • пароль для доступа к файлу;

·         • владелец файла;

·         • создатель файла;

·         признак «только для чтения»;

·         признак «скрытый файл»;

·         признак «системный файл»;

·         признак «архивный файл»;

·         признак «двоичный/символьный»;

·         признак «временный» (удалить после завершения процесса);

·         признак блокировки;

·         длина записи;

·         указатель на ключевое поле в записи;

·         длина ключа;

·         время создания, последнего доступа и последнего изменения;

·         текущий размер файла;

·         максимальный размер файла.

Доступ к файлам


 

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

Существует несколько способов логической организации памяти:

·         последовательный;

·         индексно-последовательный;

·         индексный;

·         прямой;

·         библиотечный.

Рассмотрим каждый из этих способов подробнее.

При последовательном способе организации памяти записи располагаются в физическом порядке и обеспечивают доступ в физической последовательности. Таким образом, для обработки записи с номером N + 1 необходимо последовательно обратиться к записям с номером 1, 2, …, N. Это универсальный способ организации файла периферийного устройства, входного/выходного потока.

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

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

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

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

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

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

Различают два основных подхода к определению прав доступа:

1.      Избирательный доступ (англ. discretionary – предоставленный на собственное усмотрение). Для каждого объекта сам владелец может определить допустимые операции с объектами. Между пользователями и группами пользователей в системах с избирательным доступом нет жестких иерархических взаимоотношений, то есть взаимоотношений, которые определены по умолчанию и которые нельзя изменить. Исключение делается только для администратора, по умолчанию наделяемого всеми правами.

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

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

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

Операции над файлами


 

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

·         Создание файла, не содержащего данных. Смысл данного вызова – объявить, что файл существует, и присвоить ему ряд атрибутов. При этом выделяется место для файла на диске и вносится запись в каталог.

·         Удаление файла и освобождение занимаемого им дискового пространства.

·         Открытие файла. Перед использованием файла процесс должен его открыть. Цель данного системного вызова – разрешить системе проанализировать атрибуты файла и проверить права доступа к нему, а также считать в ОП список адресов блоков файла для быстрого доступа к его данным.

·         Закрытие файла. Если работа с файлом завершена, его атрибуты и адреса блоков на диске больше не нужны. В этом случае файл нужно закрыть, чтобы освободить место во внутренних таблицах файловой системы.

·         Позиционирование. Возможность специфицировать текущую позицию в файле для считывания/записи данных.

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

·         Запись данных в файл с текущей позиции. Если текущая позиция находится в конце файла, его размер увеличивается, в противном случае запись осуществляется на место имеющихся данных.

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

Наиболее общий подход к защите файлов от несанкционированного использования – сделать доступ зависящим от идентификатора пользователя, т.е. связать с каждым файлом или директорией список прав доступа (англ. access control list), где перечислены имена пользователей и типы разрешенных для них способов доступа к файлу.

Любой запрос на выполнение операции сверяется с таким списком. У такой техники есть два нежелательных следствия:

·         конструирование подобного списка может оказаться сложной задачей, особенно если пользователи системы не известны заранее;

·         запись в директории должна иметь переменный размер (включать список потенциальных пользователей).

Для решения этих проблем создают классификации пользователей, например, в ОС Unix все пользователи разделены на три группы:

·         владелец (англ. owner);

·         группа (англ. group – набор пользователей, разделяющих файл и нуждающихся в типовом способе доступа к нему);

·         остальные (англ. univers).

В рамках такой ограниченной классификации задаются только три поля (по одному для каждой группы) для каждой контролируемой операции. В итоге в ОС Unix операции чтения, записи и исполнения контролируются при помощи 9 бит: rwxrwxrwx.

Иерархическая структура каталогов


 

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

Простой одноуровневый каталог представляет собой оглавление тома (используется в однопользовательских ОС – рис. 44а). Иерархический, многоуровневый каталог (древовидный или сетевой) – это совокупность каталогов и дескрипторов файлов различной глубины (рис. 44б).

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

 

http://baumanki.net/uploads/lectures/informatika-i-programmirovanie/lekcii-po-operacionnym-sistemam/files/6-6.4.-fayly-i-faylovaya-sistema.gif

Рисунок 44 – Пример организации каталогов: а) простой одноуровневый каталог; б) иерархический многоуровневый каталог

 

Операции над директориями


 

Как и в случае с файлами, система обязана обеспечить пользователя набором операций, необходимых для работы с директориями, реализованных через системные вызовы. Несмотря на то, что директории – это файлы, логика работы с ними несколько отличается от логики работы с обычными файлами и определяется природой этих объектов, предназначенных для поддержки структуры файлового архива. Рассмотрим в качестве примера некоторые системные вызовы, необходимые для работы с каталогами:

·         создание директории – вновь созданная директория включает записи с именами «.» и «..», однако считается пустой.

·         удаление директории;

·         открытие директории для последующего чтения (например, чтобы перечислить файлы, входящие в директорию, процесс должен открыть директорию и считать имена всех файлов, которые она включает);

·         закрытие директории после ее чтения для освобождения места во внутренних системных таблицах;

·         поиск – данный системный вызов возвращает содержимое текущей записи в открытой директории;

·         получение списка файлов в каталоге;

·         переименование – имена директорий можно менять, как и имена файлов;

·         создание файла – при создании нового файла необходимо добавить в каталог соответствующий элемент;

·         удаление файла – удаление из каталога соответствующего элемента.