终端处理程序栈的设置是一个配置选项。在老版本中,中断处理程序没有自己的栈,是采用的共享所终端进程的内核栈。内核栈的大小是两页。由于中断处理程序共享进程的堆栈,所以在栈中获取空间时必须非常节省。其实,所有的内核代码都是很节省的使用内核栈的,毕竟内核栈也只有那么一点。
在2.6内核中,增加了一个编译选项#ifdef CONFIG_4KSTACKS吧栈从两页减少到一页,只提供4k的栈,这样大大减轻了内存的压力。在老版本内核中,系统每个进程都需要两页不可换出的内核内存。为了应对栈大小的减小,中断处理程序有了自己的栈,每个CPU一个,大小为4K.这个栈就称为中断栈,虽然中断栈的大小是老版本共享栈的一半,但是平均可用栈空间变大了,因为中断处理程序拥有一个自己的页面,中断栈。
阅读(1714) | 评论(0) | 转发(0) |