Интерфейс прикладного программирования
Более подробная информация - 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;