УЗБЕКСКОЕ АГЕНСТВО СВЯЗИ И ИНФОРМАТИЗАЦИИ

 

ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

 

ФАКУЛЬТЕТ "ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ"

 

 

 

 

 

КОНСПЕКТ ЛЕКЦИЙ ПО КУРСУ

 

"Операционные системы и офисные приложения " для студентов направления В-5521900

 

 

 

 

 

 

 

 

 

 

Бабамухамедова М.З.

   Кафедра «ПОИТ»

 

 

 

 

 

 

 

 

 

 

 

ТАШКЕНТ-2008 г. 


 

Содержание

 

1

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

3

2

Определение операционной системы

 

16

3

Основы операционных систем

21

4

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

29

5

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

36

6

Понятие ресурса в ОС

43

7

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

49

8

Организация памяти компьютера.

61

9

Понятие файловой системы в ОС

75

10

Сетевые операционные системы

84

11

Операционная система Windows NT и
сравнительная характеристика других сетевых ОС

95

12

Краткий обзор современных операционных систем

106

13

Операционная система Linux

114

14

Сетевая операционная система

реального времени QNX

 

118

15

Операционные

Системы Windows 9.Х.

 

123

16

Основные понятия информационной безопасности.

132

 

 

 

Лекция 1

План:

1.     Состав вычислительной системы

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

3.     Системное программное обеспечение

4.     Классификация других программных обеспечений

 

 

 

 

 

 

 

 

Введение

 

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

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

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

 

 

 

 

1. Состав вычислительных систем

 

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

 

1.1. Аппаратное обеспечение

 

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

По способу расположения устройств относительно центрального процессорного устройства (ЦПУ – Central Processing Unit, CPU) различают внутренние и внешние устройства. Внешними, как правило, являются большинство устройств ввода-вывода данных (их также называют периферийными устройствами) и некоторые устройства, предназначенные для длительного хранения данных.

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

 

1.2. Программное обеспечение

 

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

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 


Базовый уровень. Самый низкий уровень программного обеспечения представляет базовое программное обеспечение. Оно отвечает за взаимодействие с базовыми аппаратными средствами. Как правило, базовые программные средства непосредственно входят в состав базового оборудования и хранятся в специальных микросхемах, называемых постоянными запоминающими устройствами (ПЗУ – Read Only Memory, ROM). Программы и данные записываются («прошиваются») в микросхемы ПЗУ на этапе производства и не могут быть изменены в процессе эксплуатации.

В тех случаях, когда изменение базовых программных средств во время эксплуатации является технически целесообразным, вместо микросхем ПЗУ применяют перепрограм-мируемые постоянные запоминающие устройства (ППЗУ – Erasable and Programmable Read Only Memory, EPROM). В этом случае изменение содержание ПЗУ можно выполнять как непосредственно в составе вычислительной системы (такая технология называется флеш-технологией), так и вне ее, на специальных устройствах, называемых программаторами.

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

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

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

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

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

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

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

 

1.3. Классификация прикладных программного обеспечения

 

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

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

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

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

Графические редакторы. Это обширный класс программ, предназначенных для создания и (или) обработки графических изображений. В данном классе различают следующие категории: растровые редакторы, векторные редакторы и программные средства для создания и обработки трехмерной графики (3D-редакторы).

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

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

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

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

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

·       Создание пустой (незаполненной) структуры базы данных;

·       Представление средств ее заполнения или импорта данных из таблиц другой базы;

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

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

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

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

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

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

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

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

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

Редакторы HTML (Web-редакторы). Это особый класс редакторов, объединяющих в себе свойства текстовых и графических редакторов. Они предназначены для создания и редактирования так называемых Web-документов (Web-страниц Интернета). Web-документы – это электронные документы, при подготовке которых следует учитывать ряд особенностей, связанных с приемом/передачей информации в Интернете.

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

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

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

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

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

Геоинформационные системы (ГИС). Предназначены для автоматизации картографических работ на основе информации, полученные топографическими или аэрокосмическими методами. 

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

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

 

1.4. Классификация системного программного обеспечения.

 

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

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

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

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

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

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

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

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

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

 

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

1.     В чем видите связь между программным обеспечением и аппаратным

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

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

4.     К какому классу относятся  операционные системы

 

 

 

 

Лекция 2

Определение операционной системы

План:

1.     Функции ОС. ОС как расширенная машина и как система управления ресурсами.

 

ОС как расширенная машина

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

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

 

ОС как система управления ресурсами

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

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

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

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

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

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

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

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

·        Загрузка в оперативную память подлежащих исполнению программ.

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

·        Запуск программы (передача ей управления, в результате чего процессор ис­полняет программу).

·        Идентификация всех программ и данных.

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

·        Обслуживание всех операций ввода-вывода.

·        Обеспечение работы систем управлений файлами (СУФ) и/или систем управ­ления базами данных (СУБД), что позволяет резко увеличить эффективность всего программного обеспечения.

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

·        Планирование и диспетчеризация задач в соответствии с заданными стратеги­ей и дисциплинами обслуживания.

·        Организация механизмов обмена сообщениями и данными между выполняю­щимися программами.

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

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

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

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

·        Обеспечение работы систем программирования, с помощью которых пользова­тели готовят свои программы.

·        Предоставление услуг на случай частичного сбоя системы.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Рис. 2.1. Взаимодействие пользователя и его программ с компьютером

через операционную систему

 

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

1.     Объясните суть абстрактной машины.

2.     Какие задачи решает ОС при управлении ресурсами.

 

 

 

 

Лекция 3. Основные функции операционных систем

         План:

1.     Эволюции вычислительных систем

2.     Четыре периода развития ОС.

 

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

Краткая история эволюции вычислительных систем

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

Первый период (1945–1955 гг.).
Ламповые машины. Операционных систем нет

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

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

Вычислительная система выполняла одновременно только одну операцию (ввод-вывод или собственно вычисления). Отладка программ велась с пульта управления с помощью изучения состояния памяти и регистров машины. В конце этого периода появляется первое системное программное обеспечение: в 1951–1952 гг. возникают прообразы первых компиляторов с символических языков (Fortran и др.), а в 1954 г. Nat Rochester разрабатывает Ассемблер для IBM-701.

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

Второй период (1955 г.–начало 60-х). Компьютеры на основе транзисторов. Пакетные операционные системы

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

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

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

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

Третий период (начало 60-х – 1980 г.). Компьютеры на основе интегральных микросхем. Первые многозадачные ОС

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

Повышению эффективности использования процессорного времени мешает низкая скорость работы механических устройств ввода-вывода (быстрый считыватель перфокарт мог обработать 1200 перфокарт в минуту, принтеры печатали до 600 строк в минуту). Вместо непосредственного чтения пакета заданий с перфокарт в память начинают использовать его предварительную запись, сначала на магнитную ленту, а затем и на диск. Когда в процессе выполнения задания требуется ввод данных, они читаются с диска. Точно так же выходная информация сначала копируется в системный буфер и записывается на ленту или диск, а печатается только после завершения задания. Вначале действительные операции ввода-вывода осуществлялись в режиме off-line, то есть с использованием других, более простых, отдельно стоящих компьютеров. В дальнейшем они начинают выполняться на том же компьютере, который производит вычисления, то есть в режиме on-line. Такой прием получает название spooling (сокращение от Simultaneous Peripheral Operation On Line) или подкачки-откачки данных. Введение техники подкачки-откачки в пакетные системы позволило совместить реальные операции ввода-вывода одного задания с выполнением другого задания, но потребовало разработки аппарата прерываний для извещения процессора об окончании этих операций.

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

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

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

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

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

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

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

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

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

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

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

Параллельно внутренней эволюции вычислительных систем происходила и внешняя их эволюция. До начала этого периода вычислительные комплексы были, как правило, несовместимы. Каждый имел собственную операционную систему, свою систему команд и т. д. В результате программу, успешно работающую на одном типе машин, необходимо было полностью переписывать и заново отлаживать для выполнения на компьютерах другого типа. В начале третьего периода появилась идея создания семейств программно совместимых машин, работающих под управлением одной и той же операционной системы. Первым семейством программно совместимых компьютеров, построенных на интегральных микросхемах, стала серия машин IBM/360. Разработанное в начале 60-х годов, это семейство значительно превосходило машины второго поколения по критерию цена/производительность. За ним последовала линия компьютеров PDP, несовместимых с линией IBM, и лучшей моделью в ней стала PDP-11.

Сила "одной семьи" была одновременно и ее слабостью. Широкие возможности этой концепции (наличие всех моделей: от мини-компьютеров до гигантских машин; обилие разнообразной периферии; различное окружение; различные пользователи) порождали сложную и громоздкую операционную систему. Миллионы строчек Ассемблера, написанные тысячами программистов, содержали множество ошибок, что вызывало непрерывный поток публикаций о них и попыток исправления. Только в операционной системе OS/360 содержалось более 1000 известных ошибок. Тем не менее идея стандартизации операционных систем была широко внедрена в сознание пользователей и в дальнейшем получила активное развитие.

Четвертый период (с 1980 г. по настоящее время). Персональные компьютеры. Классические, сетевые и распределенные системы

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

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

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

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

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

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

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

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

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

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

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

     1.      Укажите свойств ОС присущих каждому периоду.

     2.      Перечислите основные функции, которые выполняют классические ОС.

     3.      Роль и основные функции, выполняющиеся в организации мультипрограммирования.

 

 

 

 

Лекция 4. Понятие операционной системы. 4 часа.

План:

1.     Чем определяется основные возможности ОС.

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

 

 

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

 

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

 

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

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

 

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

 

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

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

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

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

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

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

 

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

 

1.     Что означает частотный, принцип независимости и совместимости.

2.     Что означает принцип модульности.

3.     Принцип функциональной избыточности(ФИ), настройки ФИ.

4.     Принцип умолчания и генерируемости ОС.

5.     Свойства принципов виртуализации.

6.     Принцип мобильности и безопасности.

 

Лекция 5. Классификация ОС.     Основные понятия, концепции ОС

План:

1.     Архитектура ОС и их классификация.

2.     Тенденции в структурном построении ОС.

3.     Монолитная и многоуровневые системы.

4.     Модель клиент-сервер и микроядро.

5.     Другие классы ОС.

 

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

 

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

 

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

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

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

Тенденции в структурном построении ОС

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

 

Монолитные системы

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                 

 

 

 

 

 

Рис.5.1. Монолитная структура ОС

 

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

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

1. Главная программа, которая вызывает требуемые сервисные процедуры.

2. Набор сервисных процедур, реализующих системные вызовы.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Рис. 5.2. Простая структуризация монолитной ОС

 

 

Многоуровневые системы

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

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

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

Многоуровневый подход был также использован при реализации различных вариантов ОС UNIX.

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

 

Модель клиент-сервер и микроядра

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


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

 

1.                             Как пишутся процедуры в ОС имеющих монолитные  структуры ядра.

2.                             Как составляются структурированные монолитные системы.

3.                             Расскажите уровни функции многоуровневых систем.

4.                             Недостатки многоуровневых систем.

5.                             Состав и принцип работы модели клиент-сервер

6.                             Определение модельных функций в моделях микроядра.

7.                             Особые свойства объектно-ориентированного направления.

 

 

Лекция 6. Понятие ресурса в ОС.

План:

1. Понятие ресурса в ОС.

2. Классификация ресурсов по признакам.

3. Описание класс ресурсов.

 

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

- По реальности существования: физический и виртуальный;

- По возможности расширения свойств: эластичный и жесткий

- По степени активности: активный и пассивный

- По времени существования: постоянный, временный

- По степени важности: главный и второстепенный

- По структуре: простой, составной;

- По восстанавливаемости: воспроизводимый, потребляемый

- По форме реализации: мягкий, твердый

- По функциональной избыточности: дорогой, дешевый.

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

 

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

 

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

 

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

 

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

 

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

 

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

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

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

 

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

 

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

 

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

1.     Дайте определение ресурсам и перечислите основные ресурсы.

2.     По каким признакам проводится классификация ресурсов.

3.     Какие объекты считаются ресурсами в отношении первых ОС и современных ОС.

4.     Какие ресурсы имеют структуру?

5.     Что вы понимаете под виртуализацией ресурсов.

6.     Какие виды ресурсов вы знаете?

 

 

Лекция 7. Процессы

План:

1.     Понятие процесса.

2.     Состояние процесса.

3.     Операции над процессом

4.     Планирование процессов.

5.     Критерия планирования и алгоритмы.

 


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

 

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

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

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

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

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

Состояния процесса

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

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

Простейшая диаграмма состояний процесса


