Машинно-независимые свойства операционных систем

· работа с файлами

· управление ресурсами

· планирование заданий

· защищенность и отказоустойчивость

Работа с файлами

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

Сами программы и данные для их работы хранятся на различных носителях. Способ организации данных на носителе называется файловой системой.

Файл — именованная область данных на носителе, хранящая некоторый массив информации.

Каждый файл занимает некоторое пространство на носителе, объем которого называют размером файла.

По типу хранимых данных различают:

· текстовые файлы;

· программы;

· аудиофайлы;

· видеофайлы;

· программные модули;

· служебные файлы и др.

Характеристики файла в рамках конкретной файловой системы называются атрибутами файла. К атрибутам относят:

· дату и время создания файла;

· имя и тип файла;

· права доступа к файлу.

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

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

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

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

В зависимости от типа носителя выделяют различные файловые системы. К примеру, для дисковых и flash-накопителей используются файловые системы FAT, NTFS, UFS, EXT2/3. А для компакт-дисков принято использовать файловые системы ISO 9660 или UDF. Каждый из стандартов на файловую систему соответствует определенным требованиям, предъявляемым к хранению данных на конкретном типе носителя. Очевидно, что требования к хранению данных с точки зрения операционной системы и пользователя различны в зависимости от типа носителя и объема данных, подлежащих хранению. Например, файловые системы дисковых накопителей должны обеспечивать механизмы обеспечения целостности данных в условиях постоянного выполнения операций чтения-записи данных сравнительно большим количеством процессов. В то же время от файловой системы для компакт-дисков требуется обеспечение простого доступа к данным на большом количестве различного оборудования, в том числе и бытового. Никто не ждет от жесткого диска легкости подключения к бытовому DVD-плееру, в то время как неработоспособность DVD-видеодиска воспринимается как из ряда вон выходящее событие.

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

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

Дефрагментация диска -

Управление ресурсами

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

для ресурсов:

• учетная информация о ресурсе (идентификатор, класс, количество каналов и т.п.);

• код состояния ресурса;

• идентификатор процесса-владельца и т.п

для заявок на ресурсы:

• идентификатор процесса-заявителя;

• приоритет процесса;

• идентификатор и требуемый объем ресурса и т.п.

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

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

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

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

В рамках проблемы управления вычислительными ресурсами необходимо решать две задачи:

1) планирование ресурса – определение, кому, когда и в каком количестве необходимо выделить данный ресурс;

2) отслеживание состояния ресурса, то есть поддержание оперативной информации о том, занят или не занят ресурс, а для делимых ресурсов — какое количество ресурса уже распределено.

Вычислительные ресурсы можно разделить на две категории — выгружаемые и невыгружаемые ресурсы. Ресурс считается выгружаемым, если его можно во время работы процесса-владельца передать другому процессу без ущерба для процесса-владельца. Память является выгружаемым ресурсом. А вот устройство записи компакт-дисков является невыгружаемым ресурсом.

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

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

Для возникновения взаимоблокировки должны выполняться все (!) следующие условия:

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

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

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

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

При решении данной проблемы можно использовать любой из следующих подходов:

· игнорирование проблемы;

· реакция на возникшую взаимоблокировку;

· аккуратное управление ресурсами;

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

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

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

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

Планирование заданий

Задание — задача, которая решается на данной аппаратной платформе при помощи некоторого приложения.

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

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

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

Таким образом, можно сделать заключение, что:

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

· на этапе планирования процессов — сколько и каких ресурсов выделять конкретным процессам в соответствии с приоритетом заданий и самих процессов;

· на этапе планирования ресурсов — как спланировать использование ресурсов с учетом потребностей всех процессов с максимальной эффективностью.

Наши рекомендации