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,一经查实,立即删除!

相关文章

01_尚硅谷JavaWeb最新版笔记

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

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

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

第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、…

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

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

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

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

出题123

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

python中的条件语句

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

基于51单片机的数字频率计(电路图+pcb+论文+仿真+源码)

于51单片机的数字频率计 设计的频率计范围能够达到1HZ-1MHZ(实际上51单片机达不到这个范围,不要在实验环境下进行),这个是课设来着,用Proteus仿真实现的,给有需要的同学参考一下 仿真原理图如下(proteus仿真工程文件可…

面试八股之JVM篇3.6——垃圾回收——强引用、弱引用、虚引用、软引用

🌈hello,你好鸭,我是Ethan,一名不断学习的码农,很高兴你能来阅读。 ✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。 🏃人生之义,在于追求,不在成败,勤通…

Javascript特效之鼠标悬停特效【css】

先看一看效果&#xff0c;是不是很炫酷啊&#xff1f;&#xff1f; HTML代码&#xff1a; <!DOCTYPE html> <html><head><meta charset""UTF-8"" /><title>CSS特效&#xff1a;鼠标悬停效果</title><link rel&q…

SQL分类——DDL(数据定义语言)

一、DDL&#xff08;数据定义语言&#xff09; &#xff08;1&#xff09;DDL——数据库——操作的相关语法&#xff1a; 查询 可以一次性查询当前数据库服务器中所有的数据库&#xff1a; SHOW DATABASES; 查询当前所处的数据库&#xff1a; SELECT DATABASE(); 创建 一般最简…

Python | Leetcode Python题解之第101题对称二叉树

题目&#xff1a; 题解&#xff1a; class Solution:# 在【100. 相同的树】的基础上稍加改动def isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool:if p is None or q is None:return p is qreturn p.val q.val and self.isSameTree(p.left, q.ri…

Transformer详解(1)-结构解读

Transormer块主要由四个部分组成&#xff0c;注意力层、位置感知前馈神经网络、残差连接和层归一化。 1、注意力层(Multi-Head Attention) 使用多头注意力机制整合上下文语义&#xff0c;它使得序列中任意两个单词之间的依赖关系可以直接被建模而不基于传统的循环结构&#…

基于.net开发的博客系统

基于.net开发可以批量上传md文件生成文章的博客系统 .NET 个人博客 基于.net开发的博客系统 个人博客系统&#xff0c;采用.net core微服务技术搭建&#xff0c;采用传统的MVC模式&#xff0c;使用EF core来对mysql数据库(sqlite数据库)进行CRUD操作项目 为什么要自己开发博客…

clion读取文件设置为读取当前目录下的文件

1.问题 使用vs读取文件时一切正常 但是同样的代码在clion中无法正常执行 原因 原因&#xff1a;clion的源文件找不到input.txt文件的位置 需要设置工作目录&#xff0c;例如此时input.txt在当前目录下&#xff0c;那么就设置 设置当前文件的工作目录为$FileDir$即可&am…

Ubuntu 如何根据NVIDIA显卡型号确定对应的显卡驱动版本并安装

目录 一、查询推荐安装的驱动版本 二、安装推荐版本的驱动 1. 通过终端安装&#xff0c;只安装 nvidia 驱动&#xff08;亲测可用&#xff01;&#xff09; 2. 通过 software & Updates 安装&#xff0c;安装 nvidia 驱动。 三、查询能安装的最新的显卡驱动版本 1. 方…

C++—— set、map、multiset、multimap的介绍及使用

目录 关联式容器 关联式容器的特点和使用场景 树形结构与哈希结构 树形结构 哈希结构 键值对 set set的介绍 set的定义方式 set的使用 multiset map map的介绍 map的定义方式 map的使用 multimap 关联式容器 C标准模板库&#xff08;STL&#xff09;中的关联…