ARM 话说 Linux 内核

这篇具有很好参考价值的文章主要介绍了ARM 话说 Linux 内核。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、内核和发行版的区别

1、到底什么是操作系统

(1) linux、windows、android、ucos 就是操作系统。

(2) 操作系统本质上是一个程序,由很多个源文件构成,需要编译、链接成操作系统程序(vmlinz、zImage)。

(3) 操作系统的主要作用就是管理计算机硬件,给应用程序提供一个运行环境。


2、操作系统核心功能:

(1) 内存管理。如果没有操作系统,内存是需要程序自己来管理的。譬如在 uboot 中要使用内存的哪里,是程序自己随便用的,没有注册也没有限制。这时候,如果程序自己不小心把同一块内存重复用了,就会出现程序逻辑错误。系统大了之后(内存多了),内存管理非常麻烦;有了操作系统之后,操作系统负责管控所有的内存,所有的应用程序需要使用内存时,都要向操作系统去申请和注册,由操作系统的内存管理模块来分配内存给你使用,这样好处是可以保证内存使用不会冲突。

(2) 进程调度。操作系统下,支持多个应用程序同时运行(所以可以一边聊 QQ,一边看电影···),这是宏观上的并行。实际上,在单核心 CPU 上微观上是不能并行的,宏观上的并行就是操作系统提供的分时复用机制。操作系统的进程调度模块负责在各个进程之间进行切换。

(3) 硬件设备管理。没有操作系统时,要控制任何硬件都要自己写代码;有了操作系统后,操作系统本身会去控制各个硬件,应用程序就不用考虑硬件的具体细节了。操作系统的硬件设备管理模块就是驱动模块。

(4) 文件系统。文件系统是管理存储设备的一种方式。存储设备是由很多个扇区组成的,每个扇区有 512/1024/2048/4096 字节,存储设备要以扇区为单位进行读写。如果没有文件系统,程序要自己去读写扇区,就得记得哪个文件在哪个扇区。有了文件系统之后,我们人就不用再关注扇区,人只用关注文件系统中的目录和文件名,而不用管这个文件在物理磁盘的哪个扇区。


3、操作系统扩展功能:

(1) 协议栈。 一个操作系统可以支持某些协议栈,不支持另外的某些协议。比如 Windows 操作系统支持 TCP/IP 协议栈,但是不支持 CAN 总线协议栈。

(2) 有用的应用程序包。应用程序本身不属于操作系统内核的一部分,应用程序是给人用的,面向某种功能的。譬如 ping 程序用来测试网络是否连通,ifconfig 程序用来配置网卡。


4、内核和发行版的区别

区别:内核是操作系统内核的简称,内核负责实现操作系统的核心功能(资源管理模块,譬如内存管理、调度系统······),内核不包括应用程序

所以说,只有内核 人是没法用的,因为人做任何事情都是通过相应的应用程序来完成的。所以卖操作系统的人,把内核和一些常用的应用程序打包在一起,提供给普通用户,这就是操作系统的发行版(也就是普通意义上的操作系统)。

(1) 内核只有一个。www.kernel.org。

(2) 发行版有很多。譬如 ubuntu、redhat、suse、centos······


二、内核和驱动的关联

1、学习 linux 的思路

(1) 对庞大的整体要有个认识。学习路线就是先建立框架和整体,然后逐渐去学习各个细节部分,逐步细化。

(2) 对各分层的作用要清楚。

(3) 对层次间的关联和互相调用要理解。


2、驱动是属于内核的一部分

(1) 驱动就是内核中的硬件设备管理模块。

(2) 驱动工作在内核态。

(3) 驱动程序故障,可能导致整个内核崩溃。

(4) 驱动程序漏洞,会使内核不安全。


三、内核和应用程序、根文件系统的关联

1、应用和内核的关系

(1) 应用程序不属于内核,而是在内核之上的。

(2) 应用程序工作在用户态,是受限制的。

(3) 应用程序故障,不会导致内核崩溃。

(4) 应用程序通过内核定义的 API 接口,来调用内核工作。

(5) 总结1:应用程序是最终目标

(6) 总结2:内核 就是为 应用程序 提供底层资源管理的服务员


2、内核和根文件系统

(1) 根文件系统 提供了 根目录。

(2) 进程1 存放在根文件系统中。

(3) 内核启动最后 会去装载根文件系统

(4) 总结:根文件系统 为 操作系统 启动提供了很多必备的资源:根目录、进程1。


四、linux 内核的模块化设计

1、什么是模块化设计

(1) 因为 linux 内核很庞大,代码量很大、东西很多,如果设计时完全设计成一体(各个文件、各个函数之间紧耦合),复杂度超出了人所能理解的范围。所以模块化设计也是一种必要。

(2) 模块化设计就是,内核中各个功能模块在代码上是彼此独立的;譬如说,调度系统内存管理系统之间,并没有全局变量的互相引用,甚至函数互相调用也很少,就算有 也是遵循一个接口规范的。模块化设计的目的,就是实现功能模块的松耦合。


2、模块化设计的体现

(1) 配置时可裁剪。linux 内核在编译之前可以进行配置,配置时可以选择将组成内核的成千上万个模块每一个选择 “要” 或者 “不要”。要了之后还有更多的一些细节的配置。

(2) 模块化编译和安装。为了操作方便,逐渐从静态的升级变成了动态的升级(不需要重启系统,更不需要重新烧录系统)。这种动态的升级也是由模块化来支持的。

(3) 源码中使用条件编译。这种在 uboot 中已经见过了。


3、模块化设计的好处

(1) 功能可裁剪、灵活性。

