Принципы построения интерфейсов операционных систем. Интерфейсы прикладного программирования



Под интерфейсами ОС следует понимать спец инт-сы предназначенные для выполнения след задач:

1) управление процессами;

2) управление памятью

3) управление вводом/выводом.

Инт-с прикладного программирования ( API )

Термин API на след направления.

1) API как интерфейс высокого уровня, принадлежащий к библиотекам RTL

2) Прикладных и системных программ, входящих в поставку ОС

3) прочее

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

Концепция прерывания

Прерывание (англ. interrupt) — сигнал, сообщающий процессору о совершении какого-либо асинхронного события. При этом выполнение текущей последовательности команд приостанавливается, и управление передаётся обработчику прерывания, который выполняет работу по обработке события и возвращает управление в прерванный код.

Виды прерываний:

Аппаратные (англ. IRQ - Interrupt Request) — события от периферийных устройств (например, нажатия клавиш клавиатуры, движение мыши, сигнал от таймера, сетевой карты или дискового накопителя) — внешние прерывания, или события в микропроцессоре — (например, деление на ноль) — внутренние прерывания;

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

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

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

Вектор прерывания — ячейка памяти, содержащая адрес обработчика прерывания.

Перехват прерывания — изменение обработчика прерывания на свой собственный.

Вектора прерываний объединяются в таблицу векторов прерываний. Местоположение таблицы зависит от типа и режима работы микропроцессора.

 


Средства, механизмы, подсистемы операционной системы

Система управления процессами. Процессы, потоки.

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

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

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

Например, в ходе выполнения задачи происходит обращение к внешнему устройству, и на время этой операции можно не блокировать полностью выполнение процесса, а продолжить вычисления по другой "ветви" процесса. Мультипрограммирование теперь реализуется на уровне нитей, и задача, оформленная в виде нескольких нитей в рамках одного процесса, может быть выполнена быстрее за счет псевдопараллельного выполнения ее отдельных частей. Действительно, в отличие от процессов, которые принадлежат разным, вообще говоря, конкурирующим приложениям, все нити одного процесса всегда принадлежат одному приложению, поэтому программист, пишущий это приложение, может заранее продумать работу множества нитей процесса таким образом, чтобы они могли взаимодействовать, а не бороться за ресурсы. Нити иногда называют облегченными процессами или мини-процессами. Действительно, нити во многих отношениях подобны процессам. Каждая нить выполняется строго последовательно и имеет свой собственный программный счетчик и стек. Нити, как и процессы, могут, например, порождать нити-потомки, могут переходить из состояния в состояние. Подобно традиционным процессам (то есть процессам, состоящим из одной нити), нити могут находится в одном из следующих состояний: ВЫПОЛНЕНИЕ, ОЖИДАНИЕ и ГОТОВНОСТЬ. Пока одна нить заблокирована, другая нить того же процесса может выполняться. Нити разделяют процессор так, как это делают процессы, в соответствии с различными вариантами планирования. Однако различные нити в рамках одного процесса не настолько независимы, как отдельные процессы. Все такие нити имеют одно и то же адресное пространство. Это означает, что они разделяют одни и те же глобальные переменные.

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

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

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

 


Дата добавления: 2019-02-13; просмотров: 415; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!