Рис. 7.1.  Простейшая диаграмма состояний процесса

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

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

Более подробная диаграмма состояний процесса


Рис. 7.2.  Более подробная диаграмма состояний процесса

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

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

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

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

Диаграмма состояний процесса, принятая в курсе


Рис.7.3.  Диаграмма состояний процесса, принятая в курсе

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

В конкретных операционных системах состояния процесса могут быть еще более детализированы, могут появиться некоторые новые варианты переходов из одного состояния в другое. Так, например, модель состояний процессов для операционной системы Windows NT содержит 7 различных состояний, а для операционной системы Unix – 9. Тем не менее так или иначе, все операционные системы подчиняются изложенной выше модели.

Операции над процессами и связанные с ними понятия

Набор операций

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

  • создание процессазавершение процесса;
  • приостановка процесса (перевод из состояния исполнение в состояние готовность) – запуск процесса (перевод из состояния готовность в состояние исполнение);
  • блокирование процесса (перевод из состояния исполнение в состояние ожидание) – разблокирование процесса (перевод из состояния ожидание в состояние готовность).

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

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

Process Control Block и контекст процесса

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

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

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

Одноразовые операции

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

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

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

Многоразовые операции

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

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

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

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

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

Переключение контекста

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

Давайте для примера упрощенно рассмотрим, как в реальности может протекать операция разблокирования процесса, ожидающего ввода-вывода (см. рис. 7.4.). При исполнении процессором некоторого процесса (на рисунке – процесс 1) возникает прерывание от устройства ввода-вывода, сигнализирующее об окончании операций на устройстве. Над выполняющимся процессом производится операция приостановки. Далее операционная система разблокирует процесс, инициировавший запрос на ввод-вывод (на рисунке – процесс 2) и осуществляет запуск приостановленного или нового процесса, выбранного при выполнении планирования (на рисунке был выбран разблокированный процесс). Как мы видим, в результате обработки информации об окончании операции ввода-вывода возможна смена процесса, находящегося в состоянии исполнение.

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


Рис. 7.4.  Выполнение операции разблокирования процесса. Использование термина "код пользователя" не ограничивает общности рисунка только пользовательскими процессами

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

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

 

 

Планирование процессов

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

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

 

Уровни планирования

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

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

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

 

Критерии планирования и требования к алгоритмам

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

  • Справедливость – гарантировать каждому заданию или процессу определенную часть времени использования процессора в компьютерной системе, стараясь не допустить возникновения ситуации, когда процесс одного пользователя постоянно занимает процессор, в то время как процесс другого пользователя фактически не начинал выполняться.
  • Эффективность – постараться занять процессор на все 100% рабочего времени, не позволяя ему простаивать в ожидании процессов, готовых к исполнению. В реальных вычислительных системах загрузка процессора колеблется от 40 до 90%.
  • Сокращение полного времени выполнения (turnaround time) – обеспечить минимальное время между стартом процесса или постановкой задания в очередь для загрузки и его завершением.
  • Сокращение времени ожидания (waiting time) – сократить время, которое проводят процессы в состоянии готовность и задания в очереди для загрузки.
  • Сокращение времени отклика (response time) – минимизировать время, которое требуется процессу в интерактивных системах для ответа на запрос пользователя.

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

  • Были предсказуемыми. Одно и то же задание должно выполняться приблизительно за одно и то же время. Применение алгоритма планирования не должно приводить, к примеру, к извлечению квадратного корня из 4 за сотые доли секунды при одном запуске и за несколько суток – при втором запуске.
  • Были связаны с минимальными накладными расходами. Если на каждые 100 миллисекунд, выделенные процессу для использования процессора, будет приходиться 200 миллисекунд на определение того, какой именно процесс получит процессор в свое распоряжение, и на переключение контекста, то такой алгоритм, очевидно, применять не стоит.
  • Равномерно загружали ресурсы вычислительной системы, отдавая предпочтение тем процессам, которые будут занимать малоиспользуемые ресурсы.
  • Обладали масштабируемостью, т. е. не сразу теряли работоспособность при увеличении нагрузки. Например, рост количества процессов в системе в два раза не должен приводить к увеличению полного времени выполнения процессов на порядок.

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

 

Параметры планирования

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

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

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

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

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

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

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

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

1.     Когда процесс переводится из состояния исполнение в состояние закончил исполнение.

2.     Когда процесс переводится из состояния исполнение в состояние ожидание.

3.     Когда процесс переводится из состояния исполнение в состояние готовность (например, после прерывания от таймера).

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

Невытесняющее планирование используется, например, в MS Windows 3.1 и ОС Apple Macintosh. При таком режиме планирования процесс занимает столько процессорного времени, сколько ему необходимо.

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

 

Алгоритмы планирования

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

1)  First-Come, First-Served - первым пришел, первым обслужен.

 2) Round Robin (RR) – это вид детской карусели, это модемфицированный вид FCFS.

3) Shortest Job First (SJF) - кратчайшая работа первой.

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

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

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

 

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

1. Что такое процесс в ОС.

2. Состояние процесса и диаграмма состояний

3. Контекст процесса (информация).

4. Операции над процессами: одноразовы и многоразовые операции.

5. Планирование использование ресурсов.

6. Критерии планирования и требования к алгоритмам

 

 

 

 

 

Лекция 8. Организация памяти компьютера.

Самые простые схемы управления памятью.

 

 План:

 

1.Физическая память компьютера.

2.Логическая память компьютера.

3.Функции системы управления памятью

4.Простейшие системы управления памятью

5.Эффективные способы управления памятью.

6.Виртуальная память.

Введение

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

Часть ОС, которая отвечает за управление памятью, называется менеджером памяти.

Физическая организация памяти компьютера

Запоминающие устройства компьютера разделяют, как минимум, на два уровня: основную (главную, оперативную, физическую) и вторичную (внешнюю) память.

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

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

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

Иерархия памяти


Рис. 8.1.  Иерархия памяти

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

Локальность

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

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

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

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

Логическая память

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

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

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

Расположение сегментов процессов в памяти компьютера


Рис. 8.2.  Расположение сегментов процессов в памяти компьютера

Некоторые сегменты, описывающие адресное пространство процесса, показаны на рис. 8.2. Более подробная информация о типах сегментов имеется в лекции 10.

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

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

Связывание адресов

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

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

  • Этап компиляции (Compile time). Когда на стадии компиляции известно точное место размещения процесса в памяти, тогда непосредственно генерируются физические адреса..
  • Этап загрузки (Load time).
  • Этап выполнения (Execution time). Формирование логического адреса и связывание логического адреса с физическим


Рис. 8.3.  Формирование логического адреса и связывание логического адреса с физическим

Функции системы управления памятью

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

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

Простейшие схемы управления памятью

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

Схема с фиксированными разделами

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

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

Эта схема была реализована в IBM OS/360 (MFT), DEC RSX-11 и ряде других систем.

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

Схема с фиксированными разделами: (a) – с общей очередью процессов,  (b) – с отдельными очередями процессов


Рис. 8.4.  Схема с фиксированными разделами: (a) – с общей очередью процессов, (b) – с отдельными очередями процессов

Очевидный недостаток этой схемы – число одновременно выполняемых процессов ограничено числом разделов.

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

Оверлейная структура

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

Организация структуры с перекрытием.  Можно поочередно загружать в память ветви A-B, A-C-D и A-C-E программы


Рис. 8.5.  Организация структуры с перекрытием. Можно поочередно загружать в память ветви A-B, A-C-D и A-C-E программы

Коды ветвей оверлейной структуры программы находятся на диске как абсолютные образы памяти и считываются драйвером оверлеев при необходимости. Для описания оверлейной структуры обычно используется специальный несложный язык (overlay description language). Совокупность файлов исполняемой программы дополняется файлом (обычно с расширением .odl), описывающим дерево вызовов внутри программы.

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

Динамическое распределение. Свопинг

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

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

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

Схема с переменными разделами

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

Страничная память

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

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

Логический адрес в страничной системе – упорядоченная пара (p,d), где p – номер страницы в виртуальной памяти, а d – смещение в рамках страницы p, на которой размещается адресуемый элемент. Заметим, что разбиение адресного пространства на страницы осуществляется вычислительной системой незаметно для программиста. Поэтому адрес является двумерным лишь с точки зрения операционной системы, а с точки зрения программиста адресное пространство процесса остается линейным.

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

Интерпретация логического адреса показана на рис. 8.7. Если выполняемый процесс обращается к логическому адресу v = (p,d), механизм отображения ищет номер страницы p в таблице страниц и определяет, что эта страница находится в страничном кадре p', формируя реальный адрес из p' и d.

Связь логического и физического адресов при страничной организации памяти


Рис. 8.7.  Связь логического и физического адресов при страничной организации памяти

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

Сегментная и сегментно-страничная организация памяти

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

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

Каждый сегмент – линейная последовательность адресов, начинающаяся с 0. Максимальный размер сегмента определяется разрядностью процессора (при 32-разрядной адресации это 232 байт или 4 Гбайт). Размер сегмента может меняться динамически (например, сегмент стека). В элементе таблицы сегментов помимо физического адреса начала сегмента обычно содержится и длина сегмента. Если размер смещения в виртуальном адресе выходит за пределы размера сегмента, возникает исключительная ситуация.

Понятие виртуальной памяти

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

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

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

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

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

Таким образом, возможность обеспечения (при поддержке операционной системы) для программы "видимости" практически неограниченной (характерный размер для 32-разрядных архитектур 232 = 4 Гбайт) адресуемой пользовательской памяти (логическое адресное пространство) при наличии основной памяти существенно меньших размеров (физическое адресное пространство) – очень важный аспект.

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

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

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

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

Сегментная организация в чистом виде встречается редко.

Архитектурные средства поддержки виртуальной памяти

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

Страничная виртуальная память

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

Ассоциативная память

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

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

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

 

1.     Какую структуру имеет физическая память компьютера.

2.     Логическая память и понятие сегментации.

3.     Функции системы управления памятью.

4.     Схема с фиксированными разделами.

5.     Оверлейная структура и динамическое распределение.

6.     Страничная, сегментная и сегментно-страничная организация памяти.

7.     Понятие виртуальной памяти.

 

 

Лекция 9. Файловые системы

План:

1.     Функции файловой системы.

2.     Файловые системы FAT, VFAT и FAT32.

3.     Основные возможности файловых систем HPFS и NTFS.

 

 

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

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

 

Функции файловой системы и иерархия данных

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

Благодаря системам управления файлами пользователям предоставляются следу­ющие возможности:

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

       работа с недисковыми периферийными устройствами как с файлами;

       обмен данными между файлами, между устройствами, между файлом и уст­ройством (и наоборот);

       работа с файлами путем обращений к программным модулям системы управ­ления файлами (часть API ориентирована именно на работу с файлами);

защита файлов от несанкционированного доступа.

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

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

Есть версия системы управления файлами с принципами FAT и для Windows 95/98, есть реализация для Win­dows NT и т. д. Другими словами, для работы с файлами, организованными в соот­ветствии с некоторой файловой системой, для каждой операционной системы должна быть разработана соответствующая система управления файлами. И эта система управления файлами будет работать только в той операционной системе, для которой создана, но при этом обеспечит доступ к файлам, созданным с помо­щью системы управления файлами другой операционной системы, но работаю­щей по тем же основным принципам файловой системы.

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

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

Информация, с которой работает человек, обычно структурирована. Это, прежде всего, позволяет более эффективно организовать хранение данных, облегчает их поиск, предоставляет дополнительные возможности в именовании. Аналогично, и при работе с файлами желательно ввести механизмы структурирования. Проще всего организовать иерархические отношения. Для этого достаточно ввести поня­тие каталога (directory). Каталог содержит информацию о данных, организован­ных в виде файлов. Другими словами, в каталоге должны содержаться дескрипто­ры файлов. Если файлы организованы на блочном устройстве, то именно с помощью каталога система управления файлами будет находить адреса тех блоков, в кото­рых размещены искомые данные. Причем очевидно, что каталогом может быть не только специальная системная информационная структура, которую часто назы­вают корневым каталогом, но и сам файл. Такой файл-каталог должен иметь спе­циальное системное значение; система управления файлами должна его выделять на фоне обычных файлов. Файл-каталог часто называют подкаталогом (subdi­rectory). Если файл-каталог содержит информацию о других файлах, то посколь­ку среди них также могут быть файлы-каталоги, мы получаем возможность стро­ить почти ничем не ограниченную иерархию.

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

 

Файловая система FAT

