Курынин Р.В., Машечкин И.В., Терехин А.Н. - Конспект лекций по ОС (1114685), страница 23
Текст из файла (страница 23)
Отметим, что здесьречь не идет об эксклюзивных правах, поскольку в общем случае это было бы некорректно. Итак,иными словами процесс можно определить как исполняемую программу, которая введена всистему для ее обработки, и с которой ассоциированы некоторые ресурсы вычислительнойсистемы.Ресурсы, выделяемые процессам, могут быть двух типов. Первая категория ресурсовсостоит из тех ресурсов, которые выделяются процессу на эксклюзивных правах. Это означает,что этот ресурс, пока процесс им владеет, принадлежит ему и только ему, и никакой иной процессне имеет право работать с данным ресурсом. Вторая категория — это те ресурсы, которые в один итот же момент времени могут принадлежать двум и более процессам, и их принято называтьразделяемыми ресурсами.
Здесь сделаем небольшое пояснение: то, что разделяемый ресурсможет одновременно принадлежать нескольким процессам, не означает, что к нему возможенодновременный доступ. Обозначенная проблема решается на другом уровне посредствомиспользования разных схем синхронизации доступа к разделяемому ресурсу, и об этом речьпойдет несколько позже.С точки зрения выделения ресурса процессу используются две модели организации этоговыделения. Первый способ — это предварительная декларация ресурсов.
В этом случае до вводапрограммы в систему и формирования для нее процесса описывается перечень тех ресурсов,которыми процесс будет обладать. Например, это может быть перечень областей оперативнойпамяти, которые будут доступны данному процессу (если система поддерживает механизмвиртуальной памяти, то это будет перечень областей виртуальной памяти, доступных процессу).Или же это может быть предельное время центрального процессора, которое может бытьпотрачено на исполнение данного процесса. Так или иначе, при вводе программы и формированиипроцесса операционная система постарается выделить все необходимые ресурсы, которые былипредварительны декларированы.
Если в системе нет заказанного ресурса, то она, скорее всего, нестанет запускать процесс, который запросил этот ресурс.Вторая модель — это динамическое дополнение списка ресурсов. Данная модельпредполагает выделение процессу ресурса уже во время выполнения этого процесса.
Это означает,что в системе происходит запуск процесса с выделением ему минимально необходимой областивиртуальной памяти, а затем, когда процесс обращается к системе за выделением дополнительнойобласти, то ОС обрабатывает эти запросы соответствующим образом. Отметим также, что напрактике также применяются и смешанные подходы, но во многих системах, с которыми мысталкиваемся в нашей повседневной жизни, ориентация сделана на динамическую модельвыделения ресурсов.Многие операционные системы разрабатывались и разрабатываются таким образом, чтобыобладать следующими важными свойствами: надежность, защита, эффективность ипредсказуемость.Надежность означает, что система должна быть надежной как программный комплекс, т.е.число программных ошибок в системе должно быть сведено к минимуму и должно бытьсоизмеримо с количеством возможных аппаратных сбоев.Защита информации на сегодняшний день является одним из основных требований,предъявляемых к системе.
ОС должна обеспечивать защиту информации и ресурсов отнесанкционированного доступа.Свойство эффективности означает, что функционирование системы должно удовлетворятьнекоторым требованиям, критериям эффективности, которые, по сути, являются оценкойсоответствия.И, наконец, это предсказуемость системы, являющееся также одним из важных свойствОС, поскольку большинство систем, которые, так или иначе, являются массовораспространенными, при возникновении разного рода форс-мажорных обстоятельств должнывести себя строго определенным способом. Это свойство должно очерчивать круг всевозможныхпроблем, которые могут возникнуть в той или иной ситуации, а также подразумеватьустойчивость системы к возникновению подобных обстоятельств.791.3.1Структура ОССуществует множество взглядов, касающихся структуры операционной системы, и в этомразделе речь пойдет о некоторых из них.Простейшая структурная организация основана на представлении операционной системы ввиде композиции следующих компонентов (1.3.1).Интерфейсы системных вызовов(API — Application Program Interface)Динамически подгружаемые драйверыфизических и виртуальных устройствЯдро ОСАппаратураРис.
64.Структурная организация ОС.Ядро (kernel) ОС — это часть ОС, в которой реализована функциональность ОС; ядроработает в режиме супервизора, т.е. в привилегированном режиме, и резидентно (постоянно)размещается в оперативной памяти. Итак, по определению ядро обеспечивает реализациюнекоторого набора функций операционной системы.
Это может быть очень большой наборфункций, а может маленький — все зависит от конкретной реализации системы. Ядро можетвключать в свой состав драйверы основных физических или виртуальных устройств.Над уровнем ядра может надстраиваться следующий уровень — это уровень динамическиподгружаемых драйверов физических и виртуальных устройств. Под динамическиподгружаемыми понимается то, что в зависимости от ситуации состав этих драйверов приинсталляции и загрузке системы может меняться. Соответственно, эти драйверы можно поделитьна две категории: резидентные драйверы и нерезидентные. Резидентные драйверыподгружаются в систему в процессе ее загрузки и находятся в ней до завершения ее работы.Примером резидентного драйвера может быть драйвер физического диска.Отметим, что большинство современных операционных систем имеют в своем составенабор драйверов широкого спектра конкретных физических устройств и, в частности, физическихдисков.
Поэтому зачастую при смене устройства драйвер менять не надо: он уже есть в системе.Но при этом системе незачем держать драйвера всех устройств в оперативной памяти.Соответственно, следуя той или иной стратегии, будут загружаться драйверы тех физическихустройств, которые реально будут обслуживаться системой. Стратегии могут быть различными,одной из них: может быть явное указание системе списка драйверов, которые необходимоподгрузить (в этом случае, если в списке что-то будет указано неправильно, то соответствующееустройство, возможно, просто не будет работать).
Вторая стратегия предполагает, что система призагрузке самостоятельно сканирует подключенное к ней оборудование и выбирает те драйверы,которые должны быть подгружены для обслуживания найденного оборудования.Итак, примером резидентного драйвера может служить драйвер физического диска. Этообъясняется тем, что диск является устройством оперативного доступа, поэтому к моменту полнойзагрузки системы все должно быть готово для работы. А, например, в системах, где пользователиредко используют сканер, держать соответствующий драйвер резидентно не имеет смысла,поскольку скорость работы самого устройства много медленнее, чем скорость загрузки драйвераиз внешней памяти в оперативную.
Соответственно, драйвер сканера в этом случае служит однимиз примеров нерезидентных драйверов, т.е. тех драйверов, которые могут находиться в ОЗУ, амогут быть и отключенными, но они также динамически подгружаемые.80В общем случае драйверы могут работать как в привилегированном режиме, так и впользовательском.И, наконец, некоторой логической вершиной рассматриваемой структуры ОС будутявляться интерфейсы системных вызовов (API — Application Program Interface). Подсистемным вызовом будем понимать средство обращения процесса к ядру операционнойсистемы за выполнением той или иной функции (возможности, услуги, сервиса). Примерамисистемных вызовов являются открытие файла, чтение/запись в него, порождение процесса и т.д.Отличие обращения к системному вызову от обращения к библиотеке программ заключается втом, что библиотечная программа присоединяется к исполняемому коду процесса, поэтомувычисление библиотечных функций будет происходить в рамках процесса.
Обращение ксистемному вызову — это вызов тех команд, которые инициируют обращение к системе. Как ужеотмечалось выше, инициацией обращения к операционной системе может служить либопрерывание, либо исполнение специальной команды. Следует понимать различие междусистемным вызовом и библиотечной функцией. Например, осуществляя работу с файлом, имеетсявозможность работы с ним посредством обращения к системным вызовам либо посредствомиспользования библиотеки ввода-вывода. В последнем случае в тело процесса включаютсядополнительные функции из данной библиотеки, а уже внутри данных функций происходитобращение к необходимым системным вызовам.Итак, существует несколько подходов к структурной организации операционных систем.Один из них можно назвать классическим: он использовался в первых операционных системах ииспользуется до сих пор — это подход, основанный на использовании монолитного ядра.
В этомслучае ядро ОС представляет собою единую монолитную программу, в которой отсутствует явнаяструктуризация, хотя, конечно, в ней есть логическая структуризация. Это означает, чтомонолитное ядро содержит фиксированное число реализованных в нем функций, поэтомумодификация функционального набора достаточно затруднительна. Устройство монолитного ядранапоминает физическую организацию первых компьютеров: в них также нельзя было выделитьотдельные физические функциональные блоки — все было единым, монолитным иинтегрированным друг с другом. Аналогичными свойствами обладают одноплатные компьютеры,у которых все необходимые компоненты (ЦПУ, ОЗУ и пр.) расположены на одной плате, и чтобычто-то изменить в этой конфигурации, требуются соответствующие инженерные знания.На 1.3.1 проиллюстрирована структурная организация классической системы Unix.
Вданном случае ядро имеет фиксированный интерфейс системных вызовов. В нем реализованоуправление процессами, а также драйвер файловой системы, реализована вся логика системы поорганизации работы с устройствами, которые можно разделить на байт-ориентированные и блокориентированные, и пр.81УровеньпользователяПрограммы пользователяБиблиотекиИнтерфейс системных вызововФайловая подсистемаВзаимодействие междупроцессамиБуферПланировщикБайтБлокориентированные ориентированныеустройстваустройстваУправление памятьюДрайверы устройствУровень аппаратного обеспеченияМонолитное ядроАппаратное обеспечениеРис.