Интересное про процессы в Linux
Процессы в Linux - это одна из самых важных и интересных тем для изучения операционной системы. Процессы - это экземпляры выполняющихся программ, которые имеют свои атрибуты, привилегии, состояния и ресурсы.
Процессы в Linux обладают рядом особенностей, которые отличают их от процессов в других системах. Вот некоторые из них:
Процессы в Linux могут быть порождены двумя способами: с помощью системного вызова fork(), который создает точную копию родительского процесса, или с помощью системного вызова clone(), который позволяет настраивать степень совместного использования ресурсов между родительским и дочерним процессом.
Процессы в Linux могут иметь разные идентификаторы: PID (process ID), PPID (parent process ID), PGID (process group ID), SID (session ID) и TID (thread ID). Эти идентификаторы используются для различных целей, таких как управление сигналами, терминалами, работами и нитями1.
Процессы в Linux могут иметь разные привилегии: UID (user ID), GID (group ID), EUID (effective user ID), EGID (effective group ID), SUID (saved user ID), SGID (saved group ID) и FSUID (filesystem user ID). Эти привилегии определяют права доступа процесса к файлам, устройствам, сети и другим ресурсам. Некоторые программы могут иметь специальный бит SUID или SGID, который позволяет им выполняться от имени другого пользователя или группы.
Процессы в Linux могут иметь разные состояния: R (running or runnable), S (sleeping or interruptible), D (sleeping or uninterruptible), T (stopped or traced), Z (zombie or defunct) и X (dead or exited). Эти состояния отражают активность процесса и его реакцию на сигналы. Состояние процесса можно узнать с помощью команды ps или top.
Процессы в Linux могут быть связаны с определенными ядрами процессора или группами ядер с помощью механизма аффинности процессов. Это позволяет оптимизировать распределение нагрузки и повысить производительность системы. Аффинность процессов можно установить или изменить с помощью команды taskset или sched_setaffinity().
Процессы в Linux могут быть ограничены в потреблении ресурсов с помощью механизма квот или лимитов. Это позволяет предотвратить злоупотребление или истощение ресурсов системы одним или несколькими процессами. Квоты или лимиты можно установить или изменить с помощью команды ulimit или setrlimit().
Интересные факты и фичи языков программирования у нас в канале, заходи :)