Обычный состав и принципы построения операционных систем. Архитектура операционных систем Основные принципы построения операционных систем Основные принципы построения операционных систем Принцип модульности Принцип. Основные принципы построения ОС: прин

Частотный принцип. Основан на выделении в алгоритмах программ, а в обрабатываемых массивах действий и данных по частоте использования. Действия и данные, которые часто используются, располагаются в операционной памяти, для обес­печения наиболее быстрого доступа. Основным средством такого доступа является организация многоуровневого планиро­вания. На уровень долгосрочного планирования выносятся редкие и длинные операции управления деятельностью системы. К краткосрочному планированию подвергаются часто используемые и короткие операции. Система инициирует или преры­вает исполнение программ, предоставляет или забирает динамически требуемые ресурсы, и прежде всего центральный про­цессор и память.

Принцип модульности . Модуль - это функционально законченный элемент системы, выполненный в соответствии с приня­тыми межмодульными интерфейсами. Модуль по определению предполагает возможность замены его на любой другой при наличии соответствующих интерфейсов. Чаще всего при построении ОС разделение на модули происходит по функциональ­ному признаку. Важное значение при построении ОС имеют привилегированные, повторно входимые и реентерабельные модули. Привилегированные модули функционируют в привилегированном режиме, при котором отключается система пре­рываний, и никакие внешние события не могут нарушить последовательность вычислений. Реентерабельные модули допус­кают повторное многократное прерывание исполнения и повторный запуск из других задач. Для этого обеспечивается сохра­нение промежуточных вычислений и возврат к ним с прерванной точки. Повторно входимые модули допускают многократ­ное параллельное использование, однако не допускают прерываний. Они состоят из привилегированных блоков и повторное обращение к ним возможно после завершения какого-либо из этих блоков. Принцип модульности отражает технологические и эксплуатационные свойства системы. Максимальный эффект от использования достигается, если принцип распространяет­ся и на ОС, и на прикладные программы, и на аппаратуру.

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

Принцип генерируемости ОС. Этот принцип определяет такой способ организации архитектуры ядра ОС, который позво­лял бы настраивать его, исходя из конкретной конфигурации вычислительного комплекса и круга решаемых задач. Эта про­цедура выполняется редко, перед достаточно протяженным периодом эксплуатации ОС. Процесс генерации осуществляется с помощью специальной программы-генератора и соответствующего входного языка. В результате генерации получается пол­ная версия ОС, представляющая собой совокупность системных наборов модулей и данных. Принцип модульности сущест­венно упрощает генерацию. Наиболее ярко этот принцип используется в ОС Linux, которая позволяет не только генерировать ядро ОС, но указывать состав подгружаемых, т.н. транзитных модулей. В остальных ОС конфигурирование выполняется в процессе инсталляции.

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

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

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

Принцип виртуализации. Принцип позволяет представить структуру системы в виде определенного набора планировщиков процессов и распределителей ресурсов (мониторов), используя единую централизованную схему. Концепция виртуальности выражается в понятии виртуальной машины. Любая ОС фактически скрывает от пользователя реальные аппаратные и иные ресурсы, заменяя их некоторой абстракцией. В результате пользователи видят и используют виртуальную машину как доста­точно абстрактное устройство, способное воспринимать их программы, выполнять их и выдавать результат. Пользователю совершенно не интересна реальная конфигурация вычислительной системы и способы эффективного использования ее ком­понентов. Он работает в терминах используемого им языка и представленных ему виртуальной машиной ресурсов. Для не­скольких параллельных процессов создается иллюзия одновременного использования того, что одновременно в реальной системе существовать не может. Виртуальная машина может воспроизводить и реальную архитектуру, однако элементы ар­хитектуры выступают с новыми, либо улучшенными, характеристиками, зачастую упрощающими работу с системой. Иде­альная, с точки зрения пользователя, машина должна иметь:

Единообразную по логике работы виртуальную память практически неограниченного объема;

Произвольное количество виртуальных процессоров, способных функционировать параллельно и взаимодейство­вать во время работы;

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

Чем больше виртуальная машина, реализуемая ОС, приближена к идеальной, т.е. чем больше ее архитектурно-логические характеристики отличны от реальных, тем большая степень виртуальности достигнута. ОС строится как иерархия вложенных друг в друга виртуальных машин. Нижним уровнем программ является аппаратные средства машин. Следующим уровнем уже является программным, который совместно с нижним уровнем обеспечивает достижение машиной новых свойств. Каж­дый новый уровень дает возможность расширять функции возможности по обработке данных и позволяет достаточно просто производить доступ к низшим уровням. Применение метода иерархического упорядочивания виртуальных машин наряду с достоинствами: систематичность проекта, возрастание надежности программных систем, уменьшение сроков разработки имеет проблемы. Основная из них: определение свойств и количества уровней виртуализации, определения правил внесения на каждый уровень необходимых частей ОС. Свойства отдельных уровней абстракции (виртуализации):

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

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

3. Каждый уровень представляет собой группу модулей, некоторые из них являются внутренними для данного и доступ­ны для других уровней. Имена остальных модулей известны на следующим, более высоком уровне, и представляют собой сопряжение с этим уровнем.

4. Каждый уровень располагает определенными ресурсами и либо скрывает от других уровней, либо представляет дру­гим уровням их абстракции (виртуальные ресурсы).

5. Каждый уровень может обеспечивать некоторую абстракцию данных в системе.

6. Предположения, что на каждом уровне делается относительно других уровней, должны быть минимальными.

7. Связь между уровнями ограничена явными аргументами, передаваемыми с одного уровня на другой.

8. Недопустимо совместное использование несколькими уровнями глобальных данных.

9. Каждый уровень должен иметь более прочное и слабое сцепление с другими уровнями.

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

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

Принцип совместимости. Этот принцип определяет возможность выполнения ПО, написанного для другой ОС или для бо­лее ранних версий данной ОС. Различают совместимость на уровне исполняемых файлов и на уровне исходных текстов про­грамм. В первом случае готовую программу можно запустить на другой ОС. Для этого требуется совместимость на уровне команд микропроцессора, на уровне системных и библиотечных вызовов. Как правило, используются специально разрабо­танные эмуляторы, позволяющие декодировать машинный код и заменить его эквивалентной последовательностью команд в терминах другого процессора. Совместимость на уровне исходных текстов требует наличия соответствующего транслятора и также совместимости на уровне системных вызовов и библиотек.

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

Принцип мобильности (переносимости). Подразумевает возможность перенесения ОС с аппаратной платформы одного типа на платформу другого типа. При разработке переносимой ОС следуют следующим правилам: большая часть ОС пишет­ся на языке, который имеет трансляторы на всех платформах, предназначенных для использования. Это язык высокого уров­ня, как правило, С. Программа на ассемблере в общем случае не является переносимой. Далее, минимизируют или исключа­ют те фрагменты кода, которые непосредственно взаимодействуют с аппаратными ресурсами. Аппаратно-зависимый кол изолируется в нескольких хорошо локализуемых модулях.

