linux0.11为什么在用户态下必须使用系统调用来执..
时间:2007-04-10 来源:pywj777
1. linux0.11为什么在用户态下必须使用系统调用来执行内核代码,并且即使进程0这样的可以直接执行内核代码的进程也要使用系统调用。而不是直接使用相应的内核函数?
(1) 答:因为普通进程在用户态下无地址可以映射到内核代码去执行内核函数,所以需要使用系统调用将状态转为特权状态,并且使用内核的数据段、代码段、页目录、页表项将地址映射到内核代码处执行内核函数。像进程0虽然可以直接执行内核地址空间代码,但是由于有一些指令必须在特权(CPL=0)状态下执行,所以进程0要先通过系统调用将自身转为特权级,然后再执行内核函数。
相关阅读 更多 +