Особенности методов построения операционных систем
При описании ОС часто указывают особенности ее структурной организации и основные концепции, положенные в ее основу. К основным концепциям относится:
— Способы построения ядра системы (монолитное и микроядерное ядра). Большинство ОС используют одно ядро, которое компонуется как одна программа, работающая в привилегированном режиме, использующая быстрые переходы с одной процедуры на другую, не требующая переключения из привилегированного режима в пользовательский и наоборот. Альтернатива – построение ОС на базе микроядра, работающего также в привилегированном режиме и выполняющего только минимум функций по управлению аппаратурой. В то время как функции ОС более высокого уровня выполняют специализированные компоненты ОС, работающие в пользовательском режиме. При таком построении ОС работаю более медленно, т.к. часто выполняют переходы между привилегированным режимом и пользовательским. Зато система получается более гибкой, ее функции можно наращивать, модифицировать или сужать.
— Построение ОС на базе ООП (подхода) дает возможность использовать все его достоинства, зарекомендовавшие себя на уровне приложений внутри ОС, а именно:
сосредоточение удачных решений в форме стандартных объектов; возможность создания новых объектов на базе имеющихся с помощью механизма наследования; защита данных в объекте от несанкционированного использования извне; структурируемость системы, состоящей из набора хорошо определенных объектов.
— Наличие нескольких прикладных сред дает возможность в рамках одной ОС одновременно выполнять приложения, разработанные для нескольких ОС
— Распределенная организация ОС позволяет упростить работу пользователей и программистов в сетевых средах. В распределенной ОС реализованы механизмы, которые дают возможность пользователю предоставлять и воспринимать сеть в виде однопроцессорного компьютера. Характерными признаками распределенной организации ОС являются: наличие единой справочной службы распределенных ресурсов; единой службы времени; использование механизма вызова удаленных процедур; многонитиевой обработки, позволяющей распараллеливать вычисление в рамках одной задачи и выполнять эту задачу сразу на нескольких компьютерах сети, а также наличия других распределенных служб.
Атрибуты и права доступа к файлу
В разных файловых системах могут использоваться в качестве атрибутов разные характеристики:
— Информация о разрешенном доступе
— Пароль для доступа к файлу
— Создатель файла признак только для чтения
— Признак скрытого файла
— Признак системного файла
— Признак архивного файла
— Признак двоичного или символьного файла
— Признак временного файла
— Указатель на ключевое поле в записи
— Время создания, последнего доступа и последнего изменения
— Текущий размер файла
— Максимальный размер файла
Права доступа — это атрибуты файла или каталога, которые указывают серверу, кто и что может делать с соответствующим файлом или каталогом.
Определить права доступа к ресурсу – значит определить для каждого пользователя набор операций, которые ему разрешено применять к данному ресурсу. В разных операционных системах для одних и тех же типов ресурсов может быть определен свой список дифференцируемых операций доступа. Для файловых объектов этот список может включать следующие операции:
— получение атрибутов файла;
— установка новых значений атрибутов;
— изменение прав доступа.
Методы распределения памяти
1. Без использования внешней памяти
2. С использованием внешней памяти
Распределение памяти фиксированными разделами
Разделение ОП на несколько разделов фиксированной величины. Очередная задача помещается либо в общую очередь, либо в очередь к некоторому разделу.
Подсистема управления памятью, задачи:
— Сравнив размер программы поступившей на выполнение , выбирает подходящий раздел
— Загрузка программы и настройка адресов
«-» — жесткость, неэффективное использование памяти – даже маленькая программа занимает весь раздел
Разделение памяти разделами переменной величины
Память не делится на разделы. Сначала вся ОП свободна. Каждой вновь поступившей задаче выделяется необходимая ей память. Если достаточный объем памяти отсутствует, то задача не принимается и стоит в очереди.
В произвольный момент времени память представляет собой случайную последовательность занятых и свободных участков (разделов) произвольного размера.
Задачи ОС в данном методе:
— Ведение таблиц свободных и занятых областей
— При поступлении новой задачи – анализ запроса, просмотр таблиц свободных областей и выбор раздела, размер которого достаточен для размещения поступившей задачи
— Загрузка задачи в выделенный ей раздел и корректировка таблиц свободных и занятых областей
— После завершения задачи корректировка таблиц свободных и занятых областей
Перемещение всех занятых участков в сторону старших либо младших адресов – чтобы вся оставшаяся свободная память образовывала единую свободную область.
Файловая система в структуре операционной системы
ФС – это часть ОС, назначение которой состоит в том, чтобы обеспечить пользователю удобный интерфейс при работе с данными, хранящимися на диске и обеспечить совместное использование файла несколькими пользователями и процессами. Файловая система определяет формат содержимого и способ физического хранения информации, которую принято группировать в виде файлов.
Понятие ФС включает:
— Совокупность всех файлов на диске
— Наборы структур данных, используемых для управления файлами (каталоги, дескрипторы файлов, таблицы распределения свободного и занятого пространства на диске)
— Комплекс системных программных средств, реализующих управление файлами, в частности 7 создание, уничтожение, чтение, запись и др. операции над файлами.
Файлы управляются ОС. То, как они структурированы, поименованы, используются, защищены, реализованы – одна из главных тем проектирования ОС.
Основные функции файловой системы:
1. Идентификация файлов. Связывание имени файла с выделенным ему пространством внешней памяти.
2. Распределение внешней памяти между файлами. Для работы с конкретным файлом не требуется иметь информацию о местоположении этого файла на внешнем носителе информации.
3. Обеспечение надежности и отказоустойчивости. Стоимость информации может во много раз превышать стоимость компьютера.
4. Обеспечение защиты от НСД.
5. Обеспечение совместного доступа к файлам, не требуя от пользователя специальных усилий по обеспечению синхронизации доступа.
6. Обеспечение высокой производительности.
По предназначению файловые системы можно классифицировать на нижеследующие категории.
— Для носителей с произвольным доступом (например, жёсткий диск): FAT32, HPFS, ext2 и др. Журналирование, например в ext3, ReiserFS, JFS, NTFS, XFS, либо механизм soft updates и др. Журналирование широко распространено в Linux, применяется в NTFS. Soft updates – в BSD системах.
— Для носителей с последовательным доступом (например, магнитные ленты): QIC и др.
— Для оптических носителей – CD и DVD: ISO9660, HFS, UDF и др.
— Виртуальные файловые системы: AEFS и др.
— Сетевые файловые системы: NFS, CIFS, SSHFS, GmailFS и др.
— Для флэш-памяти: YAFFS, ExtremeFFS, exFAT.
Источник
Принцип модульности
Под модулем в общем случае понимают функционально законченный элемент системы, выполненный в соответствии с принятыми межмодульными интерфейсами.
По своему определению модуль предполагает возможность без труда заме нить его на другой при наличии заданных интерфейсов.
Способы обособления составных частей ОС в отдельные модули могут существенно различаться, но чаще всего разделение происходит именно по функциональному признаку. В зна чительной степени разделение системы на модули определяется используемым методом проектирования ОС (снизу вверх или наоборот).
Мы говорим о системных программных модулях (они являются программными ресурсами и могут быть распределены между выполняющимися процессами).
Программные модули могут быть однократно и многократно используемыми.
Однократно используемыми назвают такие модули, которые могут быть правильно выполнены только один раз. Т.е. в процессе выполнения они могут испортить себя (повреждается часть кода или исходные данные). Очевидно, что они являются неделимыми ресурсами. Эти модули обычно используются на этапе загрузки ОС (файлы на системном диске, в которых записаны эти модули при этом не портятся, поэтому могут быть использованы при следующих запусках).
Многократно используемые программные модули делятся на
— повторно входимые и
Привилегированные работают в привилегированном режиме (т.е. при отключенной системе прерываний). Таким образом, никакие внешние события не могут нарушить порядок их выполнения). Эти модули являются попеременно разделяемым ресурсом.
Непривилегированные модули – это обычные программные модули, которые могут быть прерваны во время своей работы.
(В общем случае их нельзя считать разделяемыми, так как после прерывания выполнения такого модуля, исполняемого в рамках одного процесса, запусить его еще раз по требованию другого процесса, то промежуточные результаты прерванных вычислений могут быть потерянными.
Противоположны им реентерабельные модули ( reenterable – допускающий повторное обращение).
Они допускают повторное многократное прерывание своего исполнения и повторный запуск.
Для этого они создаются таким образом, чтобы было обеспечено сохранение промежуточных вычислений и возврат с прерванной точки. Это может быть реализовано двумя способами: с помощью статических и динамических методов выделения памяти под сохраняемые значения.
Чаще используется динамический метод.
С помощью обращения из системной привилегированной секции осуществляется запрос на получение в системной области памяти блока ячеек, необходимого для размещения текущих данных. При этом на вершину стека помещается указатель на начало выделенной области и ее объем. Теперь включается система прерываний (завершилась привилегированная част модуля). Поэтому возможно прерывание во время выполнения основной части модуля. Если прерывание не возникает, то после завершения основной части модуля выполняется запрос на освобождение блока системной области памяти. Если возникает прерывание и другой процесс обращается к этому же самому реентерабельному модулю, для нового процесса вновь заказывается новый блок памяти и на вершину стека записывается новый указатель.
При статическом способе выделения памяти заранее для фиксированного числа процессов резервируются области памяти, в которых будут располагаться переменные реентерабельных модулей. Для каждого процесса – своя область.
Чаще всего такими процессами являются процессы ввода\вывода и речь идет о реентерабельных драйверах, которые могут управлять параллельно несколькими однотипными устройствами).
Существуют еще и повторно входимые ( re-entrance) модули. Они также допускают многократное паралльное использование, но в отличие от реентерабельных, их нельзя прерывать. Они состоят из привилегированных секций и повторное обращение к ним возможно только после завершения какой-нибудь из секций. Другими словами, в повторно входимых модулях четко предопределены все допустимые точки входа.
Заметим, что повторно входимые модули встречаются чаще, чем реентерабельные.
Принцип модульности отражает технологические и эксплуатационные свойства системы. Наибольший эффект от его использования достижим в случае, когда принцип распространен одновременно на операционную систему, прикладные программы и аппаратуру.
Принцип функциональной избирательности
В ОС выделяется некоторая часть важных модулей, которые должны постоянно находиться в оперативной памяти для более эффективной организации вычис лительного процесса. Эту часть в ОС называют ядром, так как это действительно основа системы.
При формировании состава ядра требуется учитывать два противоречивых требования.
1) В состав ядра должны войти наиболее часто исполь зуемые системные модули.
2) Количество модулей должно быть таковым, чтобы объем памяти, занимаемый ядром, был бы не слишком большим.
В состав ядра, как правило, входят модули
— по управлению системой прерываний,
— средства по переводу программ из состояния счета в состояние ожидания, готовности и об ратно,
— средства по распределению таких основных ресурсов, как оперативная память и процессор.
Помимо программных модулей, входящих в состав ядра и постоянно располагающихся в оперативной памяти, может быть много других системных программных модулей, которые получают название транзитных. Транзитные программные модули загружаются в оперативную память только при необходимости и в случае отсутствия свободного пространства могут быть замещены другими транзитными модулями.
Принцип генерируемо сти ОС
Основное положение этого принципа определяет такой способ исходного пред ставления центральной системной управляющей программы ОС (ее ядра и ос новных компонентов, которые должны постоянно находиться в оперативной па мяти), который позволял бы настраивать эту системную супервизорную часть, исходя из конкретной конфигурации конкретного вычислительного комплекса и круга решаемых задач.
Эта процедура проводится редко, перед достаточно протяженным периодом эксплуатации ОС.
Процесс генерации осуществляется с по мощью специальной программы-генератора и соответствующего входного языка для этой программы, позволяющего описывать программные возможности системы и конфигурацию машины. В результате генерации получается полная вер сия ОС. Сгенерированная версия ОС представляет собой совокупность системных наборов модулей и данных.
Упомянутый раньше принцип модульности положительно проявляется при гене рации ОС. Он существенно упрощает настройку ОС на требуемую конфигура цию вычислительной системы.
В наши дни при использовании персональных ком пьютеров с принципом генерируемости ОС можно столкнуться разве что только при работе с Linux. В этой UNIX -системе имеется возможность не только использовать какое-либо готовое ядро ОС, но и самому сгенерировать (скомпилировать) такое ядро, которое будет оптимальным для данного конкретного персо нального компьютера и решаемых на нем задач. Кроме генерации ядра в Linux имеется возможность указать и набор подгружаемых драйверов и служб, то есть часть функций может реализовываться модулями, непосредственно входящими в ядро системы, а часть — модулями, имеющими статус подгружаемых, транзит ных.
В остальных современных распространенных ОС для персональных компьютеров конфигурирование ОС под соответствующий состав оборудования осуществляется на этапе инсталляции, а потом состав драйверов и изменение некоторых параметров ОС может быть осуществлено посредством редактирования конфи гурационного файла.
Принцип функциональной избыточности
Этот принцип учитывает возможность проведения одной и той же работы раз личными средствами.
В состав ОС может входить несколько типов мониторов (модулей супервизора, управляющих тем или другим видом ресурса), различные средства организации коммуникаций между вычислительными процессами.
На личие нескольких типов мониторов, нескольких систем управления файлами позволяет пользователям быстро и наиболее адекватно адаптировать ОС к определенной конфигурации вычислительной системы, обеспечить максимально эф фективную загрузку технических средств при решении конкретного класса за дач, получить максимальную производительность при решении заданного класса задач.
Построение виртуальных ресурсов, их распределение и использование теперь используется практически в любой ОС. Этот принцип позволяет представить структуру системы в виде определенного набора планировщиков процессов и распределителей ресурсов (мониторов) и использовать единую централизован ную схему распределения ресурсов.
Наиболее естественным и законченным проявлением концепции виртуальности является понятие виртуальной машины. По сути, любая операционная система, являясь средством распределения ресурсов и организуя по определенным прави лам управление процессами, скрывает от пользователя и его приложений реаль ные аппаратные и иные ресурсы, заменяя их некоторой абстракцией. В результа те пользователи видят и используют виртуальную машину как некое устройство, способное воспринимать их программы, написанные на определенном языке программирования, выполнять их и выдавать результаты. При таком языковом представлении пользователя совершенно не интересует реальная конфигурация вычислительной системы, способы эффективного использования ее компонен тов и подсистем. Он мыслит и работает с машиной в терминах используемого им языка и тех ресурсов, которые ему предоставляются в рамках виртуальной ма шины.
Чаще виртуальная машина, предоставляемая пользователю, воспроизводит архитектуру реальной машины, но архитектурные элементы в таком представле нии выступают с новыми или улучшенными характеристиками, часто упрощаю щими работу с системой. Характеристики могут быть произвольными, но чаще всего пользователи желают иметь собственную «идеальную» по архитектурным характеристикам машину в следующем составе:
— единообразная по логике работы память (виртуальная) практически неогра ниченного объема. Среднее время доступа соизмеримо со значением этого параметра оперативной памяти. Организация работы с информацией в такой памяти производится в терминах обработки данных — в терминах работы с сегментами данных на уровне выбранного пользователем языка программирования;
— произвольное количество процессоров (виртуальных), способных работать па раллельно и взаимодействовать во время работы. Способы управления процессорами, в том числе синхронизация и информационные взаимодействия, реализованы и доступны пользователям на уровне используемого языка в терминах управления процессами;
— произвольное количество внешних устройств (виртуальных), способных ра ботать с памятью виртуальной машины параллельно или последовательно, асинхронно или синхронно по отношению к работе того или иного виртуального процессора, которые инициируют работу этих устройств. Информация, передаваемая или хранимая на виртуальных устройствах, не ограничена допус тимыми размерами. Доступ к такой информации осуществляется на основе либо последовательного, либо прямого способа доступа в терминах соответст вующей системы управления файлами. Предусмотрено расширение информационных структур данных, хранимых на виртуальных устройствах.
Степень приближения к «идеальной» виртуальной машине может быть большей или меньшей в каждом конкретном случае. Чем больше виртуальная машина, реализуемая средствами ОС на базе конкретной аппаратуры, приближена к «иде альной» по характеристикам машине и, следовательно, чем больше ее архитек турно-логические характеристики отличны от реально существующих, тем боль ше степень виртуальности у полученной пользователем машины.
Одним из аспектов виртуализации является организация возможности выполне ния в данной ОС приложений, которые разрабатывались для других ОС. Други ми словами, речь идет об организации нескольких операционных сред.
Реализация этого принципа позволяет такой ОС иметь очень сильное преимущество перед аналогичными ОС, не имеющими такой воз можности.
Примером реализации принципа виртуализации может служить VDM- машина (virtual DOS machine) — защищенная подсистема, предоставляющая полную среду MS-DOS и консоль для выполнения MS-DOS приложений. Одно временно может выполняться практически произвольное число VDM -сессий. Такие VDM -машины имеются и в системах Microsoft Windows, и в OS/2.
Принцип независимости программ от внешних устройств
Этот принцип реализуется сейчас в подавляющем большинстве ОС общего при менения. Мы уже говорили о нем, рассматривая принципы организации ввода/ вывода. Пожалуй, впервые наиболее последовательно данный принцип был реа лизован в ОС UNIX. Реализован он и в большинстве современных ОС для ПК. Напомним, этот принцип заключается в том, что связь программ с конкретны ми устройствами производится не на уровне трансляции программы, а в период планирования ее исполнения. В результате перекомпиляция при работе про граммы с новым устройством, на котором располагаются данные, не требуется.
Принцип позволяет одинаково осуществлять операции управления внешними устройствами независимо от их конкретных физических характеристик. Напри мер, программе, содержащей операции обработки последовательного набора дан ных, безразлично, на каком носителе эти данные будут располагаться. Смена носителя и данных, размещаемых на них (при неизменности структурных харак теристик данных), не принесет каких-либо изменений в программу, если в систе ме реализован принцип независимости.
Одним из аспектов совместимости является способность ОС выполнять програм мы, написанные для других ОС или для более ранних версий данной операцион ной системы, а также для другой аппаратной платформы.
Необходимо разделять вопросы двоичной совместимости и совместимости на уров не исходных текстов приложений. Двоичная совместимость достигается в том случае, когда можно взять исполняемую программу и запустить ее на выполнение на другой ОС. Для этого необходимы: совместимость на уровне команд про цессора, совместимость на уровне системных вызовов и даже на уровне библио течных вызовов, если они являются динамически связываемыми.
Совместимость на уровне исходных текстов требует наличия соответствующего транслятора в составе системного программного обеспечения, а также совмести мости на уровне библиотек и системных вызовов. При этом необходима пере компиляция имеющихся исходных текстов в новый выполняемый модуль.
Гораздо сложнее достичь двоичной совместимости между процессорами, осно ванными на разных архитектурах. Для того чтобы один компьютер выполнял про граммы другого (например, программу для ПК типа IBM PC желательно выпол нить на ПК типа Macintosh фирмы Apple), этот компьютер должен работать с машинными командами, которые ему изначально непонятны. В таком случае процессор типа 680×0 (или PowerPC) на Мае должен исполнять двоичный код, предназначенный для процессора 180×86. Процессор 80×86 имеет свои собственные дешифратор команд, регистры и внутреннюю архитектуру. Процессор 680×0 не понимает двоичный код 80×86, поэтому он должен выбрать каждую команду, декодировать ее, чтобы определить, для чего она предназначена, а затем выпол нить эквивалентную подпрограмму, написанную для 680×0. Так как к тому же у 680×0 нет в точности таких же регистров, флагов и внутреннего арифметико- логического устройства, как в 80×86, он должен имитировать все эти элементы с использованием своих регистров или памяти. И он должен тщательно воспро изводить результаты каждой команды, что требует специально написанных под программ для 680×0, гарантирующих, что состояние эмулируемых регистров и флагов после выполнения каждой команды будет в точности таким же, как и на реальном 80×86. Выходом в таких случаях является использование так называемых прикладных сред или эмуляторов. Учитывая, что основную часть программы, как правило, составляют вызовы библиотечных функций, прикладная среда имитирует библиотечные функции целиком, используя заранее написанную биб лиотеку функций аналогичного назначения, а остальные команды эмулирует каждую по отдельности.
Одним из средств обеспечения совместимости программных и пользовательских интерфейсов является соответствие стандартам POSIX. Использование стандарта POSIX позволяет создавать программы в стиле UNIX, которые впоследствии могут легко переноситься из одной системы в другую.
Принцип открытой и наращиваемой ОС
Открытая ОС доступна для анализа как пользователям, так и системным специа листам, обслуживающим вычислительную систему. Наращиваемая (модифици руемая, развиваемая) ОС позволяет не только использовать возможности гене рации, но и вводить в ее состав новые модули, совершенствовать существующие и т. д. Другими словами, необходимо, чтобы можно было легко внести дополне ния и изменения, если это потребуется, и не нарушить целостность системы. Пре красные возможности для расширения предоставляет подход к структурирова нию ОС по типу клиент—сервер с использованием микроядерной технологии. В соответствии с этим подходом ОС строится как совокупность привилегиро ванной управляющей программы и набора непривилегированных услуг — «сер веров». Основная часть ОС остается неизменной и в то же время могут быть до бавлены новые серверы или улучшены старые.
Этот принцип иногда трактуют как расширяемость системы.
К открытым ОС, прежде всего, следует отнести UNIX -системы и, естественно, ОС Linux.
Принцип мобильности (переносимости)
Операционная система относительно легко должна переноситься с процессора одного типа на процессор другого типа и с аппаратной платформы (которая включает наряду с типом процессора и способ организации всей аппаратуры компьютера, иначе говоря, архитектуру вычислительной системы) одного типа на ап паратную платформу другого типа. Заметим, что принцип переносимости очень близок принципу совместимости, хотя это и не одно и то же.
Написание переносимой ОС аналогично написанию любого переносимого кода — нужно следовать некоторым правилам. Во-первых, большая часть ОС должна быть написана на языке, который имеется на всех системах, на которые планируется в дальнейшем ее переносить. Это, прежде всего, означает, что ОС должна быть написана на языке высокого уровня, предпочтительно стандартизованном, на пример на языке С. Программа, написанная на ассемблере, не является в общем случае переносимой. Во-вторых, важно минимизировать или, если возможно, исключить те части кода, которые непосредственно взаимодействуют с аппарат ными средствами. Зависимость от аппаратуры может иметь много форм. Неко торые очевидные формы зависимости включают прямое манипулирование реги страми и другими аппаратными средствами. Наконец, если аппаратно-зависимый код не может быть полностью исключен, то он должен быть изолирован в нескольких хорошо локализуемых модулях. Аппаратно-зависимый код не должен быть распределен по всей системе. Например, можно спрятать аппаратно-зави- симую структуру в программно задаваемые данные абстрактного типа. Другие модули системы будут работать с этими данными, а не с аппаратурой, используя набор некоторых функций. Когда ОС переносится, то изменяются только эти данные и функции, которые ими манипулируют.
Введение стандартов POSIX преследовало цель обеспечить переносимость создаваемого программного обеспечения.
Принцип обеспечения безопасности вычислений
Обеспечение безопасности при выполнении вычислений является желательным свойством для любой многопользовательской системы. Правила безопасности определяют такие свойства, как защита ресурсов одного пользователя от других и установление квот по ресурсам для предотвращения захвата одним пользова телем всех системных ресурсов (таких, как память).
Обеспечение защиты информации от несанкционированного доступа является обязательной функцией сетевых операционных систем.
Источник