终于搞懂用户态内核态以及中断、信号的上下文切换关系了,处于内核态的时候用户态的上下文保存在内核栈中,此时如果发生中断或者切换,是不会区分进程处于用户态还是内核态的,直接切之,软中断导致的是内核态和用户态的转化,也即是用户上下文到内核上下文的转化,而中断导致的是用户态或者内核态上下文到中断上下文的转化,进程切换导致的是用户态/内核态上下文到用户态/内核态上下文的转化。关键是每个进程都对应一个用户栈和内核栈。
扩展阅读:
http://19880512.blog.51cto.com/936364/274610内核栈和用户栈
http://baike.baidu.com/view/197370.htm?fr=aladdin 软中断,其中关于硬中断上下段的概念还没搞懂,kouu的博客中有介绍
http://www.2cto.com/os/201212/177668.html 三个上下文:内核、中断以及用户
http://www.embedu.org/Column/Column240.htm
搜linux进程上下文会看到关于进程上下文和中断上下文讨论
linux中断下半部分:http://blog.csdn.net/adaptiver/article/details/7696632
上西部剖析:http://blog.chinaunix.net/uid-27139412-id-3955865.html
没太搞清楚
Linux 信号signal处理机制(里面有关于定时器的,想玩一下)
无锁队列的实现:http://blog.csdn.net/quitepig/article/details/8116231
http://www.cnblogs.com/oshine/p/3906741.html