Linux驱动(2)---Linux内核的组成

news2025/3/18 15:46:35
1.Linux内核源码目录

arch包含和硬件体系相关结构相关源码,每个平台占用一个目录

block:块设备驱动程序I/O调度

crypto:常用加密和三列算法,还有一些压缩和CRC校验算法。

documentation:内核个部分的通用解释和注释.。

drivers:设备驱动程序,每个不同的驱动占用一个子目录,如char,block,net,mtd.

fs:所支持各类文件系统,如EXT,FAT,NTFS,JFFS2等。

include:头文件,与系统相关的头文件放置在include/linux自目录下。

init:内核初始化代码。

ipc:进程间通讯代码。

Kernel:内核最核心的部分,包裹进程调度,定时器,和平台相关的一部分代码放置在里面。

lib:库文件代码。

mn:内存管理代码。

net:网络相关代码,实现各种常见的网络协议。

scripts:用于配制内核的脚本文件。

security:主要是一个SELinux的模块。

sound:ALSA,OSS音频设备的驱动核心代码和常用设备驱动。

USR:实现用于大宝和压缩的CPIO等。

2.Linux内核的组成部分

Linux内核主要有进程调度(SCHED),内存管理(MM),虚拟文件系统(VFS),网络接口(NET)和进程间通信(IPC)5个子系统组成

2.1 进程调度

绝大多数进程都是由用户空间的应用创建的,当他们存在底层资源和硬件访问的需求,就会通过系统调用进入内核空寂那。有时候,如果需要几个并法执行执行的任务,可以启动内核县城,这些现成没有用户空间。启动内和线程的函数为:

pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);

2.2内存管理

内存管理主要作用是控制多个进程安全地共享主内存区域。当CPU提供内存管理单元MMU时,LInux的内存管理由于每个进程完成虚拟内存到物理内存的转换。

一般32为处理器的Linux的每个进程享有4GB内存空间,0~3G

属于用户空间,3~4G属于内核空间。

当然内和空间和和用户空间的具体界限可以调整的,在内核配置选项 Processor type and features/kernel features-> Memory Split下,可以设置界限为2G或者3G。

2.3.虚拟文件系统

Linux虚拟文件系统隐藏了各种硬件的具体细节,为所有设备提供统一的接口

2.4.网络接口 

网络接口提供了对各种网络标准的存储和各种网络硬件的支持。

Linux中网络接口可以分为网络协议和 网络驱动程序,网络协议部分负责实现每种可能的网络协议,网络设备驱动负责与硬件设备通信。

2.5.进程间通信

Linux支持进程间的多种通讯机制,包括信号量,共享内存,消息队列,管道,Unix域套接字等,

 

3.Linux内核空间与用户空间。

ARM处理器分为7种工作模式。

用户模式(usr)大多数应用程序运行在用户模式下,当处理器运行在用户模式下,某些被保护的系统资源是不能访问的
快速中断模式(frq)用于高速数据传输或者通道处理
外部中断模式(irq)用于处理通用的中断
管理模式(SVC)操作系统使用的保护模式
数据访问的中止模式(abt)当数据或者指令预取中止时进入该模式,可以用于虚拟存储及存储保护
系统模式(sys)运行具有特权的操作系统的人物
为定义指令中止模式(und)党委定义的指令执行时进入该模式,可用于支持硬件协处理器的仿真

ARM linux的系统调用实现原理是采用swi软件中从户用(usr)模式陷入管理模式(svc)。

x86处理器包含 ring0~3,在ring0下,可以执行特权指令,对任何I/O设备都有权访问,而Ring3被限制很多操作。

Linux系统充分利用CPU硬件特性,它只是使用了两级。在Linux系统中,内核可进行任何操作,而应用程序则被进行对硬件直接访问和对内存的未授权访问。

内核空间和用户空间用来去区分程序执行两种不同状态,使用不同的地址。Linux只能通过系统调用和硬件中断完成用户空间到内核空间的控制转移。 

3.Linux内核的引导。

一般SOC内迁bootrom,上电时bootm运行,对CPU0而言,bootrom会引导bootloader。

init是用户空间init程序,init再派生其他进程。

bootrom是各个厂家根据自身情况编写的,一般具有SD,EMMC,NAND,USB等介质启动的能力。

用古init程序常有以下:busybox init,Sysvinit,systemd。把整个系统启动,最后成为一个进程树。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1694496.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

护眼小贴士:学生如何正确使用台灯?

随着电子设备的普及和长时间的用眼,长时间盯着屏幕或学习,眼睛需要不断调节焦距,导致眼睛肌肉疲劳,进而引发视力下降。这种现象在年轻一代甚至青少年中尤为普遍,这种疲劳状态不仅影响眼睛的舒适度,还会导致…

【Linux】网络层——IP协议

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:Linux 目录 👉🏻IP协议基本概念👉🏻IP的协议头格式👉🏻IP协议的网段划分五类IP地址子…

fastapi中实现多个路由请求

大家伙,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。 前言 最近在写机器人相关的接口,顺手学了学python,发现这是个好东西,写代码效率比java要高很多,比如写个词云呀,写个回调呀&am…

从参数变化解读 MySQL 8.2.0 发版说明

↑ 关注“少安事务所”公众号,欢迎⭐收藏,不错过精彩内容~ 日前,MySQL 8.2.0 创新版本已正式上线,并提供安装包下载,但 docker 镜像尚未更新。 在 MySQL 8.1.0 刚发版时也做过分析,欢迎阅读: 重…

