linux内核中的服务器模式
广义上讲,内核本身就是一个服务器,为所有的用户模式进程提供服务,但是狭义上讲只有在真的有请求的时候内核采取的对策才叫做服务,比如注册-执行模式下的time以及hrtimer等等,用户空间的程序或者内核空间的执行绪可以随意注册一个timer之后就不管了,timer到期以后内核会执行之,这就相当于timer的创建者请求了内核的一项服务,就是执行timer,不光是这个,在内核中处处都是服务执行者,比如工作队列,软中断...我们可以看到的是,所有这些几乎都是使用一个全局的链表,服务的请求者创建请求之后只需要将请求插入这个全局的链表就可以了,而内核执行的方式往往是串行的执行,也就是遍历链表的请求,一个接一个的执行,这个服务方式和用户空间的大大不同。 在用户空间中,服务器的架构方式多种多样,比如多线程,多进程,消息映射等等,为何在内核不用这些方式呢?首先看一下用户空间的这些方式的机制是谁提供的,正是内核本身,内核是什么,现代的内核就是提供多个多线程的用户上下文,然而谁为内核提供这些机制呢?除非有了专有的硬件,这只是其一,另外,内核的原则就是怎样效率高就怎样,其实内核中也是可以创建线程的,比如内核线...