Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lectures_OS.doc
Скачиваний:
17
Добавлен:
23.09.2019
Размер:
826.88 Кб
Скачать

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

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

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

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

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

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

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

Одна из основных функций ос - управление памятью. Функции системы управления памятью

Управление памятью включает:

  • распределение имеющейся физической памяти между всеми выполняемыми в данный момент процессами;

  • загрузку кодов и данных процессов в отведённые ими области памяти;

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

  • защиту областей памяти каждого процесса.

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

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

  • отслеживание свободной и занятой памяти;

  • выделение памяти процессам и её освобождение при их завершении процессов;

  • защита памяти;

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

  • настройка адресов программы.

Управление файлами и внешними устройствами.

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

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

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

Основная идея использования внешней памяти состоит в следующем. ОС делит память на блоки фиксированного размера, например, 4096 байт. Файл, обычно представляющий собой неструктурированную последовательность однобайтовых записей, хранится в виде последовательности блоков (не обязательно смежных); каждый блок хранит целое число записей. В некоторых ОС (MS-DOS) адреса блоков, содержащих данные файла, могут быть организованы в связный список и вынесены в отдельную таблицу в памяти. В других ОС (Unix) адреса блоков данных файла хранятся в отдельном блоке внешней памяти (так называемом индексе или индексном узле). Этот прием, называемый индексацией, является наиболее распространенным для приложений, требующих произвольного доступа к записям файлов. Индекс файла состоит из списка элементов, каждый из которых содержит номер блока в файле и сведения о местоположении данного блока. Считывание очередного байта осуществляется с так называемой текущей позиции, которая характеризуется смещением от начала файла. Зная размер блока, легко вычислить номер блока, содержащего текущую позицию. Адрес же нужного блока диска можно затем извлечь из индекса файла. Базовой операцией, выполняемой по отношению к файлу, является чтение блока с диска и перенос его в буфер, находящийся в основной памяти.

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

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

  1. Идентификация файлов. Связывание имени файла с выделенным ему пространством внешней памяти.

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

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

  4. Обеспечение защиты от несанкционированного доступа.

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

  6. Обеспечение высокой производительности.

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

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

Защита данных и администрирование.

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

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

Второй рубеж: ограничение доступа к ресурсам системы (за счёт так называемых прав, или привилегий доступа).

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

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

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

Интерфейс прикладного программирования (Applications programming Interface, API).

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

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

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

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

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

Сетевые ОС и распределенные ОС.

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

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

Термин "сетевая ОС" может использоваться в двух значениях:

  1. как совокупность ОС всех компьютеров в сети;

  2. как ОС отдельного компьютера, способного работать в сети. Пример, Unix, Windows NT, NetWare.

Функциональные компоненты сетевой ОС.

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

  2. Сетевые средства:

- серверная часть – средства предоставления локальных ресурсов и установка в общее пользование.

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

  • транспортная часть – обеспечивают передачу сообщения между компьютерами в сети (как правило, на основе TCP/IP).

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

Сетевые службы и сетевые сервисы.

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

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

На практике сложились следующие подходы к реализации сетевых служб в рамках ОС:

- сетевые службы глубоко внедрены в ОС.

- сетевые службы объединены в виде некоторого набора согласованно работающих функций – оболочки.

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

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

Сетевые оболочки часто подразделяют на клиентские и серверные. Пример клиентской оболочки - MS DOS с установленной NetWare. Серверная оболочка как минимум содержит серверные компоненты файловой службы и службы печати.

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

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

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

  • компьютер, обращающийся с запросами к ресурсам другой машины – клиентский узел.

  • компьютер, совмещающий одновременно и сервер и клиент – одноранговый узел.

Сеть может построена по одной из трёх схем:

  1. на основе одноранговых узлов – одноранговая сеть.

  2. на основе клиентов и серверов – сеть с выделенными серверами

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

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

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

Пользовательские компьютеры в таких сетях работают под управлением клиентских ОС. Например: NetWare – сервер, MS-DOS – клиент.

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

  1. Поддержка мощных аппаратных платформ, в том числе многопроцессорных.

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

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

  4. Более широкий набор сетевых служб.

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

Требования к современным ОС.

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

  1. Мультипрограммную обработку.

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

  3. Свопинг (Подкачка).

  4. Многооконный графический интерфейс пользователя.

Эксплуатационные требования:

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

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

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

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

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

- аутентификации (определение легальности пользователя);

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

- аудита (фиксация всех важных событий в системе).

В сетевых ОС к задачи контроля доступа добавляется задача защиты данных,

передаваемых по сети.

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

На производительность влияет:

- архитектура ОС;

- многообразие функций;

- качество программирования кода ОС;

- возможность исполнения ОС на многопроцессорной платформе.

АРХИТЕКТУРА ОС.

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

модульные системы, способные к развитию, расширению и переносу на новые платформы.

Какой-либо единой архитектуры ОС нет, но есть универсальные подходы к структурированию ОС.

Обычно в состав ОС входят:

  1. исполняемые и объектные модули стандартных для данной ОС форматов (формат - устройство файла, например, в текстовом файле в конце каждой строки - "\n", а в конце файла EOF, формат исполнимого файла более сложен);

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

  3. исходные тесты ядра и программ;

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

  5. конфигурационные файлы;

  6. файлы документации, модули справочной системы и т.п.

ЯДРО И ВСПОМОГАТЕЛНЫЕ МОДУЛИ ОС.

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

- ядро – модули, выполняющие основные функции ОС;

- модули, выполняющие вспомогательные функции ОС.

Рис 3. Архитектура операционной системы с ядром в привилегированном режиме.

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

