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

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

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

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

  • Почему слово «оболочка» использовалось для описания интерфейса командной строки?
  • Какая способность делать что-то «на лету» и способность делать то же самое, что и в Unix / Linux?
  • Каков технический термин для программ среды командной строки?
  • Почему FreeBsd использует человеческое слово для различных функций?
  • Путаница относительно термина «mount» в Linux
  • Что означает ] В регулярном выражении?
  • Что искать в файлах журналов, если я думаю, что ограниченная память или дисковое пространство вызывает сбой
  • Что означает d в процессах, таких как syslogd и httpd?
  • 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 не взаимодействует с пользователем: он взаимодействует с удаленным веб-браузером (который взаимодействует с пользователем) или с автоматическим клиентом (который не взаимодействует с пользователем). Если вы рассматриваете любой процесс, взаимодействующий с интерактивным интерактивным процессом, то любой процесс является интерактивным, что делает его бесполезной концепцией.

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

    Linux и Unix - лучшая ОС в мире.