Linux 内核初窥
> Linux内核是一种开源的类Unix操作系统宏内核,是Linux操作系统的主要组件,也是计算机硬件与其进程之间的核心接口。
> Linux内核负责管理系统资源,包括硬件与进程之间的通信,它用C语言编写,符合POSIX标准。Linux内核主要由进程调度、内存管理、虚拟文件系统、网络接口和进程间通信等子系统组成,这些子系统共同协作,提供了系统的各种核心功能。
Linux系统架构图
1.操作系统是什么
- 简单来讲,操作系统就是交互系统;
- Windows系统、Linux系统。
2.内核是什么
从功能层面上来说,内核就是硬件和软件之间交互的中间层;
从其他层面理解内核
1.read write内核提供给我们的API,系统调用,lib,这里开放了很多的接口,系统调用,函数给我们的软件调用;
2.内核Manager,资源的管理,给每个进程分配多少资源,进程之间共享那些内存。
3.内核实现的策略
- 宏内核。内核的所有代码,包括子系统(如内存管理、文件管理、设备驱动程序)都打包到一个文件中。内核中的每一个函数都可以访问到内核中所有其他部分。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。
- 微内核。最基本的功能由中央内核(微内核)实现。所有其他的功能都委托给一些独立进程,这些进程通过明确定义的通信接口与中心内核通信。
4.内核包含哪些核心的模块
4.1 进程调度、切换
CPU 多个进程,时间分片
CPU 1号线程,2号线程,线程切换
4个CPU,100个进程,
资源调度
新来的进程,怎么调度
不是没一个进程都有相同的优先级
有一些进程注定是贵族进程,优先级很高
怎么调度这种优先级高的进程?
内核需要考虑的问题
4,2 内存管理
多个进程,每个进程都是要分配资源的,内核管理。
4.3 虚拟内存机制
进程都有自己的资源,资源的隔离;
每一个进程都以为自己的资源很充足,而且不会操作到其他进程的资源哪里去;
就像领导一样,要让每个员工都以为自己是核心员工,但其实每个人都是打工人,4G可以使用,其实并不是。
4.4 和网络交互的地方
电脑–>联网–>偶遇–>联系
API
4.5 设备驱动程序
有时候,电脑没有声音,安装驱动
USB,手机,支持内核可以访问设备
4.6进程间通讯机制&锁
进程之间相互通信
IPC:管道、共享内存、信号量
多个进程、多个线程,大家可能会同时操作同一份资源,出现资源抢夺的情况,你持有他的资源,他持有你的资源,大家谁也不放手,出现死锁。
内核需要提供锁的机制,给各个进程、线程
乘风破浪的姐姐
你拿了他的口红
他拿了你的粉底
你们谁也不能完成化妆步骤
谁也上不了台。
4.7 其他模块
页表的管理
数据同步添加链接描述
- 很多时候,操作内存层的数据,持久化到磁盘,111111持续刷到磁盘
- 存在buffer,缓冲区,缓冲数据量到一定程度,统一刷到磁盘
二进制文件
时间管理