В мире операционных систем существуют две сущности, где запускаются наши программы (некие капсулы запуска программ) - процессы (изолированы друг от друга), потоки (thread) (обмениваются данными почти бесплатно).
Каждое приложение состоит как минимум из 1 процесса - чаще всего только один. А процесс состоит хотя бы из 1 потока (main).
Служба (service) - запущенный процесс
Multitasking(многозадачность) более общее понятие, позволяет нескольким приложениям или процессам выполняться одновременно на уровне операционной системы.
Например, вы можете одновременно слушать музыку, работать с текстовым редактором и просматривать веб-страницы. Операционная система управляет переключением между этими процессами, обеспечивая их одновременное выполнение.
Concurrency(параллелизм) - способность программы управлять выполнением нескольких задач одновременно.
Multithreading(многопоточность или способ достижения concurrency) позволяет программе выполнять несколько потоков выполнения внутри одного процесса. В Swift часто реализуется с использованием GCD, который предоставляет высокоуровневый API для управления потоками и задачами.
Процесс — это исполняемый экземпляр приложения (path of execution. Н/р: main()), создается автоматически вызывая метод fork(). Важно отметить, что поток может делать все то же, что и процесс. Но поскольку процесс может состоять из нескольких потоков, поток можно считать «облегченным» процессом.
Boot - процесс запуска устройств и процесс запуска операционной системы компьютера после включения или перезагрузки. В этот момент происходит инициализация и самонастройка основных компонентов системы.
Сигналы в 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