Содержание
- 2. Определение процесса. Основные понятия Процесс — совокупность машинных команд и данных, которая обрабатывается в рамках вычислительной
- 3. Жизненный цикл процесса Жизненный цикл процесса в системе: Образование (порождение) процесса Обработка (выполнение) процесса Ожидание (по
- 4. Модельная ОС Буфер ввода процессов (БВП) — пространство, в котором размещаются и хранятся сформированные процессы с
- 5. Модель пакетной однопроцессной системы Обработка ЦП Завершение 1 2 0. Поступление процесса в очередь на начало
- 6. Модель пакетной мультипроцессной системы БОП БВП Обработка ЦП Завершение 1 4 Ожидание начала обработки 0 Ожидания
- 7. БОП БВП Модель ОС с разделением времени Обработка ЦП Завершение 1 4 Ожидание начала обработки 0
- 8. Модель ОС с разделением времени (модификация) Диск свопинг БОП БВП Обработка ЦП Завершение 1 4 Ожидание
- 9. Типы процессов «Полновесные процессы» — процессы, выполняющиеся внутри защищенных участков оперативной памяти. «Легковесные процессы» (нити) —
- 10. Типы процессов Однонитевая организация процесса — «один процесс — одна нить»: процесс нить Многонитевая организация процесса:
- 11. Понятие «процесс» Понятие «процесс» включает в себя следующее: исполняемый код собственное адресное пространство, которое представляет собой
- 12. Контекст процесса Контекст процесса — совокупность данных, характеризующих актуальное состояние процесса. Пользовательская составляющая — текущее состояние
- 13. Определение процесса Unix Объект, зарегистрированный в таблице процессов ОС Объект, порожденный системным вызовом fork() Процесс
- 14. Процесс в UNIX — объект, зарегистрированный в таблице процессов UNIX. Определение процесса в UNIX PID Системная
- 15. Контекст процесса Пользовательская составляющая (тело процесса) Аппаратная составляющая Системная составляющая Сегмент кода Сегмент данных Машинные команды
- 16. Разделение сегмента кода Сегмент кода программы Сегмент данных 1 ... Процесс 1 Сегмент данных 2 Сегмент
- 17. Контекст процесса счетчик команд регистр состояния процессора аппарат виртуальной памяти регистры общего назначения и т. д.
- 18. Контекст процесса идентификатор родительского процесса текущее состояние процесса приоритет процесса реальный и эффективный идентификаторы пользователя-владельца реальный
- 19. Процесс в UNIX — это объект, порожденный системным вызовом fork(). Второе определение процесса в UNIX Системный
- 20. Создание нового процесса #include #include pid_t fork ( void ); При удачном завершении возвращается: ∙ сыновнему
- 21. Создание нового процесса Окружение Файлы, открытые в процессе-отце Способы обработки сигналов Разрешение переустановки эффективного идентификатора пользователя
- 22. Создание нового процесса Идентификатор процесса (PID) Идентификатор родительского процесса (PPID) Сигналы, ждущие доставки в родительский процесс
- 23. Потомок: выполняются операторы в else-секции Предок: выполняются операторы в if-секции PID = 2757 main() { …
- 24. Пример int main ( int argc, char **argv ) { printf ( "PID = %d; PPID
- 25. Семейство системных вызовов exec() #include int execl (const char *path, char *arg0, …, char *argn, 0);
- 26. main() { execl(“/bin/ls”, ”ls”, ”-l”, (char*)0); } PID = 2760 PID = 2760 main() { //
- 27. Семейство системных вызовов exec() Сохраняются: Идентификатор процесса Идентификатор родительского процесса Таблица дескрипторов файлов Приоритет и большинство
- 28. Пример #include int main ( int argc, char **argv ) { … /* тело программы */
- 29. Использование схемы fork-exec main () { // реализация программы } PID = ХХХХ PID = 2757
- 30. Завершение процесса Системный вызов _exit() Выполнение оператора return, входящего в состав функции main() или выход на
- 31. Завершение процесса #include void _exit ( int status ); status : = 0 при успешном завершении
- 32. Завершение процесса Освобождается сегмента кода и сегмента данных процесса Закрываются все открытые дескрипторы файлов Если у
- 33. #include #include pid_t wait ( int *status ); Получение информации о завершении своего потомка status по
- 34. Получение информации о завершении своего потомка Приостановка родительского процесса до завершения (остановки) какого-либо из потомков После
- 35. Пример. Использование системного вызова wait() #include int main ( int argc, char **argv ) { int
- 36. Готов к выполнению очередь готовых процессов планирование процессов Создан fork() Блокирован ожидает внешнего события внешнее событие
- 37. Начальная загрузка Начальная загрузка — загрузка ядра системы в оперативную память, запуск ядра. Чтение нулевого блока
- 38. Инициализация Unix системы Начальная инициализация компонентов компьютера (установка часов, инициализация контроллера памяти и пр.) Инициализация системных
- 39. Инициализация системы Создание ядром первого процесса Копируется процесс “0” (запись таблицы процессов) Создание области кода процесса
- 40. Инициализация системы Замена команды процесса “1” кодом из файла /etс/init (запуск exec() ) Подключение интерпретатора команд
- 42. Скачать презентацию