内核的启动分为压缩内核和非压缩内核两种,这里我们以压缩内核为例,压缩内核运行时,将运行一段解压缩程序,得到真正的内核镜像,然后跳转到内核镜像运行。
进入非压缩内核入口,在非压缩内核入口中,完成各种初始化 *** 作后跳转到C语言入口处运行。
运行方式没什么差别吧,只是权限的问题,英特尔的cpu有三四个权限的级别,但是linux只用了最高和最低,分别是内核态和用户态,在用户空间运行的程序都不能直接访问控制、硬件,要执行相应 *** 作的话需要向内核发出系统调用。当然,就是用户空间和内核空间堆栈不一样,用户空间堆栈较大,而内核的进程只有两页。其余我反正觉得区别不大,比如内核编译为可抢占的话大多数内核进程像用户进程一样也都可被抢占,运行时都有各自的运行上下文,似乎只有中断处理程序和用户进程不太一样吧。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)