Файловая система FAT (File Allocation Table — таблица размещения файлов) по­лучила свое название благодаря простой таблице, в которой указываются:

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

       свободные области дискового пространства;

       дефектные области диска (эти области содержат дефектные участки и не га­рантируют чтение и запись данных без ошибок).

В файловой системе FAT дисковое пространство любого логического диска де­лится на две области (рис. 6.1): системную область и область данных.

 

 

 

 

 

 


       Рис. 6.1. Структура логического диска в FAT

 

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

загрузочной записи (Boot Record, BR);

зарезервированных секторов (Reserved Sectors, ResSec);

таблицы размещения файлов (File Allocation Table, FAT);
корневого каталога (
Root Directory, RDir).

 

Таблица размещения файлов

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

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

 

Файловые системы VFAT и FAT32

Одной из важнейших характеристик исходной файловой системы FAT было ис­пользование имен файлов формата 8.3. К стандартной системе FAT (имеется в виду прежде всего реализация FAT16) добавились еще две разновидности, используемые в широко распространенных ОС от Microsoft (конкретно — в Windows 95 и Windows NT): VFAT (виртуальная система FAT) и система FAT32, используе­мая в одной из редакций ОС Windows 95 и Windows 98. Ныне файловая система FAT32 поддерживается и такими последними системами, как Windows Millennium Edition, Windows 2000 и Windows XP. Имеются реализации FAT32 и для Windows NT, и для Linux.

Основными недостатками файловых систем FAT и VFAT, которые привели к разработке новой реализации файловой системы, основанной на той же идее (таб­лице размещения файлов), являются большие потери на кластеризацию при боль­ших размерах логического диска и ограничения на сам размер логического дис­ка. Поэтому в Microsoft Windows 95 OEM Service Release 2 на смену системе VFAT пришла файловая система FAT32, которая является полностью самостоя­тельной 32-разрядной файловой системой и содержит многочисленные усовер­шенствования и дополнения по сравнению с предыдущими реализациями FAT. Самое принципиальное отличие заключается в том, что FAT32 намного эффек­тивнее расходует дисковое пространство.

 

Файловая система HPFS

Файловая система HPFS (High Performance File System — высокопроизводитель­ная файловая система) впервые появилась в операционных системах OS/2 1.2 и LAN Manager. Она была разработана совместными усилиями лучших специалис­тов компаний IBM и Microsoft на основе опыта IBM по созданию файловых сис­тем MVS, VM/CMS и виртуального метода доступа. Архитектура HPFS начала создаваться как файловая система для многозадачного режима и была призвана обеспечить высокую производительность при работе с файлами на дисках боль­шого размера.

Принципы размещения файлов на диске, положенные в основу HPFS, увеличива­ют как производительность файловой системы, так и ее надежность и отказо­устойчивость. Для достижения этих целей предложено несколько идей:

       размещение каталогов в середине дискового пространства;

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

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

 

Файловая система NTFS

В название файловой системы NTFS (New Technology File System — файловая система новой технологии) входят слова «новая технология». Действительно, файловая система NTFS по сравнению с широко известной FAT16 (и даже FAT32) содержит ряд значительных усовершенствований и изменений. С точки зрения пользователей файлы по-прежнему хранятся в каталогах, ныне при работе в среде Windows часто называемых папками (folders). Однако в ней появилось много но­вых особенностей и возможностей.

 

Основные возможности файловой системы NTFS

При проектировании NTFS особое внимание было уделено надежности, механиз­мам ограничения доступа к файлам и каталогам, расширенной функциональнос­ти, поддержке дисков большого объема и пр. Начала разрабатываться эта система в рамках проекта OS/2 v.3, поэтому она переняла многие интересные особенности файловой системы HPFS.

 

Надежность

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

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

 

Ограничения доступа к файлам и каталогам

Файловая система NTFS поддерживает объектную модель безопасности операци­онной системы Windows NT и рассматривает все тома, каталоги и файлы как само­стоятельные объекты. Система NTFS обеспечивает безопасность на уровне фай­лов и каталогов. Это означает, что разрешения доступа к томам, каталогам и файлам Могут зависеть от учетной записи пользователя и тех групп, к которым он принад­лежит. Каждый раз, когда пользователь обращается к объекту файловой системы,

его разрешения на доступ проверяются по уже упоминавшемуся списку управле­ния доступом (ACL) для данного объекта. Если пользователь обладает необходи­мым уровнем разрешений, его запрос удовлетворяется; в противном случае запрос отклоняется. Эта модель безопасности (см. подраздел «Модель безопасности Win­dows NT/2000/XP» в главе 11) применяется как при локальной регистрации поль­зователей на компьютерах с Windows NT, так и при удаленных сетевых запросах.

 

Расширенная функциональность

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

Наконец, в системах Windows 2000/XP в случае использования файловой систе­мы NTFS можно включить квотирование, при котором пользователи могут хра­нить свои файлы только в пределах отведенной им квоты на дисковое простран­ство.

 

Поддержка дисков большого объема

Система NTFS создавалась с расчетом на работу с большими дисками. Она уже достаточно хорошо проявляет себя при работе с томами объемом 300-400 Мбайт и выше. Чем больше объем диска и чем больше на нем файлов, тем больший выигрыш мы получаем, используя NTFS вместо FAT16 или FAT32.

 

Разрешения NTFS

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

Не следует путать разрешения с правами. Это совершенно разные понятия; по­дробнее об этом написано в подразделе «Модель безопасности Windows NT/2000/ ХР». К сожалению, в технической литературе да и в обиходе часто путают эти тер­мины. Истоком этого прежде всего являются ошибки перевода оригинальных анг­лоязычных материалов.

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

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

Каждый файловый объект имеет так называемую маску доступа (access mask). Маска доступа включает стандартные (standard), специфичные (specific) и родо­вые (generic) права доступа.

Стандартные права доступа определяют операци и, которые явля ются общи­ми для всех защищенных объектов.

 Специфичные права доступа указывают основные права, характерные для файловых объектов. Так, например, специфичные права Read_Data, Write_Data и Append_Data позволяют прочитать данные, записать информацию и, соот­ветственно, добавить данные к файлу. Права Read_Attributes, Write_Attributes

и Read_EA, Write_EA позволяют, соответственно, прочитать или записать ат­рибуты или расширенные атрибуты файла или каталога. Наконец, такое специфичное право доступа, как Execute, позволяет запустить файл на вы­полнение.

Родовые права доступа используются системой; они определяют комби­нации стандартных и специфичных прав. Например, родовое право досту­па generic_Read, примененное к файлу, включает в себя следующие специ­фичные и стандартные права: Read_Control, File_Read_Data, File_Read_Attributes, File_Read_EA, Synchronize.

 

Итак, разрешения NTFS по-разному представлены в операционных системах Win­dows NT 4.0 и семействе систем Windows 2000/ХР. Отличия эти, прежде всего, касаются интерфейса, то есть программа Проводник (Explorer) по-разному ото­бражает те разрешения, которые на самом деле присвоены файловому объекту в виде разрешений доступа и обрабатываются на программном уровне. Разрешения в Windows 2000/ХР ближе к тем специфичным, стандартным и родовым правам доступа, о которых мы говорили выше, однако для управления доступом к файлам они не так удобны, как разрешения Windows NT 4.0.

 

Разрешения NTFS в Windows NT 4.0

В NTFS для Windows NT 4.0 разрешения на доступ к файлам и каталогам бывают индивидуальными, стандартными и специальными.

Индивидуальные разрешения. Под индивидуальными разрешениями понимают набор прав, позволяющий предоставлять пользователю доступ того или иного типа. В Windows NT 4.0 этих разрешений всего шесть: Read (чтение), Write (запись), Execute (выполнение), Delete (удаление), Change Permissions (смена разрешений) и lake Ownership (смена владельца).

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

Разрешения NTFS в Windows 2000/XP

Вместо описанных выше индивидуальных, стандартных и специальных разреше­ний Windows NT 4.0 теперь в пользовательском интерфейсе имеется перечень из 13 разрешений, которые можно (по аналогии с предыдущей системой) назвать индивидуальными, хотя Microsoft более этот термин не употребляет и называет их специальными разрешениями. Опишем кратко эти индивидуальные (специаль­ные) разрешения.

 

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

1. Что такое «файловая система»?

2. Объясните общие принципы устройства файловой системы FAT.

3. Изложите основные принципы работы системы FAT, VFAT, FAT32.

4. Основные возможности файловых систем HPFS и NTFS.

5. Объясните разные разрешения на доступ. (стандартные, идивидульные, и специальные).

 

 

 

 

 

Лекция 10. Сетевые операционные системы

 

План:

1.     Структура сетевой операционной системы

2.     Одноранговые сетевые ОС и ОС с выделенными серверами

3.     ОС для рабочих групп и ОС для сетей масштаба предприятия

 

 

Структура сетевой операционной системы


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

Рис.5.1. Структура сетевой ОС

В сетевой операционной системе отдельной машины можно выделить несколько частей (рисунок 5.1):

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

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

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

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

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

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

 


Рис. 5.2. взаимодействие компонентов операционной системы при взаимодействии компьютеров


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

Рис. 5.3. Варианты построения сетевых ОС

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

Однако более эффективным представляется путь разработки операционных систем, изначально предназначенных для работы в сети. Сетевые функции у ОС такого типа глубоко встроены в основные модули системы, что обеспечивает их логическую стройность, простоту эксплуатации и модификации, а также высокую производительность. Примером такой ОС является система Windows NT фирмы Microsoft, которая за счет встроенности сетевых средств обеспечивает более высокие показатели производительности и защищенности информации по сравнению с сетевой ОС LAN Manager той же фирмы (совместная разработка с IBM), являющейся надстройкой над локальной операционной системой OS/2.

Одноранговые сетевые ОС и ОС с выделенными серверами

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


 


а)

(б)

Рис. 5.4. (а) - Одноранговая сеть, (б) - Двухранговая сеть

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

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

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

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

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

В одноранговых сетях все компьютеры равны в правах доступа к ресурсам друг друга. Каждый пользователь может по своему желанию объявить какой-либо ресурс своего компьютера разделяемым, после чего другие пользователи могут его эксплуатировать. В таких сетях на всех компьютерах устанавливается одна и та же ОС, которая предоставляет всем компьютерам в сети потенциально равные возможности. Одноранговые сети могут быть построены, например, на базе ОС LANtastic, Personal Ware, Windows for Workgroup, Windows NT Workstation.

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

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

ОС для рабочих групп и ОС для сетей масштаба предприятия

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

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

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

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

Главной задачей операционной системы, используемой в сети масштаба отдела, является организация разделения ресурсов, таких как приложения, данные, лазерные принтеры и, возможно, низкоскоростные модемы. Обычно сети отделов имеют один или два файловых сервера и не более чем 30 пользователей. Задачи управления на уровне отдела относительно просты. В задачи администратора входит добавление новых пользователей, устранение простых отказов, инсталляция новых узлов и установка новых версий программного обеспечения. Операционные системы сетей отделов хорошо отработаны и разнообразны, также, как и сами сети отделов, уже давно применяющиеся и достаточно отлаженные. Такая сеть обычно использует одну или максимум две сетевые ОС. Чаще всего это сеть с выделенным сервером NetWare 3.x или Windows NT, или же одноранговая сеть, например сеть Windows for Workgroups.

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

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

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

Именно на уровне сети кампуса начинаются проблемы интеграции. В общем случае, отделы уже выбрали для себя типы компьютеров, сетевого оборудования и сетевых операционных систем. Например, инженерный отдел может использовать операционную систему UNIX и сетевое оборудование Ethernet, отдел продаж может использовать операционные среды DOS/Novell и оборудование Token Ring. Очень часто сеть кампуса соединяет разнородные компьютерные системы, в то время как сети отделов используют однотипные компьютеры.

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

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

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

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

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

Сервер приложений должен базироваться на мощной аппаратной платформе (мультипроцессорные системы, часто на базе RISC-процессоров, специализированные кластерные архитектуры). ОС сервера приложений должна обеспечивать высокую производительность вычислений, а значит поддерживать многонитевую обработку, вытесняющую многозадачность, мультипроцессирование, виртуальную память и наиболее популярные прикладные среды (UNIX, Windows, MS-DOS, OS/2). В этом отношении сетевую ОС NetWare трудно отнести к корпоративным продуктам, так как в ней отсутствуют почти все требования, предъявляемые к серверу приложений. В то же время хорошая поддержка универсальных приложений в Windows NT собственно и позволяет ей претендовать на место в мире корпоративных продуктов.

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

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

