Unix
prefork
Windows
mpm_winnt
在详细深入的描述各个MPM之前,我们有必要了解一下MPM中所使用到的公共数据结构,主要包括两种:记分板和父子进程的通信管道。记分板类似于共享内存,主要用于父子进程之间进行数据交换,类似于白板。任何一方都可以将对方需要的信息写入到记分板上,同时任何一方也可以到记分板上获取需要的数据。
Apache的MPM中通常总是包含一个主服务进程以及若干个子进程,因此不可避免的存在主进程和子进程通信的问题。Apache中采用了两种主要的通信方法:记分板和管道。
记分板就是一块共享内存块,同时可以被父进程和子进程访问,通过共享实现了父子之间的通信。尽管如此,但是记分板则更主要用于父进程对子进程进行控制。在Apache中主进程的一个重要的职责就是控制空闲子进程的数目:如果空闲子进程过多,则父进程将终止一些子进程;如果空闲子进程太少,则父进程将创建一些新的空闲子进程以备使用。因此,父进程必须随时能够知道子进程的数目以便进行调整。子进程把自己的状态信息忙碌或者空闲写入到记分板中,这样通过读取记分板,父进程就可以知道子进程的数目了。
记分板的数据结构可以描述如下:
typedef struct {
global_score *global;
process_score *parent;
worker_score **servers;
} scoreboard;
该结构定义在scoreboard.h中,由该数据结构可见,Apache中的记分板可以记录三种类型的信息:全局信息、进程间共享信息以及线程间共享信息。
global_score是记分板中描述全局信息的结构,通常这些信息是针对整个
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!