因为知识学得不系统,以前涉及到内核的地方就懵了,如坠五里雾中,最近找了本书大概翻了翻,了解了一些相关的知识,这里简单记一下。
从前在单片机上编程,用用什么汇编,c语言之类的,实现一些简单的东西,指令的执行是简单的–至少从表面上来看是这样的,裸机的单片机只能执行一个控制流,那会对内核的认识就是感觉它很高级,很神秘。
计算机启动的过程是这样的:cpu上电或复位后,会去bios rom里执行bios的相关指令,bios执行的操作包括系统自检,维护cmos里保存的一些开机参数等,当然还有加载操作系统内核到内存。bios加载好内核之后就会把控制权交给内核了,当然这里有bios寻找引导扇区,或者什么bootloader进行加载之类的略过不提。操作系统内核应当与普通程序的执行没什么不同,除了内核可以执行的指令比普通进程多–内核可以执行特权指令(通过模式位的设置)。
为什么要有内核呢?众所周知的原因是拥有内核可以实现任务调度,同时执行多个进程,充分利用计算机的性能。另外内核还起到统合各种硬件,维护各种资源的作用,并且通过内核态用户态的划分,限制了特权指令,从而一定程度上保持了整个计算机系统的健壮性和稳定性。
内核是如何实现的呢?内核要实现任务调度,多个任务可以“同时”运行,这里的同时是带引号的,任务只是在切换来切换去,执行一会这个再去执行下一个,因为速度很快,看起来就像是在同时运行一样。
为了完成这个目标,需要每个任务保存自己的状态–即上下文,用于被挂起时保存工作状态,被调度到后恢复工作环境。还需要对进程的选择,当达到某种条件,比如某进程时间片用完了,中断使状态切换到内核态,去执行内核态代码,根据某种调度算法选出下一个运行的任务,当然这个时候被中断的任务的上下文已经被保存,而即将运行的任务的上下文也会被恢复,以继续执行。当然,要实现这些,你要对cpu的编程熟悉一点,起码知道保存好哪些信息可以完全的恢复一个任务。
文件系统,应该就是把数据给抽像化,形成一个逻辑上的整体,以一定的信息记录这些数据的信息,比如大小类型之类的,在通过目录(本身也是一种文件),把文件关联到一起,组织起来。
我之前还有一个误区,我一直以为操作系统的内核实现就是单纯靠软件的,硬件部分还是跟单片机差不多,只不过性能更好,更复杂一些,当然可能这样也是可以实现的,但是很明显,为了提升效率,在操作系统的构成中,是有别的硬件可供使用以构建操作系统的。不知道这算硬件促进软件还是软件促进硬件呢?
现在我对这方面了解还是比较粗浅的,如果有什么错漏的地方,还请路过的大侠帮忙指正,多谢~
操作系统内核小记
最新推荐文章于 2024-07-05 16:26:14 发布