内核空间!=内核进程

#:没有内核进程和用户进程之分;
#:每个进程可以在用户态运行和内核态运行;
#:每个进程可以认为是一个指令运行路线+背景信息(如:打开文件),这些指令沿着路线的执行会影响到进程的信息(进程的路线是由CPU的eip决定的);

#:进程的切换:进程的切换需要由当前正在运行的进程准备好“切换到的进程”的相关信息的设置(如:current_proc),然后在执行一个CPU指令(如:ljmp可以通过TSS完成相关寄存器的设置),在这之后,地址空间变了,且CPU按照新的的eip执行了,也就是说新的进程得到了运行。


进程不分内核进程和用户进程,对于处理器差别在于:优先级的大小和时间片的长短,以及进程的地址空间(3G和1G)

http://www.perfgeeks.com/

http://www.embedu.org/Column/Column240.htm


从android 启动文章看

init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,
并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,
完成引导进程。init始终是第一个进程。

个人分析:内核空间是指1G内的内存地址在启动后始终加载这驱动等共各个动态启动的用户进程来调用,他是共享静态始终在内存1G范围内的

而用户进程调用驱动并没新开进程,还在统一进程,不过CPU执行的代码由用户内存空间转移到内核所在的1G范围内了,这样就会有增加的权限等

等来区分所谓的用户和内核。

你可能感兴趣的:(数据结构,android,linux)