Микроядерная архитектура операционной системы

Микроядерная архитектура составляет альтернативу классической архитектуре.

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

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

Совместимость

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

· двоичная совместимость

· совместимость на уровне исходных текстов

Для двоичной совместимости при одинаковых аппаратных платформах, достаточно:

· вызовы функций API должны поддерживаться

· внутренняя структура исполняемого файла соответствовать друг другу

Совместимость на уровне исходных текстов достигается наличием у ОС соответствующего компилятора

Множественные прикладные среды

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

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

Способы реализации прикладных программных сред

Основные способы реализации прикладных программных сред:

  • Трансляция системных вызовов
  • Равноправные API
  • Микроядерный подход

16.Процессы и потоки. Планирование и диспетчеризация потоков

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Содержание: идентификатор, адрес исполняемого модуля, приоритет, права доступа и пр.

Примеры описателей для:

· Windows NT/2000/XP - объект-процесс (object-process);

· UNIX - дескриптор процесса;

· OS/2 - управляющий блок процесса (PCB -Process Control Block);

Кроме того создать процесс - это включает также следующие действия:

· Найти программу на диске;

· перераспределить оперативную память;

· выделить память новому процессу;

· переписать программу в выделенную память;

· изменить некоторые параметры программы.

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

Создание потоков

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

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

Пример создания потоков в Windows (object Pascal):

T=TThread.Create(false)

Пример удаления потока:

Наши рекомендации