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

Общая структура программного обеспечения вычислительной системы

Оценка 4.9
pdf
26.09.2022
Общая структура программного обеспечения вычислительной системы
Лекция 1.pdf

Общая структура программного обеспечения вычислительной системы

 

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

 

             ОС          –          это         упорядоченная

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

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

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

-          прием и исполнение запросов на запуск, приостановку, остановку программ;

-          загрузка в ОЗУ исполняемых программ;

-          передача управления программе (инициализация);

-          идентификация всех программ и данных;

-          обеспечение работы систем управления файлами и иных систем управления низкого уровня, например СУБД; - обеспечение мультипрограммного режима;

-          обеспечение функций по организации и управлению всеми операциями ввода-вывода;

-          функционирование в режиме реального времени;

-          распределение памяти и организация виртуальной памяти;

-          планирование и диспетчеризация задач в соответствии со стратегией и дисциплинами обслуживания;

-          организация механизмов обмена сообщениями и данными между программами;

-          защита данных программы от воздействия других программ; - наличие сервисных возможностей для восстановления в случае сбоя;

-          обеспечение работ систем программирования.

 

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

 

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

 

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

 

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

 

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

 

История развития ОС и системного ПО тесно связана с историей развития вычислительной техники в целом. Первый циф- ровой компьютер был изобретен Чарльзом Беббиджем в конце XIX века. Это была чисто механическая машина. В то же вре- мя он ясно сознавал, что для аналитической машины требуется программное обеспечение, для чего нанял Аду Лавлейс (Ada Lovelace), дочь знаменитого Байрона. Она стала первым в мире программистом, а язык Ада назван в ее честь. Традиционно историю развития ВТ разделяют на 4 периода.

 

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

 

2.1955-нач. 60. В конце 50-х – начале 60-х появились компьютеры на транзисторах. Программы набивались уже на перфо- картах, для ввода данных в компьютер использовалась промежуточная запись на магнитофонную ленту. Программы обраба- тывались в пакетном режиме. Появились языки программирования (Ассемблер, Фортран). ОС в этот период разрабатыва- лись для ускорения и модификации кода перехода с задачи на задачу. Компьютеры использовались главным образом для научных и технических вычислений. Считается, что первую ОС для IBM 701 в начале 50-х создали в лаборатории GM. Сле- дующая ОС была разработана в 1955 для IBM 704. В первых ОС появилась концепция имѐн системных файлов как средств достижения независимости программ от аппаратуры. Типичными операционными системами были FSM (Fortran Monitor System) и IBSYS (создана IBM). К концу 50-х годов ОС обладали следующими характеристиками:

1.  Пакетная обработка одного пакета задач.

2.  Наличие стандартных подпрограмм ввода-вывода.

3.  Возможность перехода от программы к программе.

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

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

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

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

3. Развитие параллелизма в архитектуре, т.е. прямой доступ к памяти и каналы ввода-вывода. ОС этого периода отвечают за :

-  организацию интерфейса между прикладной программой и ОС при помощи системных вызовов:

-  Организацию очереди заданий и планирование использования процессора:

-  сохранение контекста при переключении заданий

-  реализация стратегии управления памятью

-  поддержка межпрограммных средств коммуникации - средства синхронизации программ.

В конце 60х начале 70х годов у производителей существовали две совершенно независимые линейки компьютеров: большие компьютеры с пословной обработкой текста для научных и технических вычислений, и коммерческие компьютеры с посим- вольной обработкой для банков и страховых компаний для сортировки и печати данных. Ниша между этими линиями была весьма существенной. IBM заполняет ее, выпустив серию машин на ИС IBM/360. Модели в серии различались только ценой и производительностью, являясь совместимыми по структуре и набору команд, и использовали ОС OS/360. Идею совмести- мости быстро приняли и другие производители. OS/360 на 2-3 порядка превышала по объемам FSM, была написана на ас- семблере, имела большое количество ошибок. Важным достижением этой системы явилась многозадачность. Стала обеспе- чиваться подкачка, т.е. дозагрузка новых задач по мере выполнения предыдущих. Был разработан режим разделения време- ни, когда у каждого пользователя имелся свой терминал, а машина обслуживала запросы поочередно. Первая серьезная по- добного рода система была разработана в Массачусетском технологическом институте – CTSS (Compatible Tme Sharing System – совместимая система разделения времени). Большое внимание стало уделяться разработке систем программирова- ния. Существовала проблема совместимости отдельных машин, для решения которой стали разрабатываться эмуляторы и имитаторы.

 