В идеале сетевая справочная информация должна быть реализована в виде единой базы данных, а не представлять собой набор баз данных, специализирующихся на хранении информации того или иного вида, как это часто бывает в реальных операционных системах. Например, в Windows NT имеется по крайней мере пять различных типов справочных баз данных. Главный справочник домена (NT Domain Directory Service) хранит информацию о пользователях, которая используется при организации их логического входа в сеть. Данные о тех же пользователях могут содержаться и в другом справочнике, используемом электронной почтой Microsoft Mail. Еще три базы данных поддерживают разрешение низкоуровневых адресов: WINS - устанавливает соответствие Netbios-имен IP-адресам, справочник DNS - сервер имен домена - оказывается полезным при подключении NT-сети к Internet, и наконец, справочник протокола DHCP используется для автоматического назначения IP-адресов компьютерам сети. Ближе к идеалу находятся справочные службы, поставляемые фирмой Banyan (продукт Streettalk III) и фирмой Novell (NetWare Directory Services), предлагающие единый справочник для всех сетевых приложений. Наличие единой справочной службы для сетевой операционной системы - один из важнейших признаков ее корпоративности.

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

 

 

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

1.     Дайте определение понятия «Сетевая Операционнвая Система».

2.     Назовите основные составляющие сетевой ОС.

3.     Какие существуют способы построения сетевой ОС? В чем их отличия.

4.     Одноранговые и двухранговые сети. Определения и отличия.

5.     Разделение компьютерных сетей в зависимости от количества пользователей. в чем его отличие?

 

 

 

 

 

 

 

Лекция 11.Операционная система Windows NT и
сравнительная характеристика других сетевых ОС

 

План:

1.     Характеристики ОС Windows NT

2.     Службы Windows NT

3.     Возможности Windows NT

4.     Сравнительные характеристики сетевых операционных систем

 

 

Рассуждениями на тему "Какая из сетевых операционных систем лучше?" заполнены все компьютерные газеты и журналы. Но ничто так не выводит из себя, как предвзятая, тенденциозная, подчас и некомпетентная подача информации. А именно в такую категорию попадает большинство всех публикаций на данную тему. Ну чего стоят утверждения типа "Windows NT - идеальный сервер приложений", звучащие не только из уст представителей Microsoft - все-таки это их хлеб, но и некоторых независимых экспертов. А шедевр - "Windows NT - лучший вариант Unix, нежели сам Unix"? Между прочим, автор сего высказывания, президент Microsoft Билл Гейтс (его можно обвинять в чем угодно, но только не в отсутствии компетентности).

Вдобавок создается впечатление, что авторы большей части публикаций полагают, будто у читателей вообще еще нет ни сетей, ни серьезной вычислительной техники, и они (читатели) только приступают к созданию информационной инфраструктуры. Их рекомендации, чаще всего, не учитывают наличия дорогостоящего и, главное, успешно работающего оборудования типа RISC-систем, AS/400, различных терминалов и, тем более, мэйнфреймов. Весь разговор обычно строится вокруг техники уровня персоналок. Но подобное состояние дел имеет место далеко не везде даже в России, не говоря уже о развитых странах: на Западе вам долго придется искать среднюю или крупную компанию, не имеющую на вооружении RISC-машины, X-терминалы или мэйнфреймы.

Возмем на себя смелость привести основные сравнительные характеристики операционных систем Novell NetWare 4.1, Microsoft Windows NT Server 4.0 и Unix, основываясь на практическом опыте использования и администрирования их в реально работающей многоплатформенной гетерогенной среде. Здесь не отражены некоторые известные продукты, такие как IBM OS/2 Warp Server и Banyan VINES, потому что лично с ними мы не работали, судить же по чужим публикациям дело неблагодарное. Очень возможно, что это добротные операционные системы, однако если поддержку и сопровождение даже Windows NT и NetWare в России можно назвать весьма слабой, то для OS/2 и VINES она, по существу, отсутствует. А серьезные заказчики никогда не будут приобретать продукты, в поддержке которых они не уверены.

Несколько слов о том, почему Unix отнесен к категории сетевых операционных систем. Характерно, что администраторы Unix довольно скептически относятся к обзорным статьям на данную тему, поскольку в них крайне редко Unix рассматривается с этой точки зрения. Все ведущие поставщики Unix-систем поставляют в качестве дополнительных модулей, а порой и интегрированно в базовом комплекте, такие службы, как NFS (Network File System - сетевая файловая система), NIS (Network Information Service - сетевая информационная служба), X Window System и множество других. Именно они делают Unix полноценной сетевой операционной системой, по функциональности мало чем уступающей другим, а по ряду показателей их превосходящей. Более того, многие сетевые протоколы, впервые реализованные в Unix (ftp, telnet, smtp, uucp, http и др.), стали основой для построения не только корпоративных сетей, но и небезызвестной Internet. Для простоты сравнения в качестве примера Unix взят AIX (Unix версии IBM), хотя никакие специфические особенности AIX здесь не используются. Все приводимые характеристики полностью соответствуют широко распространенным версиям Unix (SCO OpenServer и UnixWare, SunSoft Solaris и Interactive Unix, Hewlett-Packard HP-UX, IBM AIX, Digital Unix, SGI IRIX и др.).

 

БАЗОВЫЕ ХАРАКТЕРИСТИКИ ОС

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

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

Хорошо себя зарекомендовали и кластерные системы на основе Unix, но, разумеется, далеко не всякий Unix для этого годится. Для Windows NT разработка кластерных технологий еще не закончена. NetWare обеспечивает полную избыточную аппаратную отказоустойчивость (SFT III), Windows NT пока не имеет аналогичной возможности. Многие версии Unix поддерживают различные варианты избыточной аппаратной отказоустойчивости, хотя эта особенность строго индивидуальна и напрямую зависит от используемого аппаратного обеспечения. Однако эталоном отказоустойчивости остаются мэйнфреймы; именно на них равняются при создании отказоустойчивых программно-аппаратных комплексов.

 

БЕЗОПАСНОСТЬ ОС

NetWare 4.1 соответствует требованиям класса безопасности C2, предъявляемым к сетевым конфигурациям ("Красная книга"), в то время как Windows NT 3.51 - классу C2 для рабочей станции ("Оранжевая книга"). Вероятно, Microsoft будет сертифицировать Windows NT 4.0 на соответствие классу C2 как по "Оранжевой", так и "Красной книге".

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

В Windows NT поддержка требованиям класса C2 реализована на уровне ядра. Почему-то это дает основание некоторым экспертам считать, что NT обеспечивает более высокий уровень безопасности, чем Unix. Но это не так. Если система сертифицирована, то говорить, собственно, больше не о чем!

МНОГОПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС

Серьезным преимуществом Unix является встроенная поддержка многопользовательского интерфейса, которая отсутствует у NetWare и Windows NT.

К одной Unix-машине, даже на базе ПК, можно подключать десятки алфавитно-цифровых терминалов. Возникает вопрос: а кому это может потребоваться? Представим следующую ситуацию: имеется транспортное агентство, где оформляют билеты на поезда, или банк, в котором принимают вклады от населения. Как полагают в Microsoft, все подобные места необходимо оборудовать персональными компьютерами с Windows, обвязать их сетью на основе Windows NT и установить СУБД (разумеется, Microsoft SQL Server), работающую в режиме клиент-сервер. Только зачем на подобных рабочих местах нужен графический интерфейс, быстрые сетевые каналы и производительные персональные компьютеры? Красиво, спору нет, но совсем не рационально. Бережливый хозяин так не поступит. Намного дешевле поставить Unix-машину и по медленным асинхронным каналам подключить недорогие алфавитно-цифровые терминалы. В подобных случаях не нужны никакие модные навороты вроде архитектуры клиент-сервер. Именно так поступают на Западе, на который у нас очень любят ссылаться.

Если же терминалов требуется слишком много, то приобретают мэйнфрейм (причем сегодня, а не во времена царя Гороха). Мэйнфреймов же IBM продает на сумму, которая для любого производителя ПК является пределом мечтаний, но у нас про это говорить как-то не принято. Хороший мэйнфрейм без труда потянет работу нескольких сотен, а то и тысяч терминалов.

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

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

Как известно, Microsoft при разработке Windows NT не стала делать графический интерфейс сетевым. Не поставляет она и продукты, реализующие X Window System в этой ОС. Тем не менее ряд независимых компаний предлагает такие программы. Однако любой, кто работал с ними, знает, что нельзя даже сравнивать реализации X в Unix и Windows NT, настолько убого выглядит X Window System в Windows NT.

Для NetWare 4.1 поддержка X вообще отсутствует (кроме простенькой программы X-console).

ЛОГИЧЕСКАЯ ОРГАНИЗАЦИЯ СЕТЕВЫХ РЕСУРСОВ

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

Что касается реализации NDS на других платформах, то уже сейчас SCO UnixWare (которая раньше принадлежала Novell) поддерживает NDS. Кроме того, фирма Novell заключила соглашение с Hewlett-Packard и SCO о переносе NDS в среду Unix этих фирм. В 1997 г. планируется также перенести NDS на платформу Windows NT. Novell же намерена продавать лицензию на NDS всем разработчикам операционных систем.

В Windows NT Server сеть строится на основе доменов, что даже по признанию Microsoft менее привлекательно для корпоративных клиентов, чем служба каталогов. Microsoft обещала выпустить свою собственную службу каталогов в 1997-1998 гг. О планах переноса ее на другие платформы речи пока не ведется.

Для Unix использование сетевой информационной службы NIS, разработанной фирмой Sun, дело обычное. Эта служба позволяет организовывать сетевые ресурсы на основе доменов, однако, в отличие от Windows NT, она не помогает устанавливать между доменами доверительные отношения. Управление NIS довольно сложная задача: редактировать многочисленные текстовые файлы приходится "врукопашную".

В настоящее время некоторые производители Unix разрабатывают свои службы каталогов, обычно на основе стандарта X.500. Однако представляется гораздо более перспективным для них использование службы каталогов либо фирмы Novell, либо Microsoft.

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

СЛУЖБЫ ФАЙЛОВ И ПЕЧАТИ

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

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

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

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

ПОДДЕРЖКА АППАРАТНЫХ ПЛАТФОРМ

NetWare 4.1 может быть установлена только на компьютерах с процессорами Intel x86. Одно время Novell собиралась перенести эту ОС на PowerPC, но, похоже, она отказалась от своих намерений.

ОС Unix имеется, кажется, на всех мыслимых платформах. Но значит ли это, что если вы работаете в SCO OpenServer, то знаете IBM AIX? Конечно же нет! Более того, многие программы требуют серьезной переработки в исходных текстах для переноса из одной системы Unix в другую. Каждая версия Unix предназначена обычно лишь для одной аппаратной платформы. Единственным, пожалуй, приятным исключением является ОС Solaris, которая реализована для процессоров SPARC, x86 и PowerPC. Однако найти необходимую программу для Solaris x86 или PowerPC - дело явно неблагодарное (слишком их мало). Windows NT существует на платформах Intel x86, DEC Alpha, MIPS и PowerPC. По количеству поддерживаемых платформ она не намного обошла Solaris, но почему-то об этом забывают.

Что касается прикладных программ для "неродных" аппаратных платформ, то здесь ситуация полностью аналогична Solaris. Когда кто-либо подчеркивает, что Windows NT работает не на платформах Intel, так и хочется поинтересоваться, много ли существует адаптированных программ для Windows NT на таких платформах. Раз, два и обчелся!

СЕРВЕР КОММУНИКАЦИЙ

Все три системы неплохо подходят в качестве сервера удаленного доступа, но лучше для этого использовать не обычный компьютер, а специализированные серверы типа AccessBuilder фирмы 3Com или LanRover/E фирмы Shiva.

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

Web-серверы существуют на всех трех ОС. Однако чаще всего в качестве платформы Web-серверов используют Unix, в особенности Solaris. Думается все же, что в России главенствующую роль будет играть Windows NT Server 4.0 со своим Internet Information Server, поскольку это приложение поставляется с самой системой бесплатно, а такого рода доводы обычно сильнее всех остальных.

Тем не менее Internet до сих пор остается вотчиной Unix-серверов. Они поддерживают максимальное количество протоколов и приложений TCP/IP. Поэтому, если планируется серьезное использование Internet, стоит обратить пристальное внимание на Unix.

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

СЕРВЕР БАЗ ДАННЫХ

Из-за отсутствия вытесняющей многозадачности и защиты памяти NetWare вряд ли можно назвать подходящей платформой для сервера БД. Win-dows NT и Unix-машины хорошо зарекомендовали себя в качестве сервера БД, но, благодаря большей масштабируемости и наличию кластерных технологий, Unix лучше подходит в качестве мощного сервера БД.

