
Linux内核初始化sp设置方法是sp只要指向远大于512偏移处都可以。linux在初始的时候会调用fork系统调用来创建第一个进程,他被成为零号进程,创建后会一直存在并且零号进程是所有进程的父进程。
Linux内核初始化的设置方法
首先看任务的结构体,前面是进程的状态时间片,优先级信号打开文件等等,重要的是最后TSS结构体,TSS段存放的是进程的一些寄存器的状态标识,当CPU运行某个进程时,需要将这个进程的TSS段放入CPU中。
TSS实际就是CPU在运行时产生的一些结果会放到这些寄存器中,当再次调用这个进程时再把TSS段放进CPU中,需要将linux的信息从硬盘中移到内存里,之后进行内存向量等的初始化,在内核初始化的过程中,会手动创建0号进程。
处理器内核没有重启这提法,你可能是指单个内核的重新初始化。最新内核(不知道从哪个版本开始)已经支持处理器热插拔,可以在运行过程中移除、添加新内核(处理器),该功能无须额外用户态软件支持,可直接通过sysfs完成(有一个特殊的处理器内核,默认不可移除)。
重新初始化一个处理器内核,可以通过 移除+启用 来完成,这样的需求倒是挺奇怪。
LINUX系统的初始化可以分为两部分:内核部分和init程序部分。内核主要完成系统的硬件检测和初始化,init程序则主要完成系统的各项配置。主要流程是:CPU自身初始化-->加载BIOS-->BIOS加载内核引导程序(也就是ubuntu我们常说的GRUB)-->内核引导程序加载内核映像(这里的内核代码是压缩过的)-->内核映像获得CPU控制权并开始工作-->内核映像自己解压缩,开始运行init/main.c中的start_kernel()函数,这时候内核就启动了,系统初始化,系统的父进程init进程执行起来了,这时候整个系统初始化完毕,接下来只是调用一些UI界面的进程执行。
这是我的一点浅陋简介,希望对你有所帮助,谢谢!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)