(2) 可扩展性(动态安装卸载、新硬件支持)。

(3) 利于协作。


4、模块化设计是一种普遍性的系统设计原则


五、选择合适版本的内核

1、linux 内核版本变迁简史

(1) linux0.01。初版。

(2) linux0.11。很多讲 linux 内核源代码解析的书,都是以这个版本为原本来讲。《图解 linux 内核设计的艺术》。

(3) linux2.4。比较接近现代的版本,很多经典的书都是以 2.4 版本内核为参照的,譬如《LDD3》(Linux Device Driver 3)。linux2.4 的晚期内核在前几年还会经常碰到有用的。

(4) linux2.6 早期。2.6 的早期和 2.4 晚期内核挺像的。

(5) linux2.6 晚期。2.6 的晚期内核较早期内核有一些改变,尤其是驱动相关的部分和一些头文件的位置。2.6 的晚期内核目前还算是比较主流。

(6) linux3.x 4.x


2、如何选择合适的内核版本

(1) 并不是越新版本的内核越好。

(2) 选择 SoC 厂家移植版本,会减少我们开发者的工作量。


3、S5PV210 适用的内核版本

(1) 2.6.35.7+android2.3/QT4.8.3。

(2) 3.0.8 + android4.0。


4、我们使用2.6.35.7版本内核讲解


源自朱友鹏老师.文章来源地址https://www.toymoban.com/news/detail-412254.html

到了这里,关于ARM 话说 Linux 内核的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 高频交易与量化交易到底有什么区别?

      高频交易 也可以说是量化 交易,但 是 量化 交易可不 仅仅是高频交易。 或者说,高频交易是量化交易中的一个部分,一种形式 。 都 是 资本市场和计算机领域快速发展 的必然产物 。 近些年来国内

    2024年02月16日
    浏览(40)
  • 使命、愿景、价值观到底有什么区别

    以前的企业都是在发展到一定成熟阶段,才开始考虑这三个问题。但今天人们越来越多的意识到,哪怕在企业发展的初期,对于创业企业来说,确定公司的使命、愿景和核心价值观也是非常重要的。 明确的使命、愿景和核心价值观对于企业的好处在于: 形成统一共识目标方

    2024年02月05日
    浏览(35)
  • CPU与GPU到底有什么区别?

    大家好,我是小风哥,今天简单聊聊CPU与GPU。 CPU的故事我们聊得比较多了,之前也发布过很多关于CPU的文章,因此这里重点聊聊GPU。 教授 vs 小学生 你可以简单的将CPU理解为学识渊博的教授,什么都精通,而GPU则是一堆小学生,只会简单的算数运算,可即使教授再神通广大,

    2024年02月09日
    浏览(47)
  • Python中进程和线程到底有什么区别?

    python 安装包+资料:点击此处跳转文末名片获取 一、进程和线程的关系 线程与进程的区别可以归纳为以下4点: 地址空间和其它资源(如打开文件) :进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。 通信 :进程间通信IPC,线程间可以直接读写

    2023年04月08日
    浏览(40)
  • linux 内核ARM32启动

    基于linux4.19内核翻译理解 为了启动ARM Linux,您需要一个引导加载程序,它是在主内核之前运行的小程序。 引导加载程序被期望初始化各种设备,并最终调用Linux内核,向内核传递信息。 基本上,引导加载程序应该提供(至少)以下内容: 1.设置和初始化RAM。 2.初始化一个串

    2024年01月18日
    浏览(47)
  • 交换机和路由器到底有什么区别???

    我:度娘度娘,交换机和路由器的区别是什么呢? 度娘:一个工作在第二层数据链路层,一个工作在第三层网络层。 我:哈?那工作在不同层会有什么区别?为什么要工作在不同层? 度娘:一个用于组建局域网,一个用于连接互联网。 我:哦......好像有点懂,那还有什么不

    2024年02月01日
    浏览(40)
  • VR全景、3D漫游到底有什么区别?如何选择?

    VR全景,全称为Virtual Reality Panorama,即虚拟现实全景。它通过360度无死角拍摄和展示场景,使用户仿佛置身于现场。国内主要有720云、众去、如是等平台提供了VR全景的编辑、展示、存储服务;广泛的应用于旅游、房地产、教育、医疗等多个领域。 720云VR虚拟样板房 例如,在

    2024年02月03日
    浏览(38)
  • 到底什么是MCU、MPU、CPU,和芯片是什么关系?区别又是什么?

    目录 0.前言 1. 芯片 2. CPU 3. MPU 4. MCU  5. 总结         更新的是有点慢,从这周开始吧,应该会快一点。推荐一首歌《你到底有没有爱过我》——蓝波,额,怎么说呢,大家,音乐是没有对错的。         曾经出过一次笑话,就是我在拿到一个产品的时候,我用Keil烧录时不知

    2024年02月07日
    浏览(85)
  • ARM uboot 启动 Linux 内核

    此处,我使用的是九鼎提供的 uboot : 进入 uboot 的 sd_fusing 目录,执行命令烧写 uboot : ./sd_fusing.sh /dev/sdb 。 按任意键,进入 uboot 命令行: 将 Linux kernel 拷贝到 30008000。

    2024年02月11日
    浏览(50)
  • VR、AR、MR、XR到底都是什么?有什么区别

    英:Virtual Reality 中文翻译:虚拟现实 又称计算机模拟现实。是指由计算机生成3D内容,为用户提供视觉、听觉等感官来模拟现实,具有很强的“临场感”和“沉浸感”。我们可以使用耳机、控制器等虚拟现实设备,在环境中互动。虚拟现实技术囊括计算机、电子信息、仿真技

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包