В чем разница между «работой» и «процессом»?
В чем разница между «работой» и «процессом»?
Ответы:
Процесс - это любая работающая программа с собственным адресным пространством.
Задание - это концепция, используемая оболочкой. Любая программа, которую вы запускаете в интерактивном режиме и которая не отсоединяется (т. Е. Не является демоном), является заданием. Если вы используете интерактивную программу, вы можете нажать, CtrlZчтобы приостановить ее. Затем вы можете запустить его обратно на переднем плане (используя fg
) или в фоновом режиме (используя bg
).
Пока программа приостановлена или работает в фоновом режиме, вы можете запустить другую программу - тогда у вас будет запущено два задания. Вы также можете запустить программу запущенной в фоновом режиме, добавляя «и» как это: program &
. Эта программа станет фоновой работой. Чтобы перечислить все рабочие места, которые вы выполняете, вы можете использовать jobs
.
Для получения дополнительной информации о заданиях см. Этот раздел справочной страницы bash.
ls | sort
являются заданием, но каждая команда выполняется как дочерний процесс другого процесса подоболочки. Это пример работы, состоящей из нескольких процессов. Как ваше определение работы может объяснить, что работа может состоять из нескольких процессов?
UNIX имеет отдельные понятия «процесс», «группа процессов» и «сессия».
Каждая оболочка, которую вы получаете при входе в систему, становится лидером своей собственной новой сессии и группы процессов и устанавливает для себя группу управления процессами терминала.
Оболочка создает группу процессов в текущем сеансе для каждого запускаемого задания и помещает каждый запускаемый процесс в соответствующую группу процессов. Например, ls | head
это конвейер из двух процессов, который оболочка считает одним заданием и будет принадлежать одной новой группе процессов.
Процесс представляет собой (совокупность) поток выполнения и другой контекст, такой как адресное пространство и таблица дескрипторов файлов. Процесс может запустить другие процессы; эти новые процессы будут принадлежать к той же группе процессов, что и родительский процесс, если не будут предприняты другие действия. Каждый процесс также может иметь «управляющий терминал», который запускается так же, как и его родительский процесс.
Оболочка имеет концепцию «передних» заданий и «фоновых» заданий. Задания на переднем плане - это группы процессов с управлением терминалом, а задания на заднем плане - это группы процессов без управления терминалом.
Каждый терминал имеет группу процессов переднего плана. При выводе задания на передний план оболочка устанавливает его как группу процессов переднего плана терминала; при переводе задания в фоновый режим оболочка устанавливает приоритетную группу процессов терминала на другую группу процессов или себя.
Процессы могут читать и записывать в свой управляющий терминал, если они находятся в группе процессов переднего плана. В противном случае они получают SIGTTIN
и SIGTTOU
сигнализируют о попытках чтения и записи в терминал соответственно. По умолчанию эти сигналы приостанавливают процесс, хотя большинство оболочек маскируются, SIGTTOU
так что фоновое задание может выполнять непрерывную запись в терминал.
В вычислительной технике задание - это единица работы или единица исполнения (которая выполняет указанную работу). Компонент задания (как единица работы) называется задачей или этапом (если он последовательный, как в потоке заданий). В качестве единицы выполнения задание может быть конкретно идентифицировано с одним процессом, который, в свою очередь, может иметь подпроцессы (дочерние процессы; процесс, соответствующий заданию, являющемуся родительским процессом), которые выполняют задачи или этапы, составляющие работу работа; или с группой процессов; или с абстрактной ссылкой на процесс или группу процессов, как в управлении заданиями Unix.
Вышеприведенные определения носят технический характер, но, возможно, оператору потребовалось более подробное разъяснение. Я думаю, что работа - это запланированный процесс. Когда мы имеем дело с процессами в целом, не обязательно понятие расписания, но когда мы используем слово «работа», мы всегда подразумеваем, что оно запланировано или повторяется как цикл, это как рабочий.