К этому времени относится и разработка “компьютерного предприятия общественного пользования” – машины, поддержи- вающей одновременно сотни пользователей в режиме разделения времени. Система была названа MULTICS (MULTiplex Information and Computing Service - мультиплексная информационная и вычислительная служба). Система была написана на языке PL/1, компилятор же этого языка появился только через несколько лет. Проект с трудом был завершен, но в итоге сис- тема была установлена примерно в 80 крупных компаниях и университетах мира. Некоторые их них прекратили использо- вать ее только через 30 лет, в конце 90х годов.

 

В этот же период с появлением PDP-1 растет рынок мини-компьютеров. Память PDP-1 составляла всего 4К 18-битовых слов при цене 120 тыс. $ за штуку, однако это составляло порядка 5% от цены IBM7094, хотя на некоторых задачах их производи- тельность была практически равной. Кульминацией их стало появление PDP-11. Впоследствии Кен Томпсон, работавший над проектом MULTICS, нашел PDP-7 и написал усеченную однопользовательскую версию MULTICS. К нему присоединил- ся Деннис Ритчи, система получила название UNIX и была перенесена на PDP-11/20 и ряд других, более совершенных ма- шин. Чтобы не переписывать исходный код каждый раз заново, Томпсон решил переписать его на языке высокого уровня, разработал его, назвал язык В. Попытка оказалась неудачной. Тогда Ритчи разработал следующий язык, назвав его С, и на- писал к нему хороший компилятор. Вскоре UNIX была переписана на С, разработчики опубликовали статью, получив за нее престижную премию Тьюринга, что принесло UNIX известность. Благодаря широкому распространению в университетских кругах PDP-11 и слабой ОС на них, UNIX быстро приобрела популярность. Для переноса на другие платформы Стивом Джонсоном был написан переносимый компилятор С, позволяющий настраивать его на создание объектного кода для прак- тически любой машины. Вскоре появилась первая переносимая версия UNIX. В конце концов появилось два ведущих клона UNIX – System V и BSD. Для того, чтобы ПО могло функционировать в любой версии UNIX, IEEE разработал стандарт POSIX, определяющий минимальный интерфейс системного вызова.

 

4. 1980 и далее. Появление БИС дало новый толчок к развитию. В 1974 году Intel выпускает Intel 8080. Для его тестирования была необходима ОС. Гари Килдэлл сконструировал контроллер гибкого диска, подключив его к процессору. Так появился первый микрокомпьютер с диском. Для него была написана система CP/M (Control Programm for Microcomputers). В течении 5 лет CP/M занимала на рынке доминирующее положение. В начале 80х IBM разработала первый персональный компьютер и стала искать для него ОС. Контактируя с Биллом Гейтсом для получения лицензии на его интерпретатор языка BASIC, они поинтересовались и по поводу ОС. Он рекомендовал Килдэлла. Однако тот отказался от личной встречи, более того, его ад- вокат отказался подписывать соглашение о неразглашении по поводу еще не выпущенного персонального компьютера. В итоге IBM вновь обратилась к Гейтсу. Он нашел у местного производителя компьютеров подходящую ОС (DOS) и выкупил ее. После ряда доработок совместно с Тимом Патерсоном, разработчиком системы, она была переименована в MS-DOS (Microsoft Disc Operation System), и заняла доминирующее положение на рынке ОС для ПК. Важную роль сыграла ориента- ция Гейтса на продажу системы не конечным пользователям, а, в отличие от Килдэлла, производителям ПК для оснащения ею их машин.

 

