- •1. Операционные системы
- •2. Функциональные компоненты локальной ос
- •3. Назначение и функции сетевой ос
- •4. Функциональные компоненты сетевой ос
- •5. Коммуникационные средства
- •6. Классификация ос
- •8. Архитектура ос
- •9. Монолитные и многоярусные ядра
- •10. Функциональные компоненты Linux
- •11. Структура ядра
- •12. Функции слоёв ядра
- •13. Вспомогательные модули
- •14. Микроядерные системы
- •15. Объектная модель функционирования
- •16. Состав исполнительной системы WinNt
- •17. Совместимость
- •18. Множественные прикладные среды. Способы реализации
- •19. Интерфейсы ос
- •20. Файловая система
- •21. Логическая организация файла
- •22. Физическая организация файла
- •23. Общая модель фс
- •Непрерывное
- •2) Цепочечная
- •3) Фиксированный
- •Битовые карты (таблицы) – каждому блоку ставится в соответствие свой бит (1 – занят, 0 – свободен)
- •Цепочки сводных свободных порций
- •Список свободных блоков
- •Индексированный
- •24. Функции фс
- •25. Фс unix-подобных ос
- •26. Структура фс
- •27. Структура фс базовых unix-подобных ос
- •28. Архитектура виртуальной фс
- •29. Последовательность действий при монтировании
- •30. Файловые дескрипторы и трансляция имён
- •31. Физическая организация fat
- •32. Физическая организация ntfs
- •33. Управление процессами
- •34. Контекст и дескриптор
- •35. Структура контекста процесса
- •36. Планирование и диспетчеризация
- •37. Алгоритмы планирования
- •38. Планирование и диспетчеризация в unix системах
- •39. Управление процессами в unix-подобных системах
- •40. Атрибуты, инфраструктура процесса
- •41. Создание процессов
- •42. Этап exec()
- •43. Межпроцессные взаимодействия (ipc)
- •44. Каналы (pipe)
- •45. Fifo
- •46. Пространство имен
- •47. Сообщения
- •48. Семафоры
- •49. Разделяемая память
- •50. Сигналы
- •51. Последовательность событий
- •52. Функции управления процессами
- •53. Сообщения в микроядерных ос.
- •54. Процессы и потоки в WinNt
- •55. Базовая структура процесса, создание процесса в WinNt
- •56. Основные различия управления процессами в различных средах
- •57. Состав потока в WinNt и контекст потока
- •58. Передача сообщений с помощью lpc (локальный вызов процедур)
- •59. Распределенные системы. Удаленный вызов процедур. Rpc (Remote Procedure Call)
- •60. Система ввода-вывода в Win nt
- •61. Реализация свв в Windows nt
- •62. Унифицированная модель драйвера
- •63. Формат пакета irp
- •64. Структура драйвера
- •65. Редиректор и сервер. Встроенные сетевые компоненты
33. Управление процессами
Процесс – программа в стадии выполнения при условии, что в процесс включены необходимые данные операционной среды и переменные окружения (динамический объект).
Процесс – единица работы, связанная с обработкой заявки на ресурсы ВС.
Состоит из кода и данных, полученных в результате обработки программы пользователя.
Потоки
Процесс может состоять из нескольких потоков. Хотя бы один поток будет в процессе всегда. В таком случае «поток»=«процесс».
Все потоки процесса разделяют его адресное пространство и множество переменных среды.
Процесс представляет собой изолированное пространство + ряд ресурсов ВС, которые даны ему в соответствии с правами. Изолированность позволяет сохранить целостность самих процессов и ОС в целом. Это не позволяет процессам непосредственно обращаться друг к другу – это происходит через ядро. Используются средства IPC.
Подсистема управления процессами занимается:
Планирование взаимодействия процессов
Порождение/уничтожение процессов
Обеспечение необходимыми ресурсами
Жизненный цикл процесса:
Готовность – пассивное состояние – процесс имеет все необходимые ресурсы, но нет процессорного времени.
Выполнение – активное состояние процесса, когда процессорный ресурс предоставлен процессу.
Ожидание – пассивное состояние – процесс не имеет любого другого ресурса, кроме процессора.
Очереди: готовности (по приоритетам – prio 0 .. prio n) и ожидания (по типу ресурсов – res0 ... res m)
8->3 если есть место в ОЗУ, если нет, то 8->5
4, 6 – ожидание
1, 2 – выполнение
3, 5, 7 - готовность
Образ процесса – совокупность его кодов и данных и ресурсов.
Управление процессом в режиме задач возможно, если мы сами создаем процесс с помощью специальных системных вызовов (напр. fork()). Момент возвращения из ядра определяется только ОС.
1 <-> 2 может быть много переходов, это связано с внутренними прерываниями и событиями.
4 – ждем предоставления ресурса.
5 – swapping – если нужно освободить ОЗУ.
7 – если есть место в ОЗУ. Процесс возвращен из привилегированного режима в непривилегированный режим. Ядро резервирует его и переключается на другой процесс такая ситуация возможна при прерывании.
Жизненный цикл процесса в UNIX-подобных ОС: создание нового процесса (fork(), выделение ресурсов) -> готовность в ОЗУ (завершение fork(), exec()) -> выполнение в режиме ядра (runnable) -> завершение процесса (exit(), defunct zombie) -> полный возврат ресурсов. Если ресурсы заняты, то после fork() переход в готовность вне ОЗУ.
34. Контекст и дескриптор
Для возобновления выполнения процесса необходимо сохранить информацию о состоянии ОС:
Контекст – информация, которая отражает состояние операционной среды, та информация, которая необходима для выполнения процесса:
Состояние регистров (программный счетчик, регистра указатель стека и т.д.)
Режим работы процессора
Указатели на открытые файлы
Информация о незавершенных операциях ввода/вывода
Коды ошибок, выполняемых системных вызовов
Дескриптор процесса – информация, необходимая для планирования:
Идентификатор процесса
Состояние процесса
Данные о степени его привилегированности
Место нахождения сегмента кода
Права доступа
Информация о соседних дескрипторах в очереди
В дескрипторе хранится более оперативная информация, которая должна быть доступна извне => дескриптор всегда в ОЗУ, в отличие от контекста, который может быть вынесен в область swapping’a.
Очереди процессов представляются как списки дескрипторов, т.е. дескриптор содержит ссылку на соседей в очереди дескрипторах. Управление очередями = управление списками.
Программный код может выполняться, если создан процесс.
Создать процесс – значит создать информационную структуру (контекст/дескриптор).
Необходимо:
Создать структуру данных, описывающих данный процесс.
Включить дескриптор в очередь готовых процессов.
Загрузить кодовый сегмент в ОЗУ или область swapping’a.