что такое фоновый процесс?

Вот общее определение фонового процесса:

«Фоновый процесс – это программа, которая работает без ввода пользователя. В операционной системе многозадачности можно использовать несколько фоновых процессов, таких как Linux, в то время как пользователь взаимодействует с процессом переднего плана. Некоторые фоновые процессы, такие как демоны, для например, никогда не требуют ввода пользователя. Другие временно находятся в фоновом режиме временно, когда пользователь занят программой, выполняемой в настоящее время на переднем плане. Таким образом, другой процесс может спать и занимать пространство подкачки, пока не активируется, что делает его в настоящее время фоновый процесс ".

Учитывая это определение, не будет ли такой процесс, как apache2, фоновым процессом, поскольку он никогда не взаимодействует с пользовательским вводом в терминал? И не будет ли это рассмотрено большинство процессов фонового процесса, так как большинство процессов, запущенных в системе, не имеют дело с пользовательским вводом в терминал? Как ни странно, я лично не считаю apache2 фоновым процессом, так как пользователь взаимодействует с ним через HTTP-запросы (просто не терминал).

2 Solutions collect form web for “что такое фоновый процесс?”

Процесс переднего плана не требует взаимодействия с пользователем. Ты можешь сделать

cp very_large_file destination 

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

Два способа сделать процесс переднего плана в фоновом режиме:

1- Добавление амперсанда ( & ) в конце командной строки:

 cp very_large_file destination & 

2- Остановка процесса переднего плана, а затем вывод его на задний план:

 cp very_large_file destination 

CTRL + Z

 bg 

Теперь apache2 определенно будет считаться фоновым процессом: да, вы можете взаимодействовать с ним через HTTP-запросы, но он просто слушает порт 80 (по умолчанию), ожидающий такого запроса: он не блокирует систему, пока пользователь не сделает запрос.

И почему вы принимаете проблему в большинстве процессов, рассматриваемых как фоновые процессы? Это действительно нормально в «многозадачной операционной системе».

Существует два общих определения «фонового процесса», один в общих чертах и ​​один точный и специфичный для unix.

В широком смысле вы можете назвать «фоновый процесс» любым процессом, который не взаимодействует с пользователем, сидящим на консоли. В этом смысле Apache является фоновым процессом.

В терминологии unix «фоновый процесс» имеет точное определение. Фоновый процесс – это процесс, который запускается с терминала, но в настоящее время запрещен для взаимодействия с терминалом. (Я упрощаю, не рассматривая группы процессов.) Обычно вы получаете фоновый процесс, запустив фоновое задание в оболочке:

 $ myprogram & [1] 12345 $ 

или путем запуска программы, затем приостанавливая ее и позволяя продолжить ее в фоновом режиме:

 $ myprogram ^Z [1]+ Stopped myprogram $ bg [1]+ myprogram & $ 

Если вы запускаете программу без & , она находится на переднем плане. На переднем плане может быть только один процесс на данном терминале за раз. (Или, в более общем плане, одну группу процессов, если процесс переднего плана запускает некоторые подпроцессы.) В оболочке встроены функции bg и fg процесс которых находится на переднем плане. Когда процесс находится в фоновом режиме, если он пытается прочитать или записать на терминал, он останавливается сигналом SIGTTIN или SIGTTOUT .

Я нахожу вашу интуицию, что Apache не является фоновым процессом, потому что он взаимодействует с пользователем по HTTP странно. Apache не взаимодействует с пользователем: он взаимодействует с удаленным веб-браузером (который взаимодействует с пользователем) или с автоматическим клиентом (который не взаимодействует с пользователем). Если вы рассматриваете любой процесс, взаимодействующий с интерактивным интерактивным процессом, то любой процесс является интерактивным, что делает его бесполезной концепцией.

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

  • Command 'date + FORMAT' - Что такое% a,% A,% b и т. Д.?
  • Почему слово «оболочка» использовалось для описания интерфейса командной строки?
  • Что означает название команды unix?
  • Как мы называем `#! / Bin / perl` shebang ', что мы называем` - * - perl - * - `?
  • Что такое «легкий вес»?
  • Каков технический термин для программ среды командной строки?
  • Каково значение «tab», например, в «crontab» или «initab»?
  • Что означает файловая система жаргона?
  • Что означает «он-лайн», как используется в человеке (1)?
  • Как вызвать метод настройки результата, который активен до первой перезагрузки?
  • Имеет ли теневой файл зашифрованные пароли?
  • Linux и Unix - лучшая ОС в мире.