Принцип безопасности. Подразумевает защиту ресурсов одного пользователя от другого, а также предотвращения захвата всех системных ресурсов одним пользователем, включая и защиту от несанкционированного доступа. Согласно стандарту NCSC (National Computer Security Center) 1985 года, т.н. Оранжевой книге, системы подразделяются на 7 категорий: D, С1, С2, В1, В2, ВЗ, А1, где А является классом с максимальной защитой. Большинство современных ОС отвечают требованиям уровня С2. Он обеспечивает:

Средства секретного входа, позволяющие идентифицировать пользователя путем ввода уникального имени и пароля при входе в систему;

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

Средства учета и наблюдения (аудита), обеспечивающие возможность обнаружения и фиксации событий, связан­ных с безопасностью системы и доступом к системным ресурсам;

Защита памяти, подразумевающая инициализацию перед повторным использованием.

На этом уровне система не защищена от ошибок пользователя, но его действия легко отслеживаются по журналу. Системы уровня В распределяют пользователей по категориям, присваивая определенный рейтинг защиты, и предоставляя доступ к данным только в соответствии с этим рейтингом. Уровень А требует выполнения формального, математически обоснованно­го доказательства соответствия системы определенным критериям безопасности. На уровне А управляющие безопасностью механизмы занимают до 90% процессорного времени. В ОС реализуется несколько подходов для обеспечения защиты. Од­ним из них является двухконтекстность работы процессора, т.е. в каждый момент времени процессор может выполнить либо программу из состава ОС, либо прикладную или служебную программу, не входящую в состав ОС. Для того, чтобы гаранти­ровать невозможность непосредственного доступа к любому разделяемому ресурсу со стороны пользовательских и служеб­ных программ, в состав машинных команд вводятся специальные привилегированные команды, управляющие распределени­ем и использованием ресурсов. Эти команды разрешается выполнять только ОС. Контроль за их выполнением производится аппаратно. При попытке выполнить такую команду возникает прерывание, и процессор переводится в привилегированный режим. Для реализации принципа защиты используется механизм защиты данных и текста программ, находящихся в ОЗУ. Самым распространенным подходом при этом является контекстная защита. Для программ и пользователей выделяется оп­ределенный участок памяти, и выход за его пределы приводит к прерыванию по защите. Механизм контроля реализуется аппаратным способом на основе ограниченных регистров или ключей памяти. Применяются различные способы защиты хранения данных в файлах. Самый простой способ защиты - парольный.

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

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

    Утилиты: классификация, описание.

Утилита (англ. utility или tool) - вспомогательная компьютерная программа в составе общего программного обеспечения для выполнения специализированных типовых задач, связанных с работой оборудования и операционной системы (ОС) . Утилиты предоставляют доступ к возможностям (параметрам, настройкам, установкам) , недоступным без их применения, либо делают процесс изменения некоторых параметров проще (автоматизируют его) . На практике различные образцы утилит используются для очистки места на диске, защиты данных и обеспечения конфиденциальности, оптимизации производительности системы, настройки диспетчера загрузки, восстановления повреждённых данных и др. Классификация утилит по связи с ОС: - независимые утилиты (не требующие наличия установленной ОС для своей работе) - системные утилиты (входят в состав ОС или требуют её наличия)

Пример классификации утилит по функциям: - Диспетчеры файлов; - Архиваторы (с возможным сжатием данных) ; - Просмотрщики; - Утилиты для диагностики аппаратного или программного обеспечения; - Утилиты восстановления после сбоев; - Оптимизатор диска - вид утилиты для оптимизации размещения файлов на дисковом накопителе, - --например, путём дефрагментации диска; - Деинсталляторы; - Утилиты управления процессами.

    Основные функции ОС

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

Функции операционных систем

Основные функции (простейшие операционные системы):

    Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода).

    Управление оперативной памятью (распределение между процессами, организация виртуальная память).

    Управление доступом к данным на энергонезависимых носителях (таких как жёсткий диск,компакт-диски т. д.), организованным в той или инойфайловой системе.

    Пользовательский интерфейс.

    Сетевые операции, поддержка стека протоколов.

    Системы программирования: понятие, состав.

Системы программирования системные программы, предназначенные для разработки программного обеспечения:

Ассемблеры - компьютерные программы, осуществляющие преобразование программы в форме исходного текста на языке ассемблера в машинные команды в виде объектного кода;

    трансляторы - программы или технические средства, выполняющее трансляцию программы;

    • компиляторы - Программы, переводящие текст программы на языке высокого уровня, в эквивалентную программу на машинном языке.

      интерпретаторы - Программы (иногда аппаратные средства), анализирующие команды или операторы программы и тут же выполняющие их;

    компоновщики (редакторы связей) - программы, которые производят компоновку - принимают на вход один или несколько объектных модулей и собирают по ним исполнимый модуль;

    препроцессоры исходных текстов - это компьютерные программы, принимающие данные на входе, и выдающие данные, предназначенные для входа другой программы, например, такой, как компилятор;

    отла́дчики (англ. debugger) - модули среды разработки или отдельные программы, предназначенные для поиска ошибок в программах;

    текстовые редакторы - компьютерные программы, предназначенные для создания и изменения текстовых файлов, а также их просмотра на экране, вывода на печать, поиска фрагментов текста и т. п.;

    • специализированные редакторы исходных текстов - текстовые редакторы для создания и редактирования исходного кода программ. Специализированный редактор исходных текстов может быть отдельным приложением, или быть встроен в интегрированную среду разработки;

    библиотеки подпрограмм - сборники подпрограмм или объектов, используемых для разработки программного обеспечения;

    редакторы графического интерфейса.

    Процесс. Диаграмма состояний процесса.

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

§ ожидание или блокирование – пассивное состояние, в котором поток заблокирован по своим внутренним причинам (ждет выполнения какого-либо события, например, завершения операции ввода-вывода или предоставления необходимого ресурса);

§ готовность – тоже пассивное состояние, в котором поток заблокирован по внешним причинам – процессор занят другой задачей.

Из состояния в состояние процесс переводится операционной системой в результате выполнения над ним операций. Операционная система может выполнять над процессами следующие операции: создание процесса, завершение процесса, приостановка процесса, запуск процесса, блокирование процесса, разблокирование процесса, изменение приоритета процесса.

    Потоки(треды):описание, свойства, связь с процессами.

Для организации мультизадачности были введены так называемые легковесные процессы – потоки или треды.

У каждого процесса имеется свое адресное пространство и выделенные ресурсы. Такая обособленность нужна для того, чтобы защитить один процесс от другого. поскольку они совместно используют все ресурсы вычислительной системы, конкурируют друг с другом. В общем случае процессы никак не связаны между собой и могут принадлежать даже различным пользователям. ОС считает процессы несвязанными и независимыми при этом ОС берет на себя роль арбитра в конкуренции по поводу ресурсов.

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

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

Каждый поток выполняется строго последовательно и имеет свой собственный программный счетчик и стек.

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

    Понятие ресурса. Основные виды и типы ресурсов выч.с-мы.

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

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

1) Процессорное время

2) Память. Оперативная память может быть разделена одновременным способом, в этом сл-е в памяти может располагаться одновременно несколько процессов, либо целиком, либо текущие фрагменты; и попеременно – в разные моменты времени она может предоставляться для различных вычислительн

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

