Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Межпроцессное взаимодействие




 

Поводов для нежелательной конкуренции между процессами много, особенно при удалении имен каталогов. Предположим, что один процесс пытается найти данные файла по его полному символическому имени, последовательно проходя компонент за компонентом, а другой процесс удаляет каталог, имя которого входит в путь поиска. Допустим, процессА делает разбор имени "a/b/c/d" и приостанавливается во время получе­ния индексного узла для файла "с". Он может приостановиться при по­пытке заблокировать индексный узел или при попытке обратиться к дис­ковому блоку, где этот индексный узел хранится. Если процессуВнужно удалить связь для каталога с именем "с", он может приостановиться по той же самой причине, что и процесс А. Пусть ядро впоследствии решит возобновить процесс В раньше процесса А. Прежде чем процесс А про­должит свое выполнение, процесс В завершится, удалив связь каталога "с" и его содержимое по этой связи. Позднее процессАпопытается об­ратиться к несуществующему индексному узлу, который уже был удален. Алгоритм поиска файла, проверяющий в первую очередь неравенство значения счетчика связей нулю, должен сообщить об ошибке.

 

Что такое API

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

1. Управления процессами

2. Управление памятью

3. Управление вводом-выводом

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

Существуют два подхода управления процессами – «родитель-потомок» (UnIX) и равноправные отношения (Windows). Обращение к операционной системе, в зависимости от метода управления процессами сильно отличается. Так для однозадачных систем (DOS) использовался механизм программного прерывания. Набор функций API был доступен через точку обработчика int 21h. В более сложных системах имеется не одна а несколько точек входа – по количеству функций API. Так, в большинстве ОС используется метод вызова подпрограмм. В этом случае вызов сначала передается в модуль API (библиотека времени выполнения), который формирует вызовы обработчикам программных прерываний, входящих в составОС. Использование прерываний необходимо, поскольку в этом случае процессор переводится в состояние супервизора.

ЧтожеобозначаеттерминAPI (application program interface).API можно условно разделить на 3 группы.

1. ПрикладнойAPI - интерфейс высокого уровня к библиотеке RTL (runtimelibrary – библиотека времени выполнения RTL включает модули из системы программирования и модули ОС).API реализуется на уровне пользовательских программ;

2. СистемныйAPI - системные программы, в составе ОС.Реализация на уровне вызовов ядра ОС

3. Прочие API. Реализация на уровне внешней библиотеки процедур и функций.

Прикладные API

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

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

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

Системный API на уровне ОС

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

Недостаток системныхAPI в отсутствии переносимости и зависимости от аппаратной платформы. Программы, созданные для одной платформы не смогут работать на другой архитектуре. Переносимости можно было бы добиться если удастся стандартизировать (семантически) наполнение основных функций ядра (POSIX). Примером может служить WinAPI, позволяющая запускать программы в нескольких операционных системах Windows (98 –NT-XP).

 

Реализация API на уровне системы

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

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

Реализация API через внешние библиотеки

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

Если удается достигнуть доступности внешней библиотеки для нескольких платформ, программы пользователей становятся переносимыми. Например, стандарт POSIX или Xlib. Для большинства сторонних библиотек это не так VCL (Borland) или MFC(Microsoft) ориентированы только на Windows. CLX(Borland) – WindowsLinux

Требование широкой переносимости связано, прежде всего с тем, что аппаратная составляющая быстро меняется. Разработчики ПОвсегда отстают от развития оборудования.

 

POSIX

 

PortableOperatingSystemInterface–платформенно независимый системный вызов. Этот стандарт широко применялся в ОС для переносимости приложений между UNIX клонами. Тем не менее сейчас RTLPOSIX есть в Linux? WindowsQNX и т.д. Сейчас работает POSIX1.2

Рис 8
POSIX

 










Последнее изменение этой страницы: 2018-05-10; просмотров: 186.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...