最近发现自己的底层的理论知识太薄了,所以默默的准备恶补了一顿操作系统的知识,所以就选了一本Linux内核的书学习学习。大学里学的专业课是操作系统,跟纯讲Linux系统还是有少许的不一样的吧。但是有想通的地方时可以通过Linux系统的学习来加深对操作系统的了解,比如说从Linux的开机加电自检的过程可以类似的知道windows系统或者是OS系统的开机启动流程。
下面开始总结总结我在学习Linux内核中的过程中的小小总结,纯粹的皮毛,入个门而已。首先Linux的内核我分为了1.开机加电到系统到怠速阶段的过程 2.文件系统,3.用户进程,和内存管理4.缓冲区 5.进程间通信。好 ,首先第一个Linux的启动过程,启动固化在硬件上的BIOS的启动代码,再次加载第一部分boolsect引导程序代码,加载第二部分内核代码,最后加载第三部分System模块代码,从开始的16位实模式转化为32位的保护模式,最后就开始和一个普通的C语言程序一样,开始执行main函数。
main函数进行完之后,系统开始进行根设备的挂载,内存,缓冲区等划分,还有各种GDT,LDT的建立,这些操作都是进程0的工作,也就是最高权限的进程。所有进程的创建都是从复制父进程开始的,每个进程都有一个task_strcut的结构体掌握。进程2的创建主要是加载shell程序,创建update进程,update进程的作用是定期将缓冲区中的数据同步到外设上,最后系统实现怠速。
Linux中的文件操作主要涉及3个数组。filp[20]与file_table[64],i_node[32],文件句柄要与file_table[64]对应,file_table又要与i_node[32]对应,i_node代表其中的文件,也就是一个系统中最多同时打开不同的32个文件,最多打开64个文件,包括相同的,一个进程可以想象一个应用程序最多打开20个文件,包括相同文件.在文件操作之前其实还有一步很重要的操作,就是将外设中的超级快,也就是硬盘挂载到根文件系统中,这相当于是一个前提条件,至于如何修改文件,读文件,写文件,都是与缓冲区之间的交互。
至于内存管理和进程间通信,将会在后续更新。Linux菜鸟的浅谈而已