Создание процесса. Завершение процесса
Primary tabs
Forums:
Создание процесса.
Основные события, приводящие к созданию процесса:
- ? Инициализация системы
- ? Выполнение изданного работающим процессом системного запроса на создание процесса
- ? Запрос пользователя на создание нового процесса
- ? Инициирование пакетного задания
Обычно, при загрузке системы создаются несколько процессов, некоторые из которых являются высокоприоритетными, т.е. обеспечивающими взаимодействие с пользователем и выполняющими заданную работу. Остальные процессы являются фоновыми, они не связаны с конкретными пользователями, но выполняют особые функции. Некоторые из них активизируются только в определенный момент, по мере появления задач. Такие процессы называются демонами.
С технической точки зрения, во всех случаях новый процесс формируется одинаково: текущий процесс выполняет системный запрос на создание нового процесса. Текущим процессом может быть любой процесс, будь то системный или запущенный пользователем. Системный запрос заставляет создать новый процесс, а также содержит информацию о программе, которую нужно запустить в этом процессе.
В UNIX существует только один системный запрос, направленный на создание процесса: fork.
Этот запрос создает дубликат вызываемого процесса. После выполнения запроса fork двум процессам - родительскому и дочернему - соответствуют одинаковые образы памяти, строки окружения и открытые файлы. Обычно, дочерний процесс выполняет системный вызов execve для изменения образа памяти и запуска новой программы.
В Windows вызов всего одной функции CreateProcess управляет и созданием процесса и запуском нужной в ней программы.
После создания нового процесса, родительский и дочерний процессы имеют собственные различные адресные пространства. В тоже время, созданный процесс может использовать одинаковые ресурсы с родительским процессом, например открытые файлы.
Завершение процесса
Основные события, приводящие к завершению процесса:
- ? Обычный выход (преднамеренно)
- ? Выход по ошибке (преднамеренно)
- ? Выход по неисправимой ошибке (непреднамеренно)
- ? Уничтожение другим процессом (непреднамеренно)
В основном, процессы завершаются по мере выполнения своей работы. После окончания компиляции программы, компилятор выполняет системный запрос, чтобы сообщить операционной системе о завершении работы.
В UNIX этот запрос - exit,
а в Windows - ExitProcess.
Так же, причиной завершения процесса может служить выполнение другим процессом системного запроса на уничтожение процесса. В UNIX такой системный запрос - kill, а в Windows - TerminateProcess. В обоих случаях “киллер” должен обладать соответствующими правами к убиваемому процессу.
- Log in to post comments
- 14009 reads