Skip to content

Latest commit

 

History

History
103 lines (69 loc) · 9.67 KB

File metadata and controls

103 lines (69 loc) · 9.67 KB

Process

Предисловие

В мире операционных систем существуют две сущности, где запускаются наши программы (некие капсулы запуска программ) - процессы (изолированы друг от друга), потоки (thread) (обмениваются данными почти бесплатно).

Каждое приложение состоит как минимум из 1 процесса - чаще всего только один. А процесс состоит хотя бы из 1 потока (main).

Служба (service) - запущенный процесс

Multitasking(многозадачность) более общее понятие, позволяет нескольким приложениям или процессам выполняться одновременно на уровне операционной системы.

Например, вы можете одновременно слушать музыку, работать с текстовым редактором и просматривать веб-страницы. Операционная система управляет переключением между этими процессами, обеспечивая их одновременное выполнение.

Concurrency(параллелизм) - способность программы управлять выполнением нескольких задач одновременно.

Multithreading(многопоточность или способ достижения concurrency) позволяет программе выполнять несколько потоков выполнения внутри одного процесса. В Swift часто реализуется с использованием GCD, который предоставляет высокоуровневый API для управления потоками и задачами.

Процесс

Процесс — это исполняемый экземпляр приложения (path of execution. Н/р: main()), создается автоматически вызывая метод fork(). Важно отметить, что поток может делать все то же, что и процесс. Но поскольку процесс может состоять из нескольких потоков, поток можно считать «облегченным» процессом.

Загрузка (boot)

Boot - процесс запуска устройств и процесс запуска операционной системы компьютера после включения или перезагрузки. В этот момент происходит инициализация и самонастройка основных компонентов системы.

Основные ресурсы процесса

  • Память
  • Процессорное время
  • Оборудование Н/р: устройство ввода и вывода (I/O) - (tty)

Состояния процесса

LinuxProcessState

Список сигналов

Сигналы в UNIX-подобных операционных системах указывают ядру, что произошли незаконные ошибки доступа к памяти, прервать нормальное планирование процесса и завершить/остановить его, или, вместо продолжения выполнения процесса с места остановки, выполнить функцию - обработчик этих сигналов, и лишь затем продолжить выполнение основного кода.

Сигналы, предназначенные процессу, создаются (отправляются) в нескольких ситуациях: при аппаратных сбоях, при срабатывании особого таймера, при обработке спецсимволов (Ctrl+C, Ctrl+Z) драйвером управляющего терминала, с помощью системного вызова kill().

В зависимости от причины, отправляются сигналы разных типов. Тип сигнала обозначается целым числом (номером). В Linux сигналы нумеруются от 1 до 64:

$ kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
 5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
 9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGSTKFLT
17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU
25) SIGXFSZ     26) SIGVTALRM   27) SIGPROF     28) SIGWINCH
29) SIGIO       30) SIGPWR      31) SIGSYS      34) SIGRTMIN
35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4
39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6
59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

Наиболее популярные сигналы в UNIX-подобных операционных системах:

Сигнал Номер Сочетание клавиш Описание
SIGHUP 1 Завершение управляющего терминала или сессии
SIGINT 2 Ctrl+C Прерывание, обычно инициируется пользователем
SIGQUIT 3 Ctrl+\ Прерывание и генерация дампа памяти
SIGKILL 9 Немедленное завершение процесса (нельзя перехватить или игнорировать)
SIGTERM 15 Запрос на завершение процесса
SIGSTOP 19 Остановка выполнения процесса (нельзя перехватить или игнорировать)
SIGCONT 18 Возобновление выполнения приостановленного процесса
SIGTSTP 20 Ctrl+Z Остановка процесса пользователем
SIGCHLD 17 Индикация завершения или изменения состояния дочернего процесса
SIGALRM 14 Таймер (сигнал посылается по истечении времени, установленного функцией alarm)
SIGUSR1 10 Пользовательский сигнал для использования в пользовательских программах
SIGUSR2 12 Второй пользовательский сигнал для использования в пользовательских программах

Просмотр процессов

Утилита\команда ps позволяет просмотреть полезные данные про процессы.

ps aux | grep bash

  • ps a все процессы в системе
  • ps u детализированный вывод
  • ps x процессы, запущенные текущим пользователем

❗Параметры в ps <parametr> можно передавать в различных стилях, в зависимости от этого у него будет различное поведение. Это необходимо для обратной совместимости


2.0.3 File System in Linux Theme | Back To iOSWiki Contents | 2.0.4.2 Thread Theme Folder