您的位置:首页 > 其它

关于线程、进程、用户态、内核态的不严谨体会

2009-09-04 15:42 316 查看
1.进程对象,维护一个虚拟内存到物理内存的映射表,以便达到不同进程对相同虚拟内存的操作映射到对不同物理内存的操作。

2.线程对象,维护两套栈(内核态,用户态),以便不同线程的PUSH,POP堆栈操作,针对各自的虚拟内存。至于两套栈,是为了用户态和内核态切换时使用的,如系统调用。

3.用户态与内核态:用户态的线程只能访问用户态的内存空间,要想访问内核态空间,必须发生切换;

而内核态的线程,不仅可以访问内核态空间,也可以访问用户态空间,所以可以直接读写用户态空间的数据或执行用户态空间的函数,而不需要发生状态切换。

Windows32GUI编程中的WndProc()就是作为回调函数,是可以被内核态线程调用(处理SendMessage())的,也就是说位于用户空间的函数运行在了内核态。

一个线程处于哪种态,不在于执行的指令函数位于哪个空间,而在于特权寄存器是否被设置。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: