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

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

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

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

相关推荐
yangshuo128119 分钟前
风车OVF镜像:解放AI开发限制的Ubuntu精简系统
linux·人工智能·ubuntu
flypig哗啦啦27 分钟前
ubuntu服务器版启动卡在start job is running for wait for...to be Configured
linux·运维·ubuntu
_Itachi__44 分钟前
LeetCode 热题 100 114. 二叉树展开为链表
linux·leetcode·链表
あ-1 小时前
CentOS7 OpenSSL升级1.1.1w
linux
tianyuanwo1 小时前
深入解读tcpdump:原理、数据结构与操作手册
linux·运维·服务器·tcpdump
电鱼智能的电小鱼2 小时前
产线视觉检测设备技术方案:基于EFISH-SCB-RK3588/SAIL-RK3588的国产化替代赛扬N100/N150全场景技术解析
linux·人工智能·嵌入式硬件·计算机视觉·视觉检测·实时音视频
子非衣3 小时前
Ubuntu系统挂载磁盘并配置开机自动挂载
linux·运维·ubuntu
风暴智能3 小时前
问题处理——在ROS2(humble)+Gazebo+rqt下,无法显示仿真无人机的相机图像
linux·无人机
唐志远19974 小时前
VMware虚拟机 安装 CentOS 7
linux·运维·centos
众乐乐_20084 小时前
Uniapp中小程序调用腾讯地图(获取定位地址)
linux·服务器·apache