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

Более подробная информация - 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/Экзоядро

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








Дата добавления: 2015-12-26; просмотров: 1439;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.009 сек.