Еще в 60е годы Даг Энгельбарт изобрел графический интерфейс пользователя (GUI). Стив Джобс однажды увидел его в Xerox PERC, и приступил к созданию Apple с графическим интерфейсом. Со второй попытки затея удалась, и ПК приобрел дружественный пользователю интерфейс. Microsoft переняла идею и на основе GUI создала надстройку над MS-DOS (Windows 3.11). В 1995 году вышла первая независимая ОС Windows 95 от Microsoft. На настоящий момент UNIX токже обзавелась графическим интерфейсом X Windows. С середины 80х годов с ростом сетей ПК, стали развиваться сетевые и рас- пределенные ОС. Сетевые ОС мало отличаются от однопроцессорных систем, нуждаясь, по большому счету в сетевом ин- терфейсе, что не изменяет структуру ОС. Распределенная ОС только представляется пользователю традиционной системой, она на деле состоит из множества процессоров, при распределение задач осуществляется средствами самой ОС, освобождая от этого пользователя. Задержки при передаче данных в сетях означают, что распределенная ОС должна уметь работать с неполной, устаревшей или даже неверной информацией, что в корне отличается от однопроцессорных ОС, где система имеет полную информацию относительно состояния системы.

 

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

 

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

 

По возможности расширения свойств: эластичный и жесткий. Характеризует ресурс с точки зрения возможности построения на его основе некоторого виртуального ресурса. Физический ресурс, который допускает "виртуализацию", т.е. воспроизве- дение и (или) расширение своих свойств, называют эластичным. Жестким называется физический ресурс, который по сво- им внутренним свойствам не допускает виртуализацию.

 

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

 

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

 

По степени важности: главный и второстепенный. Ресурс является главным по отношению к конкретному процессу, если без его выделения процесс принципиально не может развиваться. К таким ресурсам относятся прежде всего ЦП и ОП. Ре- сурсы, которые допускают некоторую альтернативу развития процесса, если они не будут выделены, называются второсте- пенными. (Например МЛ, МД).

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

Понятие операционной системы

Операционная система. Классификация ОС. ОС реального времени. Микроядерные и монолитные ОС. Структура ОС. Ядро, командный процессор, подсистема ввода-вывода, система управления памятью, файловая система. Принципы построения ОС. Понятие виртуальной машины. Безопасность операционных систем. Понятие системных вызовов. Системные вызовы стандарта POSIX. Интерфейс Win32 API.

 

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

 

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

 

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

 

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


 

Классификация ОС:

 

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

техники – столько и видов ОС: ОС мэйнфреймов, серверные ОС, многопроцессорные, для ПК, ОС реального времени, для переносимых компьютеров и встроенных систем, для смарт-карт.

 

Мэйнфреймы отличаются от ПК по возможностям ввода-вывода, позволяя зачастую обрабатывать терабайты данных. ОС мэйнфреймов ориентированы на обработку множества одновременных заданий с большим количеством операций вводавывода. Как правило, предлагают три вида обслуживания: пакетная обработка, обработка транзакций (групповых операций) и разделение времени. В случае пакетной обработки задачи обрабатываются без участия пользователей. Например, состав- ление разнообразных отчетов может быть выполнено в пакетном режиме. В случае обработки транзакций выполняется боль- шое число маленьких запросов, таких как бронирование билетов, операции с кредитными карточками и т.д. Запросы невели- ки, но система одновременно обрабатывает сотни и тысячи таких запросов в секунду. В режиме разделения времени система позволяет множеству удаленных пользователей одновременно выполнять задачи на одной машине. Типичным примером является многопользовательская база данных. Пример ОС для мэйнфрейма – OS/390.

 

Серверы одновременно обслуживают множество пользователей, позволяя им делить между собой программные и аппарат- ные ресурсы. Серверы предоставляют возможность работы с печатающими устройствами, файлами, Интернетом. На серве- рах хранятся Web-страницы и обрабатываются входящие запросы. UNIX, Windows 2000, Linux – примеры серверных ОС. Для работы с системами, в которых объединены несколько процессоров, требуются специальные ОС, часто многопроцес- сорные ОС представляют собой серверные ОС со специальными возможностями связи. Основная задача ОС для ПК – пре- доставление удобного интерфейса пользователю. Эти ОС используются для доступа к Интернету, работы с текстом, элек- тронными таблицами и т.д. Все клоны ОС Windows, Linux.

 