3) Программные модули. Системные программные ресурсы. Могут быть разделены между выполняющимися процессами. Программные модули могут быть

однократно исполняемыми (исполняются правильно только один раз, и являются

неделимыми ресурсами, более того их вообще можно не рассматривать как ресурс

системы. Такие модули используются, как правило, при загрузке системы.) и многократно исполняемыми. Многократно исполняемые программные модули могут

быть непривилегированные, привилегированные и реентерабельные. Привилегированные модули – работают при откл.системе прерываний. Никакие внешние события не могут нарушать естественный порядок вычисления. Непривилегированный – обычный модуль который может быть прерван во время работы. Реентерабельные модули – предусматривают повторное прерывание и запуск сохр.промежуточные вычисления и возвр-ся. 4) инф.ресурсы

    Системный программный модуль: описание, классификация. Программные модули. Системные программные ресурсы. Могут быть разделены между выполняющимися процессами. Программные модули могут быть однократно исполняемыми (исполняются правильно только один раз, и являются неделимыми ресурсами, более того их вообще можно не рассматривать как ресурс системы. Такие модули используются, как правило, при загрузке системы.) и многократно исполняемыми. Многократно исполняемые программные модули могут быть непривилегированные, привилегированные и реентерабельные.

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

Структура модуля:

Непривилегированные модули – обычные программные модули. которые могут быть

прерваны во время своей работы. Следовательно их нельзя в общем случае

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

Реентерабельные программные модули (reenter able) допускают повторное многократное прерывание своего исполнения и повторный их запуск при обращении из других задач. Для чего такие программные модули должны быть созданы таким образом, чтобы было обеспечено сохранение промежуточных вычислений для прерываемых вычислений и возврат к ним, когда вычислительный

процесс возвращается к прерванной ранее точке.

    Классификация ОС. Примеры

1)По назначению. Прежде всего ОС разделяют

на системы общего и специального назначения. ОС специального назначения в свою очередь разделяют на ОС для переносных микрокомпьютеров (карманные PC) и различных встроенных систем.

2)По режиму обработки задач. Различают ОС обеспечивающие однопрограммный и мультипрограммный режимы. Мультизадачный режим наоборот предполагает, что забота о параллельном выполнении и взаимодействии приложений ложится на прикладных программистов. Современные ОС для персональных компьютеров реализуют как мультипрограммный, так и мультизадачный режимы.

При организации работы с вычислительной системой в диалоговом режиме можно говорить об однопользовательских (однотерминальных и мультитерминальных ОС) в мультитерминальных ОС могут работать одновременно несколько пользователей, каждый со своего терминала. Для организации мультитерминального доступа к вычислит. системе необходимо обеспечить мультипрограммный режим работы. Примером мультитерминальной ОС явл. Linux.

3) По способу взаимодействия с системой. Основной особенностью ОС реального времени является обеспечение обработки поступающих заданий в течение заданных интервалов времени, которые нельзя превышать. Мультипрограммирование является основным средством повышения производительности системы. Лучшие характеристики по производительности обеспечиваются для систем реального времени однотерминальными ОС реального времени. Средства организации мультипрограммного режима всегда замедляют работу системы в целом, но расширяют функциональные возможности системы. Одной из таких систем является QNX.

4) По способу построения. По своему архитектурному принципу ОС разделяются на микроядерные и монолитные, примером микроядерной является ОС QNX, примером монолитной – Windows 9.XX,200.

    Основные принципы построения ОС: принцип модульности, принцип функциональной избирательности.

Принцип модульности

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

Принцип функциональной избирательности

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

    Основные принципы построения ОС: принцип генерируемости, принцип функциональной избыточности.

Принцип генерируемости ос

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

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

Принцип функциональной избыточности

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

    Основные принципы построения ОС: принцип вирт

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

Наиболее естественным и законченным проявлением концепции виртуальности является понятие виртуальной машины. Виртуальная машина, предоставляемая пользователю, воспроизводит архитектуру реальной машины, но архитектурные элементы в таком представлении выступают с новыми или улучшенными характеристиками, как правило, упрощающими работу с системой. Характеристики могут быть произвольными, но чаще всего пользователи желают иметь собственную «идеальную» по архитектурным характерис-тикам машину в следующем составе:

Единообразная по логике работы виртуальная память практически неограниченного объема.

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

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

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

    Основные принципы построения ОС: принцип независимости программ от внешних устройств, принцип совместимости.

Принцип независимости программ от внешних устройств.

Принцип позволяет одинаково осуществлять операции управления внешними устройствами независимо от их конкретных физических характеристик.

Принцип совместимости

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

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

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

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

    Основные принципы построения ОС: принцип открытой и наращиваемой ОС, принцип мобильности.

Принцип открытости и наращиваемости

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

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

Принцип мобильности операционная система относительно легко должна переноситься с процессора одного типа на процессор другого типа и с аппаратной платформы одного типа, которая включает наряду с типом процессора и способ организации всей аппаратуры компьютера (архитектуру вычислительной системы), на аппаратную платформу другого типа. Заметим, что принцип переносимости очень близок принципу совместимости, хотя это и не одно и то же. Создание переносимой ОС, аналогично написанию любого переносимого кода, при этом нужно следовать некоторым правилам:

Большая часть ОС должна быть выполнена на языке, имеющемся на всех системах, на которые планируется в дальнейшем ее переносить. - важно минимизировать или, если возмож-но, исключить те части кода, которые непосредственно взаимодействуют с аппаратными средствами

    Основные принципы построения ОС: принцип обеспечения безопасности вычислений

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

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

Во многих современных инф.сис-х гарантируется степень безопасности данных соотв.уровню С2

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

Основными свойствами, характерными для класса С, являются наличие подсистемы учёта событий, связанных с безопасностью, и избирательный контроль доступа. Класс С делится на 2 подуровня: С1 – обеспечивает защиту данных от ошибок пользователей, но не от действий злоумышленников, на более строгом уровне С2 должны присутствовать:

    Средства секретного входа, обеспечивающие идентификацию пользователей путем ввода уникального имени и пароля перед тем, как им будет разрешён доступ к системе;

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

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

    Защита памяти заключается в том, что память перед её повторным использованием должна инициализироваться.

    Реестр Windows. Ветви системного реестра

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

    – HKEY_CURRENT_CONFIG (HKCC) – в разделе находится вся информация об аппаратном профиле, который используется на локальной машине во время запуска системы;

    – HKEY_CURRENT_USER (HKCU) – в разделе хранится информация о конкретном пользователе, который вошел в систему и работает в ней в настоящий момент времени. В этой ветви сохраняются его папки, настройки экрана, установленные параметры для панели управления;

    – HKEY_CLASSES_ROOT (HKCR) – в разделе содержатся данные о расширениях типов файлов и приложениях, которые при их запуске будут открываться;

    – HKEY_USERS (HKU) – в этой ветви хранится информация обо всех загруженных активных профилях пользователей конкретного ПК;

    – HKEY_LOCAL_MACHINE (HKLM) – ветвь для хранения сведений о загрузке ОС Windows, информации о драйверах устройств и аппаратном обеспечении компьютера;

    – HKEY_USERS (HKU) – ветвь хранит индивидуальные настройки профиля каждого пользователя, который зарегистрирован в системе. Здесь же хранится информация о профиле «по умолчанию» для создаваемых новых пользователей.

    Командная строкаWindows: понятие, сценарии, функционал.

