linux连接器脚本前奏-基于x86(一)

news/2024/11/16 23:31:28/

从今天开始进入正文,和讲解liteos一样,我们先从连接器脚本开讲。我们知道连接器脚本描述了编译输出程序的布局,那么linux内核编译输出的布局是怎么样的呢?听我慢慢道来,关于连接器脚本的大概使用用途,可以参见
liteos链接器脚本一
liteos链接器脚本二
这里先说明一下对于linux的所有讲解都是基于x86的,像arm他会有自己的连接器脚本,但是大致类似,包括后面分享的内存管理,任务调度等等和硬件相关的是少数,大多还是通用的。

在开始连接器脚本之前,由于后面的连接器脚本部分以及内核解压启动部分的代码分析,会有一些比较重要的知识点,我这里需要提前宣贯普及一下。叫做知识可能不太确切,应该叫做猜测理解。可能做编译器的会更加的明确,不过按照理解不会有逻辑冲突,应该是合理猜测。就是c语言的指针对应的地址是什么地址。

我们知道x86是支持分段和分页的,分段是一定使能的,分页是可以关闭的功能。我们看下图的cpu怎么找到存储

在这里插入图片描述
其中绿色部分的分页单元在启动的初期是关闭的,系统可以通过程序使能或者关闭分页单元。分页单元是现代处理器很重要的一个功能模块,它使得物理地址的寻址更加灵活,也增加了系统的安全性

逻辑地址:逻辑地址是通过段寄存器和偏移地址表示的


http://www.ppmy.cn/news/7695.html

相关文章

朗润国际期货:2022年财料人物、机构、商品

2022年财料年度人物: 马斯克,财料出场次数:15次 他,全球收入*高公司高管,还是前世界首富(12月刚被挤下)。 他,身兼数职,业务包括但不限于造电动汽车、搞社交媒体、做火…

BOSS直聘自动投简历的实现过程

这两年疫情,公司业务越来越差,必须得准备后路了,每天睡前都会在直聘上打一遍招呼,一直到打哈欠有睡意为止...,这样持续了一周,发现很难坚持,身为一名资深蜘蛛侠,怎么能这样下去呢?于…

第004课 - 项目微服务架构图

文章目录 项目架构图项目架构图 外网部署就是面向公众访问的,部署前端项目。 可以有手机app,也可以有web网站。 内网部署后端系统。 客户端发送请求,请求是先来到我们的nginx集群。 nginx将请求转交给我们的后台服务。 nginx是先将请求转交给api网关。 api网关我们使用…

Android ContentProvider一个标准的内容提供器的创建封装代码和使用例子

如果要想实现跨程序共享数据的功能,官方推荐的方式就是使用内 容提供器,可以新建一个类去继承ContentProvider 类的方式来创建一个自己的内容提供 器。ContentProvider 类有6 个抽象方法,我们在使用子类继承它的时候,需要将这6 个…

深度学习——样式迁移(笔记)

样式迁移:计算机视觉应用之一 1.将样式图片中的样式(比如油画风格)迁移到内容图片上,得到合成的图片 2.基于CNN的样式迁移 ①初始化合成图像,将其初始化内容图像。合成图像是风格迁移过程中唯一需要更新的变量X&#…

React input输入相关:受控方式无法更新对象类型数据(函数式组件 useState)

假设,要做一个登录系统,需要输入账号和密码,账号和密码由一个对象userInfo进行管理,我们可以初始化一个对象 let [userInfo, setUserInfo] useState({account: "",password: "" })输入框可以采用受控方式&a…

这篇文章详细介绍动态内存管理 ,让你醍醐灌顶【c语言】

文章目录动态内存函数mallocfreecallocrealloc常见的动态内存错误对NULL指针的解引用操作对动态开辟空间的越界访问对非动态开辟内存使用free释放使用free释放一块动态开辟内存的一部分对同一块动态内存多次释放动态开辟内存忘记释放(内存泄漏)练习柔性数…

死锁的成因以及解决方案

🎈专栏链接:多线程相关知识详解 目录 一.什么是死锁以及死锁的成因 Ⅰ.一个线程一把锁 Ⅱ.两个线程两把锁 Ⅲ.多个线程多把锁 二.死锁的解决方案 一.什么是死锁以及死锁的成因 死锁是一个线程加上锁了之后,解不开了 在多线程编程中,我们为了防止多…