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 等。

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

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

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

相关推荐
厨 神5 分钟前
vmware中的ubuntu系统扩容分区
linux·运维·ubuntu
Karoku06610 分钟前
【网站架构部署与优化】web服务与http协议
linux·运维·服务器·数据库·http·架构
geek_Chen0112 分钟前
虚拟机共享文件夹开启后mnt/hgfs/下无sharefiles? --已解决
linux·运维·服务器
(⊙o⊙)~哦43 分钟前
linux 解压缩
linux·运维·服务器
牧小七2 小时前
Linux命令---查看端口是否被占用
linux
鸡鸭扣3 小时前
虚拟机:3、(待更)WSL2安装Ubuntu系统+实现GPU直通
linux·运维·ubuntu
友友马3 小时前
『 Linux 』HTTP(一)
linux·运维·服务器·网络·c++·tcp/ip·http
记得开心一点嘛4 小时前
在Linux系统上使用Docker部署javaweb项目
linux·运维·docker
Tak1Na5 小时前
2024.9.18
linux·运维·服务器
Yana.nice5 小时前
linux中将文本转为unix格式
linux