ОС реального времени используются, когда процессы, которыми управляет машина, например, сборочной линией на про- изводстве, должны удовлетворять жестким временным требованиям. Если действия должны происходить строго в указан- ный диапазон времени – это жесткая СРВ, если же время от времени возможны пропуски сроков выполнения операции, на- пример, цифровое аудио и мультимедийные системы, то это гибкая СРВ. Примерами СРВ являются VxWorks и QNX. Для карманных компьютеров, а также встроенных систем, управляющих широким спектром бытовых и прочих устройств (телевизоры, микроволновые печи, мобильные телефоны) используются встроенные ОС. Они могут обладать характеристи- ками ОС реального времени, но имеют меньший размер, память, ограниченную мощность. Примерами являются PalmOS и Windows CE. Смарт-карта – устройство размером с кредитную карту, содержащее центральный процессор. Часто ОС для смарт-карт являются патентованными системами. Часть смарт-карт являются Java-ориентированными, у них ПЗУ содержит интерпретатор виртуальной Java-машины (JVM). Некоторые из смарт-карт позволяют управлять несколькими апплетами одновременно, что приводит к многозадачности и необходимости планирования, требуется управление ресурсами и защи- той. Все эти задачи выполняет, как правило, примитивная ОС, находящаяся на смарт-карте.

 

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

 

Многоуровневые системы имеют организацию в виде иерархии уровней. Первой подобной системой была система THE, созданная Дейкстрой в 1968 году. Она содержала 6 уровней. 0 – распределение процессора и многозадачность, 1 – управле- ние памятью, 2 – связь оператор-процесс, 3 – управление ВВ, 4 – программы пользователя, 5 – оператор. Уровень 0 занимался распределением времени процессора, переключая процессы при возникновении прерывания или срабатывании таймера. Выше этого уровня система состояла из последовательных процессов, каждый из которых можно было программировать не беспокоясь о том, что на одном процессоре запущено несколько процессов. Т.е. уровень 0 обеспечивал базовую многозадач ность процессора. Уровень 1 управлял памятью. Он выделял процессам память в ОЗУ и на магнитном барабане, если ОЗУ не хватало. По мере необходимости страницы с барабана попадали в ОЗУ. Выше этого уровня процессам не было необходимости заботиться о том, где они находятся – в ОЗУ или на барабане. Уровень 2 управлял связью между консолью оператора и процессами. Все процессы выше этого уровня имели свою собственную консоль оператора. Уровень 3 управлял устройствами ВВ и буферизацией данных. Любой процесс выше 3 уровня работал уже не с конкретными устройствами ВВ, а с абстрактными УВВ с удобными для пользователя характеристиками. Дальнейшее обобщение концепции многоуровневых систем было сделано в системе MULTICS. Уровни представляли серию концентрических колец, внутренние кольца являлись более привилегированными, чем внешние. Если внешнее кольцо хотело вызвать процедуру из кольца внутреннего, выполнялся эквивалент системного вызова с тщательной проверкой параметров и возможности доступа. Многоуровневые системы про- сты в реализации. При разработке каждого из уровней нет необходимости знать устройство более низкого уровня, достаточ- но знать, как к обратиться к функциям этого уровня. Упрощается тестирование. Поскольку отладка идет снизу вверх по- слойно, то можно быть уверенным, что возникшая ошибка находится именно в тестируемом слое. Упрощается модификация систем. При необходимости достаточно изменить функциональность одного из уровней, не меняя остальных. Недостаток подобных систем в том, что запрос от пользователя вынужден проходить все слои поочередно, аналогично и результат за- проса передается от уровня к уровню. Кроме того весьма непросто разделить систему на нужное количество уровней, опре- делить их иерархию и разграничить возможности каждого слоя.

 