Командная строка - это отдельный программный продукт, который обеспечивает прямую связь между пользователем и операционной системой.

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

Среду командной оболочки Windows запускают разными способами, в частности указывая параметры при запуске Cmd.exe или используя собственный стартовый файл, хранящийся в каталоге %SystemRoot%\System32. Кроме того, командная строка может работать в пакетном режиме для выполнения набора команд. В пакетном режиме командная строка считывает и выполняет команды одну за другой. Работая с командной строкой Windows, вы должны понимать, откуда берутся используемые вами команды. «Родные» команды (встроенные в операционную систему) бывают двух видов: ■ внутренние - существуют внутри командной оболочки; у них нет отдельных исполняемых файлов; ■ внешние - реализованы в отдельных исполняемых файлах, которые обычно хранятся в каталоге %SystemRoot% \System32.

Сценарии командной строки - текстовые файлы с команда¬ми, которые вы хотите выполнить. Это те же команды, которые обычно вводятся в командной оболочке Windows. Одна¬ко, вместо того чтобы вводить команды каждый раз, когда они понадобятся, можно создать соответствующий сценарий и упростить себе жизнь. Поскольку сценарии состоят из стандартных текстовых символов, их можно создавать и редактировать в любом стандартном текстовом редакторе, скажем, в Notepad (Блокнот). Вводя команды, убедитесь, что каждая команда или группа команд, которые должны выполняться совместно, разметаются с новой строки. Это обеспечит их корректное выполнение. Закончив создание сценария командной строки, сохраните файл сценария с расширением.bat или.cmd.

В командной строке можно запускать команды разных типов: встроенные команды, утилиты Windows и версии приложений, рассчитанные на командную строку.

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

В ОС выделяется некоторая часть важных программных модулей, которые должны постоянно находиться в оперативной памяти для более эффективной организации вычислительного процесса. Эту часть в ОС называют ядром операционной системы, так как это действительно основа системы. При формировании состава ядра необходимо учитывать два противоречивых требования. Во-первых, в состав ядра должны войти наиболее часто используемые системные модули. Во-вторых, количество модулей должно быть таковым, чтобы объем памяти, занимаемый ядром, был бы не слишком большим. В состав ядра, как правило, входят модули управления системой прерываний, средства по переводу процессов из состояния выполнения в состояние ожидания, готовности и обратно, средства по распределению таких основных ресурсов, как оперативная память и процессор. Помимо программных модулей, входящих в состав ядра и постоянно располагающихся в оперативной памяти, может быть много других системных программных модулей, которые получили название транзитных. Транзитные программные модули операционной системы загружаются в оперативную память только при необходимости и в случае отсутствия свободного пространства могут быть замещены другими транзитными модулями. В качестве синонима термина «транзитный» иногда используется термин «диск-резидентный».

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

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

Принцип виртуализации позволяет представить структуру системы в виде определенного набора планировщиков процессов и распределителей ресурсов (мониторов) и использовать единую централизованную схему распределения ресурсов. Наиболее естественным и законченным проявлением концепции виртуальности является понятие виртуальной машины. По сути, любая операционная система, являясь средством распределения ресурсов и организуя по определенным правилам управление процессами, скрывает от пользователя и его приложений реальные аппаратные и иные ресурсы, заменяя их некоторой абстракцией. В результате пользователи видят и используют виртуальную машину как некое устройство, способное воспринимать их программы, написанные на определенном языке программирования, выполнять их и выдавать результаты. При таком языковом представлении пользователя совершенно не интересует реальная конфигурация вычислительного комплекса, способы эффективного использования его компонентов и подсистем. Он мыслит и работает в терминах используемого им языка и тех ресурсов, которые ему предоставляются в рамках виртуальной машины. Обычно виртуальная машина, предоставляемая пользователю, воспроизводит архитектуру реальной машины, но архитектурные элементы в таком представлении выступают с новыми или улучшенными характеристиками, часто упрощающими работу с системой. Характеристики могут быть произвольными, но чаще всего пользователи желают иметь собственную «идеальную» по архитектурным характеристикам машину в следующем составе:

  • 1. Единообразная по логике работы память (виртуальная) практически неограниченного объема. Организация работы с информацией в такой памяти производится в терминах обработки данных (в терминах работы с сегментами данных на уровне выбранного пользователем языка программирования);
  • 2. Произвольное количество процессоров (виртуальных), способных работать параллельно и взаимодействовать во время работы. Способы управления процессорами, в том числе синхронизация и информационные взаимодействия, реализованы и доступны пользователям на уровне используемого языка в терминах управления процессами;
  • 3. Произвольное количество внешних устройств (виртуальных), способных работать с памятью виртуальной машины параллельно или последовательно, асинхронно или синхронно по отношению к работе того или иного виртуального процессора, который инициирует работу этих устройств;
  • 4. Информация, передаваемая или хранимая на виртуальных устройствах, не ограничена допустимыми размерами. Доступ к такой информации осуществляется на основе либо последовательного, либо прямого способа доступа в терминах соответствующей системы управления файлами. Предусмотрено расширение информационных структур данных, хранимых на виртуальных устройствах.

Степень приближения к «идеальной» виртуальной машине может быть большей или меньшей в каждом конкретном случае. Чем больше виртуальная машина, реализуемая средствами ОС на базе конкретной аппаратуры, приближена к «идеальной», и, следовательно, чем больше ее архитектурно-логические характеристики отличны от реально существующих, тем больше степень виртуальности у полученной пользователем машины. Одним из аспектов виртуализации является организация возможности выполнения в данной ОС приложений, которые разрабатывались для других ОС. Другими словами, речь идет об организации нескольких операционных сред. Реализация этого принципа позволяет такой ОС иметь очень сильное преимущество перед аналогичными ОС, не имеющими такой возможности.

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

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

Принцип открытой и наращиваемой (модифицируемой, развиваемой) ОС позволяет не только использовать возможности генерации, но и вводить в ее состав новые модули, совершенствовать существующие и т. д. Другими словами, необходимо, чтобы можно было легко внести дополнения и изменения, если это потребуется, и не нарушить при этом целостность системы. Хорошие возможности для расширения предоставляет подход к структурированию ОС по типу клиент-сервер с использованием микроядерной технологии. В соответствии с этим подходом ОС строится как совокупность привилегированной управляющей программы и набора непривилегированных услуг - «серверов». Основная часть ОС остается неизменной, но в то же время могут быть добавлены новые серверы или улучшены старые. Этот принцип иногда трактуют как принцип расширяемости системы.

