Архив рубрики: Статьи о Linux

Что такое процессы в Linux

Процесс можно определить как набор действий, которые имеют начало и конец. Например, в быту процессом является приготовление ужина, поход в магазин, чтение газеты и т. п. В компьютерах понятие процесса аналогично.

Все операционные системы можно разделить на многозадачные и однозадачные. Многозадачные ОС позволяют выполнять несколько действий одновременно, в то время как однозадачные – всего один процесс или задачу. Однозадачные операционные системы уже не распространены, так как не могут удовлетворить потребности пользователей и не обладают развитыми средствами мультимедиа, что является важным критерием при выборе операционной системы для домашнего компьютера. Linux является многозадачной операционной системой.

Суть процессов необходимо усвоить исходя из удобства работы с операционной системой и необходимости управления «неправильными» процессами. Программы не всегда работают корректно, а иногда «зависают», что означает состояние, когда приложение перестает выполнять свои функции и не реагирует на команды пользователя. Это может быть вызвано недочетом при его разработке либо сбоем в аппаратном обеспечении компьютера, что зачастую влечет за собой выполнение определенного действия по кругу без возможности выйти. Например, при использовании неправильно записанных или поврежденных CD операционная система может бесконечно пытаться прочитать содержимое диска, в то время как программа находится в состоянии ожидания информации и не реагирует на команды пользователя.

Обычные состояния процесса можно разделить на четыре группы:

  • Выполнение – выполняет задачу.
  • Ожидание – ожидает команду со стороны пользователя либо какой-то ресурс. Процесс в таком состоянии также называют спящим (англ. sleeping).
  • Остановка – остановлен и не имеет разрешения на выполнение.
  • Зомби – уже завершил работу, но это еще не известно операционной системе.

Что такое процессы в Linux

Действия над процессами в Linux

При необходимости изменить состояние процесса нужно воспользоваться следующей особенностью операционной системы – сигналами. Сигналы – это указания процессам с целью изменения их состояния. Не вдаваясь в подробности программирования, можно сказать, что в случае, если сама программа способна обработать сигнал, она это сделает. В противном случае возможность обработки сигнала предоставляется операционной системе, которая выполнит действие, определенное по умолчанию (часто это остановка выполнения программы либо завершение ее работы). Далее приведен список часто используемых сигналов.

QUIT – указывает процессу на необходимость его завершения. При получении сигнала процесс прекращает работу, выполнив действия, необходимые для ее корректного завершения. По окончании создается дамп памяти – файл, в котором содержится образ процесса в памяти, что иногда может дать программисту ценную информацию.

KILL – выполняет завершение процесса. Эта команда часто используется при завершении зависших процессов, так как она выполняется операционной системой.

TERM – аналогичен команде QUIT, затем исключением, что при завершении процесса дамп памяти не создается.

TSTP – остановка процесса. Аналогичен действию, которое происходит при нажатии сочетания клавиш Ctrl+Z во время выполнения процесса.

CONT – продолжение выполнения процесса после остановки.

Приоритет процессоров в Linux

Каждый процесс имеет приоритет. Не вдаваясь в тонкости архитектуры компьютера, можно сказать, что приоритет характеризует количество времени, которое процессор будет отдавать определенному процессу. Значение этого компьютерного термина практически аналогично бытовому (например, многие программисты уделяют крайне мало внимания процессу уборки в квартире, но отводят много времени программированию, что означает, что уборка для них имеет меньший приоритет, чем любимое занятие). Приоритет имеет численное значение и может варьироваться от -20 до +19; чем меньше численное значение, тем большее внимание уделяется процессу. В большинстве случаев в изменении приоритета процессов нет необходимости.

Над процессами можно совершать множество действий, однако свободно манипулировать свойствами процессов невозможно, точнее, для выполнения операций над многими процессами необходимы привилегии администратора. Как было сказано ранее, каждый объект в Linux имеет хозяина. Процессы – не исключение. Если над процессами, запущенными от имени вашей учетной записи, вы можете выполнять любые действия, то доступа к процессам других пользователей у вас нет. Исключение составляет суперпользователь.

Каталог /proc

Каталог /proc

Каталог /proc отражает всю внутреннюю структуру данных ядра операционной системы об устройствах, процессах и драйверах. Содержимое каталога /proc генерируется программно. Оно существует только в памяти компьютера, но не на жестком диске.

Представьте, что вы общаетесь с кем-либо и излагаете ему свои мысли и идеи. Примерно так информация поступает из ядра к пользователю через каталог /proc. Человек задаст вам вопрос и получает ответ, который является верным на момент его получения. В Linux происходит то же: обратившись к какому-либо файлу каталога /proc, вы получите ответ, который является верным на момент его вывода ни экран.

В файлах, находящихся в корне каталога /proc, содержится информация, касающаяся системы в целом. Описание этих файлов приведено в статье: содержимое каталога /proc.

 

Содержимое каталога /proc

Каталог /proc содержит такие файлы:

cmdline — информация о параметрах ядра, указанных при запуске операционной системы.
cpuinfo — данные о всех процессорах, установленных в системе.
devices — информация о символьных и блочных устройствах, зарегистрированных в системе. Одноименные файлы можно найти в каталоге /dev.
filesystems — список файловых систем, которые поддерживаются данным вариантом ядра Linux.
kcore — образ содержимого оперативной памяти. Этот файл имеет размер, равный объему имеющейся в компьютере оперативной памяти, но места на жестком диске не занимает.
partitions — сведения об имеющихся разделах. Приводятся для каждого раздела в отдельной строке, в которой указаны его следующие характеристики: старший номер раздела, младший номер раздела, количество байт о разделе, имя раздела (такое же, как в каталоге /dev).
swaps — список разделов, используемых для подкачки.
uptime — время работы данного сеанса Linux в секундах.
version — версия Linux.