Виртуальные машины развились на основе проработки двух принципов: 1. система с разделением времени обеспечивает многозадачность, 2. расширенную машину с более удобным интерфейсом, чем предоставляемый непосредственно оборудо- ванием. Первая ОС такого рода VM/370. Монитор виртуальной машины работает с оборудованием и обеспечивает многоза- дачность, предоставляя верхнему слою не одну, а несколько виртуальных машин. В отличие от других ОС, эти ВМ не являются расширенными, а представляют собой точную копию аппаратуры, включая режимы ядра и пользователя, ВВ, прерыва- ния и т.д. В итоге на каждой из таких ВМ может быть запущена любая ОС. Когда программа выполняет системный вызов, он прерывает ОС на виртуальной машине, а не на VM/370. В случае ВМ многозадачность реализуется на уровне ядра, и она отделена от ОС пользователя. Недостаток в том, что снижается эффективность, кроме того, подобные системы очень гро- моздки. Однако имеется возможность использования на одной машине программ, написанных для разных ОС. Сейчас ВМ используются несколько в ином контексте. Например, для организации нескольких операционных сред. Примером этого является VDM-машина (Virtual DOS machine) – защищенная подсистема, предоставляющая полную среду MS-DOS и кон- соль для выполнения ее приложений. Одновременно может выполняться практически произвольное число VDM-сессий. Од- нако здесь пользователю предоставляется виртуальный процессор 8086, не обладающий функциональностью реальной сис- темы на уровне Pentium. Понятие виртуальной машины используется и при построении Java-апплетов. Компилятор Java строит код для JVM. Этот код может быть выполнен на любой платформе, для которой существует интерпретатор JVM.

 

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

 

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

 

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

 

Большинство структур имеют как достоинства, так и недостатки. Как правило, современные ОС комбинируют несколько подходов. Например, ядро Linux является монолитным с элементами микроядерной архитектуры. При компиляции ядра можно разрешить динамическую загрузку/выгрузку многих модулей ядра. Монолитное ядро с микроядерными элементами имеет и Windows NT. Компоненты системы располагаются в вытесняемой памяти и взаимодействуют путем передачи сообщений, что характерно для микроядерных ОС, однако они работают в едином адресном пространстве и используют общие структуры данных, что является признаком монолитных ОС.

 

Еще один пример смешанной архитектуры – возможность запуска ОС с монолитным ядром под управлением микроядра. Например, 4.4BSD и MkLinux, основанные на микроядре Mach. Микроядро обеспечивает управление виртуальной памятью и работу низкоуровневых драйверов, а все остальные функции обеспечиваются монолитным ядром.

 

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

 

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

 

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

 

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

 

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

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

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

 

Наиболее известна Оранжевая книга безопасности (стандарт Министерства обороны США). Все системы делятся на 4 уров- ня безопасности: A, B, C, D. Уровень С делится на классы С1 и С2, уровень В – на классы В1, В2, В3. А является уровнем с максимальной защитой. Большинство современных ОС отвечают требованиям уровня С2. Он обеспечивает:

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

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

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

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

На этом уровне система не защищена от ошибок пользователя, но его действия легко отслеживаются по журналу. Системы уровня В распределяют пользователей по категориям, присваивая определенный рейтинг защиты, и предоставляя доступ к данным только в соответствии с этим рейтингом. Уровень А требует выполнения формального, математически обоснованно- го доказательства соответствия системы определенным критериям безопасности. На уровне А управляющие безопасностью механизмы занимают до 90% процессорного времени. Сейчас используется и новый стандарт Common Criteria, а набор кри- териев Controlled Access Protection Profile примерно соответствует классу С2.

 

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

 

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

 

Интерфейс прикладного программирования (API - Application Program Interface) является более широким понятием, чем системные вызовы. Он представляет собой средства для использования прикладными программами системных ресурсов ОС и реализуемых ею функций. Соответственно, API может реализовываться на уровне ОС, представляя собой системные вызо- вы, на уровне систем программирования, как правило в виде библиотеки RTL. Кроме того, API могут реализовываться в ви- де внешних библиотек, например, MFC, VCL.

 

