Linux 系统框架分析(一)

一、linux内核结构框图

对内核结构框图有个总体的把握,有助于理解为什么驱动要这样写,为什么写的应用程序所用的C库接口能够产生这么多的事情。

框图可以看出来,linux系统,包括五个系统

一、Linux内核结构介绍

Linux 内核是操作系统的核心部分,它负责管理系统的资源、进程调度、设备驱动程序等核心功能。以下是 Linux 内核的主要组成部分和结构:

进程管理:

调度器(Scheduler): 决定在多任务系统中哪个进程获得 CPU 时间。

进程控制块(Process Control Block,PCB): 存储有关进程的信息,如寄存器状态、进程状态等。

内存管理:

虚拟内存管理: 管理进程的虚拟地址空间,包括分页机制、页面置换等。

物理内存管理: 负责跟踪系统中的物理内存,包括内存分配、释放等。

文件系统:

虚拟文件系统(VFS): 提供文件系统的抽象接口,使得不同类型的文件系统可以共享相同的 API。

文件描述符表: 管理打开文件的信息,每个进程都有一个文件描述符表。

设备驱动程序:

字符设备和块设备驱动: 用于管理字符设备(如终端)和块设备(如硬盘)。

网络设备驱动: 处理网络设备和协议栈。

网络协议栈:

TCP/IP 协议栈: 包括网络层、传输层等,用于实现网络通信。

套接字层: 提供应用程序与网络协议栈之间的接口。

系统调用接口:

系统调用: 提供用户空间程序与内核之间的接口,允许用户程序请求内核执行特权操作。

中断和异常处理:

中断处理程序: 处理硬件中断,允许外部设备向 CPU 发送信号。

异常处理程序: 处理由于错误或异常情况而引发的事件。

定时器和时钟管理:

内核定时器: 用于实现计时和时间管理。

实时时钟(RTC): 处理硬件时钟。

同步和互斥机制:

信号量、自旋锁、互斥体等: 用于确保多个进程或线程之间的同步和互斥。

系统初始化和启动:

引导加载程序(Bootloader): 负责加载内核镜像到内存中。

启动过程: 初始化硬件、文件系统等,最终执行第一个用户空间进程。

这些组件一起构成了 Linux 内核的核心结构。内核的源代码是 modulized 的,允许添加或删除特定功能的模块,以适应不同的需求。整个内核的结构和实现细节非常庞大,具体的功能和特性取决于具体的内核版本和配置。

内核是一个很厉害的超级逻辑,把硬件底层的东西抽象化,对用户来说只需要调API就好了,根本不需要管寄存器,协议,总线...(单片机会去直接操作),这些全部由操作系统做好。动不动写个操作系统是不现实的。

三、驱动认知

驱动(Driver)是一种用于使操作系统与硬件或其他软件交互的程序或模块。驱动程序充当操作系统与硬件之间的桥梁,允许它们有效地通信和协作。以下是关于驱动的一些基本认知:

硬件与操作系统的交互: 操作系统本身并不了解所有硬件设备的细节。驱动程序提供了一个标准的接口,使得操作系统能够与硬件设备进行通信,而无需了解设备的底层细节。

功能和作用:

设备驱动: 控制和管理硬件设备,如打印机、图形卡、网络适配器等。

文件系统驱动: 提供对不同文件系统的支持,例如 FAT、NTFS、ext4 等。

虚拟设备驱动: 创建虚拟设备,如虚拟磁盘、虚拟网络设备等。

字符设备驱动和块设备驱动: 用于字符设备(如终端)和块设备(如硬盘)的控制。

网络设备驱动: 管理网络接口卡和网络协议栈的通信。

相关推荐
生活很暖很治愈24 分钟前
Linux——孤儿进程&进程调度&大O(1)调度
linux·服务器·ubuntu
HalvmånEver40 分钟前
Linux:线程同步
linux·运维·服务器·线程·同步
Zach_yuan43 分钟前
自定义协议:实现网络计算器
linux·服务器·开发语言·网络
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [drivers][I2C]I2C
linux·笔记·学习
VekiSon1 小时前
Linux内核驱动——杂项设备驱动与内核模块编译
linux·c语言·arm开发·嵌入式硬件
Y1rong1 小时前
linux之网络
linux
寄存器漫游者2 小时前
Linux 软件编程 - IO 编程
linux·运维·spring
_别来无恙_2 小时前
TFTP的使用Linux
linux·服务器
Zaralike2 小时前
Linux 服务器网络不通排查 SOP(标准操作流程)
linux·服务器·网络
getapi3 小时前
注塑件的费用构成
linux·服务器·ubuntu