笔记整理—内核!启动!—kernel部分(1)驱动与内核的关系

news2025/1/9 1:15:26

        首先,恭喜完成了uboot部分的内容整理,其次补充一点,uboot第一部分和第二部分的工作不是一定的,在不同的版本中,可能这个初始化早一点,那个的又放在了第二部分,版本不同,造成的工作顺序不同,但终归是要完成基本内容初始化并传参给kernel的。

        那么至于驱动与内核的关系,用一张图来说明最适合不过:

        驱动位于OS层的中下层与硬件相接。驱动是内核中的硬件设备管理模块,驱动工作在内核态,驱动程序故障可能会导致整个内存崩溃(与内存有很大的关系)。驱动程序漏洞也会造成内核不安全,(依靠驱动的漏洞入侵)本质原因也是因为驱动运行在内核态。

        内核态是对于cpu而言的,还被分为用户态,取决于跑关于什么的代码,单核的cpu只能在同一时间存在一种状态。内核态访问内存不受限制,用户态访问不能访问的区域会引发段错误。内核版本更新的速度,意味着驱动设备发展的速度之快。

        应用程序不属于内核态,如vim等。应用程序工作在用户态。

        

        应用程序的崩溃一般不会影响到内核。内核是田,田上的1、2、3、4、5.....是菜,菜会被养死,但田还在那,因为内存映射的存在,隔壁的菜也不一定会死,如果内核崩溃,应用会全部崩溃。应用程序调用的是内核的API进行工作。

         根文件系统:为系统提供根目录。进程1存放在根文件系统中:是内核与用户态的边界,也是第一个应用程序。内核启动在后半的时候就会进行根文件的装载。

        紧耦合:文件直接的变量,可以相互调用,机器调用明白,但人就不一定能明白了。

        模块化:各功能代码之间彼此独立,函数间的相互调用极少,遵循一个接口规范,实现松耦合。高模块化体现在裁剪性、低耦合性。

        Linux在配置时进行功能裁剪,灵活但复杂——静态升级。

        动态升级:不用重启,不用重新烧录,依靠模块化设计实现。

        动态安装与卸载:如U盘。

        模块化设计的优点:动态可裁剪、灵活;可拓展(动态装卸、新硬件支持等);利于分工协作。

        kbuild:kernel build 内核的编译文件,内核编译体系要用到的文件。

        mk文件:板卡移植厂商自己写的编译文件,针对该厂的出厂板卡进行细节调整。

        linux本身的复杂度决定了其配置方式不能像是uboot一样进行配置,所以linux将依赖于kbuild和kconfig进行内核的配置。

        内核文件目录:

        arch目录:architecture——架构,就cpu而言。

        block目录:块设备,与各种存储设备相关的管理代码。

        crypto目录:加密算法相关,crc32.....等相关校验算法之类的加密算法。

        documentation目录:文档相关。

        drivers目录:驱动目录,存放所有支持的硬件目录。

        firmware目录:固件,是一种软件,但是被固化到了IC中运行,如s5pv210的IROM代码。

        fs目录:file system文件系统支持项。

        include目录:公用的,(各cpu架构)共用的头文件,特有的头文件在arch里面。

        init目录:初始化目录,内核初始化时需要使用的代码。

        ipc目录:inter process commuication 进程间通信。

        kernel目录:linux内核。

        lib目录:库,公用的一些库函数,linux内核编译不能使用c标准库,因为标准库是针对应用层的,用不了标准c语言库函数,但所用的方法几乎一样。printf:应用层。printk:内核打印使用。

        mm目录:memory management 内存管理相关。

        net目录:网络相关目录,如tcp/ip协议栈。

        samples目录:示例。

        scripts目录:脚本文件,linux内核配置编译、生产所用,是一个辅助工具。

        security目录:安全相关。

        sound目录:音频处理相关。

        tools目录:linux中使用的工具。

        usr目录:initramfs与内核启动相关。

        virt目录:内核虚拟机。

        本章先写到这吧,后面将继续对内核进行相应的介绍。        

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

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

相关文章

滑动窗口——632. 最小区间

