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

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

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

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

相关推荐
韦德斯15 分钟前
嵌入式Linux的RTC读写操作应用
linux·运维·c语言·arm开发·实时音视频
程序员JerrySUN19 分钟前
熟悉的 Docker,陌生的 Podman
linux·docker·容器·系统架构·podman
a_安徒生19 分钟前
window系统改为Linux系统
linux·windows·centos·系统安全
C++忠实粉丝25 分钟前
计算机网络socket编程(2)_UDP网络编程实现网络字典
linux·网络·c++·网络协议·计算机网络·udp
哎呦喂-ll32 分钟前
Linux进阶:常用操作
linux·运维·服务器
m0_6446973333 分钟前
DNS域名解析服务器
linux·运维·服务器
byte轻骑兵1 小时前
嵌入式 ARM Linux 系统构成全解:从硬件到应用层层剖析
linux·arm开发·arm·嵌入式开发
小灰灰__1 小时前
Linux离线安装Docker命令,简单镜像操作
linux·docker·eureka
AI视觉网奇2 小时前
pytorch3d linux安装
linux·人工智能·pytorch
双手插兜-装高手2 小时前
Linux - 线程基础
linux·c语言·笔记