Каковы различия и отношения между «процессом», «потоками», «заданием» и «заданиями» в Linux? - PullRequest
5 голосов
/ 01 мая 2010

Я довольно запутался с некоторыми терминами, используемыми в Linux, когда узнал о веб-программировании бэкэнда.

  • В чем разница и взаимосвязь между «процессом», «потоками», «задачей» и «заданиями» в Linux?

Ответы [ 2 ]

13 голосов
/ 01 мая 2010

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

Поток обычно является «разделением» внутри процесса - потоки обычно совместно используют одну и ту же память и ресурсы операционной системы и разделяют время, выделенное для этого процесса. Например, когда вы открываете браузер и Microsoft Word, каждый из них представляет собой отдельный процесс, но события, происходящие в фоновом режиме каждого (например, анимации, обновления или резервные копии), могут быть потоками.

Задание обычно представляет собой длительную единицу работы, выполняемую пользователем. Задание может быть «обработано» одним или несколькими процессами. Это может быть не интерактивно. Например, указание машине заархивировать большой файл или запустить какой-либо сценарий обработки большого входного файла обычно является задачей. Наименование является относительно историческим - мейнфреймы используются для обработки заданий. В системах UNIX многие задания запускаются автоматически в заранее запланированное время с использованием cron, поэтому у вас есть понятие «задания cron».

4 голосов
/ 01 мая 2010

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

Задания и задачи - это концепции оболочки Unix; задание - это процесс, запущенный оболочкой, который все еще выполняется, приостановлен или работает в фоновом режиме. В руководстве bash есть длинный раздел «Управление заданиями». Работа и задача - примерно эквивалентные понятия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...