电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

操作系统高级教程

操作系统高级教程_第1页
1/8
操作系统高级教程_第2页
2/8
操作系统高级教程_第3页
3/8
1、为什么开始启动计算机得时候,执行得就是 BIOS 代码而不就是操作系统自身得代码? 计算机启动得时候,内存未初始化,CPU 不能直接从外设运行操作系统,所以必须将操作系统加载至内存中,而这个工作最开始得部分,BIOS 需要完成一些检测工作,与设置实模式下得中断向量表与服务程序,并将操作系统得引导扇区加载值 0x7c00 处,然后将跳转至0x7c00。这些就就是由 bios 程序来实现得。所以计算机得启动最开始执行得就是 BIOS代码。2、为什么 BIOS 只加载了一个扇区,后续扇区却就是由 bootsect 代码加载?为什么BIOS 没有直接把所有需要加载得扇区都加载?对于 bios 来说,“约定”在接到启动操作系统得命令后,“定位识别”只从启动扇区把代码加载到 0x7c00 这个位置。后续扇区则由 bootsect 代码加载,这些代码由编写系统得用户负责,与 bios 无关。这样构建得好处就就是站在整个体系得高度,统一设计与统一安排,简单而有效。Bios 与操作系统得开发都可以遵循这一约定,灵活地进行各自得设计。操作系统得开发也可以根据自己得意愿,内存得规划等等都很灵活。3、为什么 BIOS 把 bootsect 加载到 0x07c00,而不就是 0x00000?加载后又马上挪到 0x90000 处,就是何道理?为什么不一次加载到位?(1)因为 bios 将从 0x00000 开始得 1KB 字节构建中断向量表,接着得 256K 字节内存空间构建了 bios 数据区,所以不能把 bootsect 加载到 0x00000,0x07c00 就是 bios 设置得内存地址,不就是 bootsect 能够决定得。(2)首先,在启动扇区中会有一些数据,将会被内核利用到。其次,依据系统对内存得规划,内核终会将占用 0x0000 其中得空间,因此 0x7c00 可能被覆盖。将该扇区挪到 0x90000,在 setup、s 中,猎取一些硬件数据保存在 0x90000-0x901ff 处,可以对一些后面内核将要利用得数据集中保存与管理。4、bootsect、setup、head 程序之间就是怎么衔接得?给出代码证据。(1)bootsect 跳转到 setup 程序:jumpi 0 ,SETUPSEG 这句代码跳转到 0x90200 处,即 setup 程序加载得位置,CS:IP 指向 setup 程序得第一条指令,意味着 setup 开始执行(2)setup 跳转到 head 程序,CPU 工作模式首先转变为保护模式然后执行 jumpi 0,80 指得就是段内偏移,8 就是保护模式下得段选择符:01000,其中两位表示内核特权级,第三位 0 代表 GDT,1 表示 GDT 表中中得内核代码段,段基址为 0x00000000,而 head 程序地址就在...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

操作系统高级教程

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部