1633_xv6 book PC硬件与BootLoader

news2024/9/23 5:31:20

         全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com)

         按照课程的建议,先去读了一下xv6 book的附录,感觉还是有一些收获的。这中间去扫盲增补各种概念的过程就已经收获不少。

1. 这里介绍了一下计算机的一个基本的逻辑模型,其实也可以作为我们思考计算机底层问题的一个基本思维模型。

2. 寄存器的本质其实也是存储,只是读取的速度会快很多。

3. x86的指令集是Intel发明的,但是现在已经成了一定的标准。

4. 在现代计算机中,32bit的机器寄存器会有32bit、16bit以及8bit几种访问模式。不过,如果不以32bit的模式进行访问可能访问的范围有限制,比如32bit中的高16bit。

1. 这里看到了浮点寄存器的介绍,有点吃惊。浮点寄存器的设计居然是80bit的,为什么会有这样的设计有点不理解。按照现在我接触到的MCU,即便是浮点一般来说也是32bit,或者64bit,这里为什么会出来一个80bit呢?

2. 经过之前对线性地址等概念的了解,顺带对全局描述表以及局部描述表等有了一定的了解,这里的内容看着顺利了很多。

3. 这里顺便了解了一下三级缓存的一个简单介绍,也算是科普性的了解。而通过单位的计算转换可以看得出来,即使是三级缓存其实也是比内存快很多的。

1. 有了之前对线性地址的知识补充,上面的这个地址转换过程图理解起来非常容易了。

2. BIOS的主要任务是,先进行8088处理器的模拟,之后切换到现代计算机的模式。然后加载内核并把控制权转交给内核。

3. 所谓的实模式其实就是对8088处理器的模拟。

4. 对于这本书里面的信息来说,逻辑地址在很多时候跟线性地址其实是等价的。

5. 这里介绍了xv6的BootLoader其实是进行了寄存器的初始化的,这部分内容之前看代码的时候其实是注意到过的。

1. 处理器发展进化的过程中,分页模式这样的功能是从286开始出现的,而这时候的段寄存器的使用也变得复杂了。

2. 关于描述表的加载生效,这部分的描述感觉跟前面刚刚看到的线性地址资料中的段寄存器缓存寄存器的行为一致。

1. 失败之后的端口操作是没有意义的,开始觉得这样设计有点没头脑。后面看了一下,其实也是有一定的考虑的。由于这样的端口没有跟任何硬件冲突,反倒方便在模拟器中用于关联仿真输出提示。

2. 在系统启动的过程中,BootLoader在从磁盘扇区开始的位置寻找elf文件。这样的一些行为,在之前的代码分析中也已经了解到了。

3. 这里再次提到了objdump的工具使用,这个用法之前看其他资料的时候已经整理过了。这里算是复习一下吧!

1. 现实应用中的引导程序会非常复杂,可能会涉及到很多外部的设备或者网络。或许,这也是uboot这样的产品出现的原因。

2. 关于第一个练习题,我个人的理解可能比较直接。其实,软件的行为只是多读了一部分磁盘信息而已。多读取的信息并没有用到,应该也不会对系统产生什么影响。

3. 第二个问题有些没有弄明白,很大的一个原因可能是现在对elf以及存储映射等还没有一个深入的理解认识吧!

4. 第三个问题,我觉得首先,内核的处理涉及到很多权限的设置。而这个过程中,有着比较严格的地址映射关系。而malloc的使用,其实是heap的一个动态分配,满足不了这样的诉求。即便是可以多分配一些,那么在处理的复杂度上也不如指定的存储空间直接干脆。

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

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

相关文章

C#:Krypton控件使用方法详解(第九讲) ——kryptonRadioButton

今天介绍的Krypton控件中的kryptonRadioButton,这是一个单选按钮控件。下面开始介绍这个控件的属性:首先介绍的是外观属性,如下图所示:Cheacked属性:表示设置kryptonRadioButton控件的初始选中状态是什么样的&#xff…

Buuctf [ACTF新生赛2020]Universe_final_answer 题解

1.程序逻辑 程序逻辑并不复杂: 首先输入字符串,然后对字符串进行一个判断是否满足条件的操作 如果满足则对字符串进行处理并输出,输出的就是flag 2.judge_860函数 显然根据这十个条件可以通过矩阵解线性方程组,这里对变量的命名做了一些调整,让Vi对应flag[i]方便读 ​​​​…

2018年蓝桥杯省赛试题-5道(Python)

文章目录一、日志统计思考二、递增三元组思考三、螺旋折线思考四、乘积最大思考五、全球变暖思考尾声提示:以下是本篇文章正文内容,下面案例可供参考 一、日志统计 题目描述 小明维护着一个程序员论坛。 现在他收集了一份"点赞"日志&#xf…

mysql数据库表的多条件查询

mysql数据库表的多条件查询 一、select语句基本查询 SELECT 字段1,字段2....FROM 表名[WHERE 条件] [LIMIT N][ OFFSET M]select可以返回多条数据也可以返回一条数据如果要查询所有的字段可以用 *****代替where后面跟的是筛选条件(可选)N 是返回的数据…

1632_x86中几种地址概念的理解