Принцип мобильности (переносимости) заключается в том, что операционная система должна относительно легко переноситься с процессора одного типа на процессор другого типа и с аппаратной платформы одного типа (которая включает наряду с типом процессора также и способ организации всей аппаратуры машины, иначе говоря, архитектуру ВМ) на аппаратную платформу другого типа. Заметим, что принцип переносимости очень близок принципу совместимости, хотя это и не одно и то же. Написание переносимой ОС аналогично написанию любого переносимого кода. При этом нужно следовать некоторым правилам. Во-первых, большая часть ОС должна быть написана на языке, который имеется на всех машинах или системах, на которые планируется в дальнейшем ее переносить. Это, прежде всего, означает, что ОС должна быть написана на языке высокого уровня, предпочтительно стандартизованном, например на языке С. Программа, написанная на ассемблере, не является в общем случае переносимой. Во-вторых, важно минимизировать или, если возможно, исключить те части кода, которые непосредственно взаимодействуют с аппаратными средствами. Зависимость от аппаратуры может иметь много форм. Некоторые очевидные формы зависимости включают прямое манипулирование регистрами и другими аппаратными средствами. Наконец, если аппаратно-зависимый код не может быть полностью исключен, то он должен быть изолирован в нескольких хорошо локализуемых модулях. Аппаратно-зависимый код не должен быть распределен по всей системе. Например, можно спрятать аппаратно-зависимую структуру в программно задаваемые данные абстрактного типа. Другие модули системы будут работать с этими данными, а не с аппаратурой, используя набор некоторых функций. Когда ОС переносится, то изменяются только эти данные и функции, которые ими манипулируют. Именно введение стандартов POSIX преследовало цель обеспечить переносимость создаваемого программного обеспечения.

Принцип обеспечения безопасности при выполнении вычислений является желательным свойством для любой многопользовательской системы. Правила безопасности определяют такие свойства, как защита ресурсов одного пользователя от других и установление квот по ресурсам для предотвращения захвата одним пользователем всех системных ресурсов. Обеспечение защиты информации от несанкци-онированного доступа является обязательной функцией операционных систем. В соответствии со стандартами Национального центра компьютерной безопасности США (NCSC - National Computer Security Center) безопасной считается система, которая «посредством специальных механизмов защиты контролирует доступ к информации таким образом, что только имеющие соответствующие полномочия лица или процессы, выполняющиеся от их имени, могут получить доступ на чтение, запись, создание или удаление информации». Иерархия уровней безопасности отмечает низший уровень безопасности как D, а высший - как А. В класс D попадают системы, оценка которых выявила их несоответствие требованиям всех других классов. Основными свойствами, характерными для систем класса (уровня) С, являются наличие подсистемы учета событий, связанных с безопасностью, и избирательный контроль доступа. На уровне С должны присутствовать:

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

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

Назначение и функции ОС.

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

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

ОС - это упорядоченная последовательность управляющих и служебных программ совместно с необходимыми информационными массивами, осуществляющая управление всеми ресурсами вычислительного комплекса для обеспечения работы вычислительной системы. Под эффективностью понимается мера соответствия вычислительной системы своему назначению. Основное назначение ОС - это управление ресурсами компьютера. ОС реализует различные функции, поэтому существуют различные классификационные схемы функций ОС. Рассмотрим одну из них рисунок 1. Разделить функции управления, контроля и планирования довольно сложно, так как они взаимосвязаны. Под этой группой функций понимается организация работы компьютера, а под функциями интерфейсом понимается организация работы пользователя.

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

· Включить в код программы коды управления устройством;

· Создание резидентных программ;

· Разработка полноценного драйвера.

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


Рисунок 1. Функции ОС

Требования, предъявляемые к ОС

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

Расширяемость

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

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

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

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

Средства вызова удаленных процедур (RPC) также дают возможность расширить функциональные возможности ОС. Новые программные процедуры могут немедленно поступить в распоряжение прикладных программ.

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

Переносимость

· Код должен легко переноситься с процессора одного типа на процессор другого типа и с аппаратной платформы (которая включает наряду с типом процессора и способ организации всей аппаратуры компьютера) одного типа на аппаратную платформу другого типа.

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

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

Во-вторых, следует учесть, в какое физическое окружение программа должна быть перенесена. Различная аппаратура требует различных решений при создании ОС. Например, ОС, построенная на 32-битовых адресах, не может быть перенесена на машину с 16-битовыми адресами (разве что с огромными трудностями).

В-третьих, важно минимизировать те части кода, которые непосредственно взаимодействуют с аппаратными средствами.

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

Для легкого переноса ОС при ее разработке должны быть соблюдены следующие требования:

· Переносимый язык высокого уровня . Большинство переносимых ОС написано на языке С. Непереносимый код должен быть тщательно изолирован внутри тех компонентов, где он используется.

· Изоляция процессора . Некоторые низкоуровневые части ОС должны иметь доступ к процессорно-зависимым структурам данных и регистрам. Однако код, который делает это, должен содержаться в небольших модулях, которые могут быть заменены аналогичными модулями для других процессоров.

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

Совместимость

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

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

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

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

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

Безопасность

· ОС должна обладать средствами защиты ресурсов одних пользователей от других.

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

Основы стандартов в области безопасности были заложены "Критериями оценки надежных компьютерных систем ". Этот документ, изданный в США в 1983 году (Оранжевая Книга).

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

Иерархия уровней безопасности, приведенная в Оранжевой Книге, помечает низший уровень безопасности как D, а высший - как А.

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

· Основными свойствами, характерными для С-систем, являются: наличие подсистемы учета событий, связанных с безопасностью, и избирательный контроль доступа. Уровень С делится на 2 подуровня: уровень С1, обеспечивающий защиту данных от ошибок пользователей, но не от действий злоумышленников, и более строгий уровень С2. На уровне С2 должны присутствовать средства секретного входа, обеспечивающие идентификацию пользователей путем ввода уникального имени и пароля перед тем, как им будет разрешен доступ к системе. Средства учета и наблюдения (auditing ) - обеспечивают возможность обнаружить и зафиксировать события, связанные с безопасностью, или любые попытки создать, получить доступ или удалить системные ресурсы. Защита памяти - заключается в том, что память инициализируется перед тем, как повторно используется. На этом уровне система не защищена от ошибок пользователя, но поведение его может быть проконтролировано по записям в журнале.

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

· Уровень А является самым высоким уровнем безопасности, он требует в дополнение ко всем требованиям уровня В выполнения формального, математически обоснованного доказательства соответствия системы требованиям безопасности.

Надежность и отказоустойчивость

· Система должна быть защищена как от внутренних, так и от внешних ошибок, сбоев и отказов. Ее действия должны быть всегда предсказуемыми, а приложения не должны быть в состоянии наносить вред ОС.

Производительность.

· Система должна обладать настолько хорошим быстродействием и временем реакции, насколько это позволяет аппаратная платформа.

Режимы обслуживания.

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


1.Режим индивидуального пользования.

Вычислительная система полностью предоставляется в распоряжение пользователя, по крайней мере, на время решения его задачи. Пользователь имеет непосредственный доступ к вычислительной системе, используя пульт управления или устройство ввода-вывода данных. После получения результатов или истечения отведенного для пользователя времени он должен зарегистрировать свой уход с машины, после чего его сменяет другой пользователь со своей программой. В каждый момент рабочего времени машина используется для решения только одной прикладной программы, отсюда и название. Режим индивидуального пользования удобен пользователю, но плохо использует оборудование вычислительной системы из-за простоев, вызванных чередованием фаз: первая фаза-работа вычислительной сети выдача результата, вторая- обдумывание пользователем результата и вод нового задания, при этом во второй фазе вычислительная система ничего не делает и процент ее использования чуть больше 50%.

