Системные вызовы и интерфейс между прикладной программой и ОС 


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



ЗНАЕТЕ ЛИ ВЫ?

Системные вызовы и интерфейс между прикладной программой и ОС



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

Рассмотрим последовательность выполнения системного вызова.

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

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

3. После получения управления ядро считывает параметры вызова и определяет, что нужно сделать.

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

5. Программа считывает из памяти сохраненные значения и продолжает свою работу.

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

Рассмотрим способы передачи параметров в системном вызове. К ним принадлежат:

♦ передача параметров в регистры процессора;

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

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

Взаимосвязь между функциями АРI и системными вызовами неодинаковы в разных ОС.

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

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

Программная совместимость

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

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

Для совместимости на уровне исходных текстов необходимо, чтобы для всех ОС существовала реализация компилятора языка и АРI, который его использует программа.

Сегодня такую совместимость обеспечивает стандартизация разработки программного обеспечения, а именно:

♦ наличие стандарта на языки программирования (прежде всего на С и С++) и стандартных компиляторов;

♦ наличие стандарта на интерфейс операционной системы (АРI).

Работа со стандартизации интерфейса операционных систем происходит в рамках проекта POSIX(Рогtable Орегating System Interface). Наиболее важным стандартом есть POSIX 1003.1, который описывает набор библиотечных процедур (таких, как открытие файла, создание нового процесса и т.п.), которые должны быть реализованы в системе. Этот процесс стандартизации длится до сих пор, последней редакцией стандарта является базовая спецификация Open Group/ІЕЕЕ. Указанные стандарты отображают традиционный набор средств, реализованных в UNIX-совместимых системах.

Задача обеспечения бинарной совместимости возникает тогда, когда нужно запустить на выполнение файл прикладной программы в среде другой операционной системы. Такая задача значительно сложнее в реализации, наиболее распространенный подход к его решению - эмуляция среды выполнения. В этом случае программа запускается под управлением другой программы - эмулятора, который обеспечивает динамическое преобразование инструкций программы в инструкции нужной архитектуры. Примером такого эмулятора является программа wine, которая дает возможность запускать программы, разработанные для Win32 АРI, в среде Linux через эмуляцию функций Win32 АРI системными вызовами Linux.

Особенности архитектур

2.4.1. Базовая архитектура UNIX

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

Базовая структура классического ядра UNIX изображена на рис. 2.3

Система состоит из трех основных компонентов: подсистемы управления процессами, файловой подсистемы и подсистемы введения-вывода.

 

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

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

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

Современные UNIX-системы отличаются своей архитектурой.

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

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

♦ В этих системах поддерживается многопроцессорная обработка, а также многопото-ковость.

Базовые архитектурные решения, такие как доступ ко всем устройствам ввода-вывода через интерфейс файловой системы или организация системных вызовов, остаются неизменными во всех реализациях UNIX.

 

2.4.2 Особенности архитектуры Windows ХР

Основные компоненты Windows ХР изображены на рис. 2.4

Рис.2.4 Базовые компоненты Windows XP

 

Некоторые компоненты Windows ХР выполняются в привилегированном режиме, другие компоненты - в режиме пользователя. Начнем рассмотрение системы c компонентов режима ядра.

Компоненты режима ядра

В традиционном понимании (см. раздел 1.1.2) ядро ОС содержит все компоненты привилегированного режима, однако в Windows ХР понятие ядра закреплено только за одним из этих компонентов.



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 764; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.139.70.131 (0.006 с.)