- •Часть 1
- •1. Что такое ос? Основная задача и основные функции.
- •2. Базовые понятия ос
- •3. Понятие Виртуальной Машины (вм).
- •9. Образ процесса
- •10. Базовые функции ос и функции ядра
- •11. Что представляет собой ядро ос
- •12. Вспомогательные модули.
- •13. Классификация ос по назначению и по режиму обработки задач
- •14. Классификация ос по способу взаимодействия с системой
- •15. Классификация ос по способу построения ос
- •22. Монолитная ос
- •23. Структура монолитной ос Структура монолитной ос
- •24. Классическая структура ос
- •27. Системный вызов
- •28. Понятие процесса
- •29. Режимы функционирования процессов.
- •30. Системная таблица процессов.
- •31. Создание процесса.
- •32. Состояния процесса
- •33. Иерархия процессов.
- •34. Завершение процесса.
- •Плановый выход по известной ошибке
- •Выход по неисправимой ошибке
- •Уничтожение другим процессом
- •35. Основные характеристики процесса.
- •36. Понятие потока. Модель потока
- •37. Преимущества использования потоков.
- •38. Реализация потоков в пространстве пользователя
- •39. Реализация потоков в пространстве ядра.
- •40. Различия между процессами и потоками.
- •41. Преимущества процессов над потоками
27. Системный вызов
Возможности ОС доступны программисту в виде набора функций, который называется интерфейсом прикладного программирования (API).
Для разработки в приложениях все особенности конкретной ОС представлены ее API.
Приложения выполняют обращения к функциям API с помощью системных вызовов, т. е. интерфейс между ОС и программами определяется набором системных вызовов, которые выполняются ядром ОС.
Понятно, что способ реализации системных вызовов зависит от структурной организации ОС, которая связана с особенностями аппаратной структуры. Реализация системных вызовов также зависит от языка программирования.
ОС с различной внутренней организацией, но с одинаковым набором функций API представляется как одна и та же ОС. Это упрощает стандартизацию ОС и обеспечивает переносимость приложений между внутренне различными ОС.
Был создан стандарт на интерфейс прикладного программирования (POSIX). В нем существует более 100 системных вызовов, которые работают для разных ОС.
СИСТЕМНЫЕ ВЫЗОВЫ СТАНДАРТА POSIX
Fork – создание нового процесса
Exit – завершение процесса
Open – открытие файла
Close – закрытие файла
Read – чтение данных из файла в буфер
Write – запись данных из буфера в файл
Stat – получение данных о состоянии файла
MKDIR - создание нового каталога
RMDIR – удаление каталога
Link – создание ссылки
Unlink – удаление ссылки
Mount – монтирование файловой системы
CHDIR – изменение рабочего каталога.
В UNIX подобные системные вызовы как правило идентичны библиотеке процедур, которая используется для обращения к системным вызовам.
Интерфейс прикладного программирования для WINDOW’s (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-область). Эта память выделяется динамически и использование ее от процесса к процессу меняется. С помощью «кучи» можно предоставить процессору дополнительную память. При запуске программы автоматически переменные размещаются в стеке, который служит для временного хранения переменных и адресов возврата из процедур.