2. Режим однопрограммной пакетной обработки.


Пользователь не имеет непосредственного доступа к вычислительной сети. Подготовленные заранее программы пользователь передает обслуживающему персоналу вычислительной системы. Собранные от нескольких пользователей программы накапливаются в пакет на магнитных дисках или лентах (пакет-это совокупность отдельных программ и данных, разделенных специальными метками на магнитном носителе). Затем, в соответствии с расписанием, оператор устанавливает носитель с пакетом на соответствующий накопитель, и специальная программа из состава ОС последовательно считывает программы и данные из пакета, после чего запускает их на выполнение. Результаты работы выводятся на другой накопитель, составляя очередь (пакет) выходных результатов. Управляющая программа должна фиксировать время, затраченное на выполнение каждой программы из пакета, а также реагировать на определенные ситуации по управлению пользовательскими программами. Ситуации могут быть как штатные (предусмотренные), например, останов программы в ожидании смены магнитной ленты, так и нештатные, к примеру, зацикливание некоторой программы из пакета. Таким образом, управляющая программа выполняет внутрисистемные операции управления, которые ранее (в режиме 1) выполнял пользователь. Дополнительно эта программа автоматически переключает машину на использование программ из пакета по вышеописанной схеме, при этом каждая программа, получившая доступ к процессору, обслуживается до конца. Рассматриваемая управляющая система автоматизирует операции оператора по организации работы ЭВМ при обработке на ней некоторой последовательности программ и может быть названа простейшей ОС.

Применение такого режима позволило улучшить эксплуатационных характеристики ЭВМ, прежде всего путем повышения процента использования оборудования. Однако этот режим обладает двумя существенными недостатками: значительное увеличение интервала времени между моментами передачи пользователями программ оператору на выполнение и получением результатов (чем больше пакет, тем больше интервал времени, а в среднем 2-4 часа); во время выполнения некоторой программы может потребоваться передача данных из оперативной памяти в накопитель и обратно, а процессор во время выполнения таких обменов простаивает и продолжит обработку только после завершения обмена, то есть наиболее дорогостоящее и высокоскоростное оборудование используется нерационально.

3. Режим мультипрограммной пакетной обработки.

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

Пусть в оперативную память загружены три программы А,Б и В. Временные диаграммы их выполнения в однопрограммном и мультипрограммном режимах представлены ниже.


Однопрограммный режим
Многопрограммный режим

На диаграммах интервалы времени, необходимые для ввода-вывода обозначены t BB (А), t BB (Б) и t BB (В). Время выполнения всех трех программ (А, Б и В) в пакетном однопрограммном режиме равно Т(А)+Т(Б)+Т(В), то есть программы выполняются последовательно друг за другом. Рассмотрим выполнение программ в многопрограммном режиме.

Допустим, что процессор начинает обслуживание с программы А в момент t 0 .В момент t 1 программе А требуются данные, находящиеся на одном из внешних устройств. В этот момент выполнение программы А приостанавливается и начинает выполняться операция ввода-вывода, которая будет завершена через время t BB (А) в момент t 4 .Одновременно (параллельно) с операцией ввода-вывода процессор переключается на выполнение программы Б. В момент времени t 2 программе Б потребовалось выдать промежуточные данные на одно из внешних устройств. Происходит приостановка выполнения процессором программы Б, и начинает выполняться операция ввода-вывода, которая будет завершена через время t BB (Б) в момент времени t 7 .Далее одновременно с этой операцией ввода-вывода процессор переключается на выполнение программы В. В момент времени t 3 происходит приостановка выполнения программы В, и начинает выполняться операция ввода-вывода, которая будет завершена за время t BB (Б). После завершения операции ввода-вывода для программы А в момент t 4 свободный к этому моменту процессор вновь начинает выполнять программу А до ее завершения в момент времени t 6 . .Так как операция ввода-вывода программы В завершилась ранее (в момент t 5), то процессор переключается на продолжение программы В; закончив ее выполнение (в момент t 8), процессор переходит к выполнению программы Б, операция ввода-вывода для которой закончилась в момент t 7 . Таким образом, выполнение всех трех программ закончилось в момент t 9, причем величина t 9 –t 0 значительно меньше суммы Т (А)+Т (Б)+Т (В) в однопрограммном режиме. Однако время выполнения программ Б и В увеличилось по сравнению с однопрограммным режимом на величины t 6 –t 5 иt 8 –t 7 соответственно (на схеме эти фрагменты обозначены). Эти временные задержки возникли из-за занятости процессора обслуживанием других программ при готовности программ Б и В к продолжению выполнения. При выполнении в пакетном режиме наличие этих задержек не имеет существенного значения, так как они практически не влияют на время получения пользователем результатов счета. Основным достоинством многопрограммного пакетного режима является значительное уменьшение времени простоя процессора.

Реализация рассматриваемой идеи многопрограммной обработки потребовала изменения, как аппаратных, так и программных средств:

1) реализован механизм прерывания;

2) в состав ЭВМ включены новые устройства – каналы ввода-вывода, каждый из которых управляет обменом данными между оперативной памятью и некоторым набором внешних устройств (на схеме эти устройства обозначены). Канал осуществляет все операции ввода-вывода, не используя средств процессора (на схеме:

операции ввода-вывода с использованием средств процессора,

операции через канал ввода-вывода);

3) организация функционирования ЭВМ реализуется с помощью комплекса взаимосвязанных управляющих программ, то есть ОС, ставшей неотъемлемой частью мультипроцессорных ЭВМ.

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

4. Режим коллективного пользования.

Это такая форма обслуживания, при которой возможен одновременный доступ нескольких независимых пользователей к вычислительным ресурсам мощной вычислительной системы. Каждому пользователю предоставляется терминал, с помощью которого он устанавливает связь с системой коллективного пользования. Системы коллективного пользования с однородными запросами (обработка которых занимает примерно одно и то же время) реализуют режим «запрос-ответ» (например, справочный экран на вокзале).В этом режиме ОС работает также как в мультипрограммном. Но, в отличие от пакетного режима, очередь программ, ожидающих выполнения, формируется динамически: по каждому вопросу от терминала соответствующая программа обработки этого запроса попадает в очередь, которую покидает после выполнения. Такой режим обслуживания позволил сократить время ожидания пользователя, но если некоторый пользователь вводит запрос, требующий длительной обработки, то время ожидания других пользователей может возрасти до недопустимых величин. С целью устранения этого недостатка появился режим квантования времени: режим основан на многозадачной обработке; при этом каждой готовой к выполнению программе выделяется для исполнения на процессоре фиксированный, заранее определенный интервал времени (квант). Программа, получившая квант времени, может завершить свою работу в течение этого интервала (тогда она покидает очередь), либо по истечению выделенного кванта времени программа не выполнена до конца (тогда она прерывается и перемещается в конец очереди других готовых к выполнению программ). Такое циклическое обслуживание, основанное на детерминированной схеме прерывания, гарантирует, что всем программам будет выделяться процессорное время «справедливо», то есть никто не сможет монополизировать процессор. Дальнейшее развитие ОС получили при создании многомашинных, мультипроцессорных вычислительных систем, а также локальных и глобальных вычислительных сетей.

