Операционные системы 2011 (1114689), страница 26
Текст из файла (страница 26)
При этом, для различных операционных систем наборы базовыхсущностей зачастую различаются: одни основаны на понятии устройства, другие — напонятии файла, третьи — на понятии набора данных. Но в большинстве случаев в составбазовых включается сущность, обозначающая исполняемую программу, задачу, заданиеили процесс. Эта сущность определяет некоторый процесс исполненияпоследовательности команд, причем здесь может участвовать единственная ветвь88вычислений, а может сразу и несколько параллельных ветвей. Из множества трактовокэтой сущности мы выберем понимание ее именно как процесса.Процесс — это совокупность машинных команд и данных, обрабатывающаяся врамках вычислительной системы и обладающая правами на владение некоторым наборомресурсов ВС.Разберемся в этом определении.
Понятие совокупности машинных команд иданных обозначает то, что принято называть исполняемой программой (т.е. это код иоперанды, используемые в этом коде). Далее, под термином обработки в рамках ВСбудем понимать, что эта программа сформирована и находится в системе в режимеобработки (это может быть и ожидание, и исполнение на процессоре, и т.п.). И, третье,понятие обладания правами на владение некоторым набором ресурсов обозначает, посути, возможность доступа. Отметим, что здесь речь не идет об эксклюзивных правах,поскольку в общем случае это было бы некорректно. Итак, иными словами, процессможно определить как исполняемую программу, которая введена в систему для ееобработки и с которой ассоциированы некоторые ресурсы вычислительной системы.Ресурсы, выделяемые процессам, могут быть двух типов.
Первая категорияресурсов состоит из тех ресурсов, которые выделяются процессу на эксклюзивныхправах. Это означает, что этот ресурс, пока процесс им владеет, принадлежит ему итолько ему, и никакой иной процесс не имеет право работать с данным ресурсом. Втораякатегория — это те ресурсы, которые одновременно могут принадлежать двум и болеепроцессам, – такие ресурсы принято называть разделяемыми ресурсами. Здесь сделаемнебольшое пояснение: то, что разделяемый ресурс может одновременно принадлежатьнескольким процессам, не означает, что к нему возможен одновременный доступ.Обозначенная проблема решается на другом уровне посредством использования разныхсхем синхронизации доступа к разделяемому ресурсу, и об этом речь пойдет несколькопозже.С точки зрения выделения ресурса процессу используются две стратегииорганизации этого выделения.
Первый способ — это предварительная декларацияресурсов. В этом случае до ввода программы в систему и формирования для нее процессадекларируется перечень тех ресурсов, которыми процесс будет обладать. Например, этоможет быть перечень областей оперативной памяти, которые будут доступны данномупроцессу (если система поддерживает механизм виртуальной памяти, то это будетперечень областей виртуальной памяти, доступных процессу). Или же это может бытьпредельное время центрального процессора, которое может быть потрачено наисполнение данного процесса. Так или иначе, при вводе программы и формированиипроцесса операционная система постарается выделить все необходимые ресурсы, которыебыли предварительно декларированы. Если в системе нет заказанного ресурса, то она,скорее всего, не станет запускать процесс, который запросил этот ресурс.Вторая модель — это динамическое пополнение списка ресурсов.
Данная модельпредполагает выделение процессу ресурса уже во время выполнения этого процесса. Этоозначает, что в системе происходит запуск процесса с выделением ему минимальнонеобходимой области виртуальной памяти, а затем, когда процесс обращается к системе завыделением дополнительной области, то ОС обрабатывает эти запросы соответствующимобразом. Отметим также, что на практике также применяются и комбинированныеподходы, но во многих системах, с которыми мы сталкиваемся в нашей повседневнойжизни, ориентация сделана на динамическую модель выделения ресурсов.Многие операционные системы разрабатывались и разрабатываются такимобразом, чтобы обладать следующими важными свойствами: надежность, защита,эффективность и предсказуемость.Надежность означает, что система должна быть надежной как программныйкомплекс, т.е.
число программных ошибок в системе должно быть сведено к минимуму идолжно быть соизмеримо с количеством возможных аппаратных сбоев.89Защита информации на сегодняшний день является одним из основныхтребований, предъявляемых к системе. ОС должна обеспечивать защиту информации иресурсов от несанкционированного доступа. Эта проблема на сегодняшний день остаётсяоткрытой.Свойство эффективности означает, что функционирование системы должноудовлетворять некоторым требованиям – критериям эффективности, которые, по сути,являются оценкой соответствия.И, наконец, это предсказуемость системы, являющаяся также одним из важныхсвойств ОС, поскольку большинство систем, которые, так или иначе, являются массовораспространенными, при возникновении разного рода форс-мажорных обстоятельствдолжны вести себя строго определенным способом.
Это свойство должно очерчивать кругвсевозможных проблем, которые могут возникнуть в той или иной ситуации,предопределять последствия этих проблем, а также подразумевать устойчивость системык возникновению сбоев (как аппаратных, так и программных).1.3.1 Структура ОССуществует множество взглядов, касающихся структуры операционной системы, ив этом разделе речь пойдет о некоторых из них.Простейшая структурная организация основана на представлении операционнойсистемы в виде композиции следующих компонентов (Рис. 72).Интерфейсы системных вызовов(API — Application Program Interface)Динамически подгружаемые драйверыфизических и виртуальных устройствЯдро ОСАппаратураРис. 72.
Структурная организация ОС.Ядро (kernel) ОС — это резидентная (постоянно размещаемая в ОП) часть ОС,реализующая некоторую базовую функциональность ОС и работающая в режимесупервизора (т.е. в привилегированном режиме). Итак, по определению ядро обеспечиваетреализацию некоторого набора функций операционной системы. Это может быть оченьбольшой набор функций, а может быть маленький — все зависит от конкретнойреализации системы. Ядро может включать в свой состав драйверы основных физическихили виртуальных устройств.Над уровнем ядра может надстраиваться следующий уровень — это уровеньдинамически подгружаемых драйверов физических и виртуальных устройств.
Поддинамически подгружаемыми понимается то, что в зависимости от ситуации составэтих драйверов при инсталляции и загрузке системы может меняться. Соответственно, этидрайверы можно поделить на две категории: резидентные драйверы и нерезидентные.Резидентные драйверы подгружаются в систему в процессе ее загрузки и находятся в нейдо завершения ее работы. Примером резидентного драйвера может быть драйверфизического диска. Нерезидентные драйверы вызываются операционной системой насеанс работы с соответствующими устройствами (например, драйвер флэш-памяти).Отметим, что большинство современных операционных систем имеют в своемсоставе набор драйверов широкого спектра конкретных физических устройств и, в90частности, физических дисков. Поэтому зачастую при смене устройства драйвер менятьне надо: он уже есть в системе.
Но при этом системе незачем держать драйвера всехустройств в оперативной памяти. Соответственно, следуя той или иной стратегии, будутзагружаться драйверы тех физических устройств, которые реально будут обслуживатьсясистемой. Стратегии могут быть различными, одной из них: может быть явное указаниесистеме списка драйверов, которые необходимо подгрузить (в этом случае, если в спискечто-то будет указано неправильно, то соответствующее устройство, возможно, просто небудет работать). Вторая стратегия предполагает, что система при загрузке самостоятельносканирует подключенное к ней оборудование и выбирает те драйверы, которые должныбыть подгружены для обслуживания найденного оборудования.Итак, примером резидентного драйвера может служить драйвер физического диска.Это объясняется тем, что диск является устройством оперативного доступа, поэтому кмоменту полной загрузки системы все должно быть готово для работы.