СЕРВЕР ПРИКЛАДНЫХ ПРОГРАММ

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

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

Из-за отсутствия встроенной поддержки многопользовательского интерфейса Windows NT не очень хорошо подходит для такого сервиса (а о NetWare лучше даже и не заикаться).

Допустим, для каких-либо дорогих и очень ресурсоемких программ (серьезных САПР или, скажем, программ расчета и отображения динамических процессов в ядерном реакторе) понадобилось приобрести мощную вычислительную технику категории "Number Crashing" ("перемалыватель чисел"), допустим 12-процессорный Alpha-Server. Конечно же, на него поставят Unix (или OpenVMS) с тем, чтобы его вычислительной мощью могли пользоваться одновременно несколько пользователей. Для этого обычно задействуют различного типа терминалы, рабочие станции или эмуляторы терминалов на ПК.

Можно, разумеется, попробовать поставить Windows NT и X Window System для нее. Вероятно даже, что это будет дешевле. Еще, правда, большой вопрос, найдется ли необходимая программа на NT (да еще для многопользовательского режима) для процессора Alpha. Думается только, что пользователи проклянут такую рационализацию после первого же дня работы, особенно с мощными графическими пакетами.

Но у Windows NT есть и свои плюсы, а именно поддержка Network OLE. Аналогичные спецификации для Unix пока только в стадии разработки, и еще не понятно, как они будут стыковаться с клиентскими местами на основе Windows.

АДМИНИСТРИРОВАНИЕ

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

Хотя NetWare 4.1 имеет неплохой набор довольно удобных утилит, все-

таки Windows NT Server 4.0 - вне конкуренции. Хорошо продуманный интерфейс плюс богатые возможности утилит делают ее простой в администрировании, и это не говоря о скрытой мощи.

Тем не менее в базовом комплекте данных ОС отсутствует много важных утилит (в частности хорошего командного процессора наподобие shell в Unix).

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

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

ПОДДЕРЖКА КЛИЕНТОВ

Благодаря тому, что NetWare и Windows NT разрабатывались для обслуживания сетей ПК, они обеспечивают хорошую поддержку основных клиентских операционных систем: MS-DOS, Windows 3.х, Windows 95, Windows NT Workstation, OS/2, Macintosh System 7.5. Поддерживаются в качестве клиентов и некоторые версии Unix, но далеко не все и не всегда гладко. Эталоном здесь может служить SCO UnixWare 2.1, имеющая прозрачную интеграцию с NetWare 4.1.

Для сетей на основе Unix до недавнего времени проблема поддержки клиентских ОС стояла более серьезно (если не считать клиентов на основе Unix). Но сейчас почти все Unix имеют те или иные средства интеграции клиентов DOS/Windows. Кроме того, Windows 95 и Windows NT Workstation уже поставляются с приложениями ftp, telnet, ping, Internet Explorer и др. Правда, этот набор слишком невелик, да к тому же возможности некоторых из них, мягко говоря, небольшие.

На рынке, однако, имеется очень много программных продуктов различных фирм, реализующих практически весь спектр услуг Unix (и не только Unix) для операционных систем на ПК. Так, Novell поставляет пакет LAN WorkPlace, в который входят следующие приложения:

ftp-клиент и ftp-сервер для DOS и Windows; NFS-клиент; telnet для DOS и Windows; TN3270 для Windows; Web-браузер Netscape Navigator; сервер и клиент X Window System; Windows Dialer с поддержкой протоколов SLIP и PPP; клиент SMTP/POP3; finger для DOS и Windows; rsh, rexec, rcp для DOS и Windows; поддержки различных режимов печати в Unix из DOS (Windows) и наоборот; talk для Windows.

При этом все приложения данного пакета прекрасно интегрируются с NetWare.

СТОИМОСТЬ

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

Так-то оно так, но со своей стороны можем утверждать, что затраты сильно зависят от того, какие службы и приложения вы хотите иметь и как вы собираетесь сопровождать систему. А то придет время, и вспомните слова из сказки Пушкина: "А Балда приговаривал с укоризной: "Не гонялся бы ты, поп, за дешевизной". Иными словами, сегодняшняя экономия завтра может выйти боком.

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

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

НЕМНОГО О UNIX-КЛИЕНТАХ

Никто не оспаривает серьезных преимуществ Windows-машин на рабочих местах. Но зачем же здесь ставят Unix?

Если достоинства Unix на серверах все-таки признаются многими, то использование Unix, да еще на рабочих станциях RISC, вызывает непонимание. Многие полагают, что если по производительности ПК с процессором Pentium Pro и системой Windows NT сравнялся с традиционными Unix-станциями при гораздо меньшей цене, то стоит ли вообще приобретать такие машины. Опять эти пресловутые MIPS и FLOPS. Но не все так просто.

Что, например, требуется, чтобы из ПК с Windows NT сделать рабочую станцию для сложных САПР, таких как CATIA фирмы Dassault? Необходимо установить мощную дисковую подсистему на основе интерфейса SCSI, мощный графический трехмерный адаптер, поддерживающий стандарт OpenGL, профессиональный

20-дюймовый дисплей и нарастить память до 64-128 Мбайт. Такая персоналка сразу вырастет в цене в несколько раз. Следует отметить, что хороший графический адаптер стоит дороже, чем ПК, даже на основе Pentium Pro. Еще требуется найти нужную программу САПР для NT. Все мощные САПР работают на Unix, а перенос таких монстров, занимающих сотни мегабайт, из Unix в Windows NT дело очень непростое. Подобных приложений пока перенесено совсем немного, и большинство из них, к сожалению, содержат значительное количество ошибок. Но, самое главное, цены на них совсем иные и не уступают своим аналогам для Unix. И в чем же тогда вся эта экономия?!

Но это только одна сторона вопроса. А зачем ставят UnixWare или OpenServer на обычные ПК?

Принято почему-то считать, что эра 32-разрядных операционных систем на ПК началась недавно, с выходом OS/2 2.0, а особенно с появлением Windows NT. Но позвольте, 32-разрядный Unix появился на ПК вскоре после выпуска процессора Intel 386, задолго до OS/2 2.0. С тех пор для таких ОС, как SCO Unix и Interactive Unix, было написано множество прикладных программ. И что прикажете с ними делать, если переходить на Windows NT? Покупать новые приложения и переписывать собственные разработки? Только во что это выльется и по деньгам, и по времени? Небо покажется в овчинку! При всем при том перенесенные программы работать быстрее не будут.

Есть, наконец, люди, умеющие и любящие работать в Unix. Они считают, и порой небезосновательно, что успех Windows NT построен на дутой рекламе.

ЗАКЛЮЧЕНИЕ

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

В гетерогенной среде, где помимо ПК присутствуют Unix-машины, наиболее разумным подходом будет комбинированное использование сетевых ОС (Unix+Windows NT Server 4.0 или Unix+NetWare 4.1). Но в такой среде NT не имеет особых преимуществ, поскольку в качестве серверов приложений и NFS-серверов выгоднее задействовать Unix. А для обслуживания ПК более предпочтительна обладающая великолепной службой каталогов NetWare 4.1.

Тем не менее в сети, где нет Unix-машин, использование Windows NT Server имеет несомненные достоинства.

ТАБЛИЦА 11.1 - СРАВНИТЕЛЬНЫЕ ХАРАКТЕРИСТИКИ СЕТЕВЫХ ОПЕРАЦИОННЫХ СИСТЕМ*

Наименование:

NetWare 4.1

Windows NT Server 4.0

Unix

Многозадачность

кооперативная

вытесняющая

вытесняющая

Защита памяти отдельного процесса

нет

есть

есть

Многопоточность

есть

есть

есть

Поддержка SMP

есть

есть

есть

Кластеры

нет

нет

есть

Избыточная отказоустойчивость

SFT III

нет

есть для некоторых версий

Сертификация по C2

сеть

рабочая станция (NT 3.51)

разные варианты для различных версий

Многопользовательский интерфейс:

Поддержка алфавитно-цифровых терминалов

нет

нет

есть

Сетевой графический интерфейс

нет

у независимых фирм

есть

Логическая организация ресурсов

служба каталогов

домены

домены (NIS)

Быстродействие сетевой файловой

системы

отличное

очень хорошее

низкое (NFS)

 

 

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

1.     Назовите основные характеристики ОС.

2.     Какие классы безопасности вы знаете.

3.     Опишите работу NDS (служба каталогов NetWare).

4.     Сетевая файловая система NFS.

5.     Дайте сравнительную характеристику сетевых ОС в сфере администрирования.

Лекция 12.  Краткий обзор современных операционных систем

 

План:

1.     Семейство ОС UNIX.

2.     Общая характеристика и особенности архитектуры.

3.     Интерфейс пользователя.

4.     Основные особенности.

 

 

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

Прежде всего, отметим тот общеизвестный факт, что наиболее популярными являются операционные системы семейства Windows компании Microsoft. Это и Windows 95/98/ME, и Windows NT/2000, и новое поколение Windows ХР/2003. Здесь же мы рассмотрим операционные системы, не относящиеся к продуктам Microsoft, — это UNIX-подобные операционные системы Linux и Free BSD, а также системы QNX и OS/2. При изучении известных всему миру систем с об­щим названием Linux и системы Free BSD, по которым сейчас появляется не­мало монографий и учебников, упор будет сделан именно на основных архи­тектурных особенностях семейства UNIX, в абсолютном своем большинстве относящихся ко всем UNIX-системам. Система QNXбыла выбрана потому, что является наиболее известной и удачной операционной системой реального вре­мени. Операционную систему OS/2 мы рассмотрим последней. Хотя сейчас эта система уже практически всеми забыта1, она была одной из первых полноцен­ных и надежных мультипрограммных и мультизадачных операционных систем для персональных компьютеров, в которой поддерживалось несколько опера­ционных сред.

 

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

 

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

 

 

Общая характеристика

и особенности архитектуры

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

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

 

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

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

·        одни и те же механизмы работают в отношении программно и аппаратно ини­циируемых прерываний.

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

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

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

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

 

Виртуальная машина

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

Можно сказать, что про­цесс — это выполнение образа. Образ процесса состоит:

·        из образа памяти;

·        значений общих регистров процессора;

·        состояния открытых файлов;

·        текущего каталога файлов;

·        другой информации.

 

Суперпользователь

Очевидно, что администратор системы, который тоже является зарегистрированным пользователем, чтобы управлять всей системой, должен обладать существен­но большими, чем обычные пользователи, привилегиями. В операционных систе­мах UNIX эта задача решается путем выделения единственного нулевого значения UID. Пользователь с таким значением UID называется суперпользователем (superuser) и обозначается словом root (корень). Он имеет неограниченные права на доступ к любому файлу и на выполнение любой программы. Кроме того, такой пользователь имеет возможность полного контроля над системой. Он может оста­новить ее и даже разрушить. По этой причине не рекомендуется работать под этой учетной записью. Администратор должен создать себе обычную учетную запись простого пользователя, а для выполнения действий, связанных с административ­ными полномочиями, рекомендуется использовать команду su. Команда su запрашивает у пользователя пароль суперпользователя, и, если он указан правильно, операционная система переводит сеанс пользователя в режим работы суперпользователя. После выполнения необходимых действий, требующих привилегий суперпользователя, следует выполнить команду exit, которая и вернет администра­тору статус простого пользователя.

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

 

Интерфейс пользователя

Традиционный способ взаимодействия пользователя с системой UNIX основыва­ется на командных языках. После входа пользователя в систему для него запуска­ется один из командных интерпретаторов (в зависимости от параметров, сохраня­емых в файле /etc/passwd). Обычно в системе поддерживается несколько командных интерпретаторов с похожими, но различающимися своими возможностями коман­дными языками. Общее название для любого командного интерпретатора ОС UNIX оболочка (shell), поскольку любой интерпретатор представляет внешнее окружение ядра системы. По умолчанию в системах Linux командным интерпре­татором является bash. В принципе он может быть заменен другим, но практичес­ки никто этого не делает.

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

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

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

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

Любой командный язык оболочки фактически состоит из трех частей:                 

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

·        встроенных команд, выполняемых непосредственно интерпретатором команд­ного языка;

·        команд, представляемых отдельными выполняемыми файлами.

В свою очередь, набор команд последнего вида включает стандартные команды (системные утилиты, такие как vi, cc и т. д.) и команды, созданные пользователями системы.

 

Процессы

