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

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.mzph.cn/news/840799.shtml

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

相关文章

gdb调试openjdk

参考Linux安装百度网盘-CSDN博客 在百度网盘官网下载Linux版本的安装包(deb格式)。 linux环境安装百度网盘: sudo dpkg -i baidunetdisk_linux_2.0.1.deb sudo apt-get -f install 在编译OpenJDK过程中,需要用到的软件如下: …

01_尚硅谷JavaWeb最新版笔记

尚硅谷JAVAWEB概述 课程概述 计划学习时间:1周以内

【2024软考】史上最全!软考刷题+解析大合集(9万字全手工打,货真价实)

计算机基础知识 1.中断向量表用来保存各个中断源的中断服务程序的入口地址。当外设发出中断请求信号(INTR)以后,由中断控制器(INTC)确定其中断号,并根据中断号查找中断向量表来取得其中断服务程序的入口地…

Pytorch-03 数据集与数据加载器

在 PyTorch 中,数据集和数据加载器是用于有效加载和处理数据的重要组件,特别是在训练深度学习模型时。以下是关于 PyTorch 数据集和数据加载器的简要介绍以及示例代码: 数据集(Dataset): 数据集是一个抽象…

python --创建固定字符串长度,先进先出

a 123def concatenate_within_limit(b, new_string):# 计算新字符串与a的长度之和a btotal_length len(a) len(new_string)# 如果长度超过1024,从前面删除足够的字符if total_length > 5:diff total_length - 5a a[diff:] new_string # 删除前diff个字符…

第86天:代码审计-PHP项目TP框架安全写法1day利用0day分析

案例一: 利用框架漏洞-TP3框架-SQL注入&Demo&YxtCMF 首先先查询thinkphp的版本 去寻找版本漏洞: Thinkphp3.2.3及以下版本漏洞整理_thinkphp3.2.3漏洞-CSDN博客 去查这个exp注入 这里的利用条件是必须有find方法,并且where后面的参数是数组 …

java基础-JVM日志、参数、内存结构、垃圾回收器

一、基础基础 1.1 数据类型 Java的数据类型分为原始数据类型和引用数据类型。 原始数据类型又分为数字型和布尔型。 数字型又有byte、short、int、long、char、float、double。注意,在这里char被定义为整数型,并且在规范中明确定义:byte、…

电赛一等奖!基于TMS320F2812的简易数字频率计

电赛一等奖!简易数字频率计设计(原理图、PCB、源码、分析报告) 这份文件是关于合肥工业大学电气与自动化工程学院的一个项目报告,题目为“基于TMS320F2812的简易数字频率计”。项目由方敏、侯其立、李苗、张巧云四位本科生完成&am…

Redis 哨兵机制的工作原理——Java全栈知识(22)

Redis 哨兵机制的工作原理 在之前的文章我们讲到了 Redis 的三种集群架构:跳转文章:Redis集群模式 接下来我们详细讲哨兵机制的作用以及实现原理 以下是 Redis 哨兵的结构图 1、Redis 哨兵的作用 哨兵的作用如下: 1、监控,2、…

如何使用Python中的生成器

如何使用Python中的生成器 在Python中,生成器是一种特殊的迭代器,它允许你逐个地生成值,而不是一次性地计算并存储所有的值。这对于处理大量数据或者无限序列特别有用,因为它能够节省内存并提高效率。 生成器通常是通过以下两种…

Java API使用避坑合集

Java API使用避坑合集 总结常见的容易踩坑点记录下来以供参考 相当于避坑大杂烩、会涉及各种坑,持续更新… 1、数组转集合 Arrays.asList() 方法 Arrays.asList() 方法 返回的集合不支持修改操作,否则会抛异常 java.lang.UnsupportedOperationExcept…

5月25日,每日信息差

第一、博通推出 P1400GD 高速网卡:支持 400Gbps 网络、5nm 工艺,搭载 BCM57608 芯片,符合 IEEE P802.3bs 标准。这款网卡采用 5nm 制程技术,为 AI/ML、云、高性能计算提供支持,配备第六代增强型 NIC 架构、第四代 RoCE…

【晚风摇叶之其他】抖音直播弹幕解析,连接websocket解析弹幕内容

目录 一.生成websocket的url 1.查看网络面板拿到url,分析url 2.分析url 1.获取room_id,user_unique_id 2.获取signature 3.拼接url 二.连接websocket解析弹幕内容 1.查找消息体序列化方式 2.编写proto对象信息 3.python连接websocket 问题1:cookie问题

【ArcGIS微课1000例】0111:谷歌地球Google Earth下载安装与使用教程

一、谷歌地球安装 双击安装包,默认点击完成即可。 二、谷歌地球使用 打开快捷方式,开始使用谷歌地球。欢迎界面: 软件主界面: 三、谷歌地球下载 软件安装包位于《ArcGIS微课实验1000例(附数据)专栏配套完数据包中的0111.rar中…

海外投放面试手册

海外投放面试手册 岗位职责: 负责Google 、Facebook、TikTok、Twitter等海外主流广告平台的自主投放操作及合作渠道沟通;负责海外合作渠道媒体的广告投放管理、媒体数据监测、效果分析、优化调整等工作; 3.了解海外各渠道&…

开发一个游戏为什么需要3-4个月时间?

开发一款游戏通常需要3-4个月的时间,这是因为游戏开发是一个复杂且多步骤的过程,涉及多个专业领域的合作。以下是对这一过程的详细解析: 游戏开发的第一步是概念和设计阶段。在这一阶段,开发团队需要确定游戏的核心理念、主题和玩…

企业如何防止数据泄密?大型企业必备的文件加密软件

随着信息化建设的大步推进,越来越多的企业资料以电子文件的形式保存,企业内部和企业之间的信息交流也主要依靠电子文件。近年来的泄密事件层出不穷,比如东软泄密案、HTC窃密案、力拓案等,给企业带来灾难性的经济损失及信誉重创。如…

java-数组求最值 1

在 Java 中,数组是一种基本的数据结构,用于存储一系列相同类型的数据。数组的最值问题是指在一个数组中找到最大值和最小值的问题。这个问题在计算机科学和编程中是非常常见的,无论是在算法设计、数据分析还是实际应用中,都可能会…

出题123

题目时限空间说明 无特殊均默认 1 s , 256 M B 1s,256MB 1s,256MB Problem a 最大化 在最大化目标值的基础上选择的操作越多越好,且输出操作应当按照顺序执行,即你的输出顺序就是你的执行顺序,当有多个执行顺序可以最大化目标值时&#xff0…

python中的条件语句

python中语句的执行顺序 默认情况下,python代码的执行顺序,是从上到下依次执行的,这个顺序是不会变的, python中的条件语句 电脑的CPU芯片是能够进行算术运算也能进行逻辑判断的。 条件语句能够表达“如果...否则...” 这样的语…