В чем разница между «Приложением» и «Процессом» в OS X?

Поскольку я все чаще балуюсь настройкой AppleScript и OS X в целом, я прихожу к этому вопросу:

В чем разница между этими двумя словами с точки зрения внутренних операций OS X — например, некоторые процессы работают «внутри» приложений (или наоборот), или два процесса работают как часть одного «приложения» с точки зрения того, с чем взаимодействует пользователь С графическим интерфейсом (или наоборот)?

Кроме того, я родом из Microsoft Windows. Имеют ли «приложение» и «процесс» какое-либо отношение к «сервису» в OS X (учитывая, что «сервис» и «программа» — это разные вещи в Windows), и действительно ли существует третья категория в OS X, называемая «сервисом», как хорошо?

Ответы (5)

Стандартный подход к этим терминам состоит в том, чтобы сказать, что «приложение» — это определенная статическая программа в хранилище. Это некоторая часть кода, хранящаяся на жестком диске, компакт-диске или где-либо еще.

С другой стороны, «процесс» — это конкретный экземпляр работающей программы. Т.е. он регистрируется операционной системой как выполняющийся или способный выполняться всякий раз, когда операционная система считает это нужным.

Если взять, к примеру, Calculator.app, то это одно приложение. Однако у вас может быть несколько процессов Калькулятора, если вы запускаете программу несколько раз.

Как писал chananelb, также возможны процессы, которые не являются «просто» запущенными обычными приложениями. Это могут быть, например, процессы ядра или просто обычные процессы, порождающие подпроцессы для выполнения определенных задач.

Что касается услуг, ответ chananelb ведет вас в неправильном направлении. В его ответе рассказывается о том, что называется «службой» в Mac OS X... но вы спросили о том, что называется «службой» в Windows.

Аналогом службы Windows является демон в Mac OS X (и других системах, производных от Unix).

Демоны обычно классифицируются по принципу работы в "фоновом режиме", т.е. без прямого взаимодействия с пользователем через графический или неграфический пользовательский интерфейс. Однако различие немного размыто, поскольку демон может, например, иметь веб-интерфейс для взаимодействия с пользователем.

Демоны в Mac OS X управляются программой launchd, которая отвечает, например, за запуск демонов при загрузке и позволяет пользователю запускать и останавливать демоны по запросу.

Согласно Руководству по программированию приложений для Mac ,

Вы используете Cocoa для написания приложений для OS X.

В соответствии с этим определением приложения должны быть упакованы в пакеты приложений :

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

На той же странице написано:

Примечание. Хотя пакеты — это один из способов упаковки исполняемого кода, они не являются единственным поддерживаемым способом. Сценарии оболочки UNIX и инструменты командной строки не используют структуру пакета, равно как и статические и динамические общие библиотеки.

Исходя из этого, я бы сказал, что Apple не считает инструменты командной строки ls«приложениями». Это будут исполняемые программы или исполняемые файлы .


Процесс — это любой экземпляр компьютерной программы, который выполняется. Процесс можно создать, запустив приложение или исполняемый файл Unix. (Сценарии оболочки будут своего рода исполняемым файлом, где /bin/shили другая оболочка интерпретирует сценарий.)

«Процесс» означает то же самое в Windows (см. вкладку «Процесс» в диспетчере задач Windows).


Служба имеет три разных значения в Mac OS X:

  • Это может относиться к демону , который аналогичен службе Windows. Это постоянные общесистемные фоновые процессы, которые не принадлежат ни одному пользовательскому сеансу.

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

  • Его также можно использовать в общем английском смысле этого слова, как в Launch Services . Launch Services — это API для открытия приложений, который может, например, решить, какое приложение подходит для обработки файлов определенного типа.

Приложение — это процесс, который может порождать подпроцессы (известные как дочерние процессы), но некоторые процессы порождаются самой ОС и могут не иметь за собой «приложения» как такового. Это (насколько я понимаю) способ работы unix в целом (вступление unix - процессы).

Спасибо jksoegaard, следующее не имеет значения, я неправильно понял вопрос. Я вроде новенький - удалить или оставить?

Службы в OS X чем-то похожи на кнопку «Поделиться» в Android — это способ отправить часть данных непосредственно из текущего приложения в другое.

Простым примером является текст — выделение некоторого текста и щелчок правой кнопкой мыши покажет вам контекстное меню со службами внизу, углубление в это меню покажет вам, какие другие приложения на вашем Mac имеют возможность использовать этот текст для чего-то (например, суммировать , веб-поиск (Chrome), Spotlight и т. д.).

Вы можете изменить службы на панели «Настройки клавиатуры» на вкладке «Ярлыки» и создать свои собственные в Automator. Дополнительные сведения см. в этой статье Ars Technica .

Приложение: программа для ЭВМ, выполняющая полезную работу, не связанную с самим компьютером; часть программного обеспечения, выполняющая определенную функцию для пользователя. Примеры включают программы обработки текста, веб-браузеры, программы для презентаций и системы учета.

Процесс: последовательность инструкций, которые компьютер выполняет в многозадачной операционной системе. Многие процессы выполняются одновременно. С точки зрения пользователя процессы могут быть программами или частями программ (такими как процедура редактирования и процедура печати в текстовом процессоре, которая может печатать во время редактирования).

Обратите внимание, что они не обязательно являются взаимоисключающими. Проще говоря, приложение — это связанный набор процессов, которые для пользователя выглядят как один.

Определения из: Словарь интернет-терминов и компьютерных терминов

Это не те термины, которые используются в OSX - OSX имеет гораздо более конкретные определения, которые должен знать OP.
Генерал, да. Подходит для OSX? Полностью. Сам вопрос достаточно широк, чтобы эти определения были вполне применимы. Процесс — это процесс, а приложение — это приложение, как определено выше, независимо от того, используете ли вы Windows или OSX. Специфические термины OSX «агенты запуска, демоны запуска и т. д.» не нужны для ответа на вопрос; более того, они могут вводить в заблуждение. Мой ответ ясен и прост. С уважением.
Для Applescript существует очень строгое определение приложения, и в OSX я бы назвал пакетные пакеты приложений только приложениями (на данный момент я не могу найти все точные справочные документы Apple, поэтому пока не могу написать ответ)

Для OSX приложение — это приложение, которое вы можете использовать как пользователь. С другой стороны, процесс — это любой работающий двоичный исполняемый файл, в том числе приложения. В одном приложении может быть запущено несколько процессов и т. д.