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



Более подробная информация - http://ru.wikipedia.org/wiki/API

API (Application Programming Interface) - интерфейс прикладного программирования, .

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

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

Рассмотрим наиболее часто применяемых системных вызовов стандарта POSIX. В POSIX существует более 100 системных вызовов.

· fork - создание нового процесса

· exit - завершение процесса

· open - открывает файл

· close - закрывает файл

· read - читает данные из файла в буфер

· write - пишет данные из буфера в файл

· stat - получает информацию о состоянии файла

· mkdir - создает новый каталог

· rmdir - удаляет каталог

· link - создает ссылку

· unlink - удаляет ссылку

· mount - монтирует файловую систему

· umount - демонтирует файловую систему

· chdir - изменяет рабочий каталог

Более подробная информация - http://ru.wikipedia.org/wiki/POSIX

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

Рассмотрим интерфейс прикладного программирования для Windows - Win32 API. Win32 API отделен от системных вызовов. Это позволяет в разных версиях менять системные вызовы, не переписывая программы.

Более подробная информация - http://ru.wikipedia.org/wiki/Windows_API

Поэтому непонятно является ли вызов системным (выполняется ядром), или он обрабатывается в пространстве пользователя.

В Win32 API существует более 1000 вызовов. Такое количество связано и с тем, что графический интерфейс пользователя UNIX запускается в пользовательском режиме, а в Windows встроен в ядро. Поэтому Win32 API имеет много вызовов для управления окнами, текстом, шрифтами т.д.

Рассмотрим вызовы Win32 API, которые подобны вызовам стандарта POSIX.

· CreatProcess (fork) - создание нового процесса

· ExitProcess (exit) - завершение процесса

· CreatFile (open) - открывает файл

· CloseHandle (close) - закрывает файл

· ReadFile (read) - читает данные из файла в буфер

· WriteFile (write) - пишет данные из буфера в файл

· CreatDirectory (mkdir) - создает новый каталог

· RemoveDirectory (rmdir) - удаляет каталог

· SetCurrentDirectory (chdir) - изменяет рабочий каталог

 

Интерфейс Win32 API позволяет программам работать почти на всех версиях Windows

Структура операционных систем

Монолитная система

Более подробная информация - http://ru.wikipedia.org/wiki/Монолитное_ядро

Структура системы:

1. Главная программа, которая вызывает требуемые сервисные процедуры.

2. Набор сервисных процедур, реализующих системные вызовы.

3. Набор утилит, обслуживающих сервисные процедуры.

Простая модель монолитной системы

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

Этапы обработки вызова:

o Принимается вызов

o Выполняется переход из режима пользователя в режим ядра

o ОС проверяет параметры вызова для того, чтобы определить, какой системный вызов должен быть выполнен

o После этого ОС обращается к таблице, содержащей ссылки на процедуры, и вызывает соответствующую процедуру.


1.4.2 Многоуровневая структура ОС

Более подробная информация - http://ru.wikipedia.org/wiki/Модульное_ядро

 

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

Пример структуры многоуровневой системы

Преимущества:

o Высокая производительность

Недостатки:

o Большой код ядра, и как следствие большое содержание ошибок

o Ядро плохо защищено от вспомогательных процессов

Пример реализации многоуровневой модели UNIX.

Структура ОС UNIX

Ядро ОС UNIX

Пример реализации многоуровневой модели Windows

Структура Windows 2000

Модель экзоядра

Более подробная информация - http://ru.wikipedia.org/wiki/Экзоядро

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


Дата добавления: 2018-08-06; просмотров: 238; Мы поможем в написании вашей работы!

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






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