Ос как с-ма управления ресурсами
Операционная система не только предоставляет пользователям и программистам удобный интерфейс к аппаратным средствам компьютера, но и является механизмом, распределяющим ресурсы компьютера.
К числу основных ресурсов современных вычислительных систем могут быть отнесены такие ресурсы, как процессоры, основная память, таймеры, наборы данных, диски, накопители на магнитных лентах, принтеры, сетевые устройства и некоторые другие. Ресурсы распределяются между процессорами. Процесс (задача) представляет собой базовые понятие большинства современных ОС и часто кратко определяется как программа в стадии выполнения. Программа - это статический объект, представляющий собой файл с кодами и данными. Процесс - это динамический объект, который возникает в операционной системе после того, как пользователь или сама операционная система решает "запустить программу на выполнение", то есть создать новую единицу вычислительной работы. Например, ОС может создать процесс в ответ на команду пользователя run prg1. exe, где prg1. exe - это время файла, в котором хранится код программы.
Примечание
Во многих современных ОС для обозначения минимальной единицы работы ОС используют термин " нить", или "поток", при этом изменяется суть термина "процесс".
Управление ресурсами вычислительной системы с целью наиболее эффективного их использования является назначением операционной системы.
Управление ресурсами включает решение следующих общих, не зависящих от типа ресурса задач:
- планирование ресурса - то есть определение, какому процессу, когда и в каком количестве ( если ресурс может выделятся частями) следует выделить данный ресурс;
- удовлетворение запросов на ресурсы;
- отслеживание состояния и учет использования ресурса - то есть поддержание оперативной информации о том, занят или свободен ресурс и какая доля ресурса уже распределена;
- разрешение конфликтов между процессами.
Для решения этих общих задач управления ресурсами разные ОС используют различные алгоритмы, особенности которых в конечном счете и определяют облик ОС в целом, включая характеристики производительности, область применения и даже пользовательский интерфейс. Например, применяемый алгоритм управления процессором в значительной степени определяет, может ли ОС использоваться как система разделения времени, система пакетной обработки или система реального времени.
12.Ядро и вспомогательные модули операционной системы.
Наиболее общим подходом к структуризации является разделение всех ее модулей на две группы: ядро и вспомогательные модули.
Ядро включает модули, выполняющие основные функции ОС:
· управление процессами
· управление памятью
· управление вводом-выводом и файловая система
· прочие
Модули, выполняющие вспомогательные функции:
· утилиты
· библиотеки
· компиляторы
· прочие
Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования API(Application Program Interface) Ядро работает в привилегированном режиме, и большая часть его модулей постоянно находится в памяти (резидентные). Разделение ОС на ядро и вспомогательные модули облегчает ее расширяемость
К вспомогательным модулям ОС относятся:
· Утилиты (Сжатие, архивирование, проверка, дефрагментация и пр.)
· Системные обрабатывающие программы (редакторы, отладчики, компиляторы и пр.)
· Программы дополнительных услуг (игры, калькулятор и пр.)
· Библиотеки процедур (математических функций и пр.)
· Вспомогательные модули ОС загружаются в оперативную память только на время выполнения (транзитные модули)
13. Ядро в привелегированном режиме.
Современные ОС поддерживают как минимум два режима:
· Пользовательский режим
· Привилегированный режим - режим ядра (kernel mode) – режим супервизора (supervisor mode)
· Ядро выполняет все основные функции - поэтому работает в привилегированном режиме
Контроль за выполнением критичных инструкций обеспечивается запретом их выполнения в пользовательском режиме. Например доступ к памяти (доступ к системным таблицам памяти) разрешен только в привилегированном режиме. Для упорядочивания прав доступа вводятся уровни привилегий (например, в Pentium их четыре: 0,1,2,3). Работа с возможностью переключения в привилегированный режим приводит к замедлению работы.
Имеются отступления от классического варианта архитектуры. Например специализированная сетевая ОС NetWare использует лишь привилегированный режим, в котором работает и ядро и специализированные приложения
При таком построении ОС работает быстрее, т.к. нет переключения режимов, однако при этом отсутствует надежная аппаратная защита памяти.
Классическое ядро может состоять из следующих слоев:
· Интерфейс системных вызовов к функциям API(например, fd=open("/doc/a.txt,O_RDONLY)
· Менеджеры ресурсов - учет, планирование (процессы, ввод-вывод, файловая система, память)
· Базовые механизмы ядра (переключение контекстов, перемещение страниц и пр.)
· Машинно-зависимый слой (например в Windows NT/2000 слой HAL-Hardware Abstraction Level)
· Аппаратная поддержка ОС (средства поддержки привилегированного режима, система прерываний, переключение контекстов, трансляция адресов, защита памяти) Каждый слой взаимодействует лишь с ниже лежащими, за некоторым исключением. UNIX имеет меньшее число четких слоев, Windows NT/2000 - большее.
14. Машинно-зависимые компоненты ОС.
Для облегчения переносимости ОС с одной аппаратной платформы на другую аппаратно-зависимый код локализуют в нескольких модулях ОС. При переносе, в случае несовпадении системы команд - перепрограммируются только эти модули. Разработчики стремятся сократить количество машинно-зависимых модулей. Реально разработчики ОС для переносимости ограничиваются несколькими аппаратными платформами: Pentium, Alpha,DEC, MIPS, многопроцессорные. К аппаратно зависимым модулям ОС относятся также низкоуровневые драйверы внешних устройств. В Intel x86/Pentium разработка машинно-зависимого слоя упрощается за счет встроенной в постоянную память базовой системы ввода-вывода (BIOS) Переносимость, мобильность (portable) ОС.
Речь идет о степени легкости переноса ОС на компьютеры разной аппаратной платформы. Основные приемы включают:
· Язык программирования ОС – высокого уровня (например язык Си)
· Объем машинно-зависимых частей кода - минимальный
· Аппаратно-зависимый код в нескольких модулях