最近在抽时间写LC上的一个专栏——2024春招冲刺百题计划。挑着做,做了几道和滑动窗口相关的题目,632. 最小区间,LC上标记为困难,第一次写完全没有思考,参考了别人写的答案茅塞顿开,特此记录以鞭策自己学习。…

Android perfetto 简介

Android perfetto 简介 使用 perfetto 工具,您可以通过 Android 调试桥 (adb) 在 Android 设备上收集性能信息。使用 adb shell perfetto ... 命令调用 perfetto 工具。 perfetto 从您的设备上收集性能跟踪数据时会使用多种来源,例如: 使用…

5、const修饰类型和变量

const修饰类型和变量 一、const常量一些注意点1、声明时必须同时初始化2、不可更改3、与宏常量的区别 二、const修饰指针1、常量指针constant pointer2、常指向指针pointer-to-constant pointer 一、const常量一些注意点 1、声明时必须同时初始化 #include <iostream> …

框架template初识

框架初识 框架就是一个别人帮我们搭好的舞台&#xff0c;造好了很多现成的工具供我们使用&#xff0c;让开发过程更快速、简洁。 Gin框架介绍 Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。 Gin是一个用Go语言编写的web框架。它是一个类似于martini 但拥有更好性能的API…

企业网银登录提示请确认您已插入工商银行U盾证书的解决方法

昨天受人之托帮小企业财务解决上网银的问题 因为不是专业做这个的&#xff0c;所以只能安装“常识”行事&#xff0c;但结果实在是令人意想不到。 排错的步骤&#xff1a; 同一台电脑上尝试不同浏览器&#xff0c;发现360浏览器的接受度相当普遍&#xff1b;给U盾换不同的连接…

抖音引流脚本工具,实现自动化引流,解放大家双手

抖音引流脚本工具,实现自动化引流,解放大家双手 #获客引流 推荐阅读&#xff1a; 百收网SEO引流脚本软件不断更新&#xff08;推广全集教程&#xff09;https://www.bsw80.com/post/460.html 我们这篇文章的话&#xff0c;来去给大家说一下这个抖音这个同城评论&#xff0c;…

探索 RAD:5 个最佳实践案例解析

天下武功&#xff0c;唯快不破&#xff01;应用开发&#xff0c;唯速称王&#xff01; 在当今快速发展的科技环境中&#xff0c;企业面临的挑战不断升级。传统的应用开发方法往往因其复杂的流程和较长的开发周期而无法满足快速变化的市场需求。在这种背景下&#xff0c;快速应…

【阿里云】个人认证与公司认证

个人认证和企业认证的区别 更新时间&#xff1a;2024-05-20 09:32:52 本文档主要介绍个人认证账号和企业认证账号的区别。 账号实名认证分为个人实名认证和企业实名认证。 个人账号认证&#xff0c;请选择认证类型为 个人&#xff0c;支持个人支付宝授权认证和个人扫脸认证。…

如何免费将视频转换为 MP4?将视频转换为 MP4 的 5 种方法

您知道如何免费将不受支持的视频格式转换为 MP4 吗&#xff1f; 您可以轻松地在视频共享网站和社交应用上访问各种视频。从网站下载视频但无法使用媒体播放器播放是很常见的事。如何将视频转换为 MP4以便更好地播放&#xff1f; 事实上&#xff0c;市场上有很多视频音频转换工…

【Python 千题 —— 算法篇】字符统计

Python 千题持续更新中 …… 脑图地址 &#x1f449;&#xff1a;⭐https://twilight-fanyi.gitee.io/mind-map/Python千题.html⭐ 题目背景 在编程中&#xff0c;对字符串的字符统计是一个常见任务。这在文本处理、数据分析、词频统计、自然语言处理等领域有广泛应用。无论…

PS插件DR5至臻高级版下载安装教程Photoshop美颜美白牙齿磨皮使用插件百度网盘分享

