linux内核设计与实现第一章
1、 进程上下文和终端上下文:
处理器总处于以下状态中的一种:
1) 内核态,运行于程序上下文,内核代表进程运行于内核空间。
2) 内核态,运行于中断上下文,内核代表硬件运行于内核空间。
3) 用户态,运行于用户空间。
用户空间的应用程序,通过系统调用,进入内核空间。这时候用户空间的进程要传递很多变量、参数的值给内核,内核态运行的时候也要保存用户进程的一些寄存器值、变量等。所谓的“进程上下文“,可以看作是用户传递给内核的这些参数以及内核要保存的那一整套的变量和寄存器值和当时的环境等。
硬件通过触发信号,导致内核调用终端处理程序,进入内核空间。这个过程中,硬件的一些变量和参数也要传递给内核,内核通过这些参数进行中断处理。所谓的”中断上下文”,其实也可以看作就是硬件传递过来的这些参数和内核需要保存的一些其他环境(主要是当前被打断执行的进程环境)。
2、linux对线程的支持比较有意思:内核并不区分线程和其他的一般进程。对于内核来说,所有的进程都一样——只不过是其中一些共享资源而已。