Процесс в системах UNIX— это процесс в классическом понимании этого термина, то есть это программа, выполняемая в собственном виртуальном адресном простран­стве. Когда пользователь входит в систему, автоматически создается процесс, в ко­тором выполняется программа командного интерпретатора. Если командному ин­терпретатору встречается команда, соответствующая выполняемому файлу, то он создает новый процесс и запускает в нем соответствующую программу, начиная с функции main. Эта запущенная программа, в свою очередь, может создать процесс и запустить в нем другую программу (та тоже должна содержать функцию main) и т. д.

Для образования нового процесса и запуска в нем программы используются два системных вызова APIfork() и exec (имя_выполняемого_файла). Системный вызов fork() приводит к созданию нового адресного пространства, состояние которого аб­солютно идентично состоянию адресного пространства основного процесса (то есть в нем содержатся те же программы и данные). Для дочернего процесса заводятся копии всех сегментов данных.

Выполнение процессов

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

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

В UNIX -системах организуется разделение времени (time sharing), то есть каждо­му процессу выделяется квант времени. Либо процесс завершается сам до истече­ния отведенного ему кванта времени, либо он приостанавливается по истечении кванта и продолжает свое исполнение при очередном получении нового кванта времени. Механизм диспетчеризации характеризуется достаточно справедливым распределением процессорного времени между всеми процессами. Пользователь­ским процессам приписываются приоритеты в зависимости от получаемого ими процессорного времени. Процессам, которые получили много процессорного вре­мени, назначают более низкие приоритеты, в то время как процессам, которые по­лучили лишь немного процессорного времени, наоборот, повышают приоритет, вспомните рассмотренные ранее механизмы динамических приоритетов. Такой метод Диспетчеризации обеспечивает хорошее время реакции для всех пользова­телей системы. Все системные процессы имеют более высокие приоритеты по срав­нению с пользовательскими и поэтому всегда обслуживаются в первую очередь.

 

 

Файловая система

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

 

Взаимодействие между процессами

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

·        сигналы;

·        семафоры;

·        программные каналы;

·        очереди сообщений;

·        сегменты разделяемой памяти;

·        вызовы удаленных процедур.

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

 

Сигналы

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

·        обработка исключительных ситуаций;

·        средства обработки внешних и внутренних прерываний;

·        средства управления системой прерываний (маскирование и демаскирование).

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

 

 

 

 

 

 

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

 

1.     Перечислите основные современные ОС.

2.     Укажите особенности семейства ОС UNIX.

3.    Основные уели разработки ОС UNIX.

4.     Структура ОС UNIX.

5.     UNIX многопользовательская ОС.

6.     Пользователь и суперпользователь в UNIX и интерфейс пользователя.

 

 

 

 

Лекция 13. Операционная система Linux

 

План:

1.     ОС Linux.

2.     ОС FreeBSD

3.     Основные особенности ОС Linux и FreeBSD

 

Linux— это современная UNIX-подобная операционная система для персональ­ных компьютеров и рабочих станций, удовлетворяющая стандарту POSIX.

Как известно, Linux— это свободно распространяемая версия UNIX-систем, кото­рая первоначально разрабатывалась Линусом Торвальдсом (torvalds@kruuna.helsinki.fi) в университете Хельсинки (Финляндия). Он предложил разрабатывать ее совместно и выдвинул условие, согласно которому исходные коды являются от­крытыми, любой может их использовать и изменять, но при этом обязан оставить открытым и свой код, внесенный в тот или иной модуль системы. Все компоненты системы, включая исходные тексты, распространяются с лицензией на свободное копирование и установку для неограниченного числа пользователей. Таким образом, система Linux была создана с помощью многих программистов и эн­тузиастов UNIX - систем, общающихся между собой через Интернет. Изначально система Linux создавалась как «самодельная» UNIX -подобная реали­зация для машин типа IBM PC с процессором i80386. Однако вскоре Linux стала настолько популярна и ее поддержало такое большое число компаний, что в насто­ящее время имеются реализации этой операционной системы практически для всех типов процессоров и компьютеров на их основе. На базе Linux создаются и встро­енные системы, и суперкомпьютеры. Система поддерживает кластеризацию и боль­шинство современных интерфейсов и технологий.

Linux— это полноценная многозадачная многопользовательская операционная система (точно так же, как и все другие версии UNIX). Это означает, что одновре­менно много пользователей могут работать на одной машине, параллельно выпол­няя множество программ.

Система Linux достаточно хорошо совместима с рядом стандартов для UNIX (на­сколько можно говорить о стандартизации UNIX) на уровне исходных текстов, включая IEEE POSIX.1, System V и BSD. Она и создавалась с расчетом на такую совместимость, Большинство свободно распространяемых через Интернет про­грамм для UNIX может быть откомпилировано для Linux практически без особых изменений. Кроме того, все исходные тексты для Linux, включая ядро, драйверы устройств, библиотеки, пользовательские программы и инструментальные сред­ства распространяются свободно.

Linux поддерживает различные типы файловых систем для хранения данных. Не­которые файловые системы, такие как EXT2FS, были созданы специально для Linux. Поддерживаются также другие типы файловых систем, например Minix-1 и Xenix. Кроме того, реализована система управления файлами на основе FAT, по­зволяющая непосредственно обращаться к файлам, находящимся в разделах с этой файловой системой. Поддерживается также файловая система ISO 9660 CD-ROM для работы с дисками CD-ROM. Имеются системы управления файлами и на то­мах с HPFS и NTFS, правда, они работают только на чтение файлов. Созданы ва­рианты системы управления файлами и для доступа к FAT32; эта файловая систе­ма в операционной системе Linux называется VFAT.

Как и в классических UNIX -системах, Linux имеет макроядро, которое содержит уже известные нам три подсистемы.

 

 

Операционная система FreeBSD

Помимо Linux к свободно распространяемым операционным системам семейства UNIX следует отнести FreeBSD. Принципиальное и самое важное различие меж­ду этими операционными системами заключается в том, что согласно принятому соглашению в системы Linux каждый может внести свои изменения, но при этом обязан также сделать свой код открытым. Не все компании на это согласны. Мно­гие предпочитают воспользоваться исходными текстами и готовыми решениями, но не открывать секретов своего программного обеспечения, сделанного с помо­щью использованного открытого кода. Поэтому в настоящее время сложилась такая ситуация, чти имеется уже несколько десятков компаний, занимающихся созданием дистрибутивов для этой операционной системы. Каждая компания, подготавлива­ющая дистрибутив, помимо собственно операционной системы добавляет к нему свой инсталлятор, утилиты, в том числе менеджер пакетов программ, конфигура­торы и, наконец, большой набор прикладного программного обеспечения. При этом она привносит в систему свои изменения, не согласуя их с другими (за исключе­нием самого ядра, работу над которым по-прежнему курирует Торвальдс).

В противоположность Linux операционная система FreeBSD имеет такого коор­динатора — это университет и Беркли, Калифорния. Любой может изучить тексты кодов этой операционной системы и предложить внести в нее слои изменения, но это не означает, что так и будет сделано, даже если изменения разумны. Только координирующая группа BSD имеет на это право.

В частности, еще одним важным отличием FreeBSD от Linux является то, что ядро FreeBSD построено по принципам микроядерных операционных систем, тогда как Linux - это макроядерная операционная система.

 

 

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

 

7.     Расскажите об особенностях ОС Linux.

8.     Какие проблемы важны для Linux.

9.     Какой ОС является ОС FreeBSD

10. Укажите основные различия между Linux и FreeBSD.

 

 

 

 

 

Лекция 14. Сетевая операционная система

реального времени QNX

План:

1.     Сетевые ОС реального времени QNX и её особенности.

2.     Архитектура ОС QNX.

3.     Семейство ОС OS/2 Warp компоненты IBM.

4.     Особенности архитектуры и основные возможности (интерфейс).

 

 

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

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

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

Операционная система QNX, будучи сетевой и мультизадачной, в то же время яв­ляется многопользовательской (многотерминальной). Кроме того, она масштаби­руема. С точки зрения пользовательского интерфейса и интерфейса прикладного программирования она очень похожа на UNIX, поскольку выполняет требования стандарта POSIX. Однако QNX — это не версия UNIX, хотя почему-то многие так считают. Система QNX была разработана, что называется, «с нуля» канадской фирмой QNX Software Systems Limited в 1989 году по заказу Министерства оборо­ны США, причем на совершенно иных архитектурных принципах, нежели исполь­зовались при создании операционной системы UNIX.

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

Предсказуемость означает применимость системы к задачам жесткого ре­ального времени. QNX является операционной системой, которая дает пол­ную гарантию того, что процесс с наивысшим приоритетом начнет выпол­няться практически немедленно, и критически важное событие (например, сигнал тревоги) никогда не будет потеряно. Ни одна версия UNIX не может достичь подобного качества, поскольку нереентерабельный код ядра слиш­ком велик. Любой системный вызов из обработчика прерывания в UNIX может привести к непредсказуемой задержке (то же самое можно сказать про Windows NT).

       Масштабируемость и эффективность достигаются оптимальным использова­нием ресурсов и означают применимость QNX для встроенных (embedded) си­стем.

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

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

Компактная графическая подсистема Photon, построенная на тех же принци­пах модульности, что и сама операционная система, позволяет получить пол­нофункциональный интерфейс GUI (расширенный интерфейс Motif), работа­ющий вместе с POSIX-совместимой операционной системой всего в 4 Мбайт памяти, начиная с i80386 процессора.

 

Архитектура системы QNX

Итак, QNX — это операционная система реального времени для персональных компьютеров, позволяющая эффективно организовать распределенные вычисле­ния. В системе реализована концепция связи между задачами на основе сообще­ний, посылаемых от одной задачи к другой, причем задачи эти могут решаться как на одном и том же компьютере, так и на разных, но связанных между собой ло­кальной вычислительной сетью. Реальное время и концепция связи между про­цессами посредством сообщений оказывают решающее влияние и на разрабатывае­мое для операционной системы QNX программное обеспечение, и на программиста, стремящегося с максимальной выгодой использовать преимущества системы. Микроядро операционной системы QNX имеет объем всего в несколько десятков килобайтов (в одной из версий — 10 Кбайт, в другой — менее 32 Кбайт, хотя есть вариант и на 46 Кбайт), то есть это одно из самых маленьких ядер среди всех суще­ствующих операционных систем. В этом объеме помещаются:

механизм передачи сообщений между процессами IPC (Inter Process Communication — взаимодействие между процессами);

□ Редиректор (redirector) прерываний;

       блок планирования выполнения задач (иначе говоря, диспетчер задач);

сетевой интерфейс для перенаправления сообщений (менеджер Net).

 

Основные механизмы организации распределенных вычислений

QNX является сетевой операционной системой, которая позволяет организовать эффективные распределенные вычисления. Для этого на каждой машине, называемой узлом, помимо ядра и менеджера процессов должен быть запущен уже упо­мянутый ранее менеджер Net. Менеджер Net не зависит от аппаратной реализа­ции сети. Эта аппаратная независимость обеспечивается за счет сетевых драйверов. В операционной системе QNX имеются драйверы для сетей с различными техно­логиями: Ethernet и FastEthernet, Arcnet, IBM Token Ring и др. Кроме того, имеет­ся возможность организации сети через последовательный канал или модем.

 

Семейство операционных систем OS/2

Warp компании IBM

История появления, расцвета и практического ухода со сцены операционных сис­тем под общим названием OS/2 и странна, и поучительна. Будучи одной из самых лучших операционных систем для персональных компьютеров по очень большо­му числу параметров и появившись существенно раньше систем своих основных конкурентов, она тем не менее не смогла стать самой распространенной, хотя мог­ла бы, и с легкостью. Основная причина тому — законы бизнеса (умение реклами­ровать свой товар, всячески поддерживать его продвижение, вкладывать деньги в завоевание рынка), а не качество самой операционной системы. Во-первых, ком­пания IBM не сочла необходимым продвигать свою операционную систему на ры­нок программного обеспечения, ориентированного на конечного пользователя, а решила продолжить свою практику работы исключительно с корпоративными клиентами. А этот рынок (корпоративного программного обеспечения) оказался существенно уже для персональных компьютеров, чем рынок программного обес­печения для конечного пользователя, ибо компьютеры типа IBM PC прежде всего являются персональными. Во-вторых, основные доходы компания IBM получала не от продажи системного программного обеспечения для персональных компью­теров, а за счет продаж дорогостоящих серверов и другого оборудования. Доходы от продажи операционной системы OS/2 не представлялись руководству компа­нии IBM значимыми. Чтобы добиться успеха на рынке операционных систем для персональных компьютеров, необходимо было обеспечить всестороннюю поддер­жку своей системы соответствующей учебной литературой, широкой рекламой, заинтересовать разработчиков программного обеспечения. Увы, этого сделано не было, и сегодня уже практически мало кто знает о системах семейства OS/2. В то же время следует отметить, что те организации и предприятия, которые в свое время освоили эту систему и создали для нее соответствующее прикладное про­граммное обеспечение, до сих пор не переходят на ныне чрезвычайно популяр­ные операционные системы Windows NT/2000/XP, поскольку последние требу­ют существенно больше системных ресурсов.

