目录
0.前言
1.系统结构图
1.1.操作系统工作方式
1.2.高版本和低版本内核区别
0.前言
本专栏,是记录内核学习的,参考b站linux内核源码分析,以及linux内核艺术图解。后面的文章将记录个人的学习,源码注释,源码理解。
1.系统结构图
用户应用程序
三方库(标准库 ,SDK等)
用户态
-------------------------------------------------------------------------------------------------
操作系统的服务层 sys_call(系统调用) 快递(接口层)
用户态与内核态的过度层
--------------------------------------------------------------------------------------------------
操作系统内核
文件系统模块(虚拟文件系统VFS,【将硬件当成文件使用】)
内存管理模块(虚拟内存)
进程调度模块
进程间通信模块
驱动管理模块(管理驱动,但是不实现驱动)
驱动:字符型驱动,块设备驱动,网络驱动
硬件系统,驱动实现
内核态
--------------------------------------------------------------------------------------------------
硬件
硬件层
---------------------------------------------------------------------------------------------------
linux内核,也可以从管理层和实现层,分层实现,有强独立性,易于升级和维护,不断迭代,只需要修改某些模块,模块的独立性,让整个框架的模块解耦。
1.1.操作系统工作方式
程序是不断运行在用户态的,只有需要用到一些底层的系统api(系统调用)支持,获取相应的数据时才会进入内核态。
1.把操作系统从用户态切换到内核态(用户应用程序到内核的流程)-----利用陷阱(trap)是同步异常,是执行一条指令的结果。陷阱最重要的用途是在用户程序和内核之间提供系统调用接口。陷阱总返回到当前指令的
2.实现操作系统的系统调用(操作系统服务层)-----syscall
3.应用操作系统提供的底层函数,根据操作系统的驱动,完成相应的任务。
4.退出后从内核态切换到用户态
1.2.高版本和低版本内核区别
linux整体框架基本不变,高版本的内核,主要是一些算法的改进(进程调度算法),驱动的种类;但是进程的管理方式基本不变,驱动管理模式几乎不变(管理模式:零散型 分层型 设备树[为了安卓操作系统更好的管理硬件]),所以,源码将以linux0.11版本去看源代码。