Основные принципы построения ОС.

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

1.Частотный принцип.

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

2. Принцип модуля.

Под модулем понимается функциональный элемент системы, который: а) оформлен по определенным правилам системы (правила – язык, способ передачи параметров и т.д.); б)имеет средство сопряжения с подобными элементами этой или другой системы. По определению предполагается легкий способ его замены на другой. При построении ОС большое значение имеют параллельно используемые или reentry (реентерабельные) модули. Каждый такой модуль может параллельно (одновременно) использоваться несколькими программами при их исполнении.

Пусть некоторая программа А в процессе своего выполнения обратилась к модулю С. Во время выполнения модуля С произошло прерывание от внешнего устройства, и началась обработка этого прерывания программой В, которая имеет приоритет больше, чем у программы А и С. В ходе выполнения программа В также обратилась к модулю С. Если модуль С не реентерабельный, то такая ситуация недопустима, так как состояния внутренних рабочих переменных в модуле С соответствует выполнению обращения от программы А на момент прерывания t 1 , поэтому при повторном вхождении в незавершенный модуль С в момент t 2 текущее состояние рабочих ячеек будет потеряно. Реентерабельность, то есть обеспечение повторной входимости в модуль, достигается различными способами, в основе которых лежит отделение кода от данных, то есть внутренних переменных. При каждом обращении к модулю ему предоставляется отдельная область памяти под внутренние переменные. Разработка реентерабельных программ требует применения специальных приемов программирования.

3. Принцип функциональной избирательности (вытекает из 1-го и 2-го).

В ОС выделяется часть наиболее важных модулей, которые наиболее часто используются и являются основой системы. Эту часть системы называют ядром ОС. Программы, входящие в состав ядра, постоянно находятся в оперативной памяти, доступны для использования в любой момент и называются ОЗУ-резедентными. Остальные системные программы постоянно хранятся на магнитных дисках, называются транзитными и загружаются в оперативную память только при необходимости их выполнения, а при недостатке оперативной памяти могут перекрывать друг друга.

4. Принцип генерируемости.

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

5. Принцип функциональной избыточности.

Этот принцип обеспечивает возможность выполнения одной и той же функциональной операции различными средствами.

6. Принцип «по умолчанию».

Применяется он для упрощения процедуры генерации ОС и для работы с готовой (генерированной) ОС. Он основан на хранении в системе некоторых констант, определяющих параметры и характеристики системы. Значения этих констант используются системой как заданные, если пользователь, оператор или администратор забудут или сознательно не изменят эти значения. Использование этого принципа позволяет сократить число параметров, устанавливаемых пользователем в процессе работы системы.

7. Принцип перемещаемости.

Этот принцип предусматривает построение модулей ОС, исполнение которых не зависит от места расположения в оперативной памяти. Настройка программы модуля на конкретные места (адреса) оперативной памяти, заключающаяся в определении физических адресов, используемых в настойке адресных частей команд, проводится каждый раз при загрузке модуля.

8. Принцип защиты.

Этот принцип определяет необходимость создания средств, ограждающих программы и данные пользователей от искажения, которое может возникнуть из-за нежелательного влияния программ друг на друга, а также влияния пользователей на ОС. Защита программ должна гарантироваться как при их использовании, так и в режиме хранения.


Похожая информация.


Одним из наиболее важных принципов построения ОС является принцип модульности . Под модулемоперационной системы в общем случае понимают функционально законченный элемент системы, выполненный в соответствии с принятыми межмодульными интерфей­сами. По своему определению модуль предполагает возможность относительно легкой замены его на другой при наличии заданных интерфейсов. Способы обособления составных частей ОС в отдельные модули могут существенно различаться, но чаще всего разделение происходит именно по функциональному признаку. В зна­чительной степени разделение системы на модули определяется используемым методом проектирования ОС (снизу вверх или наоборот). Особо важное значение при построении ОС имеют реентерабельные программные модули, так как они позволяют более эффективно использовать ресурсы вычислительной системы (под реентерабельностью понимают свойство программы, позволяющее одновременно выполнять эту программу нескольким процессам). Достижение реентерабельности реализует­ся различными способами. В некоторых системах реентерабельность программы получают автоматически благодаря неизменяемости кодовых частей программ при исполнении (из-за особенностей системы команд машины), а также автома­тическому распределению регистров, автоматическому отделению кодовых час­тей программ от данных и помещению последних в системную область памяти. Естественно, что для этого необходима соответствующая аппаратная поддержка. В других случаях это достигается программистами за счет использования специ­альных системных модулей. Принцип модульности отражает технологические и эксплуатационные свойства системы. Наибольший эффект от его использования достижим в случае, когда принцип распространен одновременно на операционную систему, прикладные программы и аппаратуру.

В ОС выделяется некоторая часть важных программных модулей, которые должны постоянно находиться в оперативной памяти для более эффективной организации вычис­лительного процесса. Эту часть в ОС называют ядром операционной системы , так как это действительно основа системы. При формировании состава ядра необходимо учитывать два про­тиворечивых требования. Во-первых, в состав ядра должны войти наиболее часто исполь­зуемые системные модули. Во-вторых, количество модулей должно быть таковым, чтобы объем памяти, занимаемый ядром, был бы не слишком большим. В состав ядра, как правило, входят модули управления системой прерываний, средства по переводу процессов из состояния выполнения в состояние ожидания, готовности и об­ратно, средства по распределению таких основных ресурсов, как оперативная память и процессор. Помимо программных модулей, входящих в состав ядра и постоянно располагающихся в оперативной памяти, может быть много других системных программных модулей, которые получили название транзитных . Транзитные программные модули операционной системы загружаются в оперативную память только при необходимости и в случае отсутствия свободного пространства могут быть замещены другими транзитными модулями. В качестве синонима термина «транзитный» иногда используется термин «диск-резидентный».

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

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

Принцип виртуализации позволяет представить структуру системы в виде определенного набора планировщиков процессов и распределителей ресурсов (мониторов) и использовать единую централизован­ную схему распределения ресурсов. Наиболее естественным и законченным проявлением концепции виртуальности является понятие виртуальной машины. По сути, любая операционная система, являясь средством распределения ресурсов и организуя по определенным прави­лам управление процессами, скрывает от пользователя и его приложений реаль­ные аппаратные и иные ресурсы, заменяя их некоторой абстракцией. В результа­те пользователи видят и используют виртуальную машину как некое устройство, способное воспринимать их программы, написанные на определенном языке программирования, выполнять их и выдавать результаты. При таком языковом представлении пользователя совершенно не интересует реальная конфигурация вычислительного комплекса, способы эффективного использования его компонен­тов и подсистем. Он мыслит и работает в терминах используемого им языка и тех ресурсов, которые ему предоставляются в рамках виртуальной ма­шины. Обычно виртуальная машина, предоставляемая пользователю, воспроизводит ар­хитектуру реальной машины, но архитектурные элементы в таком представле­нии выступают с новыми или улучшенными характеристиками, часто упрощаю­щими работу с системой. Характеристики могут быть произвольными, но чаще всего пользователи желают иметь собственную «идеальную» по архитектурным характеристикам машину в следующем составе:

