更新时间:2022-09-13 08:23:44 来源:极悦 浏览1812次
在Java教程中大家会学到很多关于线程及进程的知识,今天我们来了解一下什么是守护进程。
在计算中,守护进程(读作 DEE-muhn)是作为后台进程连续运行并唤醒以处理周期性服务请求的程序,这些请求通常来自远程进程。守护程序收到操作系统 (OS) 发出的请求的警报,它要么自己响应请求,要么将请求转发给适当的另一个程序或进程。
常见的守护进程包括打印假脱机程序、电子邮件处理程序和其他管理管理任务的程序。许多 Unix 或 Linux 实用程序作为守护程序运行。例如,在 Linux 上,网络时间协议 ( NTP ) 守护程序用于测量运行它的计算机上的时钟与网络上所有其他计算机的时钟之间的时间差。每台主机上都运行一个时间守护程序,其中一个被指定为主计算机,所有其他计算机为辅助计算机。辅助守护程序通过首先向主时间守护程序发送请求以找出正确的网络时间来重置其主机上的网络时间。
守护进程在客户端-服务器模型中扮演服务器的角色。
守护进程最明显的例子之一是超文本传输协议守护进程 (HTTPd),它在每台 Web 服务器上运行,持续以休眠模式等待,直到来自 Web 客户端及其用户的请求进入。早期版本的 HTTP 守护进程会生成一个新进程来处理每个请求。新进程(守护进程的副本)将获取请求的内容并将其返回给请求的客户端。然后,新进程就会死掉。
通过产生一个新进程,原始进程可以回到休眠模式以等待其他请求。这种方法用于防止原始进程太忙而无法为新请求提供服务,因为自行处理所有请求的守护进程会使系统更容易受到黑客攻击。拒绝服务攻击通常基于使守护进程忙于处理传入请求的策略。
更现代的 HTTP 守护进程,例如 Apache,使用线程而不是产生新进程来处理请求。线程在第一代 HTTP 守护进程实施和部署之后就开始普遍使用,它使同一进程的不同部分能够并行运行。守护进程的主要部分可以等待新请求,而其他线程处理旧请求。与生成新进程相比,线程需要更少的开销,这需要时间来完成,并且新进程需要内存才能运行。
第三种方法以Nginx HTTP守护程序为例,它基于在单线程中运行的事件驱动架构。请求被移交给在后台持续运行的工作进程——也就是说,它们不是仅仅为了处理请求而产生的,只是在之后立即消失。管理员决定创建多少工作进程。
由于守护进程需要操作系统的特殊服务,它们的行为在一个操作系统和另一个操作系统之间略有不同。第一个守护进程是在 Unix 操作系统上运行的,并且是围绕 Unix 的特性设计的。
守护进程在 Unix 命令行或启动文件中启动;这些文件包含在系统启动或某些其他事件(例如用户登录或生成新的shell 脚本时)执行的脚本。然后它们在后台运行并等待来自操作系统的信号唤醒并开始行动。
守护进程只能在多任务操作系统上运行。它们是在 Microsoft Windows 中实现的,从 NT 版本开始,通常被称为Windows 服务而不是守护进程。
守护进程在某些外部事件(例如网络上的消息到达)时响应来自操作系统的警报。对于来自网络的消息,主机上的TCP/IP模块查找消息的端口号并向分配给该端口号的守护程序发送警报。例如,端口号 80 分配给 HTTP,因此当接收到具有该端口号的消息时,操作系统内置的 TCP/IP 堆栈会向 HTTPd 发送信号。
任何基于 Unix 或 Unix 变体的系统都运行多个守护进程,它们的名称通常以字母d结尾。以下是守护进程的一些示例:
在里面。这是 Unix 启动时启动的第一个守护进程,它会产生所有其他进程。
内特。这个超级守护进程在指定的端口号上侦听 Internet 请求,并生成适当的服务器程序来处理它们。inetd 处理的服务包括rlogin、telnet、ftp、talk 和finger。
克朗德 这个守护进程执行预定的命令。
dhcpd。此守护程序提供动态主机配置协议服务。
手指。该守护进程通常由 inetd 启动以响应手指命令。
ftpd。这个守护进程通常由 inetd 启动以处理文件传输协议请求。
httpd。此守护进程充当 Web 服务器。
LPD。此守护程序提供行式打印机协议请求。
命名。该守护进程提供域名协议服务。
nfsd。此守护程序提供网络文件系统服务。
ntpd。此守护程序提供 NTP 服务,作为主要或次要服务。
端口映射/rpcbind。此守护程序将远程过程调用程序号转换为 Internet 端口号。
sshd。此守护程序提供安全 Shell服务。
发邮件。这个简单的主要传输协议或邮件程序守护进程处理传入的电子邮件消息。
交换者。作为虚拟内存管理的一部分,该内核守护进程在主内存和辅助存储之间移动整个进程。
系统日志。此守护进程处理来自操作系统内核、同一台机器上的其他进程和远程机器上的其他进程的日志记录请求。
同步。此守护进程同步不同服务器上的文件。
系统化。这个守护进程取代了 Linux 系统上的 init。
手。这个守护进程选择最近没有被引用过的页面,如果需要的话,这些页面可以从主内存换出到辅助存储中。
ypbind。此守护程序将网络信息服务客户端上的进程绑定到 NIS 服务器上的服务。
以上就是关于“一文读懂什么是守护进程”的介绍,大家如果对此比较感兴趣,想了解更多相关知识,可以关注一下极悦的Java多线程编程技术文档,里面有更丰富的知识等着大家去学习,希望对大家能够有所帮助。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习