Внутрисистемные функции ядра не доступные для приложений: это переключение

контекстов процессов, загрузка / выгрузка страниц, обработка прерываний и т.д.

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

Основные функции ядра (программ, входящих в ядро ОС):

  1. Обработка прерываний;

  2. Создание и уничтожение процессов;

  3. Переключение процессов из состояния в состояние;

  4. Диспетчеризация (выбор и запуск);

  5. Приостановка и активизация процессов;

  6. Синхронизация процессов;

  7. Организация взаимодействия между процессами;

  8. Манипулирование блоками управления процессами;

  9. Поддержка операций ввода/вывода (в ЭВМ разного типа ввод/вывод организуется по-разному);

  10. Поддержка распределения и перераспределения памяти;

  11. Поддержка работы файловой системы;

  12. Поддержка механизма, вызова и возврата при обращении к процедурам;

  13. Поддержка определенных функций по ведению учета работы компьютера.

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

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

Вспомогательные модули ОС обычно подразделяются на группы:

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

  • Системные обрабатывающие программы – компиляторы, компоновщики, отладчики.

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

  • Библиотеки подпрограмм различного назначения (например, библиотеки ввода вывода).

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

ЯДРО В ПРИВИЛЕГИРОВАННОМ РЕЖИМЕ.

ОС должна иметь определённые привилегии по отношению к приложениям чтобы:

  • некорректно работающее приложение не могло вмешаться в работу ОС;

  • играть роль арбитра в споре приложений за ресурсы компьютера.

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

  • пользовательский режим;

  • привилегированный режим (режим ядра, kernel mode).

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

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

Между числом уровней привилегии, реализуемых аппаратно и программно нет прямого соответствия. Например, в процессоре Intel - 4 уровня привилегий, а в ОС Unix и Win NT - ограничиваются двух уровневой системой.

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

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

Архитектура ОС, основанная на привилегированном ядре и приложения пользовательского режима стала классической. Ее используют Unix, VAX, VMS, IBM OS/390 и с определенными модификациями - Windows NT. Иногда реализуют работу ядра и приложений в одном режиме – привилегированном (NetWare). За счет этого достигается увеличение быстродействия, но снижается надежность. В одном режиме работают ядро и приложения той ОС, которая разработана для процессоров, вообще не поддерживающих привилегированного режима работы (Intel 8086 и MS-Dos).

МНОГОСЛОЙНАЯ АРХИТЕКТУРА ОС И ЕЕ ЯДРА.

Аппаратура

Ядро ОС

Утилиты, системные программы, библиотеки

Рис 4. Трехслойная схема вычислительной системы

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

Преимущества такой организации:

  • упрощается разработка системы.

  • упрощается модернизация.

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

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

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

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

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

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

Рис 5. Многослойная структура ядра ОС.

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

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

АППАРАТНАЯ ЗАВИСИМОСТЬ И ПЕРЕНОСИМОСТЬ ОС.

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

Типовые средства поддержки ОС.

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

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

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

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

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

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

Машино-зависимые компоненты ОС.

На разработку таких компонентов влияют следующие характеристики аппаратуры:

  • ширина шины адреса (16, 32, 64. Чем больше каналов, тем больше можно адресовать, т.е. обратиться к большему числу ячеек памяти 216, 232= 4 миллиарда ячеек, если 264 - то нужны новые процессоры).

  • число процессов (1,2,4,8, на супер-компьютерах - сотни процессоров).

  • наличие/отсутствие поддержки виртуальной памяти и др.

Переносимость ОС.

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

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

  2. Объем машинно-зависимых частей кода должен быть минимизирован.

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

Микроядерная архитектура.

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

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

Приложения пользователей файловый сервер сетевой сервер

Сервер процессов

пользовательский режим

п ривилегированный режимы

сообщение запрос сообщение ответ

микроядро

Рис 6. Реализация системного вызова в микроядерной архитектуре.

Преимущества микроядерной архитектуры:

  • высокая степень переносимости;

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

  • -высокая конфигурируемость (можно легко отключать ненужные серверы ОС);

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

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

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

СОВМЕСТИМОСТЬ И МНОЖЕСТВЕННЫЕ ПРИКЛАДНЫЕ СРЕДЫ.

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

Различают совместимость на уровне:

- двоичных кодов;

- исходных текстов.

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

Двоичная совместимость достигается просто, если выполняются условия:

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

  • вызовы функций API, которые содержат приложения, должны поддерживаться в новой ОС;

- внутренняя структура исполняемого файла должна соответствовать той, которая принята в новой ОС (формат файла DOS не знает UNIX).

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

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

  2. Трансляция библиотек. При этом подходе API «неродной» ОС преобразуется (транслируется) в API « родной» ОС, в среду которой переносится приложение. В этом случае работают модули, скомпилированные в среде «родной» (целевой) ОС. Во многих версиях UNIX транслятор прикладных средств реализуется в виде обычного приложения. В микропроцессорных ОС (Win NT) прикладные среды выполняются в виде серверов пользовательского режима. Один их подходов показан на рис.7.

Прикладная среда OS2

Привилегированный режим

API OS1 (интерфейс прикладного программирования)

Менеджер ресурсов

Базовые механизмы

Машинозависимые компоненты


Рис.7. Прикладные программные среды, транслирующие систему вызова.

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

ПРОЦЕССЫ И ПОТОКИ.

Мультипрограммирование.

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

Мультипрограммирование призвано повысить эффективность использования вычислительной системы. Критериями эффективности могут быть:

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

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

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

Мультипроцессорная обработка.

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

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

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

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

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

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

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

Понятие « процесс» и « поток».

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

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

Создание процессов и потоков.

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]