1.Единообразная по логике работы память (виртуальная) практически неогра­ниченного объема. Организация работы с информацией в такой памяти производится в терминах обработки данных (в терминах работы с сегментами данных на уровне выбранного пользователем языка программи­рования);

2. Произвольное количество процессоров (виртуальных), способных работать па­раллельно и взаимодействовать во время работы. Способы управления про­цессорами, в том числе синхронизация и информационные взаимодействия, реализованы и доступны пользователям на уровне используемого языка в терминах управления процессами;

3. Произвольное количество внешних устройств (виртуальных), способных ра­ботать с памятью виртуальной машины параллельно или последовательно, асинхронно или синхронно по отношению к работе того или иного виртуаль­ного процессора, который инициирует работу этих устройств;

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

Степень приближения к «идеальной» виртуальной машине может быть большей или меньшей в каждом конкретном случае. Чем больше виртуальная машина, реализуемая средствами ОС на базе конкретной аппаратуры, приближена к «иде­альной», и, следовательно, чем больше ее архитек­турно-логические характеристики отличны от реально существующих, тем боль­ше степень виртуальности у полученной пользователем машины. Одним из аспектов виртуализации является организация возможности выполне­ния в данной ОС приложений, которые разрабатывались для других ОС. Други­ми словами, речь идет об организации нескольких операционных сред. Реализация этого принципа позволяет такой ОС иметь очень сильное преимущество перед аналогичными ОС, не имеющими такой воз­можности.

Принцип независимости программ от внешних устройств реализуется сейчас в подавляющем большинстве современных ОС. Этот принцип заключается в том, что связь программ с конкретны­ми устройствами производится не на уровне трансляции программы, а в период планирования ее исполнения. В результате перекомпиляция при работе про­граммы с новым устройством, на котором располагаются данные, не требуется. Указанный принцип позволяет осуществлять операции управления внешними устройствами одинаково и независимо от их конкретных физических характеристик. Напри­мер, программе, содержащей операции обработки последовательного набора дан­ных, безразлично, на каком носителе эти данные будут располагаться. Смена носителя и данных, размещаемых на них (при неизменности структурных харак­теристик данных), не привнесет каких-либо изменений в программу, если в систе­ме реализован принцип независимости.

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

Принцип открытой и наращиваемой (модифици­руемой, развиваемой ) ОС позволяет не только использовать возможности гене­рации, но и вводить в ее состав новые модули, совершенствовать существующие и т. д. Другими словами, необходимо, чтобы можно было легко внести дополне­ния и изменения, если это потребуется, и не нарушить при этом целостность системы. Хорошие возможности для расширения предоставляет подход к структурирова­нию ОС по типу клиент-сервер с использованием микроядерной технологии (см. подраздел 5.2). В соответствии с этим подходом ОС строится как совокупность привилегиро­ванной управляющей программы и набора непривилегированных услуг – «сер­веров» . Основная часть ОС остается неизменной, но в то же время могут быть до­бавлены новые серверы или улучшены старые. Этот принцип иногда трактуют как принцип расширяемости системы .

Принцип мобильности (переносимости) заключается в том, что операционная система должна относительно легко переноситься с процессора одного типа на процессор другого типа и с аппаратной платформы одного типа (которая включает наряду с типом процессора также и способ организации всей аппаратуры машины, иначе говоря, архитектуру ВМ) на ап­паратную платформу другого типа. Заметим, что принцип переносимости очень близок принципу совместимости, хотя это и не одно и то же. Написание переносимой ОС аналогично написанию любого переносимого кода. При этом нужно следовать некоторым правилам. Во-первых, большая часть ОС должна быть написана на языке, который имеется на всех машинах или системах, на которые планируется в дальнейшем ее переносить. Это, прежде всего, означает, что ОС должна быть написана на языке высокого уровня, предпочтительно стандартизованном, на­пример на языке С. Программа, написанная на ассемблере, не является в общем случае переносимой. Во-вторых, важно минимизировать или, если возможно, исключить те части кода, которые непосредственно взаимодействуют с аппарат­ными средствами. Зависимость от аппаратуры может иметь много форм. Неко­торые очевидные формы зависимости включают прямое манипулирование реги­страми и другими аппаратными средствами. Наконец, если аппаратно-зависимый код не может быть полностью исключен, то он должен быть изолирован в не­скольких хорошо локализуемых модулях. Аппаратно-зависимый код не должен быть распределен по всей системе. Например, можно спрятать аппаратно-зависимую структуру в программно задаваемые данные абстрактного типа. Другие модули системы будут работать с этими данными, а не с аппаратурой, используя набор некоторых функций. Когда ОС переносится, то изменяются только эти данные и функции, которые ими манипулируют. Именно введение стандартов POSIX преследовало цель обеспечить переносимость соз­даваемого программного обеспечения.

Принцип обеспечения безопасности при выполнении вычислений является желательным свойством для любой многопользовательской системы. Правила безопасности определяют такие свойства, как защита ресурсов одного пользователя от других и установление квот по ресурсам для предотвращения захвата одним пользова­телем всех системных ресурсов. Обеспечение защиты информации от несанкци-онированного доступа является обязательной функцией операционных систем. В соответствии со стандартами Национального центра компьютерной безопасности США (NCSC – National Computer Security Center) безопасной считается систе­ма, которая «посредством специальных механизмов защиты контролирует доступ к информации таким образом, что только имеющие соответствующие полно­мочия лица или процессы, выполняющиеся от их имени, могут получить доступ на чтение, запись, создание или удаление информации». Иерархия уровней безопасности отмечает низ­ший уровень безопасности как D , а высший – как А . В класс D попадают системы, оценка которых выявила их несоответствие требо­ваниям всех других классов. Основными свойствами, характерными для систем класса (уровня) С , являются наличие подсистемы учета событий, связанных с безопасностью, и избирательный кон­троль доступа. На уровне С должны присутствовать:

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

б) избирательный контроль доступа, позволяющий владельцу ресурса опреде­лить, кто имеет доступ к ресурсу и что он может с ним делать (владелец осуществляет это путем предоставляемых прав доступа пользователю или группе пользо­вателей);

в) средства учета и наблюдения, обеспечивающие возможность обна­ружить и зафиксировать важные события, связанные с безопас-ностью, или любые попытки получить доступ или удалить системные ресурсы;

г) защита памяти, заключающаяся в том, что память инициализи-руется перед тем, как повторно используется.

На этом уровне система не защищена от ошибок пользователя, но поведение его может быть проконтролировано по записям в журнале, составленным средствами наблюдения и аудита. Системы уровня В основаны на помеченных данных и распределении пользо­вателей по категориям, то есть реализуют мандатный контроль доступа. Каждо­му пользователю присваивается рейтинг защиты, и он может получать доступ к данным только в соответствии с этим рейтингом. Этот уровень в отличие от уровня С защищает систему от ошибочного поведения пользователя. Уровень А является самым высоким уровнем безопасности и в допол­нение ко всем требованиям уровня В требует выполнения формального, математически обоснованного доказательства соответствия системы требованиям безопасности.