DR5至臻高级版PS插件DR5至臻高级版下载安装教程Photoshop美颜美白牙齿磨皮使用插件百度网盘分享链接地址可以对眼睛、眉毛、嘴唇等五官进行精细调整&#xff0c;如增强眼睛的明亮度和清晰度&#xff0c;使眉毛更加立体&#xff0c;嘴唇更加饱满可以快速有效地去除人像照片中的瑕…

使用 EMQX 开源版的 Webhook 机制处理消息并存储数据

1、前言 EMQX 是一款强大的开源 MQTT 消息代理&#xff0c;它支持大量的连接和高吞吐量&#xff0c;适用于各种物联网应用。Webhook 是 EMQX 提供的扩展功能之一&#xff0c;用于将消息推送到外部的 HTTP 服务。在本文中&#xff0c;我们将介绍如何使用 EMQX 开源版的 Webhook …

RabbitMQ 03 在项目中的实际使用: 告警,批处理

01.例子&#xff0c;解耦合&#xff08;使用异步&#xff09; 1.1异步思想&#xff1a;不会专门等待 1.2 例子&#xff1a;程序执行 1.3 如何设计程序 多线程&#xff1a; 订单请求模块只用于发送请求和处理确认&#xff0c;订单处理模块专门用于处理请求并且发送确认信…

金税四期工程运维:税务领域的信息化挑战与策略

在信息化浪潮的推动下&#xff0c;中国税务系统迎来了“金税四期”工程这一重大变革。作为税务信息化的新阶段&#xff0c;金税四期不仅标志着税务管理向更高效、更智能的方向迈进&#xff0c;同时也对运维工作提出了前所未有的挑战。本文将从金税四期的背景、运维需求分析、面…

101.对称二叉树

&#xff08;写给未来遗忘的自己&#xff09; 题目&#xff1a; 代码&#xff08;层次递归&#xff1a;&#xff09;&#xff1a; class Solution { public:bool isSymmetric(TreeNode* root) {std::queue<TreeNode*>lefttoright;std::queue<TreeNode*>righttol…

CSP-J基础之进制转换

文章目录 前言数制1. **二进制 (Binary)**2. **八进制 (Octal)**3. **十进制 (Decimal)**4. **十六进制 (Hexadecimal)** K进制转十进制例子 1&#xff1a;以二进制&#xff08;K 2&#xff09;为基数例子 2&#xff1a;以八进制&#xff08;K 8&#xff09;为基数例子 3&…

【MATLAB源码-第160期】基于matlab的胡桃夹子优化算法(NOA)无人机三维路径规划,输出做短路径图和适应度曲线

操作环境&#xff1a; MATLAB 2022a 1、算法描述 胡桃夹子优化算法&#xff08;Nutcracker Optimization Algorithm, NOA&#xff09;是一个灵感来源于胡桃夹子的故事的元启发式优化算法。这个故事中&#xff0c;胡桃夹子是一个能够将坚果壳轻易地破开以获取内部果仁的工具。…

滚珠花键助力生产加工精准化!

滚珠花键是一种机械传动元件&#xff0c;它通过花键轴与花键孔的配合&#xff0c;将动力从一个轴传递到另一个。在工业自动化领域内&#xff0c;滚珠花键系列产品主要用于辅助直线运动。尤其是在那些需要精密传动的应用场景&#xff0c;而滚珠花键在生产加工中的优势主要体现在…

Vulnhub:Dr4g0n b4ll 1

靶机下载地址 信息收集 主机发现 nmap扫描攻击机同网段存活主机。 nmap 192.168.31.0/24 -Pn -T4 靶机ip&#xff1a;192.168.31.183 端口扫描 nmap 192.168.31.183 -A -p- -T4 开放了22,80端口&#xff0c;端口详细信息如下&#xff1a; 网站信息收集 访问http服务。 …

WPF入门到跪下 第十一章 Prism(四)View与ViewModel的自动关联

View与ViewModel的自动关联 一、ViewModelLocator 在学习MvvmLight框架时&#xff0c;也使用了ViewModelLocator类。但在MvvmLight框架中&#xff0c;ViewModelLocator只是一个自定义类&#xff0c;与框架无关&#xff0c;目的就是初始化IOC容器。而在Prism框架中则不同&…