МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE ТЕМА1. ВВЕДЕНИЕ В ОПЕРАЦИОННЫЕ СИСТЕМЫ Цель темы: раскрыть назначение, основные функции особенности построения современных операционных систем. и архитектурные В результате изучения темы обучающиеся должны усвоить: назначение операционной системы, ее место и роль в вычислительной системе; задачи, возлагаемые на операционную систему, и распределение их между основными подсистемами; понятие операционной среды и человеко-машинного интерфейса; понятие сетевых и распределенных операционных систем; основные термины и понятия, применяемые в теории построения операционных систем; многослойный подход к построению операционных систем. Оглавление 1.1. Определение, назначение, состав и функции операционных систем .......................................................................................................................................... 2 1.1.1. Определение и назначение операционной системы.................... 2 1.1.2. Понятие операционной среды ............................................................. 2 1.1.3. Операционные оболочки....................................................................... 3 1.1.4. Рациональное управление ресурсами компьютера ........................ 4 1.2. Сетевые операционные системы ............................................................... 6 1.2.1. Локальные и глобальные сети ............................................................... 6 1.2.2. Назначение и функциональные компоненты сетевых операционных систем ........................................................................................... 7 1.2.3. Компоненты сети ........................................................................................ 9 1.3. Архитектура операционных систем ............................................................. 9 1.3.1. Архитектура операционной системы, основанная на ядре ......... 9 1.3.2. Микроядерная архитектура .................................................................. 13 1.3.3. Совместимость операционных систем ............................................... 14 Выводы ........................................................................................................................ 15 Вопросы для самопроверки .................................................................................. 15 За полувековой период своего существования операционные системы (ОС) прошли сложный путь развития, находясь под постоянным влиянием успехов в области технологии производства элементной базы и вычислительной техники. Важной вехой в развитии ОС явилась реализация мультипрограммирования – способа организации вычислительного процесса, когда в памяти компьютера одновременно находится несколько программ, попеременно выполняемых процессором. В 1990-е гг. в результате бурного развития персональных компьютеров и на их основе локальных сетей и сети Интернет практически все операционные системы стали сетевыми. Особое внимание в течение последнего десятилетия уделялось корпоративным сетевым ОС. В настоящее время определились лидеры в классе корпоративных операционных систем: Windows 2000/XP, Windows 2003 (в настоящее время активно сменяющие ранние версии Windows) и UNIX-системы. 1 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE 1.1. Определение, назначение, состав и функции операционных систем Существует большое количество ОС. Можно выполнить обширную классификацию их по самым различным критериям. Поэтому при изучении операционных систем выделим только те функции, которые присущи всем ОС как классу продуктов. 1.1.1. Определение и назначение операционной системы Можно встретить различные определения операционной системы, но смысл их одинаковый. Операционная система – комплекс взаимосвязанных программ, который действует как интерфейс между приложениями и пользователями с одной стороны, и аппаратурой компьютера – с другой стороны. Отсюда две группы функций ОС, определяющих ее двухстороннее назначение: предоставление пользователю или программисту вместо реальной аппаратуры компьютера расширенной виртуальной машины, с которой удобнее работать и которую легче программировать. Программные модули ОС, формирующие человеко-машинный интерфейс, предназначены для повышения эффективности работы человека, которая достигается максимальным использованием всех его органов чувств при работе с компьютером; повышение эффективности использования компьютера путем рационального управления его ресурсами. Первая группа функций операционной системы направлена на взаимодействие с пользователем ОС. При этом следует различать интерфейс прикладного программиста, создающий операционную среду, и пользовательский, человеко-машинный интерфейс. Вторая группа функций ОС направлена на взаимодействие с аппаратурой компьютера. Рациональное управления ресурсами компьютера повышает эффективность его использования. 1.1.2. Понятие операционной среды Операционная система избавляет программистов, пишущих приложения, от необходимости напрямую работать с аппаратурой компьютера: системой команд процессора, секторами и дорожками диска, физическими адресами памяти и т. п. Программисту ОС дает так называемую операционную среду – набор системных функций (сервисов), который вместе с правилами их использования создает интерфейс прикладного программирования (Application Program Interface, API) этой ОС. Приложение выполняет обращение к функциям API с помощью системных запросов. Операционная система выполняет функции API, запуская специальные системные программные модули, входящие в ее состав. В высокоуровневых языках программирования обращение к системным функциям зачастую скрыто определенными синтаксическими конструкциями языка. Поэтому прикладной программист напрямую может к ним и не обращаться. У разных операционных систем свой операционной системе с одним API, не Пытаясь преодолеть это ограничение, в образом, в общем случае операционная сред. API. Очевидно, что программа, созданная в некоторой будет работать в операционной системе с другим API. ОС стали применять поддержку нескольких API. Таким система может поддерживать несколько операционных Другое направление преодоления этого ограничения – попытка стандартизации функции API. Примером может служить известный и, пожалуй, единственный стандарт POSIX (Portable Operating System Interface for Computer Environments) – независимый от платформы системный интерфейс для компьютерного окружения. В этом стандарте перечислен большой набор функций, их параметров и возвращаемых значений. Стандарт предназначен для открытых систем и поэтому базируется на UNIX-системах, но допускает реализацию и в других операционных системах. 2 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Частным случаем попытки стандартизации API является внутренний корпоративный стандарт компании Microsoft, известный как WinAPI, который ориентирован на работу в графической среде. С точки зрения WinAPI базовой задачей является окно. 1.1.3. Операционные оболочки Операционная система предоставляет пользователю набор команд, отражающий функциональные возможности ОС. Для удобства работы пользователю за компьютером современные операционные системы имеют пользовательский интерфейс. Раньше для этих целей использовались операционные оболочки – специальные прикладные программы, формирующие удобный пользовательский интерфейс и принимающие от пользователя управляющие команды. Понятие операционной оболочки на сегодняшний день уже устарело, т. к. формирование удобного пользовательского интерфейса стало обязательной задачей самой операционной системы. Часто приводят следующую классификацию различных интерфейсов общения человека и компьютера: 1. Командный интерфейс. Он называется так потому, что в этом виде интерфейса человек подает "команды" компьютеру, а компьютер их выполняет и выдает результат человеку. Командный интерфейс реализован в виде пакетной технологии и технологии командной строки. Простейший программный модуль, входящий в состав операционной системы, который отвечает за чтение отдельных команд пользователя или последовательности команд, поступающих из командного файла, называют командным интерпретатором (например, в Windows-2000 – это программа cmd, а в Linux – shell). 2. WIMP-интерфейс (Window – окно, Image – образ, Menu – меню, Pointer – указатель). Характерной особенностью этого вида интерфейса является то, что диалог с пользователем ведется не с помощью команд, а с помощью графических образов – меню, окон, других элементов. Хотя и в этом интерфейсе подаются команды машине, но это делается опосредственно, через графические образы. Основными понятиями графического интерфейса являются понятия рабочей области, окна и иконки, или значка. Любой объект в графическом интерфейсе, так или иначе, связан с этими понятиями. Следует отметить, что WIMP требует для своей реализации цветной дисплей с высоким разрешением и манипулятор. Также программы, ориентированные на этот вид интерфейса, предъявляют повышенные требования к производительности компьютера, объему его памяти, пропускной способности шины и т. п. Однако этот вид интерфейса наиболее прост в усвоении и интуитивно понятен. Поэтому сейчас WIMP-интерфейс стал стандартом де-факто. Набор системных функций API, предоставляющих графические возможности прикладным программам, обозначают как GUI (Graphical User Interface – графический интерфейс пользователя). Ярким примером программ с графическим интерфейсом является операционная система Microsoft Windows. 3. SILK-интерфейс (Speech – речь, Image – образ, Language – язык, Knowlege – знание). Этот вид интерфейса наиболее приближен к обычной, человеческой форме общения. В рамках этого интерфейса идет обычный "разговор" человека и компьютера. При этом компьютер находит для себя команды, анализируя человеческую речь и находя в ней ключевые фразы. Результат выполнения команд он также преобразует в понятную человеку форму. Это очень перспективное направление хотя бы по указанной выше причине: вводить информацию с голоса – самый быстрый и удобный способ. Но его практические реализации пока не стали доминирующими – все-таки качество распознавания устной речи пока далеко от идеала. Компания IBM поведала об успешном завершении разработки системы распознавания голосовых команд. Новинка ViaVoice IBM 4.4 основана на семантической интерпретации и так называемом языковом моделировании. В отличие от большинства систем голосового управления, лишь сравнивающих ту или иную команду с записанным в их памяти образцом, новая система позволяет управлять каким-либо оборудованием, отдавая команды в свободной форме, не требуя от пользователя запоминать их четкую формулировку. Первейшей областью применения таких систем станут автомобили – пользователи смогут отдавать команды автомагнитоле и другой встроенной электронике, а также сервисным системам самого автомобиля. Дальнейшее совершенствование человеко-машинного интерфейса направлено в сторону повышения комфортности работы пользователя с использованием достижений в области мультимедиа, гипермедиа, систем распознавания речи, сенсорных технологий и т. п. 3 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE В частности, в конце 90-х гг. XX в. возникла так называемая биометрическая технология ("мимический интерфейс"). В этой технологии для управления компьютером используется выражение лица человека, направление его взгляда, размер зрачка и другие признаки. Для идентификации пользователя используется рисунок радужной оболочки его глаз, отпечатки пальцев и другая уникальная информация. Изображения считываются с цифровой видеокамеры, а затем с помощью специальных программ распознавания образов из этого изображения выделяются команды. Эта технология, по-видимому, займет свое место в программных продуктах и приложениях, где важно точно идентифицировать пользователя компьютера. В 2006 г. Microsoft представила рабочий вариант одной из программ системы оптимизации информационной загруженности человека. Система претендует на роль основы принципиально нового человеко-машинного интерфейса, который придет на смену концепции Windows. Система комбинирует функции секретаря и регулировщика трафика. Она решает, какую именно информацию из входящего потока уместно предоставить пользователю в данный момент. При этом она контролирует, чем занят в данный момент пользователь – набирает текст на клавиатуре, говорит по телефону или общается лично с кем-либо в офисе, ест или спит. Поведение пользователя вне компьютера отслеживается с помощью видеокамеры и микрофона. Система непрерывно следит за человеком, анализируя его действия и зону внимания. Вместо графического интерфейса GUI основная роль ложится на "интерфейс внимания" – Attentional User Interface (AUI). Он активно фильтрует и распределяет информационные потоки – электронную и голосовую почту, интернет-новости, сообщения сетевых пейджеров и др. Этот процесс происходит на основе "приоритетов срочности", определяемых и задаваемых системой по 100-балльной шкале. Таким образом, устраняется опасность информационной перегрузки человека и повышается эффективность его работы. Предполагается, что вся система (AUI) не будет простым приложением к персональному компьютеру. Он должен обслуживать человека везде, где бы тот ни находился, общаясь с ним через мобильный телефон, карманный компьютер, пейджер и любые другие доступные средства связи. Все это вписывается в проводимую Microsoft генеральную доктрину .NET. Руководство Microsoft считает, что оконно-мышиную концепцию интерфейса, которая не менялась с середины 1980-х, сменит интеллектуальная технология, подобная представленной. 1.1.4. Рациональное управление ресурсами компьютера Основные ресурсы современного компьютера: процессоры, основная память (оперативная память), таймеры, наборы данных, диски, принтеры, сетевые ресурсы и некоторые другие. Ресурсы распределяются между процессами (задачами). Процесс – это динамический объект, который возникает в ОС после запуска какой-либо программы на выполнение. Причем однозначного соответствия между процессом и программой нет – одна программа может породить несколько процессов, а процесс в ходе своего выполнения может сменить программный файл. Задача организации эффективного совместного использования ресурсов несколькими процессами является сложной из-за случайного характера возникновения от них запросов на потребление ресурсов. ОС организует очереди заявок к ресурсам и обслуживает их по определенным алгоритмам. Функции операционной системы по управлению ресурсами обычно группируются либо в соответствии с типами ресурсов компьютера, которыми управляет ОС, либо в соответствии с задачами, применяемыми ко всем ресурсам. Программные модули ОС, которые выполняют такие группы функций, называют подсистемами. Подсистема управления процессами. Для каждого вновь создаваемого процесса ОС генерирует системные информационные структуры, которые содержат данные о потребностях процесса в ресурсах компьютера: памяти, процессорного времени и т. д. Таким образом, процесс можно определить как заявку на потребление системных ресурсов. Основные задачи подсистемы управления процессами: защита ресурсов, в первую очередь области оперативной памяти (адресного пространства процесса), выделенных одному процессу, от посягательств на них других процессов; 4 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE организация, при необходимости, совместного использования ресурсов разными процессами; восстановление операционной среды возобновляемого процесса – контекста процесса после перерыва в его работе (состояние регистров, программного счетчика и режим работы процессора, указатели открытых файлов, незавершенные операции ввода-вывода и т. п.); синхронизация процессов – приостановка их до наступления какого-либо события в системе; организация межпроцессного взаимодействия при параллельном выполнении процессов сложного программного комплекса. Подсистема управления памятью. Процесс может выполняться только в том случае, если его коды находятся в оперативной памяти. Основные задачи подсистемы управления памятью: отслеживание свободной и занятой физической оперативной памяти; выделение памяти процессам и освобождение памяти при завершении процессов; настройка адресно-зависимых частей кода процесса на конкретную область физической памяти; защита от записи или чтения памяти, предназначенной другому процессу; вытеснение процессов из оперативной памяти на диск, когда размеры основной памяти недостаточны для размещения в ней всех процессов, и возвращения их в оперативную память, когда подошла очередь предоставления процессу процессорного времени. Популярный способ управления памятью – применение механизма виртуальной памяти, который позволяет программисту писать программу так, как будто в его распоряжении имеется однородная оперативная память большого объема, превышающая объем имеющейся физической памяти. Объем виртуальной памяти ограничен только размерами адресного пространства процессора. Подсистема управления файлами и внешними устройствами. Иногда ее разделяют на две подсистемы, но современный подход организации работы с устройствами ввода-вывода как с файлами объединяет их. Файл – это неструктурированная последовательность байтов, имеющая символьное имя и размещенная во внешней памяти. Следует заметить, что в этом смысле понимается память любого типа (дисковая, электронная и т. д.); она внешняя по отношению к основной памяти, используемой для размещения кодов процессов. Основная память находится только в оперативной памяти компьютера (оперативное запоминающее устройство, ОЗУ). Следует заметить, что каталог – это тоже файл, содержащий данные о входящих в его состав файлах. Поэтому основная часть подсистемы управления файлами и внешними устройствами – это файловая система, которая решает следующие задачи: преобразует символьные имена файлов в физические адреса размещения данных этих файлов на диске; организует совместный доступ разных процессов к файлам; защищает файлы от несанкционированного доступа. Спектр различных устройств ввода-вывода очень широк. Разные производители реализуют разную логику работы этих устройств. Поэтому необходимы специальные программы – драйверы, которые обеспечивают взаимодействие этих устройств и ОС. Например, для диска – это отображение физических адресов данных на конкретное место поверхности диска с учетом специфики работы механизма управления головками. Кроме этого, выполняется преобразование каждого байта данных в последовательность бит, записываемых на поверхность диска, с определенными физическими параметрами и с применением помехоустойчивого кодирования. Чем больше драйверов входит в состав операционной системы, тем больше успех ОС у пользователей. Созданием драйверов занимаются как разработчики ОС, так и производители внешних устройств. Поэтому ОС должна иметь хорошо определенный интерфейс между драйверами и остальной частью ОС для каждого типа устройств, чтобы разработчики могли разрабатывать драйверы для этой ОС и поставлять в комплекте со своими изделиями. 5 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Подсистема защиты данных и администрирования направлена на защиту данных от: сбоев и отказов аппаратуры; ошибок программного обеспечения; ошибочного или злонамеренного поведения пользователей системы. Поддержка отказоустойчивости реализуется операционной системой, как правило, на основе резервирования данных и устройств ввода-вывода. Важная роль отводится администратору сети, который должен правильно назначить права различных пользователей компьютеров системы, политики безопасности и аудита. 1.2. Сетевые операционные системы 1.2.1. Локальные и глобальные сети Компьютерная сеть – это набор компьютеров, связанных коммуникационной системой и снабженных соответствующим программным обеспечением, позволяющим пользователям сети получать доступ к ресурсам этого набора компьютеров. По используемым технологиям работы сетевых устройств на физическом и канальном уровнях различают локальные и глобальные сети. Технологии локальных и глобальных сетей подробно изучались в учебной дисциплине «Вычислительные системы, сети и телекоммуникации», поэтому здесь приводится лишь очень короткая справка. В локальных сетях в настоящее время доминируют различные стандарты кабельной технологии Ethernet: IEEE 802.3 – Ethernet (скорость передачи 10 Мбит/с), в настоящее время уже редко применяется; IEEE 802.3 u – Fast Ethernet (скорость передачи 100 Мбит/с) – основной стандарт в кабельных локальных сетях, построенных на витой паре; IEEE 802.3 z – Gigabit Ethernet (скорость передачи 1 Гбит/с) и 10 GE (скорость передачи 10 Гбит/с), применяется для построения высокопроизводительных сетей, например, серверных сетей, в которых сетевые устройства соединены, как правило, оптоволоконным кабелем. Бурно развивается применение в локальных сетях беспроводных технологий (Wi-Fi), которые часто объединяют общим термином Radio Ethernet – стандарт IEEE 802.11: IEEE 802.11 b – скорость передачи до 10 Мбит/с в диапазоне 2,4 ГГц; IEEE 802.11 а – скорость передачи до 24 Мбит/с в диапазоне 5 ГГц; IEEE 802.11 g – скорость передачи до 54 Мбит/с в диапазоне 2,4 ГГц. В настоящее время стало практически обязательным оснащение ноутбуков и КПК (карманных персональных компьютеров) устройствами технологии Wi-Fi, превратив их в мобильные сетевые компьютеры. Для подключения их к локальным сетям последние оснащаются беспроводными точками доступа – базовыми станциями. Глобальные сети отличаются от локальных сетей в первую очередь большой протяженностью телекоммуникационных каналов, что существенно увеличивает их стоимость, а следовательно, остро поднимает вопрос эффективности их использования. С этой целью в технологиях глобальных компьютерных сетей применяют технику виртуальных каналов, службу качества обслуживания трафика (Quality of Service, QoS), пытаются решать задачу инжиниринга трафика. В России, кроме уже устаревшей технологии глобальных сетей X 25, широко используется технология frame relay и внедряется перспективная технология ATM, которая в скором будущем может стереть техническую границу между локальными и глобальными сетями. 6 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE 1.2.2. Назначение и функциональные компоненты сетевых операционных систем По своему назначению операционная система компьютерной сети аналогична ОС автономного компьютера – она также представляет собой комплекс взаимосвязанных программ, который обеспечивает удобство работы пользователям и программистам путем предоставления им некоторой виртуальной вычислительной системы, и реализует эффективный способ разделения ресурсов между множеством выполняемых в сети процессов. При организации сетевой работы операционная система играет роль интерфейса, экранирующего от пользователя все детали работы программно-аппаратных средств транспортного, сетевого, канального и физического уровней компьютерной сети. Например, вместо числовых адресов компьютеров сети МАС-адреса и IP-адреса операционная система компьютерной сети позволяет оперировать удобными символьными именами. Различают сетевые операционные системы и распределенные операционные системы. Пользователь сетевой ОС при использовании ресурсов компьютеров сети всегда помнит, что он имеет дело с сетевыми ресурсами и что для доступа к ним нужно выполнить некоторые особые операции (указать сетевой путь, подключить сетевой диск и т. п.). Правда эти действия за пользователя может выполнить администратор сети, настроив его сетевое окружение необходимым образом. По умолчанию при работе сетевой ОС пользовательские задания выполняются на том компьютере, на котором пользователь выполнил логический вход в сеть. Распределенная ОС, динамически и автоматически распределяя работы по различным машинам системы для обработки, заставляет набор сетевых машин работать как один многопроцессорный компьютер. Этим достигается эффективная работа всей сети. Пользователь распределенной ОС не имеет сведений о том, на каком компьютере сети выполняется его приложение. В настоящее время все сетевые ОС еще далеки от истинной распределенности, поэтому в дальнейшем будем рассматривать только сетевые ОС. Различают две трактовки понятия сетевая операционная система. Во-первых, сетевая ОС рассматривается как совокупность операционных систем отдельных компьютеров, составляющих сеть. Причем на разных компьютерах могут быть разные ОС, функционирующие автономно при создании и завершении своих процессов и управлении локальными ресурсами. Но они должны иметь согласованный набор коммуникационных протоколов, систему адресации и маршрутизации для организации: взаимодействия процессов, выполняющихся на разных компьютерах сети; разделения ресурсов сети между пользователями сети. Во-вторых, сетевая ОС рассматривается как операционная система отдельного компьютера, способного работать в сети, т. е. предоставлять свои ресурсы в общее пользование и потреблять ресурсы других компьютеров. С этих позиций все современные ОС являются сетевыми, т. к. обеспечивают работу компьютеров в сети. В дальнейшем будем применять термин сетевая ОС именно в такой трактовке. Функциональные компоненты сетевой ОС: 1. Средства управления локальными ресурсами компьютера, которые реализуют все функции ОС автономного компьютера. 2. Сетевые средства: o серверная часть – средства предоставления локальных ресурсов и услуг в общее пользование; o клиентская часть – средства запроса доступа к удаленным ресурсам и услугам; o транспортные средства ОС, которые совместно с коммуникационной системой обеспечивают передачу сообщений между компьютерами сети. Рис. 1.1 иллюстрирует взаимодействие сетевых операционных систем различных компьютеров сети. 7 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Рис. 1.1. Взаимодействие сетевых операционных систем Клиентская часть операционной системы одного компьютера не может получить непосредственный доступ к ресурсам другого компьютера сети. Она может лишь «попросить» об этом серверную часть его ОС. Эти «просьбы» в виде сообщений передаются при помощи транспортных средств по сети. Очень удобной и полезной функцией клиентской части ОС является способность отличить запрос к удаленному ресурсу, например файлу на диске другого компьютера, от запроса к локальному ресурсу. В этом случае приложение не должно заботиться о том, с локальным или удаленным ресурсом оно работает, – клиентская программа сама распознает и перенаправляет (redirect) запрос к удаленному компьютеру. Отсюда часто клиентскую часть сетевой ОС называют редиректор. Иногда это отдельный программный модуль. Совокупность серверной и клиентской частей ОС, предоставляющих доступ к конкретному типу ресурса компьютера через сеть, называется сетевой службой. Например, удаленный доступ к файлам выполняется файловой службой, а удаленный доступ к принтерам – службой печати. Каждая сетевая служба предоставляет пользователям набор услуг, которые иногда называют сетевым сервисом. Среди сетевых служб есть службы, ориентированные не на простого пользователя, а на администратора сети. Такие службы используются для организации работы сети. Например, служба каталогов при доменной организации работы сети. В операционной системе каждого компьютера сетевая служба может быть представлена как обеими частями – клиентской и серверной, так и только одной из них – клиентской или серверной. Говорят, что сервер предоставляет свои услуги клиенту, а клиент ими пользуется. Принципиальной разницей между клиентом и сервером является то, что инициатором выполнения работы сетевой службы всегда выступает клиент, а сервер всегда находится в режиме пассивного ожидания. На практике сетевые службы могут быть реализованы тремя способами: сетевые службы встроены в операционную систему, например, как во всех операционных системах Windows; сетевые службы объединены в виде некоторого набора – оболочки, например, LAN Server и LAN Manager, которые имеют модификации для разных ОС; сетевые оболочки часто делят на клиентские и серверные и к ним также применяют термин «сетевая операционная система»; сетевые службы производятся и поставляются в виде отдельного продукта и расширяют тем самым возможности сетевых ОС; они также могут иметь клиентскую и серверную часть, например, Symantec – сетевая антивирусная служба. 8 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE 1.2.3. Компоненты сети В зависимости от принятого порядка размещения сетевых служб компьютерные сети могут быть трех типов. Одноранговая сеть, в которой каждый компьютер имеет как клиентскую, так и серверную часть сетевой службы. Поэтому все компьютеры равны в возможностях доступа к ресурсам друг друга. Компонентами сети являются только рабочие станции. Сетевые ОС такого типа называют одноранговыми. Причем в одноранговой сети отдельные компьютеры могут выступать только клиентами или только серверами. В этом случае у них просто не используется какая-либо часть сетевой службы. Обычно одноранговая сеть организуется в том случае, если число компьютеров не превышает 10…20. На компьютерах одноранговой сети могут использоваться различные сетевые ОС. Сеть с выделенным сервером, в которой серверные и клиентские части сетевых служб размещены на разных компьютерах. Как правило, все серверные части размещаются на ограниченном количестве компьютеров (от одного до нескольких), которые работают под управлением специальных вариантов сетевых ОС, которые оптимизированы для работы в роли серверов и называются серверными ОС. Пользовательские компьютеры, на которых имеются клиентские части сетевых служб, в таких сетях работают под управлением клиентских ОС. Так как клиентов в сетях обычно много, а серверов ограниченное количество и они должны обрабатывать большой поток запросов, то в качестве серверных компьютеров обычно используются более производительные машины, зачастую мультипроцессорные. Чем меньше функций выполняет операционная система, тем более эффективно можно их реализовать. Поэтому для оптимизации серверных операций разработчики серверных ОС вынуждены ущемлять некоторые другие ее функции, причем иногда до полного их отбрасывания. Следовательно, использовать серверную операционную систему в качестве универсальной ОС, например в одноранговой сети, нецелесообразно. В клиентских ОС разработчики основное внимание уделяют пользовательскому интерфейсу. В последнее время разработчики сетевых операционных систем, как правило, выпускают два варианта одной и той же ОС. Один вариант предназначен для работы в качестве серверной ОС, другой – в качестве клиентской. Пример серверной и клиентской ОС – Windows 2000 Professional и Windows 2000 Server. Гибридная сеть, в которой совмещено использование обоих вариантов размещения сетевых служб. Обычно применяется в больших сетях, где требуются не только отношения клиентсервер, но и одноранговые связи. 1.3. Архитектура операционных систем Большинство современных операционных систем представляют собой хорошо структурированные программные модули системы, приспособленные к развитию, расширению и переносу на другие аппаратные платформы. Какой-либо единой архитектуры операционных систем не существует, но существуют универсальные подходы к структурированию ОС. 1.3.1. Архитектура операционной системы, основанная на ядре При реализации этой архитектуры все программные модули ОС делятся на модули ядра и вспомогательные модули. Ядро операционной системы образуют программные модули, решающие внутрисистемные задачи организации вычислительного процесса. Кроме этого именно ядро содержит функции, образующие интерфейс прикладного программирования n–API, через который приложения обращаются к операционной системе посредством системных вызовов. 9 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Функции, выполняемые модулями ядра, являются наиболее часто используемыми функциями ОС, поэтому скорость их выполнения определяет производительность всей системы в целом. Для обеспечения высокой скорости работы операционной системы все модули ядра или большая их часть постоянно находятся в оперативной памяти, т. е. являются резидентными. Формат программного модуля ядра обычно отличается от формата приложений. Остальные модули операционной системы, выполняющие вспомогательные функции ОС, оформляются в виде приложений или в виде библиотек процедур. Некоторые из них могут включаться в состав операционной системы даже пользователем, как в процессе ее инсталляции, так и в процессе эксплуатации ОС. Вспомогательные модули для выполнения своих функций обращаются к функциям ядра, как и обычные приложения, посредством системных вызовов. Поэтому трудно провести четкую грань между операционной системой и приложениями (рис. 1.2). Рис. 1.2. Нечеткость границы между операционной системой и приложениями Вспомогательные модули операционной системы обычно загружаются в основную память только на время выполнения своих функций, т. е. являются транзитными. Разделение ОС на ядро и модули-приложения обеспечивает легкую расширяемость системы. Добавление новой функции в ОС заключается в разработке нового модуля-приложения без модификации ядра. Важным свойством архитектуры операционной системы, основанной на ядре, является возможность защиты кодов и данных ОС за счет выполнения функций ядра в привилегированном режиме. Для этого аппаратура компьютера (процессор) должна поддерживать как минимум два режима работы – пользовательский режим (user mode) и привилегированный режим, который также называют режимом ядра (kernel mode). Приложения ставятся в подчиненное положение за счет запрета выполнения в пользовательском режиме некоторых критичных команд, связанных с переключением процессора с задачи на задачу, управлением устройствами вводавывода, доступом к механизмам распределения и защиты памяти. Очень важно, что механизмы защиты памяти используются ОС не только для защиты своих областей памяти от приложений, но и для защиты областей памяти, выделенных операционной системой какому-нибудь приложению, от остальных приложений. Каждое приложение работает в своем адресном пространстве, так что его ошибки не оказывают влияние на остальные приложения и операционную систему. Однако во всех типах процессоров из-за дополнительной двукратной задержки на переключение из привилегированного режима в пользовательский и обратно переход на процедуру со сменой режима выполняется медленнее, чем вызов процедуры без смены режима. Вычислительную систему, работающую под управлением операционной системы на основе ядра, можно рассматривать как систему, состоящую из трех иерархически расположенных 10 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE слоев: нижний слой образует аппаратура, промежуточный – ядро, а вспомогательные модули и приложения составляют верхний слой системы (рис. 1.3). Рис. 1.3. Трехслойная структура вычислительной системы Многослойный подход является универсальным и эффективным способом декомпозиции сложных систем любого типа, в том числе и программных. Каждый слой обслуживает вышележащий слой, выполняя для него некоторый набор функций, которые образуют межслойный интерфейс. На основе функций нижележащего слоя следующий (вверх по иерархии) слой строит свои функции – более сложные и более мощные, которые в свою очередь оказываются примитивами для создания еще более мощных функций вышележащего слоя. Строгие правила касаются только взаимодействия между слоями системы. А между модулями внутри слоя связи могут быть произвольными. Такая организация системы существенно упрощает ее разработку и модернизацию. Многослойный подход обычно распространяется и на структуру ядра. Ядро может состоять из следующих слоев: средства аппаратной поддержки ОС – аппаратные узлы процессора, которые прямо участвуют в организации вычислительных процессов; машинно-зависимые компоненты ОС – программные модули, отражающие специфику аппаратной платформы компьютера, которые экранируют вышележащие слои от аппаратуры; базовые механизмы ядра – модули, выполняющие примитивные операции ядра, которые не принимают решений о распределении ресурсов; менеджеры (диспетчеры) ресурсов – модули, реализующие принятые в ОС стратегии управления основными ресурсами; интерфейс системных вызовов взаимодействует с приложениями и вспомогательными модулями ОС, образует прикладной программный интерфейс ОС (API). Выбор количества слоев ядра является ответственным и сложным делом: увеличение числа слоев ведет к некоторому замедлению работы ядра за счет дополнительных накладных расходов на межслойное взаимодействие, а уменьшение числа слоев ухудшает расширяемость и логичность системы. Обычно операционные системы, прошедшие долгий путь эволюционного развития, например, многие версии UNIX, имеют неупорядоченное ядро с небольшим числом четко выделенных слоев, а у сравнительно «молодых» ОС, таких как семейство Windows на технологии NT, ядро разделено на большое число слоев и их взаимодействие формализовано в гораздо большей степени. Почти все современные аппаратные платформы (процессоры) имеют типичный набор средств аппаратной поддержки ОС: средства поддержки привилегированного режима, обеспечивающие переключение процессора в привилегированные режимы из пользовательского и обратно; средства трансляции адресов, выполняющие преобразование виртуальных адресов, которые содержатся в кодах процессов, в адреса физической оперативной памяти; таблицы трансляции тоже находятся в оперативной памяти, а в процессоре хранятся только указатели на эти области памяти; 11 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE средства переключения процессов, предназначенные для быстрого сохранения контекста приостанавливаемых процессов и восстановления контекстов активизируемых процессов; систему прерываний, которая позволяет компьютеру реагировать на внешние события, например завершение операции ввода-вывода внешним устройством и т. п.; сигнал прерывания заставляет процессор прервать выполнение последовательности команд, задаваемых выполняемым процессом, и вызывает переход на определенную процедуру, называемую процедурой обработки прерываний; после завершения обработки прерывания происходит возврат к исполняемому процессу; системный таймер, который реализуется как счетчик тактовых импульсов процессора (счетчик считает в обратную сторону до нуля) и обеспечивает системе выдержку необходимых интервалов времени; при достижения нуля возникает прерывание от системного таймера, которое можно использовать, например, для смены исполняемого процесса; средства защиты областей памяти, которые обеспечивают на аппаратном уровне проверку возможности программного кода осуществлять какие-либо операции с определенной областью памяти. Одна и та же операционная система не может без каких-либо изменений устанавливаться на компьютерах, отличающихся типом процессора или способом организации всей аппаратуры. В модулях ОС не могут не отразиться такие особенности аппаратной платформы, как количество типов прерываний, состав регистров общего назначения и системных регистров, состояние которых нужно сохранять в контексте процесса, особенности подключения внешних устройств и многие другие. Многослойное проектирование ядра позволяет выделить машинно-зависимые модули в отдельный слой, при этом остальные модули ядра не будут зависеть от особенностей аппаратной платформы. Такая локализация машинно-зависимых модулей существенно упрощает перенос операционной системы на другую аппаратную платформу. Для уменьшения количества машинно-зависимых модулей производители ОС обычно ограничивают их универсальность, т. е. независимость распространяется только на несколько типов процессоров. Например, независимость Windows NT ограничена четырьмя типами процессоров, кроме этого поставляются различные варианты ядра для однопроцессорных и многопроцессорных компьютеров. Для компьютеров на основе процессоров Intel x 86/Pentium разработка экранирующего машинно-зависимого слоя ОС несколько упрощается за счет встроенной в ПЗУ компьютера базовой системы ввода-вывода – BIOS. BIOS содержит драйверы для всех устройств, входящих в базовую конфигурацию компьютера: жестких и гибких дисков, клавиатуры, монитора и т. д. Эти драйверы выполняют самые примитивные операции с управляемыми устройствами, например чтение группы секторов с определенной дорожки диска, но за счет этих операций экранируются различия аппаратных платформ компьютеров на процессорах Intel разных производителей. Следовательно, BIOS предоставляет одинаковый интерфейс машинно-зависимой части для работы машинно-независимой части операционной системы. Разработчики операционных систем могут пользоваться слоем драйверов BIOS как частью машинно-зависимого слоя ОС, а могут и заменить все или часть драйверов BIOS компонентами операционной системы. Если код операционной системы может быть легко перенесен с процессора одного типа на процессор другого типа и с аппаратной платформы одного типа на аппаратную платформу другого типа, то такую ОС называют переносимой или мобильной. Для реализации переносимости кроме локализации слоя машинно-зависимых модулей большая часть кода машинно-независимого слоя ядра должна быть написана на стандартизованном языке высокого уровня, трансляторы которого имеются на всех машинах, куда предполагается переносить систему. Обычно это язык С. Модуль операционной системы, написанный на ассемблере, является переносимым только в тех случаях, когда перенос ОС планируется на компьютер, обладающий той же системой команд. 12 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE 1.3.2. Микроядерная архитектура Суть микроядерной архитектуры состоит в следующем: в привилегированном режиме остается работать только очень небольшая часть операционной системы, называемая микроядром. В состав микроядра входят машинно-зависимые модули, а также модули, выполняющие функции базовых механизмов обычного ядра по: управлению процессами; обработке прерываний; управлению виртуальной памятью; управлению устройствами ввода-вывода, связанными с загрузкой или чтением регистров устройств. Все остальные функции пользовательском режиме. ядра оформляются в виде приложений, работающих в Многие менеджеры ресурсов (файловая система, подсистема управления виртуальной памятью и процессами и т. п.), являющиеся неотъемлемой частью обычного ядра, становятся «периферийными» модулями, работающими в пользовательском режиме. Менеджеры ресурсов, работающие в пользовательском режиме, имеют принципиальные отличия от традиционных вспомогательных модулей операционной системы. Последние вызываются пользователями системы, а менеджеры ресурсов обслуживают запросы приложений. Поэтому в ОС с классической архитектурой отсутствуют механизмы, с помощью которых одно приложение могло бы вызвать функцию другого. В микроядерной архитектуре менеджеры ресурсов становятся серверами операционной системы, т. е. модулями, основным назначением которых является обслуживание запросов локальных приложений и других модулей ОС. Очевидно, что для реализации микроядерной архитектуры необходимым условием является наличие в ОС удобного и эффективного способа вызова процедур одного процесса из другого. Поддержка такого механизма и является одной из главных задач микроядра (рис. 1.4). Рис.1.4. Иллюстрация системного вызова в микроядерной архитектуре Преимущества микроядерной архитектуры: высокая степень переносимости, обусловленная тем, что весь машинно-зависимый код изолирован в микроядре, поэтому для переноса системы на новый процессор требуется меньше изменений и они все сгруппированы вместе; 13 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE высокая расширяемость – добавление новой подсистемы требует разработки только нового приложения, что никак не затрагивает целостность микроядра; легкая конфигурируемость ОС – достаточно изменить файл с настройками начальной конфигурации системы или же остановить ненужные больше серверы (менеджеры ресурсов) в ходе работы системы обычными для остановки приложений средствами; повышенная надежность ОС – каждый сервер выполняется в виде отдельного процесса в своей собственной области памяти и таким образом защищен от других серверов ОС, что не наблюдается в традиционных ОС, где все модули ядра могут влиять друг на друга. Кроме этого, уменьшенный объем кода ядра снижает вероятность появления ошибок программирования; возможна поддержка распределенных вычислений, т. к. используются механизмы, аналогичные сетевым: взаимодействие клиентов и серверов путем обмена сообщениями. Серверы микроядра могут работать как на одном, так и на разных компьютерах. Недостаток микроядерной архитектуры: более низкая производительность, чем при классической архитектуре – системный вызов сопровождается не двумя переключениями режима (пользовательского и привилегированного), а четырьмя (рис. 1.4 и 1.5). Рис. 1.5. Смена режимов при выполнении системных вызовов в операционной системе с классическим ядром (a) и с микроядерной архитектурой (б) Из-за этого недостатка разработчики не всегда жестко придерживаются принципа минимизации функций ядра, часто жертвуя этим ради повышения производительности. Таким образом, главная проблема разработки микроядерной ОС – что включать в микроядро, а что выносить в пользовательское пространство. 1.3.3. Совместимость операционных систем Если архитектурные особенности операционных систем касаются только системных программистов, то совместимость операционных систем непосредственно связана с нуждами конечных пользователей. Различают совместимость на двоичном уровне (в котором хранятся приложения в ОС) и совместимость на уровне исходных текстов. Двоичная совместимость достигается в том случае, когда можно запустить исполняемую программу на выполнение в среде другой операционной системы. Для этого операционные системы должны иметь одинаковые API. Совместимость на уровне исходных текстов требует наличия соответствующего компилятора в составе программного обеспечения компьютера, на котором предполагается выполнять данное приложение. При этом необходима перекомпиляция имеющегося исходного текста в новый исполняемый модуль. Для конечного пользователя практическое значение имеет только двоичная совместимость. Обладает ли новая ОС двоичной совместимостью, в первую очередь зависит от архитектуры 14 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE процессора, на котором работает новая ОС. На процессорах, имеющих разную архитектуру, достичь двоичной совместимости (реализовать такой же API) сложнее. Один из путей – использование специальных программ – эмуляторов. Эмулятор должен последовательно выбирать каждую двоичную инструкцию, предназначенную для эмулируемого процессора, дешифровать ее программным способом, чтобы определить, какие действия она задает, а затем выполнять эквивалентную подпрограмму, написанную в инструкциях своего процессора. При этом имитируются регистры, флаги и внутреннее арифметико-логическое устройство эмулируемого процессора. Это простая, но очень медленная работа, т. к. одна команда процессора выполняется значительно быстрее, чем эмулирующая работу этого процессора последовательность команд на другом процессоре. Более эффективно использование так называемых прикладных программных сред. Сегодня в типичных программах 60…80 % времени тратится на выполнение функций GUI (графического интерфейса пользователя) и других библиотечных вызовов ОС. Тщательно спроектированная программная прикладная среда имеет в своем составе библиотеки, имитирующие внутренние библиотеки GUI, но написанные на своем «родном» коде. Таким образом, достигается существенное ускорение выполнения программ с API другой операционной системы. Такой подход называют трансляцией, чтобы отличить от более медленного процесса эмулирования кода по одной команде. В зависимости от архитектуры ОС трансляторы прикладных сред могут реализовываться в виде обычных приложений или как серверы пользовательского режима (в микроядерной архитектуре). В других вариантах реализации множественных прикладных сред ядро ОС имеет несколько равноправных прикладных программных интерфейсов (API), где функции каждой API реализуются ядром с учетом специфики соответствующей ОС. Выводы 1. Операционная система является посредником между пользователем (приложением, запущенным пользователем) и аппаратурой, предоставляя пользователю удобный интерфейс и эффективно распределяя ресурсы вычислительной системы между различными приложениями. В качестве аппаратуры могут выступать не только средства локального компьютера, но и средства компьютерной сети. В последнем случае операционная система называется сетевой операционной системой. Все современные операционные системы являются сетевыми. 2. Все задачи, решаемые операционной системой, выполняют ее четыре основные подсистемы: подсистема управления процессами, подсистема управления памятью, подсистема управления файлами и внешними устройствами, подсистема защиты данных и администрирования. 3. При построении современных операционных систем используют многослойный подход в их архитектуре, что позволяет выделить машинно-зависимые модули ОС в отдельный слой, при этом остальные модули операционной системы не будут зависеть от особенностей аппаратной платформы. Кроме этого, многослойный подход позволяет выполнять независимую разработку и модернизацию отдельных слоев операционной системы. 4. Операционные системы, построенные на основе микроядерной архитектуры, более надежны и расширяемы, но менее производительны, чем операционные системы, не содержащие микроядро. Вопросы для самопроверки 1. Дайте определение операционной системы. 2. Какие функции операционная система предоставляет для пользователя? 3. Какие функции операционная система предоставляет для прикладного программиста? 4. Какие задачи решает операционная система в отношении аппаратуры вычислительной системы? 5. Что такое API? 6. В чем суть мультипрограммирования? 15 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE 7. Какие задачи операционной системы относятся к работе подсистемы управления процессами? 8. Какие задачи операционной системы относятся к работе подсистемы управления памятью? 9. Какие задачи операционной системы относятся к работе подсистемы управления файлами и внешними устройствами? 10. Какие задачи операционной системы относятся к работе подсистемы защиты данных и администрирования? 11. Дайте определение понятия "файл" и "каталог"? 12. Дайте определение сетевой операционной системы 13. Какие операционные системы называют распределенными? 14. Какие функциональные компоненты входят в состав сетевой операционной системы? 15. Что называется сетевой службой? 16. Как могут быть реализованы сетевые службы в одноранговой сети? 17. Как реализуются сетевые службы в сети с выделенным сервером? 18. В чем суть многослойного подхода к построению операционной системы? 19. Зачем нужен привилегированный режим работы процессора? 20. Каковы особенности функционирования ядра операционной системы? 21. Какие слои обычно выделяют при построении ядра операционной системы? Их назначение? 22. Каковы особенности функционирования вспомогательных модулей операционной системы? 23. Какие задачи решают средства аппаратной поддержки операционной системы? 24. Какие особенности функционирования менеджеров ресурсов в операционной системе с микроядерной архитектурой? 25. Каковы достоинства и недостатки микроядерной архитектуры операционной системы? 26. В чем заключается совместимость операционных систем? 27. В чем суть механизма эмуляции работы операционной системы? 16