内核任务

2012年5月31日 由 edsionte 留言 »

内核任务是指内核中执行的一切活动对象,每个内核任务都拥有一个独立的程序计数器、栈和一组寄存器。我们可以将Linux内核看作是不断对请求进行响应的服务器,这里的请求可能来自CPU上正在执行的进程,也可能是来自发出中断请求的外部设备。这个类比用来强调内核中各个任务之间并不是严格按照顺序执行的,而是采用交错执行的方式。本文简单说明内核中的任务分类,以及每种内核任务的特点。

内核线程

内核线程只运行在内核空间,它为内核完成一些周期性任务,比如用于执行工作队列的keventd线程,用于执行内存回收的kswapd线程以及用于将脏缓冲区中的内容刷新到磁盘上的pdflush线程等。内核线程与用户进程在某些方面比较类似,比如它们被内核中同一个进程调度器所调度、都通过do_fork()创建等。这主要是因为内核线程与进程都通过进程描述符task_struct来描述,我们可以将内核线程看作是运行在内核空间的进程。内核中使用thread来描述内核线程是因为它并不拥有用户空间,因此内核线程之间的切换是迅速的。虽然都使用了线程一词,但是应该和用户态的线程有所区分。

系统调用

用户态进程必须通过系统调用才能进入内核并获得内核提供的服务,比如访问硬件设备。系统调用是一种异常,它通过128号中断向量向内核发出一个明确的请求。系统一旦执行某个系统调用,就从用户态切换到内核态,接下来内核就代表发出系统调用的进程执行,执行完毕后又返回用户空间。由于系统调用是内核代表进程执行,因此它可以获得当前进程的信息,比如可以访问当前进程的描述符中的信息,而且系统调用的执行使用的是当前发出系统调用进程的时间片。

中断处理程序

根据Intel的说法,异步中断也被简称为中断,它是由硬件设备依照CPU时钟信号随机产生的。这类中断可以打断任何正在执行的内核任务。在响应一个特定中断的时候,内核会执行一个函数,该函数称为中断处理程序(Interrupt Handler)。如果一条中断线上共享了多个设备,那么每个设备将对应一个中断服务例程(Interrupt Server Routine,ISR)。当该某个中断发生时,内核会调用相应的中断处理程序。该中断处理程序首先在内核态堆栈中保存IRQ和寄存器的值,然后响应该中断,接着执行共享这个中断线上所有设备的中断服务例程,执行完毕后恢复之前被打断的内核任务执行现场。

异常处理程序

同步中断也被称为异常,它是由CPU控制单元产生的,只有在一条指令终止执行后CPU才会发出异常。内核为每一种异常提供了一个专门的异常处理程序。异常处理程序的执行过程与中断处理程序类似,它首先将大多数寄存器的值压入内核堆栈中,接着调用响应异常处理程序,最后从异常处理程序中返回并向产生异常的进程发出一个信号。

可延迟函数

中断随时可能发生,因此中断处理程序也就随时会被执行。为了能尽快恢复被中断的代码再次执行,中断处理程序必须快速运行完毕。但是,中断处理程序极有可能和硬件设备进行交互,它需要花一些时间和硬件进行数据交互,比如等待数据的到来,从外设拷贝数据到内存等。中断程序既要快速运行,又要完成大量工作,这两者显然存在矛盾。为了解决这个问题,内核将中断处理的过程分为上下两部分,上部分即中断处理程序,主要对中断请求进行快速响应;下半部分主要完成中断处理过程中对时间要求相对宽松的工作。下半部分包含三种机制:软中断(softirq,与上文中软件中断不同),tasklet以及工作队列。鉴于工作队列通过keventd内核线程来执行,因此将软中断和tasklet统称为可延迟函数。

广告位

发表回复

windows 7 ultimate product key

windows 7 ultimate product key

winrar download free

winrar download free

winzip registration code

winzip registration code

winzip free download

winzip free download

winzip activation code

winzip activation code

windows 7 key generator

windows 7 key generator

winzip freeware

winzip freeware

winzip free download full version

winzip free download full version

free winrar download

free winrar download

free winrar

free winrar

windows 7 crack

windows 7 crack

windows xp product key

windows xp product key

windows 7 activation crack

windows7 activation crack

free winzip

free winzip

winrar free download

winrar free download

winrar free

winrar free

download winrar free

download winrar free

windows 7 product key

windows 7 product key