Все последние версии операционной системы OS/2 в своем названии имеют слово Warp, что переводится с английского как «основа». Операционная система OS/2 Warp 4.0 практически представляет собой OS/2 Warp 3.0 (вышедшую еще в 1994 году) с несколько улучшенной поддержкой DOS-задач и обновленными элементами объектно-ориентированного интерфейса. Для этой системы характерны:

       вытесняющая многозадачность (preemptive multitasking) и поддержка DOSWindows- (Win32s1) приложений;

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

□ поддержка стандарта открытого объектного документооборота OpenDoc;

  поддержка стандарта OpenGL;

поддержка Java-апплетов и встроенных средств разработки на языке Java;
□ поддержка шрифтов
True Type (TTF);

□ управление голосом без предварительной подготовки (технология Voice Type);

□ полная поддержка сетевых технологий Интернет/интранет, доступ в сети Com­puServe2;

средства построения одноранговых сетей и клиентские части для сетевых опе­рационных систем IBM LAN Server, Windows, Lantastic, Novell Netware 4.1 (в том числе поддержка службы каталогов);

□ система удаленного доступа через модемные соединения;

    файловая система Mobile File System для поддержки мобильных пользовате­лей;

    стандарт автоматического распознавания аппаратных устройств (Plug-and-Play), но без столь навязчивого механизма, который реализован в Windows;

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

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

Чрезвычайно важным для пользователей является тот факт, что компания IBM для всех версий своей операционной системы регулярно выпускает пакеты обнов­ления (FixPak). Эти пакеты исправляют обнаруженные ошибки, а также вносят новые функции.

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

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

Наиболее сильное впечатление при работе в операционной системе OS/2 оставля­ет объектно-ориентированный графический пользовательский интерфейс, а осо­бой популярностью у программистов эта система пользовалась вследствие очень хорошей организации VDM-машин и высокого быстродействия при выполнении обычных DOS-приложений.

 

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

 

1 Изложите основные архитектурные особенности операционных систем семей­ства UNIX. Попробуйте объяснить основные различия между системами UNIX и Windows.

2.            Перечислите и поясните основные понятия, относящиеся к UNIX-системам.

3.            Что делает системный вызов fork()? Каким образом осуществляется в опера­ционных системах семейства UNIX запуск новой задачи?

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

5. Что представляет собой X-Window? Что такое оконный менеджер? Какие окон­ные менеджеры для операционной системы Linux вы знаете?

 

 

 

 

Лекция 15. Операционные

Системы Windows 9.Х.

План:

1.     Операционные системы Windows.

2.     ОС Windows 9.X.

3.     Архитектура и основные возможности.

4.     ОС Windows NT/2000/XP.

5.     Основные особенности архитектуры Windows NT/2000/XP.

 

 

Как известно, компания Microsoft является безусловным лидером и разработке программного обеспечения для персональных компьютеров. Среди разнообразных программных продуктов этой компании особое место занимают ее операционные системы. Начав с разработки простейшей однопрограммной операционной систе­мы для первого персонального компьютера, эта компания недавно выпустила не­сколько версий серверной операционной системы Windows 2003, которые пред­назначены для построения корпоративных сетей и считаются на сегодняшний день одними из самых сложных и полнофункциональных. Для встроенных систем (в том числе систем для карманных компьютеров и других мобильных систем) Microsoft разработала операционные системы семейства Windows СЕ. Последняя такая опе­рационная система для популярных компьютеров типа Pocket РС получила на­звание Microsoft Windows Mobile 2003 for Pocket PC. (Операционные системы Windows СЕ имеют тот же интерфейс Win32 API, что и системы для персональ­ных компьютеров.)

Впервые слово «Windows», что, как известно, в переводе с английского дословно означает окна, компания Microsoft использовала в названии своей программной системы для персональных компьютеров, призванной предоставить пользовате­лям графический интерфейс и возможность работать с несколькими приложения­ми. Первые системы Windows представляли собой своеобразную оболочку, запус­каемую из операционной системы MS DOS, которая переключала центральный процессор в защищенный режим работы и позволяла организовать параллельное выполнение нескольких задач. Наличие графического интер­фейса пользователя (Graphical User Interface, GUI) и широкая поддержка его со стороны компании Microsoft привели к тому, что большинство новых программ­ных продуктов стали создаваться в расчете на эти новые возможности. Со временем компания Microsoft все больше внимания стала уделять обеспечению надеж­ности вычислений и их эффективности, однако задача обеспечить пользователя интуитивно понятным и в целом удобным графическим интерфейсом, похоже, так и осталась главной.

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

Основной особенностью систем Windows является то, что все они предназначены для диалогового режима работы, и поэтому в качестве основного интерфейса вы­бран графический, как более функциональный и удобный. Если в таких операци­онных системах, как Linux, QNX или OS/2, можно работать с системой через интерфейс командной строки и этим ограничиться, то во всех системах Windows невозможно получить текстовый интерфейс командной строки без графического.

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

 

Операционные системы Windows 9х. Краткая историческая справка

В те годы, когда появилась первая система Windows, а это произошло в ноябре 1985 года, наибольшее распространение имели компьютеры на базе процессора i80286.

После первой системы Windows, которая себя только обозначила, компания Microsoft в течение нескольких лет принимала активное участие в работах по созда­нию операционной системы OS/2. Кстати, операционная система Windows NT «выросла» из проекта OS/2, который имел версию 3.0.

 

Общие сведения

Операционные системы Windows 9х создавались для работы только на IBM-со-вместимых персональных компьютерах. Они не являются переносимыми и на дру­гих платформах (на процессорах, не совместимых с архитектурой iа32) не работа­ют. Как и для всего остального программного обеспечения от Microsoft исходные коды операционных систем закрыты, поэтому подробного описания ее архитекту­ры практически нет; имеются только многочисленные публикации о том, как сле­дует использовать эти системы.

Операционные системы семейства Windows 9х предназначены, главным образом, для домашнего, а не корпоративного применения. Уже многие годы они являются самыми распространенными в мире. Хотя они допускают возможность работы с компьютером нескольких пользователей (естественно, по очереди, поскольку сис­темы являются однотерминальными), в них не поддерживается механизм учет­ных записей, как в остальных 32-разрядных операционных системах. Каждый пользователь может иметь свое собственное рабочее окружение, то есть свой вид рабочею стола (desktop), состав панели задач (taskbar) и меню Пуск (Start), пара­метры настройки используемых программ и многое другое. Это собственное рабочее окружение называется профилем (profile), и при включении такой возможнос­ти В системном каталоге образуется вложенный каталог с именем ProFiles, в кото­ром и размещаются профили пользователей

С точки зрения базовой архитектуры операционные системы семейства Windows 9х являются 32-разрядными и мультизадачными (многопоточными) системами с вытесняющей многозадачностью. Ядра у всех этих операционных систем построе­ны по макроядерной архитектуре. Ядро состоит из трех основных компонентов: Kernel, User и GDI. Модуль Kernel обеспечивает основную функциональность опе­рационной системы, в том числе: планирование процессов; поддержку потоков выполнения; синхронизацию объектов; работу с файлами, отображаемыми на па­мять; управление памятью; файловый ввод-вывод; обработку исключений; работу консолей; Компонент User управляет вводом с клавиатуры и координатных устройств (типа мыши) и выводом через пользовательский интерфейс. Когда то или иное устройство ввода генерирует пре­рывания, обработчик прерываний, используя модель асинхронного ввода, преоб­разует их в сообщения и посылает потоку необработанного ввода, который рас­пределяет их по соответствующим очередям сообщений. Наконец, компонент ядра, называемый GDI (Graphical Device Interface— графический интерфейс устройства), представляет собой графическую подсистему, которая отвечает за прори­совку графических примитивов, операции с растровыми изображениями и взаи­модействие с аппаратно-независимыми графическими драйверами, GDI управля­ет выводом на экран, принтеры и другие устройства.

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

 

Организация многозадачности

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

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

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

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

·        Постсинхронизированное снижение приоритета. Ранее повышенное значение приоритета постепенно возвращается к исходному значению.

·        Наследование приоритета. Служит для быстрого повышения приоритета. Обыч­но это делается для того, чтобы позволить потоку с низким приоритетом быстро закончить работу с выделенным для монопольного использования ресурсом, который необходим потокам с высоким приоритетом. Windows 95/98 восста­навливает исходное значение унаследованного приоритета сразу же после удов­летворения конфликтного условия.

 

Распределение оперативной памяти

Для загрузки операционные системы Windows 95/98 используют операционную систему MS DOS 7.0 (MS DOS 98). и в случае если в секции [Options] файла MSDOS.SYS имеется строка BootGUI= 0, процессор работает в обычном реальном режиме. Распределение памяти в MS DOS 7.0 такое же, как и в предыдущих версиях DOS. Однако при загрузке интерфейса GUI перед загрузкой ядра Windows 95/98 процессор переключается в защищенный режим работы и начинает распределять память уже с помощью страничного механизма.

Приложения и подсистемы Windows 9х (за исключением ядра) никогда не рабо­тают с физической памятью. Разделение на виртуальную и физическую память является ключевым аспектом работы системы. Приложения и подсистемы Windows 9х имеют дело с определенными интерфейсами прикладного программиро­вания и виртуальными адресными пространствами. Базовая система работает как с физической памятью, так и с виртуальными адресными пространствами.

 

Операционные системы Windows NT/2000/XP

Компания Microsoft в 1990 году объявила о начале работ по созданию принципи­ально новой операционной системы для персональных IBM PC-совместимых компьютеров с прицелом на корпоративный сектор, которая помимо банальной муль­тизадачности и поддержки виртуальной памяти обладала бы, в частности, такими качествами, как:

·        микроядерная архитектура — сказалось влияние идей проекта Mach 3, выпол­ненного в университете Карнеги Меллон (Carnegie Mellon University), которое в то время было очень велико;

·        аппаратная независимость (platform independent), что должно было обеспечить легкую переносимость системы;

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

·        возможность выполнения приложений, созданных для других операционных систем, в частности приложений для UNIX и 16-разрядных программ OS/2;

·        защита информации и вычислений от несанкционированного доступа;

·        наличие высокопроизводительной и надежной файловой системы и возмож­ность работать с несколькими файловыми системами;

·        встроенные сетевые функции и поддержка распределенных вычислений.

Однако Windows NT 3.1 в качестве рабочей станции уступала системе OS/2, поскольку требовала существенно больше оперативной памяти и имела от­носительно низкое быстродействие. Кроме этого, при работе с дисками, отформа­тированными под файловую систему FAT, она не поддерживала длинные имена.

Системы Windows NT 3.x не смогли тогда завоевать признание ни в качестве сер­верных, ни в качестве обычных настольных систем, поскольку требовали очень больших (по меркам того времени) вычислительных ресурсов.

 

Как ни странно, но еще одним недостатком этих первых систем Windows NT было гтоогое следование идеям микроядерной архитектуры. Желая исправить эти недочеты, Microsoft запустила проект Cairo и в 1996 г. выпустила операционные системы Windows NT 4.0 Server и Windows NT 4.0 Workstation.

К сожалению, в своей новой операционной системе компания Microsoft отказа­лась от поддержки высокопроизводительной файловой системы HPFS, с которой работают операционные системы OS/2, хотя при желании пользователь мог сам до­бавить соответствующие драйверы из дистрибутива предыдущей Windows NT 3.x.

Желая противопоставить свою серверную операционную систему известным се­тевым операционным системам корпоративного уровня Nowell Netware 4.x и Netware 5х, компания Microsoft разработала новое семейство операционных систем класса NT, которое должно было изначально называться Windows NT 5.0, однако из маркетинговых соображений было переименовано в Windows 2000. В семей­ство этих систем вошли четыре операционные системы.

·        Windows 2000 Professional — для использования в качестве рабочей станции вместо Windows NT 40 Workstation или Windows 98. Эта операционная систе­ма может работать на 2-процессорных компьютерах.

