常规流程和服务之间有什么区别?

常规进程(如firefox,gimp,skype等)和服务(httpd,mysqld等)之间有什么区别? 显然,服务的function有所不同,但我真的想知道操作系统层面的内容是什么? 他们是以不同的方式对待的吗?

在引擎盖下,服务是普通的流程。 让他们与众不同的是他们做了什么以及他们如何开始(但这不是一个硬性和快速的定义)。 服务通常没有用户界面,通常在系统启动并在后台运行时,启动来自其他程序或通过网络的请求时启动。 这些进程在unix世界中称为守护进程

有一个更概括的服务定义:服务是计算机提供的function。 此定义大致与service命令管理的内容相匹配。 守护进程提供了许多服务,但情况并非总是如此。 例如, gdm服务(默认登录管理器)由一个不是真正守护进程的进程提供(它有一个用户界面供您输入密码)。 console-setupmountallnetworking (从/etc/init获取示例)等服务不是由连续运行的进程提供的,而是通过运行某些状态更改命令来启用和禁用。

另一个有点相关的概念是服务器 。 服务器是一个侦听来自其他程序的连接的程序。 (连接可能来自网络或通过各种本地通信方式。)许多服务器是守护进程,但是短期程序可以是服务器,不会被视为守护进程; 具有用户界面的程序也不会被视为守护程序。 例如,Emacs编辑器可以运行一个服务器来监听外部请求以打开文件(即运行emacsclient myfile通过联系其关联的emascsserver进程在正在运行的Emacs实例中打开一个文件); Emacs可以以守护进程模式启动,这意味着服务器已启动但没有GUI(打开文件时将打开一个窗口)。 通过扩展,服务器计算机是一台计算机,其主要目的是运行服务器程序。