Машинно-зависимые свойства операционных систем
Содержание
1. Машинно-зависимые свойства операционных систем. 2
1.1. Планирование процессов. 4
1.2. Управление реальной и виртуальной памятью.. 5
1.2.1. Методы распределения памяти без использования внешней памяти. 7
Распределение памяти фиксированными разделами. 7
Распределение памяти динамическими разделами. 8
Перемещаемые разделы.. 9
1.2.2. Методы распределения памяти с использованием дискового пространства 10
1.3. Обслуживание прерываний. 13
1.4. Обслуживание ввода-вывода. 14
2. Машинно-независимые свойства операционных систем. 16
2.1 Работа с файлами. 16
2.2. Управление ресурсами. 17
2.3. Планирование заданий. 20
Планирование процессов
Концепция процесса
Процесс– это система действий, реализующая определенную функцию в вычислительной системе и оформленная так, что управляющая программа вычислительной системы может перераспределять ресурсы этой системы в целях обеспечения мультипрограммирования.
Понятие процесса тесно связано с понятием задача:
Задача– в режиме мультипрограммирования или мультипроцессорной обработки одна или более последовательностей команд, обрабатываемых управляющей программой как элемент работы, которая выполняется вычислительной машиной.
Выполнение задачи реализуется в вычислительной системе запуском не менее одного процесса. Можно говорить, что задача - это один или несколько процессов, обеспечивающих достижение поставленных пользователем целей.
Об отношении процесса и программы можно сказать, что процесс - это программа во время ее выполнения. Всякая программа становится процессом, когда начинает выполняться в ЭВМ.
В период своего существования процесс может находиться в одном из следующих основных состояний:
· порождение, во время которого подготавливаются условия для первого исполнения на центральном процессоре;
· активное состояние (выполнение), когда процессу принадлежит центральный процессор;
· ожидание, во время которого процесс блокирован по причине занятости каких-либо необходимых ему ресурсов
· готовность, при котором процесс получил все необходимые ему ресурсы, кроме центрального процессора;
· окончание, во время которого выполняются завершающие работу операции, после чего ресурсы процессу больше не предоставляются.
Концепция ресурса
Одной из важнейших задач, решаемых современными ОС, является обеспечение эффективного и бесконфликтного распределения ресурсов вычислительной системы между процессами.
Ресурс вычислительной системы- средство вычислительной системы, которое может быть выделено процессу обработки данных на определенный интервал времени.
Основными ресурсами вычислительной системы являются:
- процессоры;
- области основной памяти;
- наборы данных;
- периферийные устройства;
- программы.
Для осуществления планирования и распределения ресурсов ОС необходима информация об их свойствах, что достигается введением упорядочения ресурсов по ряду классификационных признаков.
Признак “Реальность существования” ресурса разделяет ресурсы на физические и виртуальные (от англ. Virtual - возможный). Под физическим понимают ресурс, который реально существует и при распределении его между процессами в ВС обладает всеми присущими ему физическими характеристиками. Виртуальный ресурс - это некоторая модель физического ресурса.
Методы распределения памяти без использования внешней памяти
Перемещаемые разделы
Одним из методов борьбы с фрагментацией является перемещение всех занятых участков в сторону старших или младших адресов, так, чтобы вся свободная память образовала единую свободную область (рис.). В дополнение к функциям, которые выполняет ОС при распределении памяти динамическими разделами, в данном случае она должна еще время от времени копировать содержимое разделов из одного места памяти в другое, корректируя таблицы свободных и занятых областей. Эта процедура называется сжатием. Сжатие может выполняться либо при каждом завершении процесса, либо только тогда, когда для вновь создаваемого процесса нет свободного раздела достаточного размера. В первом случае требуется меньше вычислительной работы при корректировке таблиц свободных и занятых областей, а во втором — реже выполняется процедура сжатия.
Так как программы перемещаются по оперативной памяти в ходе своего выполнения, то в данном случае невозможно выполнить настройку адресов с помощи перемещающего загрузчика. Здесь более подходящим оказывается динамическое образование адресов.
Хотя процедура сжатия и приводит к более эффективному использованию памяти, она может потребовать значительного времени, что часто перевешивает преимущества данного метода.
Концепция сжатия применяется и при использовании других методов распределения памяти, когда отдельному процессу выделяется не одна сплошная область памяти, а несколько несмежных участков памяти произвольного размера (сегментов). Такой подход был использован в ранних версиях OS/2, в которых память распределялась сегментами, а возникавшая при этом фрагментация устранялась путем периодического перемещения сегментов.
Обслуживание прерываний
Концепция прерывания
Реализация мультипрограммного режима работы вычислительных систем возможна только на применении концепции прерываний, которая состоит в том, что любой процесс, обслуживаемый операционной системой, может быть прерван процессом, имеющим более высокий приоритет.
Прерывание- временное прекращение процесса, такого как выполнение программы вычислительной машины, вызванное событием, внешним по отношению к этому процессу, и совершенное таким образом, что процесс может быть продолжен (СТ ИСО 2382/10-79).
Приведенное определение исчерпывающе характеризует суть понятия прерывания, оставляя за рамками рассмотрения физическую природу аппаратного средства, где возникает это прерывание. Существует другое определение, в котором конкретизируется устройство, в котором происходит прерывание [1,2]:
Прерывание- операция процессора, состоящее в регистрации состояния процессора, предшествующего прерыванию, и установлении нового состояния.
В вычислительной машине прерывание - это событие, при котором меняется нормальная последовательность команд, выполняемых процессором. Сигнал “прерывание” сначала отрабатывается аппаратурой вычислительной машины - системой прерываний. Если произошло прерывание, то в вычислительной системе выполняются последовательно следующие действия:
· управление передается операционной системе;
· операционная система запоминает состояние прерванного процесса;
· операционная система анализирует тип прерывания и передает управление соответствующей программе обработки этого прерывания;
· программа обработки прерывания выполняет предписанные действия и передает управление операционной системе;
· операционная система по результатам работы программы обработки прерываний либо восстанавливает состояние прерванного процесса и позволяет развиваться ему дальше, либо аварийно заканчивает его.
Следует иметь в виду, что инициатором прерывания может быть также и выполняющийся процесс.
Количество источников сигналов прерывания достигает в современных вычислительных системах нескольких сотен и даже тысяч. Все возможные в системе прерывания можно классифицировать по месту (причине) их возникновения. Различают шесть основных классов прерываний: прерывания от схем контроля ЭВМ; прерывания по рестарту (повторному пуску); прерывания ввода/вывода; внешние прерывания; прерывания по вызову супервизора; программные прерывания.
Прерывание от схем контроля возникает в случае появления любой аппаратной ошибки в ЭВМ. Продолжение работы машины становится невозможным, и процесс аварийно заканчивает свое существование.
Прерывание по рестарту может наступить в следующих случаях: на пульте управления была нажата кнопка (клавиша, сочетание клавиш) повторного пуска ЭВМ; процесс, выполняющий в данной ЭВМ, выдал команду рестарта; в многомашинной системе получена команда рестарта от другого компьютера. В любом случае в ЭВМ, получившей команду рестарта, выполняются действия по загрузке операционной системы.
Прерывания ввода/вывода инициируются аппаратурой, обеспечивающей операции ввода и вывода данных. Они сигнализируют центральному процессору об изменении состояния устройств ввода/вывода.
Обслуживание ввода-вывода
Система ввода-вывода
В состав любой операционной системы входят программные модули, обеспечивающие управление устройствами ввода-вывода ЭВМ. Эти программные модули называют драйверами устройств, а совокупность драйверов ввода-вывода образует систему ввода-вывода, входящую в состав операционной системы.
Драйвер устройства(Device driver) - программа, обеспечивающая взаимодействие операционной системы с физическим устройством.
Система ввода-вывода(Input-Output System) - часть операционной системы, обеспечивающая управление внешними устройствами, подключенными к ЭВМ.
Основной задачей системы ввода-вывода является обеспечение непрерывной организации (планирования, управления) и двусторонней передачи данных между основной памятью и внешними устройствами с целью достижения максимального перекрытия во времени работы этой аппаратуры и процессора.
Состав систем ввода-вывода и, следовательно, перечень драйверов устройств в различных операционных системах не совпадают, что объясняется имеющимися отличиями в аппаратуре ввода-вывода, а также множеством методов, используемых для управления этой аппаратурой. Вместе с тем в большинстве операционных систем существует некоторое ядро системы ввода-вывода, получившее название базовой системы ввода-вывода.
Базовая система ввода-вывода (BIOS - Basic Input Output System) - часть программного обеспечения ЭВМ, поддерживающая управление адаптерами внешних устройств и представляющая стандартный интерфейс для обеспечения переносимости операционных систем между ЭВМ с одинаковым процессором. Базовая система ввода-вывода, как правило, разрабатывается изготовителем ЭВМ, хранится в постоянном запоминающем устройстве и рассматривается как часть ЭВМ.
При построении систем ввода-вывода аппаратура ввода-вывода рассматривается как совокупность аппаратурных процессоров, которые способны работать параллельно и независимо друг от друга, а также относительно центрального процессора. На таких процессорах развиваются так называемые внешние процессы.
Внешние процессы, используя аппаратуру ввода-вывода, могут взаимодействовать как между собой, так и с внутренними процессами, которые развиваются на центральном процессоре. Важным фактом является то, что скорости развития внешних и внутренних процессов существенно различаются, причем эти различия могут достигать нескольких порядков.
Система управления вводом-выводом представляет собой один или несколько системных процессов (т.е. процессов, принадлежащих операционной системе), обеспечивающих информационное и управляющее взаимодействие внутренних и внешних процессов. Через эту систему происходит инициализация, управление развитием и уничтожение внешних процессов.
С точки зрения внутренних (программных) процессов-пользователей система управления вводом-выводом представляет собой программный интерфейс с необходимыми для этих процессов внешними устройствами. В составе этого интерфейса пользователь имеет возможность выражать запросы на выполнение действий в отношении внешних устройств. При этом различают три типа действий: операции чтения и записи данных, операции управления устройством, операции по проверке состояния устройств. При построении систем управления вводом-выводом руководствуются стремлением сделать большинство ее компонентов «невидимыми» для пользователей, что достигается созданием развитых драйверов внешних устройств с понятным интерфейсом и доступными из любой системы программирования.
Для сглаживания эффекта несоответствия скоростей между внутренними и внешними процессами в системах управления вводом-выводом применяют три основных метода: синхронизация по прерываниям ввода-вывода; буферизация ввода-вывода; блокирование данных.
Для синхронизации параллельной работы могут применяться различные методы, среди которых наиболее совершенными являются средства, основанные на использовании системы прерывания. Канал ввода-вывода через систему прерываний прерывает работу центрального процессора всякий раз при завершении операции ввода-вывода или при возникновении ошибки. Такие сигналы прерывания являются по своему смыслу синхронизирующими, т.к. они используются для оповещения определенного внутреннего процесса о событии, которое произошло при работе канала ввода-вывода или внешнего устройства. После возникновения прерывания и определения его причины управление передается на программную систему, которую называют супервизором ввода-вывода.
Супервизор ввода-вывода - часть системы управления вводом-выводом, предназначенный для планирования и организации процессов ввода-вывода.
Буферизация ввода-вывода основана на размещении между внешним и внутренним процессами одного или нескольких буферов, роль которых выполняют, как правило, непрерывные области первичной памяти.
Буфер является критическим ресурсом для связанных с ним внутренних и внешних процессов (рис.5.10). Введение буферов как средства информационного взаимодействия выдвинуло задачу управления буферами, которая решается средствами супервизора ввода-вывода. На супервизор ввода-вывода возлагаются функции по выделению и уничтожению буферов в первичной памяти, синхронизации обращения к буферам внутренних и внешних процессов, устранения одновременного обращения к буферу этих процессов и т.п.
При решении задачи буферизации важным является определение количества буферов, закрепляемых за отдельным каналом или устройством, а также размер области первичной памяти, отводимой под каждый буфер.
Работа с файлами
Файловая система
Сами программы и данные для их работы хранятся на различных носителях. Способ организации данных на носителе называется файловой системой.
Файл — именованная область данных на носителе, хранящая некоторый массив информации.
Каждый файл занимает некоторое пространство на носителе, объем которого называют размером файла.
По типу хранимых данных различают:
· текстовые файлы;
· программы;
· аудиофайлы;
· видеофайлы;
· программные модули;
· служебные файлы и др.
Характеристики файла в рамках конкретной файловой системы называются атрибутами файла. К атрибутам относят:
· дату и время создания файла;
· имя и тип файла;
· права доступа к файлу.
Для удобства хранения данных существует класс служебных файлов, называемых папками, или каталогами.
Каталог (папка, директория) — сущность в файловой системе, упрощающая организацию файлов. Это некий массив файлов, сгруппированных по какому-либо признаку, имеющий собственное имя.
Именем конечного файла при таком способе организации файловой структуры является полный путь до каталога, в котором хранится файл плюс само имя файла. При таком подходе полное имя файла должно быть уникальным, также имя файла должно быть уникальным в пределах его каталога. Другой категорией служебных файлов является ярлык.
Ярлык — это тип служебного файла, который хранит путь к файлу и при вызове открывает сам файл. Ярлыки используются для ускорения доступа к файлам или во избежание ненужного дублирования данных.
В зависимости от типа носителя выделяют различные файловые системы. К примеру, для дисковых и flash-накопителей используются файловые системы FAT, NTFS, UFS, EXT2/3. А для компакт-дисков принято использовать файловые системы ISO 9660 или UDF. Каждый из стандартов на файловую систему соответствует определенным требованиям, предъявляемым к хранению данных на конкретном типе носителя. Очевидно, что требования к хранению данных с точки зрения операционной системы и пользователя различны в зависимости от типа носителя и объема данных, подлежащих хранению. Например, файловые системы дисковых накопителей должны обеспечивать механизмы обеспечения целостности данных в условиях постоянного выполнения операций чтения-записи данных сравнительно большим количеством процессов. В то же время от файловой системы для компакт-дисков требуется обеспечение простого доступа к данным на большом количестве различного оборудования, в том числе и бытового. Никто не ждет от жесткого диска легкости подключения к бытовому DVD-плееру, в то время как неработоспособность DVD-видеодиска воспринимается как из ряда вон выходящее событие.
Операция подготовки носителя к использованию называется разметкой носителя. При разметке носителя определяется количество и размеры областей, которые в дальнейшем будут использованы для хранения файлов. Традиционно носитель называется физическим диском. Каждая область, сформированная при разметке носителя, называется разделом, или логическим диском. Каждый логический диск получает имя, уникальное для данной операционной системы. Каждый физический диск имеет как минимум один логический диск.
Форматирование диска — операция по подготовке логического диска к использованию файловой системы. При форматировании логический диск разбивается на блоки фиксированного размера, именуемые кластерами. Размер кластера зависит от конкретной файловой системы и может варьироваться от 512 байт до нескольких килобайт. Размер кластера влияет, с одной стороны, на быстродействие операций чтения-записи данных, а с другой стороны, на объем потерь дискового пространства. Чем меньше размер кластера, тем больше их количество и тем больше времени занимает поиск нужного кластера для чтения части или целого файла. Но, с другой стороны, в современных файловых системах существует ограничение следующего рода: каждый файл занимает минимум один кластер. Из этого правила неявным образом следует, что при размере файла, меньшем размера кластера, файл, тем не менее, занимает весь кластер. Поэтому необходимо выбирать размер кластера таким образом, чтобы избежать потерь дискового пространства при хранении большого количества мелких файлов. Ситуация осложняется тем, что без повторного форматирования изменение размера кластера невозможно. Поэтому, в зависимости от емкости логического диска, операционная система выбирает размер кластера таким образом, чтобы свести к минимуму потери дискового пространства, сохраняя при этом некоторый уровень быстродействия операций чтения-записи данных.
Дефрагментация диска -
Управление ресурсами
Для реализации функций управления ресурсами в ОС формируются информационные таблицы, в которых отражаются следующие основные данные:
для ресурсов:
• учетная информация о ресурсе (идентификатор, класс, количество каналов и т.п.);
• код состояния ресурса;
• идентификатор процесса-владельца и т.п
для заявок на ресурсы:
• идентификатор процесса-заявителя;
• приоритет процесса;
• идентификатор и требуемый объем ресурса и т.п.
В ходе организации использования ресурсов формируются таблицы, в которых указываются списки распределенных и свободных ресурсов, связи между ресурсами и процессами.
Наряду с проблемой рационального распределения ресурсов между процессами существует также проблема синхронизации протекания параллельных процессов и исключение возникновения тупиков в вычислительной системе.
Процесс в мультипрограммной системе находится в состоянии тупика (дедлока, клинча), если он ожидает некоторого события, которое никогда не произойдет. Системная тупиковая ситуация, или ситуация “зависания” системы - это ситуация, когда один или более процессов оказываются в состоянии тупика. операционных системах тупики возникают в большинстве случаев как результат конкуренции процессов за обладание монопольно используемыми ресурсами.В проблеме тупиков выделяют следующие четыре основных направления: предотвращение тупиков; обход тупиков; обнаружение тупиков; восстановление после тупиков.
Для реализации функций управления ресурсами операционная система осуществляет постоянный учет их наличия и состояния. В современных ОС наиболее употребительным является идентификация ресурса с помощью файла его описания.
В рамках проблемы управления вычислительными ресурсами необходимо решать две задачи:
1) планирование ресурса – определение, кому, когда и в каком количестве необходимо выделить данный ресурс;
2) отслеживание состояния ресурса, то есть поддержание оперативной информации о том, занят или не занят ресурс, а для делимых ресурсов — какое количество ресурса уже распределено.
Вычислительные ресурсы можно разделить на две категории — выгружаемые и невыгружаемые ресурсы. Ресурс считается выгружаемым, если его можно во время работы процесса-владельца передать другому процессу без ущерба для процесса-владельца. Память является выгружаемым ресурсом. А вот устройство записи компакт-дисков является невыгружаемым ресурсом.
Взаимоблокировка — ситуация, когда одни процессы блокируют доступ другим процессам к различным ресурсам. Она обусловлена тем, что в каждый конкретный момент времени один и тот же ресурс может быть использован только в рамках одной задачи. Это особенно заметно при использовании периферийного оборудования, к примеру, в случае сканирования или печати документа или же при работе с файловой системой. Взаимоблокировка выгружаемых ресурсов разрешается путем перераспределения ресурсов между процессами. Взаимоблокировка невыгружаемых ресурсов может быть решена путем блокировки процесса до тех пор, пока не освободится запрошенный ресурс.
С точки зрения операционной системы использование ресурса можно разделить на три этапа: запрос, использование и возврат ресурса. Для каждого из этих этапов должны существовать определенные механизмы защиты процессов от взаимоблокировки. Если процесс запрашивает ресурс, который в данный момент уже используется другим процессом, то процесс попадает в короткий цикл: запрос ресурса, отказ, ожидание. Механизм использования ресурсов различен в разных операционных системах. В одних системах существует специальный системный вызов, который позволяет процессам в явном виде запрашивать использование ресурса. В других системах каждому ресурсу сопоставлен файл или канал, посредством которого процесс может использовать ресурс. Концепция каналов широко распространена в UNIX-системах.
Для возникновения взаимоблокировки должны выполняться все (!) следующие условия:
· взаимное исключение — каждый ресурс либо доступен, либо используется одним процессом;
· удержание и ожидание — процесс, уже получивший какой-либо ресурс, не освобождая его, запрашивает новый ресурс;
· отсутствие принудительной выгрузки ресурса — отсутствует механизм принудительного освобождения ресурсов у занимающих их процессов;
· циклическое ожидание — каждый из процессов в системе ожидает освобождения ресурса, занятого другим процессом.
При решении данной проблемы можно использовать любой из следующих подходов:
· игнорирование проблемы;
· реакция на возникшую взаимоблокировку;
· аккуратное управление ресурсами;
· структурное опровержение каждого из условий для предотвращения возникновения взаимоблокировок.
Первый подход применим в том случае, если при решаемых задачах вероятность возникновения взаимоблокировки минимальна либо невозможна. К примеру, необходимые для возникновения взаимоблокировки условия выполняются в среднем раз в год, а замена оборудования и операционной системы по причине различных сбоев и поломок происходит раз в месяц. В таком случае механизм предотвращения взаимоблокировок в системе не реализовывается, дабы не жертвовать производительностью системы, поскольку любой защитный механизм отнимает у системы ресурсы и время, которые можно потратить на решение поставленных задач. Большинство современных операционных систем, включая Windows, предпочитает не заниматься вопросами предотвращения взаимоблокировок.
При втором подходе система не предотвращает взаимоблокировки, но производит мониторинг всех действий, выполняемых системой, чтобы после возникновения взаимоблокировки откатить систему к моменту ее возникновения и скорректировать работу системы таким образом, чтобы избежать повторения ситуации в дальнейшем. Задача определения тупиковых ситуаций и выхода из них при таком подходе требует серьезных знаний в области системного анализа и высшей математики, поэтому в данной теме она не рассматривается. Уклонение от взаимоблокировок возможно только в том случае, когда операционная система владеет информацией о том, когда и в каком объеме каждый процесс будет запрашивать ресурсы, а это невозможно.
Предотвращение взаимоблокировок возможно, когда вероятность каждого из необходимых условий сведена к минимуму. Первое условие может быть заблокировано путем принудительного ограничения числа процессов-претендентов на каждый ресурс. Второе условие блокируется, если обязать процессы резервировать все ресурсы перед выполнением. Если какой-либо ресурс недоступен, процессу отказывают в исполнении до тех пор, пока ресурс не освободится. Недостаток этого способа в том, что процесс зачастую не знает, сколько и каких ресурсов ему понадобится в каждый момент времени исполнения. Из этого следует также тот факт, что ресурсы при таком подходе будут использоваться неэффективно. Третье условие блокировке не поддается, потому что может привести к самым непредсказуемым последствиям вплоть до поломки оборудования. Четвертое условие поддается блокировке сравнительно простым способом. Для этого необходимо определить порядок использования ресурсов процессами во избежание заведомо тупиковых ситуаций. К примеру, процесс не может обратиться к принтеру, не прочитав данные с диска, или процесс не может осуществлять запись на диск, не получив предварительно данные с другого устройства.
Планирование заданий
Задание — задача, которая решается на данной аппаратной платформе при помощи некоторого приложения.
Основываясь на материале предыдущей темы, можно сказать, что процесс есть проекция задания на конкретную аппаратную платформу. Если речь идет о промышленных системах, то роль операционной системы исполняет само приложение, решающее задачу. И в этом случае проблема планирования заданий не возникает в принципе, ибо все вычислительные ресурсы системы направлены только на решение этой задачи с максимальной эффективностью. В традиционных же системах — на домашних компьютерах или же на рабочих станциях — одновременного решения требует множество задач, каждая из которых решается не одной программой, а целым программным комплексом. Поэтому задача планирования заданий носит более глобальный характер и, как правило, слабо ориентирована на конкретную конфигурацию аппаратного обеспечения. Грубо говоря, если в рамках решения задачи требуется использование параллельных вычислений, то, независимо от того, сколько процессоров установлено на данный момент в системе, эта необходимость будет реализована тем или иным методом, в зависимости от механизма планирования процессов, который может быть осуществлен на данной аппаратной платформе.
Механизм планирования заданий определяет облик операционной системы в целом, ее парадигму, а механизм планирования процессов отвечает за работу операционной системы на конкретном аппаратном обеспечении, и его тип определяется на этапе установки операционной системы на данную аппаратную платформу. Задача планирования заданий, таким образом, сводится к необходимости планирования, в какой момент времени какому процессу, отвечающему за некоторый этап решения задачи, какое количество процессорного времени необходимо выделить.
На данный момент существует два класса операционных систем, кардинально различающихся по подходу к задаче планирования заданий, — операционные системы разделения времени и операционные системы реального времени. Системы первого класса каждому заданию выделяют столько времени, сколько нужно, чтобы создать и поддерживать иллюзию монопольной работы в системе. К данному классу относятся операционные системы для домашнего использования или для рабочих станций. Системы второго класса спроектированы для задач, на время решения которых существует жесткое ограничение. Такова, к примеру, задача управления транспортными потоками города, в рамках которой необходимо планировать режимы работы всех светофоров на всех перекрестках таким образом, чтобы не возникало заторов.
Таким образом, можно сделать заключение, что:
· на этапе планирования заданий операционная система определяет, на какой этап решения задачи сколько процессорного времени выделять;
· на этапе планирования процессов — сколько и каких ресурсов выделять конкретным процессам в соответствии с приоритетом заданий и самих процессов;
· на этапе планирования ресурсов — как спланировать использование ресурсов с учетом потребностей всех процессов с максимальной эффективностью.
Содержание
1. Машинно-зависимые свойства операционных систем. 2
1.1. Планирование процессов. 4
1.2. Управление реальной и виртуальной памятью.. 5
1.2.1. Методы распределения памяти без использования внешней памяти. 7
Распределение памяти фиксированными разделами. 7
Распределение памяти динамическими разделами. 8
Перемещаемые разделы.. 9
1.2.2. Методы распределения памяти с использованием дискового пространства 10
1.3. Обслуживание прерываний. 13
1.4. Обслуживание ввода-вывода. 14
2. Машинно-независимые свойства операционных систем. 16
2.1 Работа с файлами. 16
2.2. Управление ресурсами. 17
2.3. Планирование заданий. 20
Машинно-зависимые свойства операционных систем
Одна и та же операционная система не может без каких-либо изменений устанавливаться на компьютерах, отличающихся типом процессора или/и способом организации всей аппаратуры. В модулях ядра ОС не могут не отразиться такие особенности аппаратной платформы, как количество типов прерываний и формат таблицы ссылок на процедуры обработки прерываний, состав регистров общего назначения и системных регистров, состояние которых нужно сохранять в контексте процесса, особенности подключения внешних устройств и многие другие.
Однако опыт разработки операционных систем показывает: ядро можно спроектировать таким образом, что только часть модулей будут машинно-зависимыми, а остальные не будут зависеть от особенностей аппаратной платформы. В хорошо структурированном ядре машинно-зависимые модули локализованы и образуют программный слой, естественно примыкающий к слою аппаратуры, как это и показано на рисунке.
Многослойная структура ядра ОС
Такая локализация машинно-зависимых модулей существенно упрощает перенос операционной системы на другую аппаратную платформу.
Объем машинно-зависимых компонентов ОС зависит от того, насколько велики отличия в аппаратных платформах, для которых разрабатывается ОС. Например, ОС, построенная на 32-битовых адресах, для переноса на машину с 16-битовыми адресами должна быть практически переписана заново. Одно из наиболее очевидных отличий — несовпадение системы команд процессоров — преодолевается достаточно просто. Операционная система программируется на языке высокого уровня, а затем соответствующим компилятором вырабатывается код для конкретного типа процессора. Однако во многих случаях различия в организации аппаратуры компьютера лежат гораздо глубже и преодолеть их таким образом не удается. Например, однопроцессорный и двухпроцессорный компьютеры требуют применения в ОС совершенно разных алгоритмов распределения процессорного времени. Аналогично отсутствие аппаратной поддержки виртуальной памяти приводит к принципиальному различию в реализации подсистемы управления памятью. В таких случаях не обойтись без внесения в код операционной системы специфики аппаратной платформы, для которой эта ОС предназначается.
Для уменьшения количества машинно-зависимых модулейпроизводители операционных систем обычно ограничивают универсальность машинно-независимых модулей. Это означает, что их независимость носит условный характер и распространяется только на несколько типов процессоров и созданных на основе этих процессоров аппаратных платформ. По этому пути пошли, например, разработчики ОС Windows NT, ограничив количество типов процессоров для своей системы четырьмя и поставляя различные варианты кодов ядра для однопроцессорных и многопроцессорных компьютеров.
Особое место среди модулей ядра занимают низкоуровневые драйверы внешних устройств. С одной стороны эти драйверы, как и высокоуровневые драйверы, входят в состав менеджера ввода-вывода, то есть принадлежат слою ядра, занимающему достаточно высокое место в иерархии слоев. С другой стороны, низкоуровневые драйверы отражают все особенности управляемых внешних устройств, поэтому их можно отнести и к слою машинно-зависимых модулей. Такая двойственность низкоуровневых драйверов еще раз подтверждает схематичность модели ядра со строгой иерархией слоев.
Для компьютеров на основе процессоров Intel x86/Pentium разработка экранирующего машинно-зависимого слоя ОС несколько упрощается за счет встроенной в постоянную память компьютера базовой системы ввода-вывода — BIOS. BIOS содержит драйверы для всех устройств, входящих в базовую конфигурацию компьютера: жестких и гибких дисков, клавиатуры, дисплея и т. д. Эти драйверы выполняют весьма примитивные операции с управляемыми устройствами, например чтение группы секторов данных с определенной дорожки диска, но за счет этих операций экранируются различия аппаратных платформ персональных компьютеров и серверов на процессорах Intel разных производителей. Разработчики операционной системы могут пользоваться слоем драйверов BIOS как частью машинно-зависимого слоя ОС, а могут и заменить все или часть драйверов BIOS компонентами ОС.
Объем машинно-зависимых частей кода, которые непосредственно взаимодействуют с аппаратными средствами, должен быть по возможности минимизирован. Так, например, следует всячески избегать прямого манипулирования регистрами и другими аппаратными средствами процессора. Для уменьшения аппаратной зависимости разработчики ОС должны также исключить возможность использования по умолчанию стандартных конфигураций аппаратуры или их характеристик. Аппаратно-зависимые параметры можно «спрятать» в программно-задаваемые данные абстрактного типа. Для осуществления всех необходимых действий по управлению аппаратурой, представленной этими параметрами, должен быть написан набор аппаратно-зависимых функций. Каждый раз, когда какому-либо модулю ОС требуется выполнить некоторое действие, связанное с аппаратурой, он манипулирует абстрактными данными, используя соответствующую функцию из имеющегося набора. Когда ОС пе<