Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Часть 1 панова.doc
Скачиваний:
6
Добавлен:
17.04.2019
Размер:
3.18 Mб
Скачать

27. Системный вызов

Возможности ОС доступны программисту в виде набора функций, который называется интерфейсом прикладного программирования (API).

Для разработки в приложениях все особенности конкретной ОС представлены ее API.

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

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

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

Был создан стандарт на интерфейс прикладного программирования (POSIX). В нем существует более 100 системных вызовов, которые работают для разных ОС.

СИСТЕМНЫЕ ВЫЗОВЫ СТАНДАРТА POSIX

Fork – создание нового процесса

Exit – завершение процесса

Open – открытие файла

Close – закрытие файла

Read – чтение данных из файла в буфер

Write – запись данных из буфера в файл

Stat – получение данных о состоянии файла

MKDIR - создание нового каталога

RMDIR – удаление каталога

Link – создание ссылки

Unlink – удаление ссылки

Mount – монтирование файловой системы

CHDIR – изменение рабочего каталога.

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

Интерфейс прикладного программирования для WINDOWs (WIN 32 API)

WIN 32 API отделен от системных вызовов, что позволяет в разных версиях менять системные вызовы, не переписывая подпрограммы.

В WIN 32 API существует 1000 системных вызовов. Такое количество связано с тем, что графический интерфейс пользователя UNIX-систем запрашивается в пользовательском режиме, а WINDOW’s встроен в ядро.

Вызовы WIN 32 API, подобные вызовам стандарта POSIX/

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

EXITPROCESS – завершение процесса

CREATEFILE - открытие файла

CLOSEFILE – закрытие файла

READFILE – чтение данных из файла в буфер

WRITEFILE – запись данных из буфера в файл

CREATEDIRECTORY – создание каталога

REMOVEDIRECTORY – удаление каталога

SETCURRENTDIRECTORY – смена рабочего каталога.

28. Понятие процесса

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

ОС управляет не самими процессами, а их образами, т. е. сегментами кода и данных, которые определяют среду выполнения.

С каждым процессом связано его адресное пространство, или память, из которого он может читать данные и записывать.

Адресное пространство содержит:

  • саму программу (сегмент кода)

  • данные к программе (сегмент данных)

  • стек программы (сегмент стека).

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

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

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

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