全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 在看xv6的资料的时候发现有几个概念没弄清楚,结果让我理解资料的时候感觉比较模糊。这几个概念名词也倒是简单:逻辑地址、线性地址、物理地…

vmware创建虚拟机centor7

右键 选择下好的centos7 设置密码 登录

Spring是怎么解决循环依赖的

1.什么是循环依赖: 这里给大家举个简单的例子,相信看了上一篇文章大家都知道了解了spring的生命周期创建流程。那么在Spring在生命周期的哪一步会出现循环依赖呢? 第一阶段:实例化阶段 Instantiation 第二阶段:属性赋…

代码随想录 NO52 | 动态规划_leetcode 647. 回文子串 516.最长回文子序列

动态规划_leetcode 647. 回文子串 516.最长回文子序列今天是动态规划最后一天的题了,整个过程已经接近尾声了! 647. 回文子串 确定dp数组(dp table)以及下标的含义 本题如果我们定义,dp[i] 为 下标i结尾的字符串有 dp…

【改进灰狼优化算法】改进收敛因子和比例权重的灰狼优化算法【期刊论文完美复现】(Matlab代码实现)

👨‍🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…

【Hello Linux】进程概念

作者:小萌新 专栏:Linux 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:简单介绍下进程的概念 进程基本概念PCB 程序控制块task_struct是什么task_struct里面有什么查看进程通过系统目录查看进程通过ps指令查…

22.2.26打卡 Codeforces Round #853 (Div. 2)

A题极端考虑, 只要存在一个前缀数组的最大公约数小于等于2, 将其放在数组最前端, 那么保证能够满足题目要求数据范围这么小, 果断暴力Serval and Mochas Array题目描述Mocha likes arrays, and Serval gave her an array consisting of positive integers as a gift.Mocha thin…

ARM Context synchronization event和Instruction Synchronization Barrier

在Arm architecture里,经常提到Context synchronization event(CSE)和Explicit synchronization,Context synchronization events在之前是叫作context synchronization operations。Explicit synchronization是Context synchronization event的结果&…

C++9:优先级队列以及仿函数和反向迭代器

目录 优先级队列的基本增删查改实现 仿函数 反向迭代器 优先级队列的本质其实是一个堆,具体到底层的数据结构其实是有数学关系所形成的一个类似二叉树的结构 至于其优先级的这个特性,跟大堆小堆的性质是相同的,只不过它使用了仿函数来控制…

bool与引用类型

bool与引用类型bool类型介绍与使用bool(布尔类型)大小&#xff1a;1个字节返回值有两个&#xff1a;1(true)&#xff0c;0(false)#include<iostream>using namespace std;int main() {bool a false;bool b true;cout << "a " << a << end…

Lighthouse组合Puppeteer检测页面

如上一篇文章lighthouse的介绍和基本使用方法结尾提到的一样&#xff0c;我们在实际使用Lighthouse检测页面性能时&#xff0c;通常需要一定的业务前置条件&#xff0c;比如最常见的登录操作、如果没有登录态就没有办法访问其他页面。再比如有一些页面是需要进行一系列的操作&a…

从编年史角度看大数据兴起

开源大数据编年史大数据发展的各阶段大数据诞生初期大数据百花齐放的发展之路追求性能的大数据成熟期大数据发展的各阶段 开源大数据的编年史的话&#xff0c;实际上分为三个阶段。一般来说它分为初期、发展期、成熟期。 初期就是大数据刚开始萌芽的一个阶段&#xff0c;它从…

java 8 中的实用技巧

1 判断2个对象是否相等Objects.equals(a, b)(1) 比较时&#xff0c; 若a 和 b 都是null, 则返回 true, 如果a 和 b 其中一个是null, 另一个不是null, 则返回false。注意&#xff1a;不会抛出空指针异常。(2) a 和 b 如果都是空值字符串&#xff1a;"", 则 a.equals(b…

深入浅出解析ChatGPT引领的科技浪潮【AI行研商业价值分析】

Rocky Ding写在前面 【AI行研&商业价值分析】栏目专注于分享AI行业中最新热点/风口的思考与判断。也欢迎大家提出宝贵的意见或优化ideas&#xff0c;一起交流学习&#x1f4aa; 大家好&#xff0c;我是Rocky。 2022年底&#xff0c;ChatGPT横空出世&#xff0c;火爆全网&a…

CXL互联标准简介及相关资料

毕设是实现CXL的type3扩展内存设备&#xff0c;因为CXL技术非常新&#xff0c;2019年推出&#xff0c;本专栏也是记录CXL的相关知识与一些浅薄的理解 文章目录CXL出现的背景CXL是什么其他互联总线介绍CXL胜出的原因CXL内容简介包含三种协议 CXL.io/cache/memory支持三种设备类型…

SQL注入原理及漏洞利用(入门级)

文章目录一、什么是SQL注入漏洞&#xff1f;二、 SQL查询语句三、SQL注入分类数字型&#xff08;整型&#xff09;注入字符型注入搜索型注入四、SQL注入漏洞形成原因一、什么是SQL注入漏洞&#xff1f; 攻击者利用Web应用程序对用户输入验证上的疏忽&#xff0c;在输入的数据中…