欢迎来到爱乐透彩票网新版_爱乐透彩票网普通版_爱乐透彩票网登录! 联系我们 网站地图

爱乐透彩票网新版_爱乐透彩票网普通版_爱乐透彩票网登录

0379-65557469

爱乐透彩票下载
全国服务热线
0379-65557469

电话: 0379-65557469
0379-63930906
0379-63900388 
0379-63253525   
传真: 0379-65557469
地址:洛阳市洛龙区开元大道219号2幢1-2522、2501、2502、2503、2504、2505室 

爱乐透彩票下载

Linux系列 --- 加载setup代码,bootsect规划内存

作者:admin 发布时间:2019-11-04 19:38:49 浏览次数:150
打印 收藏 关闭
字体【
视力保护色

BIOS已经将引导程序(bootsect)加载进内存了,那么现在的工作就是需要将第二批以及第三批的程序陆续加载到内存里面。为了将第二批以及第三批的程序加载到内存中的适当位置,bootsect首先做的工作就是规划内存

通常,我们一般写代码都是用高级语言写的,而且这些程序都是在操作系统上运Linux系列 --- 加载setup代码,bootsect规划内存行的。我们只管写高级语言的代码、数据。至于这些代码、数据在运行的时候放在内存的什么地方,是否会发生覆盖,我们都不用进行操心,因为操Linux系列 --- 加载setup代码,bootsect规划内存作系统和高级语言帮我们做了大量的看护工作,确保不会出错。

但是,我们现在操作系统本身使用的是汇编语言,没有高级语言编译器替操作系统提供保障,只能靠操作系统的设计者把内存的安排想清楚,确保无论操作系统如何运行,都不会出现代码与代码、数据与数据、代码与数据之间相互覆盖的情况。因此,我们必须清楚操作系统的设计者是如何对内存进行规划的。

在实模式状态下,寻址的最大范围是1MB。为了规划内存,bootsect首先设计了如下代码:

.globl begtext, begdata, begbss, endtext, enddata, endbss

.text

begtext:

.data

begdata:

.bss

begbss:

.text


SETUPLEN = 4 ! nr of setup-sectors

BOOTSEG = 0x07c0 ! original address of boot-sector

INITSEG = 0x9000 ! we move boot here - out of the way

SETUPSEG = 0x9020 ! setup starts here

SYSSEG = 0x1000 ! system loaded at 0x10000 (65536).

ENDSEG = SYSSEG + SYSSIZE ! where to stop loading

! ROOT_DEV: 0x000 - same type of floppy as boot.
! 0x3Linux系列 --- 加载setup代码,bootsect规划内存01 - firs兰欧酒店t partition on first drive etc

ROOT_DEV = 0x306

这些源代码的作用是为后续操作所涉及的内存位置进行设置。

要加载的setup程序的扇区数(SETUPLEN)

被加载到的位置(SETUPSEG)

启动扇区被BIOS加载的位置(BOOTSEG)

将要移动到的新位置(INITSEG)

内核被加载的位置(SYSSEG)

内核的末尾位置(ENDSEG)

根文件系统设备号(ROOT_DEV)

设置这些位置的作用是确保将要载入内存的代码与Linux系列 --- 加载setup代码,bootsect规划内存已经载入内存的代码及数据各在其位,互不覆盖,并且各自有够用的内存空间Linux系列 --- 加载setup代码,bootsect规划内存。

实模式下的内存使用规划

请记住下面这句非常重要的话:

操作系统的设计者是要全面地、整体地考虑内存的规划的。

版权所有:洛阳市建设工程咨询有限责任公司 联系人:李经理 电话: 地址:洛阳市洛龙区开元大道219号2幢1-2522、2501、2502、2503、2504、2505室
版权所有 爱乐透彩票网新版 青ICP备153493189号-1