·        Windows 2000 Server— для использования в качестве контроллера домена и/или сервера (файлов, приложений, баз данных, web и/или FTP, печати и т. д.) в относительно небольшой сети, которую могут себе позволить иметь предприятия малого и среднего бизнеса. Эта операционная система поддерживает 4-процессорные конфигурации.

·        Windows 2000 Advanced Server — для тех же целей, что и Windows 2000 Server, но с упором на выполнение функций сервера приложений и сервера баз дан­ных. Обладает возможностью работать на компьютере с восемью процессора­ми и, самое главное, организовать кластер из двух машин.

·        Windows 2000 Datacenter Server — специальная версия операционной систе­мы, предназначенная для работы в вычислительных сетях крупных предприя­тий. Система хорошо масштабируется, позволяет построить 4-узловой кластер, причем каждая из машин может иметь вплоть до 16 процессоров.

Наверное, самыми главными особенностями этих операционных систем (по сравне­нию с предыдущими Windows NT 4.0) следует назвать поддержку механизма Plug and Play (как и в системах Windows 9х) и использование службы каталогов как ос­новы для построения сетей клиент-сервер. Служба каталогов Microsoft, получила наименование Active Directory. Принципиальной особенностью этой технологии яв­ляется ее глубокая интеграция с ТСР/IP.

Осенью 2001 года Microsoft обновила операционную систему Windows 2000 Professional до Windows ХР (eXPerience). При этом она выпустила две редакции. Одна из них представляла собой «облегченный» вариант системы для домашнего при­менения. Она получила название Windows ХР Home Edition. Системы Windows XP в еще большей мере стали мультимедийными и ориентированными на Интер­нет. Интересным новшеством для систем Windows стала возможность организо­вать одновременную работу с компьютером двух пользователей: для одного непо­средственно (локально), а для второго удаленно с другого компьютера.

Наконец, весной 2003 года на замену семейству Windows 2000 вышли несколько серверных операционных систем, которые получили в название число 2003. Это следующие 32-разрядные операционные системы для микропроцессоров с архитек­турой iа-32.

·        Windows Small Business Server 2003 — предназначена для построения неболь­ших локальных вычислительных сетей.

·        Windows Server 2003 Web Edition — это самая «облегченная» система, она не может выступать в роли контроллера домена и быть сервером приложений.

·        Windows Server 2003 Standard Edition — основная многоцелевая операционная система, пришедшая на смену Windows 2000 Server.

·        Windows Server 2003 Enterprise Edition — аналог Windows 2000 Advanced Server.

·        Windows Server 2003 Datacenter Edition.

Последние две операционные системы имеют разновидности для 64-разрядных процессоров Itanium 2 производства компании Intel.

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

 

Основные особенности архитектуры

Наиболее принципиальным отличием между системами класса Windows 9х и Windows NT является то, что у них разная архитектура.

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

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

Одним из важнейших компонентов операционных систем Windows NT/2000/XP, который появился вследствие следования микроядерному принципу их построе­ния, является исполняющая система (Win32 Executive). Она выполняет такие ба­зовые функции операционной системы, как управление процессами и потоками, управление памятью, взаимодействие между процессами, защиту, операции вво­да-вывода (включая файловые операции, кэширование, работу с сетью и некото­рые другие). Ниже перечислены компоненты исполняющей системы.

·        Диспетчер процессов (Process Manager) создает, отслеживает и удаляет про­цессы. Для выполнения этих функций создается соответствующий дескриптор, определяются базовый приоритет процесса и карта адресного пространства, создается и поддерживается список всех готовых к выполнению потоков.

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

·        Диспетчер объектов (Object Manager) создает и поддерживает объекты. В част­ности, поддерживаются дескрипторы объектов и атрибуты защиты объектов. Объектами считаются каталоги, файлы, процессы и потоки, семафоры и собы­тия и многие другие.

·        Монитор безопасности (Security Reference Monitor) обеспечивает санкционирование доступа к объектам, контроль полномочий доступа и ведение аудита. Совместно с процессом входа в систему (logon) и защищенными подсистемами реализует модель безопасности Windows NT.

·        Диспетчер ввода-вывода (Input/Output Manager) управляет всеми операция­ми ввода-вывода в системе. Организует взаимодействие и передачу данных между всеми драйверами, включая драйверы файловых систем, драйверы фи­зических устройств, сетевые драйверы, для чего используются структуры дан­ных, называемые пакетами запросив на ввод-вывод (I/O Request Packet, IRP). Запросы на ввод-вывод обрабатываются в порядке приоритетов, а не в порядке их поступления. Операции ввода-вывода квитируются, этим процессом управ­ляет диспетчер кэша (Cache Manager). Поддерживаются различные файловые системы, причем драйверы этих систем воспринимаются диспетчером ввода-вывода как драйверы физических устройств. Специальное сетевое системное программное обеспечение (редиректор и сервер) трактуются как сетевые драй­веры и также имеют непосредственную связь с диспетчером ввода-вывода.

·        Средства вызова локальных процедур (Local Procedure Call, LPC) обеспечивают выполняющиеся подсистемы среды выполнения и приложения пользователей коммуникационным механизмом, в котором взаимодействие строится по прин­ципу клиент-сервер.

 

 

Модель безопасности

При разработке всех операционных систем семейства Windows NT/2000/XP ком­пания Microsoft уделяла самое пристальное внимание обеспечению информаци­онной безопасности. Как следствие, эти системы предоставляют надежные меха­низмы защиты, которые просты в использовании и легки в управлении. Сертификат безопасности на соответствие уровню С2 имеют операционные системы Windows NT 3.5 и Windows NT 4.0. Операционные системы семейства Windows 2000 имеют еще более серьезные средства обеспечения безопасности, однако на момент написания этой книги они еще не сертифицировались.

В отличие от операционных систем семейства Windows 9х, как, впрочем, и от сис­темы OS/2, в разработке первой версии которой Microsoft тоже принимала учас­тие, системы класса Windows NT имеют совершенно иную модель безопасности. Средства защиты изначально глубоко интегрированы в операционную систему. Подсистема безопасности осуществляет контроль за тем, кто и какие действия со­вершает в процессе работы, к каким объектам пытается получить доступ. Все дей­ствия пользователя, в том числе и обращения ко всем объектам, как нетрудно до­гадаться, на самом деле могут быть совершены только через соответствующие запросы к операционной системе. Операционная система использует этот факт и имеет все необходимые механизмы для тотального контроля всех запросов к ней. Запрашиваемые у операционной системы операции и обращения к конкретным объектам разрешаются, только если у пользователя для этого имеются необходи­мые права и/или разрешения. При этом обязательно следует различать эти поня­тия.

Права (rights) определяют уровень полномочий при работе в системе. Например, если нет права форматировать диск, то выполнить это действие пользователь не сможет. Кстати, конкретно таким правом при работе с Windows NT/2000/XP об­ладают только члены группы администраторов. Можно говорить и о праве изме­нения настроек дисплея, и о праве работать на компьютере. Очевидно, что перечень прав является достаточно большим. Права могут быть изменены посредством применения соответствующих политик.

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

Модель безопасности Windows  NT гарантирует, что не удастся получить доступ к ее объектам без того, чтобы предварительно пройти аутентификацию и авторизацию, Для того чтобы иметь право работать на компьютере, необходимо иметь учетную запись (account). Учетные записи хранятся в базе данных учетных записей, которая представлена файлом SAM (Security Account Management).

 

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

 

1.  Опишите основные архитектурные особенности операционных систем семей­ства Windows 9х.

2.  Расскажите об организации мультизадачности в операционных системах Windows.

3. Опишите основные архитектурные особенности операционных систем семей­ства Windows NT

4.  Изложите основные идеи модели безопасности, принятой в системах Windows NT.

5. Расскажите о разреше­ниях файловой системы NTFS. Что такое SID?

 

 

 

 

 

Лекция 16. Основные понятия информационной безопасности.

План:

1.     Обеспечение безопасности информационных систем.

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

3.     Угрозы безопасности.

4.     Основа полагающие документы, в регламентированы основные понятия безопасности.

5.     Базовые технологии безопасности криптографии.

6.     Защитные механизмы ОС. Основные понятия информационной безопасности. Безопасность и защита ОС.  

Введение

В октябре 1988 г. в США произошло событие, названное специалистами крупнейшим нарушением безопасности амеpиканских компьютеpных систем из когда-либо случавшихся. 23-летний студент выпускного куpса Коpнельского унивеpситета Робеpт Т. Моppис запустил в компьютеpной сети ARPANET пpогpамму, пpедставлявшую собой pедко встpечающуюся pазновидность компьютеpных виpусов – сетевых "чеpвей". В pезультате атаки был полностью или частично заблокиpован pяд общенациональных компьютеpных сетей, в частности Internet, CSnet, NSFnet, BITnet, ARPANET и несекpетная военная сеть Milnet. В итоге виpус поpазил более 6200 компьютеpных систем по всей Амеpике, включая системы многих кpупнейших унивеpситетов, институтов, пpавительственных лабоpатоpий, частных фиpм, военных баз, клиник, агентства NASA. Общий ущеpб от этой атаки оценивается специалистами минимум в 100 млн. долл. Р. Моppис был исключен из унивеpситета с пpавом повтоpного поступления чеpез год и пpиговоpен судом к штpафу в 270 тыс. долл. и тpем месяцам тюpемного заключения.

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

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

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

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

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

Угрозы безопасности

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

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

Конфиденциальная (confidentiality) система обеспечивает уверенность в том, что секретные данные будут доступны только тем пользователям, которым этот доступ разрешен (такие пользователи называются авторизованными). Под доступностью (availability) понимают гарантию того, что авторизованным пользователям всегда будет доступна информация, которая им необходима. И наконец, целостность (integrity) системы подразумевает, что неавторизованные пользователи не могут каким-либо образом модифицировать данные.

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

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

Можно выделить несколько типов угроз. Наиболее распространенная угрозапопытка проникновения в систему под видом легального пользователя, например попытки угадывания и подбора паролей. Более сложный вариант – внедрение в систему программы, которая выводит на экран слово login. Многие легальные пользователи при этом начинают пытаться входить в систему, и их попытки могут протоколироваться. Такие безобидные с виду программы, выполняющие нежелательные функции, называются "троянскими конями". Иногда удается торпедировать работу программы проверки пароля путем многократного нажатия клавиш del, break, cancel и т. д. Для защиты от подобных атак ОС запускает процесс, называемый аутентификацией пользователя (см. лекцию 16, раздел "Идентификация и аутентификация").

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

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

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

Формализация подхода к обеспечению информационной безопасности

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

Наиболее известна оранжевая (по цвету обложки) книга Министерства обороны США [DoD, 1993]. В этом документе определяется четыре уровня безопасности – D, С, В и А. По мере перехода от уровня D до А к надежности систем предъявляются все более жесткие требования. Уровни С и В подразделяются на классы (C1, C2, В1, В2, ВЗ). Чтобы система в результате процедуры сертификации могла быть отнесена к некоторому классу, ее защита должна удовлетворять оговоренным требованиям.

В качестве примера рассмотрим требования класса C2, которому удовлетворяют ОС Windows NT, отдельные реализации Unix и ряд других.

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

Сегодня на смену оранжевой книге пришел стандарт Common Criteria, а набор критериев Controlled Access Protection Profile сменил критерии класса C2.

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

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

Формируя политику безопасности, необходимо учитывать несколько базовых принципов. Так, Зальтцер (Saltzer) и Шредер (Schroeder) (1975) на основе своего опыта работы с MULTICS сформулировали следующие рекомендации для проектирования системы безопасности ОС.

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

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

Криптография как одна из базовых технологий безопасности ОС

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

Шифрование – процесс преобразования сообщения из открытого текста (plaintext) в шифротекст (ciphertext) таким образом, чтобы:

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

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

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

 

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

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

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

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

Защитные механизмы операционных систем.

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

Идентификация и аутентификация

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

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

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

Пароли, уязвимость паролей

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

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

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

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

Шифрование пароля

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

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

Авторизация. Разграничение доступа к объектам ОС

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

Выявление вторжений. Аудит системы защиты

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

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

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

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

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

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

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

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

 

 

Анализ некоторых популярных ОС с точки зрения их защищенности

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

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

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

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

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

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

2.     Свойства безопасных систем.

3.     Виды угроз безопасности систем и программы нарушающие функционирование систем.

4.     Требования класса безопасности (к-р С-2) и базовые принципы проектирования системы безопасности ОС (MULTI CS).

5.     Использование криптографии для безопасности.

6.     Идентификация и аутентификация.

7.     Авторизация, разграничение доступа к объектам ОС. Аудит систем защиты.