Платформенно независимый системный интерфейс для компьютерных сред, описываемый стандартом POSIX (Portable Op- erating System Interface for Computer Environments) – определяет минимальный набор системных вызовов для открытых ОС, базируясь на UNIX системах. Как правило, каждая UNIX система имеет и дополнительные, присущие только ей вызовы. POSIX описывает более 100 вызовов.

 

В отличие от UNIX, в Windows системные вызовы и запускающиеся для их выполнения библиотечные вызовы полностью разделены. Для вызова служб ОС используется набор процедур Win32 API. Количество вызовов в WinAPI составляет не- сколько тысяч, причем многие из них целиком работают в пространстве пользователя, а не ядра. Далее, в UNIX графический интерфейс пользователя GUI запускается в пространстве пользователя, тогда как WinAPI имеет огромное количество проце- дур для работы с графической оболочкой – управление окнами, меню, шрифтами и т.д. В большинстве версий Windows гра фическая система запускается в режиме ядра, и в этом случае соответствующие вызовы являются системными, в противном случае только библиотечными. В Win32API не существует понятия связанных файлов, монтирования файловой системы, сигналов. WinAPI для Windows систем на основе ядра NT 5.x (Windows 2000, Windows XP, Windows Server 2003) поддерживает вызовы POSIX, определенные стандартом POSIX.1, и имеет возможность монтирования файловой системы.

 

Основные системные вызовы:

POSIX

           назначение                                                                                        Win32 API

fork

           создать дочерний процесс, идентичный родительскому       CreateProcess (fork+execve)

waitpid

           ожидать завершение дочернего процесса                                 WaitForSingleObject

execve

           переместить образ памяти процесса                                           -

exit

           завершить выполнение процесса                                                ExitProcess

open

           открыть файл                                                                                     CreateFile

close

           закрыть файл                                                                                     CloseHandle

read

           чтение данных из файла в буфер                                                 ReadFile

write

           записьданных из буфера в файл                                                   WriteFile

lseek

           переместить указатель файла                                                       SetFilePointer

stat

           информация о состоянии файла                                                   GetFileAttributesEx

mkdir

            создать каталог                                                                                 CreateDirectory

rmdir

           удалить каталог                                                                                RemoveDirectory

link

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

unlink

           удалить элемент каталога                                                              DeleteFile

mount

           монтирование файловой системы                                               -

umount

           демонтирование файловой системы                                          -

chdir

           изменить рабочий каталог                                                            SetCurrentDirectory

chmod

           изменить биты защиты файла                                                      -

kill

           послать сигнал процессу                                                               -

time

           получить системное время                                                            GetLocalTime


 

Общая структура программного обеспечения вычислительной системы

Общая структура программного обеспечения вычислительной системы

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

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

Первая серьезная по- добного рода система была разработана в

Первая серьезная по- добного рода система была разработана в

Как модель виртуальный ресурс реализуется в некоторой программно-аппаратной форме

Как модель виртуальный ресурс реализуется в некоторой программно-аппаратной форме

В отно- шении процесса производителя и процесса-потребителя потребляемые ресурсы ведут себя как временные

В отно- шении процесса производителя и процесса-потребителя потребляемые ресурсы ведут себя как временные

Повторно используемые модули могут быть непривилегированными, привилегированными, реенте- рабельными и повторно входимыми

Повторно используемые модули могут быть непривилегированными, привилегированными, реенте- рабельными и повторно входимыми

Классификация ОС: ОС классифицируются по назначению, по режиму обработки задач, по способу взаимодействия с сис- темой, по способу по- строения

Классификация ОС: ОС классифицируются по назначению, по режиму обработки задач, по способу взаимодействия с сис- темой, по способу по- строения

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

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

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

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

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

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

На каждом уровне ничего не известно о внутреннем строении других уровней

На каждом уровне ничего не известно о внутреннем строении других уровней

Наиболее известна Оранжевая книга безопасности (стандарт

Наиболее известна Оранжевая книга безопасности (стандарт

Основные системные вызовы:

Основные системные вызовы:

Общая структура программного обеспечения вычислительной системы

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