。服务程序是真正合法的Wi
32映像,这些映像调用特殊的Wi
32函数以与服务控制器相互使用,例如注册、启动、响应状态请求、暂停或关闭服务。一些Wi
dows2000组件是作为服务来实现的,例如假脱机、事件日志、用于RPC的支持和其他各种各样的网络组件。服务由服务控制器启动和停止。服务控制器是一个运行映像为SERVICES.EXE的特殊系统进程,它负责启动、停止和与服务控制器交互。对应的体系结构简图是这样的:系统支持进程,服务进程,应用程序,环境子系统应用程序编程接口基于NTDLLdll的本地系统服务用户模式系统服务调用内核模式执行体系统内核,设备驱动程序硬件抽象层上面的是人机对话的图形系统(GUI界面);下面是硬件对话运行。
f系统支持进程,服务进程,应用程序,环境子系统
用户模式
应用程序编程接口基于NTDLLdll的本地系统服务
系统服务调用执行体系统内核,设备驱动程序硬件抽象层
核模式
内
XP所用的微内核结构、CS模型和对象模型我都觉得很完美。相比之下,li
ux在系统结构方面就不如XP,为了追求效率,过分臃肿,维护困难。天下也没几个人(我说的是人,不是牛)能读懂内核的,从软件工程的角度来讲是个不及格的作品。(个人意见,希望不会引起某些人的不适)要不是微软太霸道,要是XP也用GPL,鬼才去用li
ux呢。
不错,微内核最大的缺点是效率低。微内核有点像把软件工程中分块设计的思想用到OS中,这有利于代码的控制,单个模块的变化不会引起大范围的变动。但是划分的代价就是由于调用的大量增加导致效率低下。对于应用程序来说,正确性是最重要的目标,效率低一点问题不是很大。软件工程就是在这样一个前提下,以运行效率为代价,换取对bug的控制。但对于OS来说,正确性当然重要,但效率低下也是不可接受的,完全照搬软件工程中用于应用程序的设计原则是不行的。NT初期也是微内核的,后来就是因为运行效率问题,不得不把GUI的一部分也塞进内核。NT内核的原设计者也因为这件事与公司意见相左,离开了MS
fr