1.
Введение в операционные системы

Успешно изучив материал, Вы будете знать:

После изучения данной темы Вы будете уметь:

После изучения материала Вы будете обладать навыками:

Основные понятия к теме 1

Операционная система (ОС)

Однозадачные ОС

Многозадачные ОС

Однопользовательские ОС

Многопользовательские ОС

Невытесняющая многозадачность

Вытесняющая многозадачность

Однонитевая ОС

Многонитевая ОС

Многопроцессорная обработка

Асимметричные ОС

Симметричные ОС

Интерфейс

1.1.
Основные понятия

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

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

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

1.2.
Задачи и функции ОС

Задачи:

Функции:

1.3.
Виды операционных систем

Наиболее распространенными из классификаций операционных систем являются следующие две — по функциональным возможностям и по областям применения.

По функциональным возможностям выделяют:

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

1.4.
Свойства операционных систем

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

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

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

1.5.
Цели разработки и проблемы проектирования операционных систем

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

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

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

Для универсальных операционных систем характерны следующие четыре цели:

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

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

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

1.6.
Требования к операционным системам

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Переносимый язык высокого уровня. Большинство переносимых ОС написано на языке С (стандарт ANSI X3.159-1989). Разработчики выбирают С потому, что он стандартизован, и потому, что С-компиляторы широко доступны. Ассемблер используется только для тех частей системы, которые должны непосредственно взаимодействовать с аппаратурой (например, обработчик прерываний), или для частей, которые требуют максимальной скорости (например, целочисленная арифметика повышенной точности). Однако непереносимый код должен быть тщательно изолирован внутри тех компонентов, где он используется.

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

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

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

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

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

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

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

Гораздо сложнее достичь двоичной совместимости между процессорами, основанными на разных архитектурах. Для того чтобы один компьютер выполнял программы другого (например, DOS-программу на Mac), этот компьютер должен работать с машинными командами, которые ему изначально непонятны. Например, процессор типа 680x0 на Mac должен исполнять двоичный код, предназначенный для процессора 80x86 в PC. Процессор 80x86 имеет свои собственные дешифратор команд, регистры и внутреннюю архитектуру. Процессор 680x0 не понимает двоичный код 80x86, поэтому он должен выбрать каждую команду, декодировать ее, чтобы определить, для чего она предназначена, а затем выполнить эквивалентную подпрограмму, написанную для 680x0. Так как к тому же у 680x0 нет в точности таких же регистров, флагов и внутреннего арифметико-логического устройства, как в 80x86, он должен имитировать все эти элементы с использованием своих регистров или памяти. И он должен тщательно воспроизводить результаты каждой команды, что требует специально написанных подпрограмм для 680x0, гарантирующих, что состояние эмулируемых регистров и флагов после выполнения каждой команды будет в точности таким же, как и на реальном 80x86.

Это простая, но очень медленная работа, так как микрокод внутри процессора 80x86 исполняется на значительно более быстродействующем уровне, чем эмулирующие его внешние команды 680x0. За время выполнения одной команды 80x86 на 680x0 реальный 80x86 может выполнить десятки команд. Следовательно, если процессор, производящий эмуляцию, не настолько быстр, чтобы компенсировать все потери при эмуляции, то программы, исполняющиеся под эмуляцией, будут очень медленными.

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

Соответствие стандартам POSIX также является средством обеспечения совместимости программных и пользовательских интерфейсов. Во второй половине 80-х правительственные агентства США начали разрабатывать POSIX как стандарты на поставляемое оборудование при заключении правительственных контрактов в компьютерной области. POSIX — это «интерфейс переносимой ОС, базирующейся на UNIX». POSIX — собрание международных стандартов интерфейсов ОС в стиле UNIX. Использование стандарта POSIX (IEEE стандарт 1003.1—1988) позволяет создавать программы в стиле UNIX, которые могут легко переноситься из одной системы в другую.

Безопасность. В дополнение к стандарту POSIX правительство США также определило требования компьютерной безопасности для приложений, используемых правительством. Многие из этих требований являются желаемыми свойствами для любой многопользовательской системы. Правила безопасности определяют такие свойства, как защита ресурсов одного пользователя от других и установление квот по ресурсам для предотвращения захвата одним пользователем всех системных ресурсов (таких, как память).

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

Основы стандартов в области безопасности были заложены «Критериями оценки надежных компьютерных систем». Этот документ, изданный в США в 1983 г. Национальным центром компьютерной безопасности (NCSC — National Computer Security Center), часто называют Оранжевой книгой.

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

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

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

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

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

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

1.7.
Разработка интерфейса

Интерфейс — это в общем случае набор правил, согласно которым взаимодействуют два объекта и более.

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

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

При проектировании пользовательского интерфейса необходимо следовать выбранной парадигме.

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

В графических интерфейсах используется парадигма WIMP — Window, Image, Menu, Pointer, или Окно, Образ, Меню, Курсор. Согласно этой парадигме, пользователь работает с окнами, в каждом из которых отображается некоторый образ. Каждое окно снабжено меню, содержащим набор допустимых действий, а взаимодействие осуществляется при помощи курсора. Другим распространенным видом интерфейса является интерфейс командной строки.

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

Как правило, каждая операционная система содержит несколько операционных сред.

1.8.
Проектирование операционной системы

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

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

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

Основные выводы

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

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

  3. Управление ресурсами включает решение двух общих, не зависящих от типа ресурса задач:

    • планирование ресурса;

    • отслеживание состояния ресурса.

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

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

  6. На свойства и возможности операционной системы непосредственное влияние оказывают аппаратные средства, на которые она ориентирована.

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

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

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

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

  11. Уровни безопасности в стандарте выделены по степени защищенности системы от различных ошибок, как умышленных, так и спонтанных.

  12. При проектировании необходимо придерживаться выбранной парадигмы операционной системы. В зависимости от выбранной парадигмы может меняться подход к проектированию системы.

  13. Наиболее распространенной парадигмой пользовательского интерфейса является модель WIMP.

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

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

Контрольные вопросы

  1. Сформулируйте основное назначение операционной системы.

  2. По каким критериям можно классифицировать операционные системы?

  3. Какими свойствами обладают операционные системы?

  4. На какие свойства операционной системы влияют особенности аппаратной платформы?

  5. Перечислите цели проектирования операционных систем.

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

  7. Перечислите требования к операционным системам.

  8. Сколько уровней в стандарте безопасности операционных систем?

  9. В чем принципиальное отличие уровня безопасности А от прочих уровней?

  10. Дайте определение понятия «интерфейс».

  11. Какие принципы необходимо соблюдать при разработке интерфейсов?

  12. В чем принципиальное отличие событийной парадигмы исполнения от алгоритмической?

Задания для самостоятельной работы

Выполните задания к теме 1 и пройдите тест в тетради-практикуме.