启动一般为4个过程
1 不同CPU的firmware进行系统自举(bootstrap)
2 bootloader
3 操作系统内核的启动
4 系统启动
bootstrap
CPU加电后, 总要从某个固定地址开始执行第一条指令
目的:加载bootloader
不同CPU有不同的处理方式
bootloader
用来加载内核并为内核的运行提供环境
内核启动
如果是压缩格式的内核,需要首先解压。内核的入口地址:ENTRY标识 进行一系列处理跳转到start_kernel()
start_kernel具体为下面
页表初始化:paging_init( )
页描述符初始化:kmem_init( ), free_area_init( ), mem_init( )
异常和中断的初始化:trap_init( ), init_IRQ( )
内存初始化:kmem_cache_init( ), kmem_cache_sizes_init( )
时钟初始化:time_init( )
启动第一个系统进程(init):kernel_thread( )
最后一步系统启动
init: 内核启动后运行的第一个进程 ;所有其他进程都是init进程的子进程 ;内核启动后将启动一系列系统级进程并对系统进行一系列初始化:;加载文件系统,加载设备驱动程序,…;
启动系统日志,启动用户登录进程,…
其它应用级进程…
kernel/:内核的通用代码(比较重要)
sched.c module.c printk.c signal.c fork.c exit.c
时间: 2024-10-27 12:46:52