[操作系统] 操作系统真相还原读书笔记三:MBR加载loader到内存并跳转到loader执行
为什么要有loader程序?
通过操作系统真相还原读书笔记二:编写MBR主引导记录我们已经能够正常运行MBR主引导记录(有些书籍也叫做boot)程序了,但该程序什么也没做。我们的MBR 受限于 512 宇节大小的,在那么小的空间中,设法为内核准备好环境,更没法将内核成功加载到内存井运行。 所以我们要在另一个程序中完成初始化环境及加载内核的任务,这个程序我们称之 为 loader,即加载器。那么loader应该放在硬盘的哪个位置,又得将他加载到物理内存的什么地址呢?
loader应该放在哪里?又该加载到内存的哪个位置?
由于 MBR 是占据了硬盘的第 0 扇区(以逻辑 LBA 方式,扇区从 0 开始编号,若是以物理 CHS 方式, 扇区则从 1 开始编号),第 1 扇区是空闲的 ,可以用,但离得太近总感觉不如隔开 一 点心里踏实,所以把 loader 放到第 2 扇区。MBR 从第 2 肩区中把它读出来。
从实模式下1MB内存布局我们可以看出两个地址空间0x500~0x7BFF
和0x7E00~0x9FBFF
都是可用的内存区域,因此loader可以加载到这两个内存区域中的一个。但考虑如下两个因素:
- 首先, loader 中要定义一些数据结构(如 GDT 全局描述符表,不懂没关系,以后会说),这些数据结 构将来的内核还是要用的,所以 loader加载到内存后不能被覆盖。
- 其次,随着咱们不断添加功能,内核必然越来越大,其所在的内存地址也会向越来越高的地方发展, 难免会超过可用区域的上限,咱们尽量把 loader放在低处,多留出一些空间给内核。
我们把loader放在地址空间0x500~0x7BFF
内,具体放哪呢?没有明确规定,我们放在地址0x900
处。
如何读取硬盘?
一般主板上提供两个IDE插槽(也称为通道),IDE0和IDE1,IDE0也称为Primary通道,IDE1也称为Secondary通道,与IDE插槽链接的IDE线上可以挂两块硬盘,一个是主盘mater、另一个是从盘slave。
[操作系统] 操作系统真相还原读书笔记三:MBR加载loader到内存并跳转到loader执行相关推荐
- OpenCasCade学习笔记(三):加载显示STEP格式图片,并实现平移、缩放和旋转操作
OpenCasCade学习笔记(三):加载显示STEP格式图片,并实现平移.缩放和旋转操作 C3DWidget.h #pragma once#include <QtWidgets/QApplic ...
- 操作系统真相还原学习笔记
录像51 操作系统真相还原–学习笔记 这个笔记是把郑钢先生的代码在windows上编译运行了,希望大家在win上也调试地愉快. 链接:https://pan.baidu.com/s/1T7Sj_ZwA ...
- 操作系统 真象还原 读书笔记
文章目录 环境配置 1.虚拟机virtualBox和centos 2.最小化虚拟机安装后需要配置的基本软件 2.1虚拟机连网 2.2 虚拟机软件安装 3.共享文件设置 3.1安装virtualBox增 ...
- 《How Tomcat Works》读书笔记(三)--Connector(连接器)
<How Tomcat Works>读书笔记(三)--Connector(连接器) 这是<How Tomcat Works>第三四章的读书笔记.主要写了Tomcat4.0默认的 ...
- mysql数据库权威指南_MySQL_MySQL权威指南读书笔记(三),第二章:MYSQL数据库里面的数 - phpStudy...
MySQL权威指南读书笔记(三) 第二章:MYSQL数据库里面的数据 用想用好MYSQL,就必须透彻理解MYSQL是如何看待和处理数据的.本章主要讨论了两个问题:一是SQL所能处理的数据值的类型:二是 ...
- 《编程之美》读书笔记(三):烙饼问题与搜索树
<编程之美>读书笔记三:烙饼问题与搜索树 薛笛 EMail:jxuedi#gmail.com 前面已经写了一些关于烙饼问题的简单分析,但因为那天太累有些意犹未尽,今天再充实一些内容那这个问 ...
- TCPIP详解Protocol 读书笔记(三) IP协议讲解
TCP/IP详解:Protocol 读书笔记(三) Chapter3 IP:网际协议 文章目录 TCP/IP详解:Protocol 读书笔记(三) Chapter3 IP:网际协议 IP协议 IP数据 ...
- 中标麒麟操作系统,yum安装软件时提示:“已加载插件:langpacks,无须任何处理“的解决办法
中标麒麟操作系统,yum安装软件时提示:"已加载插件:langpacks,无须任何处理"的解决办法 通常都是由于yum仓库未包含你所要安装的那款软件造成. 解决办法: 输入如下命令 ...
- [书]x86汇编语言:从实模式到保护模式 -- 第13章 mbr加载内核、内核加载应用程序
# mbr加载内核 1.0x7c00,16位实模式 2.进入保护模式前的准备工作:创建段描述符(代码段.数据段.堆栈段.显示缓冲区),构建gdt 3.进入保护模式 ; 开启保护模式 ; CR0的第1位 ...
最新文章
- 数论计算机科学与技术专业就业前景好,【数学】数学专业就业前景:你看不见的“前途似锦”...
- 令人郁闷的 DOCTYPE
- 为什么要阅读——兼分享《首先,打破一切常规》[中译文]:世界顶级管理者的成功秘诀/(美)马库斯·白金汉,(美)柯特·科夫曼 著...
- 心得体悟帖---14、没有自己精品项目永远是个弟弟
- jdk安装和环境变量的配置
- (转)测试用例的设计方法(全)之二 错误推断、因果图
- 锐捷交换机配置snmp版本_【交换机】交换机如何配置SNMP(网络管理协议)
- 语言 双线性内插_合资插混间的实力较量,微蓝6 PHEV和卡罗拉双擎E+谁更值得选...
- [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍
- C# 选中 DataGridView 控件中的行时显示不同的颜色
- openmv串口数据 串口助手_STM32 串口接收不定长数据 STM32 USART空闲检测中断
- 网管囧事系列二:又要杀毒,又要防***,网管怎样三头六臂?
- Cortex字库文件使用
- 简单举例JAVA回调函数的实现
- 介绍几款WAP网页制作工具(提供下载)
- 乔治城大学计算机gre,2016年美国乔治城大学GRE成绩要求
- 为什么四大文明古国到现在只剩中国了
- 【欢迎来怼】 Beta发布事后诸葛亮会议
- 河南省软考报名时间成绩查询河南省教育考试院河南省人事考试网报名入口
- [Vuetify] 解决mainterialicon加载慢