- 在/boot目录下面引导程序把内核从磁盘加载内存,并让系统进入保护模式下运行。则开始执行系统的初始化。
- init/main.c(确定如何分配和使用系统物理内存,然后调用内核各个部分的初始化:对内存管理、进程管理、块设备、字符设备、中断管理、进程管理、软件、硬件管理的初始化),使得系统的各个部分处于可运行的状态。此时程序自己“手工”移动的到进程0中运行。并且使用fork()来生成进程1,在进程1中程序将继续进程应用环境的初始化并执行shell登录程序。而原进程0则会在改系统空闲的时候被调度执行。此时,0进程执行pause()系统调用和调度函数。
- 磁盘-------(内核)-------内存----------保护模式---------物理内存的初始化------------内存、进程、设备、中断、软硬件等的初始化---------变成进程0-----------生
成fork()生成进程1以及该进程应用环境的初始化-------shell登录---------0进程一直处于就绪态------------系统
空闲----------进程0执行pause和调用函数。
- 程序自己“手工”移动的到进程0中运行:将内核初始化程序流从内核态移动到用户态。
进程又分为实时进程和普通的进程:
SCHED_OTHER:为普通的进程。
SCHED_FIFO 、SCHED_RR :标识实时进程
阅读(690) | 评论(0) | 转发(0) |