守护进程、服务和进程之间的技术区别是什么?

kru*_*022 132 process services

我想知道在 Ubuntu 中运行的守护进程、进程和服务的行为有何不同。

gre*_*een 136

守护-守护进程并不能代表磁盘和执行监视器http://www.takeourword.com/TOW146/page4.html)。它们是在后台运行且不具有交互性的进程。他们没有控制终端。

它们在预定义的时间或响应某些事件执行某些操作。在 *NIX 中,守护进程的名称以d结尾。

服务- 在 Windows 中,守护进程称为services

如果您想知道为什么 *NIX 有一个名为service的命令,它只是用于运行 init 脚本(初始化 scriptrunlevel 的简写)。

进程- 进程是一个正在运行的程序。在特定的时刻,它可以是runningsleepzombie(已完成的进程,但等待它的父进程获取返回值)。

来源和更多信息

  • 进程在 Linux 上有更多状态,这是一个很好的图表:http://www.linux-tutorial.info/modules.php?name=MContent&pageid=84 (2认同)
  • 事实上,OP询问的是Ubuntu中的服务,而这个答案则讲述了Windows上的服务。显然 Anon 的答案是正确的 (2认同)

小智 45

  1. 一个守护进程是一个背景下,非交互式程序。它与任何交互式用户的键盘和显示器分离。表示后台程序的 daemon 一词来自 Unix 文化;它不是通用的。

  2. 服务是一种程序,其响应于来自通过一些进程间通信机制(通常是通过网络)其他程序的请求。服务是服务器提供的。例如,NFS 端口映射服务是作为单独的端口映射服务提供的,它作为portmapd守护进程来实现。

    服务不一定是守护进程,但通常是。具有 GUI 的用户应用程序可以内置服务:例如,文件共享应用程序。另一个例子是 X Window 服务,它不是在后台运行:它接管您的屏幕、键盘和指点设备。它是一种服务,因为它响应来自应用程序的请求(创建和操作窗口等),这些请求甚至可以在网络的其他地方。但 X 服务也会响应您的每一次按键和鼠标移动。

  3. 进程是一个或多个执行线程及其共享资源集,其中最重要的是地址空间和打开的文件描述符。一个进程为这些执行线程创建了一个环境,看起来它们自己拥有一个完整的机器:它是一个虚拟机。

    在一个进程内部,其他进程和内核的资源是不可见的,不能直接访问(至少对于正在执行用户空间代码的线程不能)。例如,无法引用另一个进程打开的文件,或者它们的内存空间;就好像那些东西根本不存在一样。

    进程及其与内核和其他进程的关系,可能构成了类 Unix 操作系统中最重要的抽象。系统资源被划分为多个进程,几乎所有的事情都被理解为在一个或另一个进程中发生。

  • 进程通常不能直接查询系统的 RAM。现代操作系统使用虚拟地址空间 (https://en.wikipedia.org/wiki/Virtual_address_space),这意味着每个进程只能与虚拟内存视图交互,操作系统在其中准确控制可访问的内容。 (2认同)