云部署最简单python web

最近在玩云主机,考虑将简单的web应用装上去,通过广域网访问一下,代码很简单,所以新手几乎不会碰到什么问题。 from flask import Flaskapp Flask(__name__)app.route(/) def hello_world():return Hello, World!app.route(/gree…

html通过数据改变,图片跟着改变

改变前 改变后 通过数据来控制样式展示 <template><div>通过num控制图标是否更改{{num}}<div class"box"><!-- 如果num大于1则是另一种&#xff0c;样式&#xff0c;如果小时1&#xff0c;则是另一种样式 --><div class"item&qu…

字节面试:百亿级数据存储,怎么设计?只是分库分表吗?

尼恩&#xff1a;百亿级数据存储架构起源 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;经常性的指导小伙伴们改造简历。 经过尼恩的改造之后&#xff0c;很多小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试机会&#xff0c…

WGCLOUD可以使用短信告警通知吗

支持的 以下是官网的说明 告警报警配置说明 - WGCLOUD

2024.5.25晚训题解

这套题挺简单的。。。 A题 AC率差不多100% B题 AC率差不多75% C题 AC率也差不多75% D题 AC率 50% E题 AC率 25% 向着top 1%出发 A题题解 Stair, Peak, or Neither? 简单判断题&#xff0c;自己写 #include<bits/stdc.h> using namespace std; int A[5]; int main() {…

增强版 Kimi:AI 驱动的智能创作平台,实现一站式内容生成(图片、PPT、PDF)!

前言 基于扣子 Coze 零代码平台&#xff0c;我们从零到一轻松实现了专属 Bot 机器人的搭建。 AI 大模型&#xff08;LLM&#xff09;、智能体&#xff08;Agent&#xff09;、知识库、向量数据库、知识图谱&#xff0c;RAG&#xff0c;AGI 的不同形态愈发显现&#xff0c;如何…

HarmonyOS鸿蒙应用开发——ArkTS的“内置组件 + 样式 + 循环和条件渲染”

一、内置组件是咩&#xff1f; 学过前端的都知道&#xff0c;一个组件就是由多个组件组成的&#xff0c;一个组件也可以是多个小组件组成的&#xff0c;组件就是一些什么导航栏、底部、按钮......啥的&#xff0c;但是组件分为【自定义组件】跟【内置组件】 【自定义组件】就…

微信小程序毕业设计-智慧旅游平台系统项目开发实战(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

【Python】【Scrapy 爬虫】理解HTML和XPath

为了从网页中抽取信息&#xff0c;必须对其结构有更多了解。我们快速浏览HTML、HTML的树状表示&#xff0c;以及在网页上选取信息的一种方式XPath。 HTML、DOM树表示以及XPath 互联网是如何工作的&#xff1f; 当两台电脑需要通信的时候&#xff0c;你必须要连接他们&#xff…

【数据结构与算法篇】二叉树链式结构及实现

【数据结构与算法篇】二叉树链式结构及实现 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 4. 二叉树链式结构的实现 4.1 前置说明 4.2 二叉树的遍历 4.2.1 前序、中序以及…

材料物理 笔记-9

原内容请参考哈尔滨工业大学何飞教授&#xff1a;https://www.bilibili.com/video/BV18b4y1Y7wd/?p12&spm_id_frompageDriver&vd_source61654d4a6e8d7941436149dd99026962 或《材料物理性能及其在材料研究中的应用》&#xff08;哈尔滨工业大学出版社&#xff09; ——…

C++:List的使用和模拟实现

✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一 list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.2.5 list modifiers …

【算法】前缀和算法——和为k的子数组之和

题解&#xff1a;和为k的子数组之和(前缀和算法) 目录 1.题目2.题解思路2.1前缀和 哈希表&#xff0c;算法步骤&#xff1a;2.2细节如下&#xff1a;2.3参考代码&#xff1a; 3.总结及思考 1.题目 题目链接&#xff1a;LINK 2.题解思路 暴力求解自然不用多说&#xff0c;时…

七大经典排序算法——冒泡排序

文章目录 &#x1f4d1;冒泡排序介绍&#x1f324;️代码实现&#x1f324;️做个简单的优化&#x1f324;️复杂度和稳定性分析☁️结语 &#x1f4d1;冒泡排序介绍 冒泡排序是一种简单但效率较低的排序算法。它重复地比较相邻的两个元素&#xff0c;如果顺序不对则交换它们&…

刷题之路径总和Ⅲ(leetcode)

路径总和Ⅲ 这题和和《为K的数组》思路一致&#xff0c;也是用前缀表。 代码调试过&#xff0c;所以还加一部分用前序遍历数组和中序遍历数组构造二叉树的代码。 #include<vector> #include<unordered_map> #include<iostream> using namespace std; //Def…

著名书法家王杰宝做客央视频《笔墨写人生》艺坛人物经典访谈节目

印象网北京讯&#xff08;张春兄、冯爱云&#xff09;展示艺术风采&#xff0c;构建时代精神。5月25日&#xff0c;著名书法家、羲之文化传承人王杰宝&#xff0c;做客央视频《笔墨写人生》艺坛人物经典访谈节目&#xff0c;与中央电视台纪录频道主持人姚文倩一起&#xff0c;分…