Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1. ИТТ заочн., конспект лекций (2015-16).docx
Скачиваний:
287
Добавлен:
15.03.2016
Размер:
12.76 Mб
Скачать

1.2.2. Архитектура операционной системы

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

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

Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования API (Application Program­ming Interface). Ядро работает в привилегированном режиме, и боль­шая часть его модулей постоянно находится в памяти (резидентные модули). Разделение ОС на ядро и вспомогательные модули облегчает ее расширяемость.

К вспомогательным модулям ОС относятся:

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

- системные обрабатывающие программы (редакторы, отладчики, компиляторы и пр.);

- программы дополнительных услуг (игры, калькулятор и пр.);

- библиотеки процедур (математических функций и пр.).

Вспомогательные модули ОС загружаются в оперативную память только

на время выполнения (транзитные модули).

Ядро в привилегированном режиме. Современные ОС поддерживают как минимум два режима:

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

- привилегированный режим — режим ядра (kernel mode) — ре­жим супервизора (supervisor mode).

Ядро выполняет все основные функции — поэтому работает в при­вилегированном режиме.

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

Машинно-зависимые компоненты ОС. Для облегчения переносимо­сти ОС с одной аппаратной платформы на другую аппаратно-зависимый код локализуют в нескольких модулях ОС. При переносе, в случае несовпадении системы команд, перепрограммируются только эти мо­дули. Разработчики стремятся сократить количество машинно-зависимых модулей. Реально разработчики ОС для переносимости огра­ничиваются несколькими аппаратными платформами: Pentium, Alpha, DEC, MIPS, многопроцессорные. К аппаратно-зависимым модулям ОС относятся также низкоуровневые драйверы внешних устройств. В Intel х 86/Pentium разработка машинно-зависимого слоя упрощает­ся за счет встроенной в постоянную память базовой системы ввода- вывода (BIOS).

1.2.3. Процессы и потоки, мультипрограммирование

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

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

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

Планирование процессов и потоков. Планирование процессов и по­токов включает:

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

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

- распределение процессорного времени;

- обеспечение процессов необходимыми ресурсами (единолично, совместно);

- синхронизация (контроль возникновения «гонок», блокировок);

- после завершения процесса — «зачистка», т. е. удаление следов пребывания в системе.

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

Для взаимодействия, процессы обращаются к ОС, которая предо­ставляет средства общения (конвейеры, почтовые ящики, разделяе­мые секции памяти и др.).

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

Примером многопоточной обработки может служить выполнение запросов MS SQL Server.

С понятиями процесса и потока тесно связано понятие мультипро­граммирования. Мультипрограммирование, или многозадачность (multitasking) — это способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются сразу не­сколько задач (программ).

Общие критерии эффективности мультипрограммирования:

- пропускная способность;

- удобство работы пользователей;

- реактивность системы (заданные интервалы времени).

В зависимости от критерия различают:

- системы пакетной обработки;

- разделения времени;

- системы реального времени.

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

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

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

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

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

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

ОС MS Windows, Unix являются примерами систем разделения времени.

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

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

Для систем реального времени важна скорость обработки прерыва­ний. Задача максимальной загрузки устройств — не актуальна.

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

Различают внешние (аппаратные), внутренние и программные пре­рывания.

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

Программные прерывания не являются «истинными» прерывания­ми. Они возникают при выполнении определенной команды процес­сора и применяются в том случае, когда необходимо выполнить не­которые привилегированные действия (например, обратиться к порту компьютера). Прерываниям равного значения приписываются уровни приоритетов (уровни — IRQ). Каждое из прерываний обслуживается обработчиком прерываний (Interrupt Service Routine).

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

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