Что такое процесс?
- Техническое определение: Процесс — совокупность машинных команд и данных, которая обрабатывается в рамках вычислительной системы и обладает правами на владение некоторым набором ресурсов
- Суть:
- Программа — просто текст. Её исполняемый экземпляр со своими метаданными — процесс.
- Много подробностей есть в специальном материале для второго курса ВМК
Состав процесса:
PID,PPID— идентификаторы процесса и родителяUID / EUID / GID / EGID— Идентификаторы пользователя- Аргументы командной строки
- Окружение процесса
- Виртуальное адресное пространство
- Состояние процесса
- И так далее…
$ sleep 300 &
[1] 12345
$ ps -o pid,ppid,pgid,tty,stat,user,comm,args -p 12345
PID PPID PGID TT STAT USER COMMAND COMMAND
12345 6789 12345 tty1 S user sleep sleep 300
$ cat /proc/12345/status
$ ls -l /proc/12345/fd
Жизненный цикл
- fork — Создание сыновьего процесса:
- Наследование общих параметров:
- Окружение
- Права и группы
- Таблицы сигналов и открытых файлов
- Уникальность идентификаторов процессов
- Уникальность адресного пространства
- А для нитей — легковесных процессов — нет
- Изменение параметров (перенаправление потоков ввода-вывода, например)
- Наследование общих параметров:
$ { cat | grep hello; echo Success; } < file.txt > res.log
$ ( cat | grep hello; echo Success; ) < file.txt > res.log
$ ( cat | grep hello; echo Success; : ) < file.txt > res.log
- exec — Задание программы процессу
- Получается дерево процессов (
pstree) - Здесь меняется контекст процесса
- Получается дерево процессов (
$ bash -c "exec cal"
- Отслеживание параметров процесса:
- Управление (
ptrace,strace) - «Обмен сообщениями»
- Управление (
$ kill -TERM 12345
$ kill -INT 12345
$ kill -KILL 12345
$ kill -STOP 12345
$ kill -CONT 12345
$ kill -l
+ IPC
+ Реальный обмен сообщениями + Завершение
+ Ожидание завершения
+ Независимая работа процессов
Простое управление процессами
killи сигнальные команды- Управление фоновыми процессами —
bg,fg - Связи между процессами —
jobs,disown