cpu启动时为实模式,此时硬烧录的将cs=0xFFFF,ip=0x0,并自动开始执行0xFFFF0(ROM-BIOS的地址)的代码,BIOS会自检,并在0x0地址处设置中断向量表,此后实模式的int中断全部依赖此表,并将0磁道0扇区的512字节(引导扇区,放bootsect.s)读入内存0x7c000处,并跳转到此地址.

bootsect.s只能占512字节,功能有限,所以需要setup.s, 首先bootsect.s将自身从0x7c000移动到0x90000(为setup.s将system移动到0x00000时腾地方),并将setup.s读入到内存0x90200处,将system模块读入内存0x10000处.转入0x90200(setup.s)执行.

setup.s通过int中断获取硬件参数并放置在内存合适位置,为system模块运行做准备,并将system从内存0x10000移动到0x00000处(此时system中的模块中的逻辑内存地址就是真实的物理地址,而且BIOS中设置的int中断向量表就被覆盖了,int中断用不了了),设置GDT表,将cr0寄存器PE设为1,开启保护模式(指令集改变为32or64位的cpu指令集,寻址方式也改变),PG设为1,启动分页,并跳转(jmpi 0,8)到0x00000,操作系统正式启动!

tip1:自80386开始,除了bootsect.s和setup.s执行在实模式(实模式不区分特权级和用户级,能运行就是最大权限),操作系统和用户程序全部在保护模式下.

tip2:实模式是十六位机,保护模式根据cpu不同有32和64位,所以保护模式最多寻址1MB(16位有20根地址总线),而32位(32根地址总线)可寻址4GB,64(64根地址总线)更是256TB

tip3:实模式和保护模式的区别一个是寻址能力,一个是寻址方式,以及是否区分特权级和用户级.

tip4:之所以现代cpu中仍旧保存实模式的一大原因是与老的cpu或软件保持兼容,实模式本身是一种落后的淘汰设计.

linux0.11启动时bootsect.s和setup.s的主要作用相关推荐

  1. linux0.11 init函数,linux0.11启动与初始化

    简单描述Linux0.11的启动与初始化过程. 启动过程中需要关注:IDT, GDT, LDT, TSS, 页表, 堆栈这些数据. 一:启动过程 启动的代码文件为bootsect.s.setup.s. ...

  2. 很好的linux启动说明( bootsect.S、setup.S、head.S)

    bootsect.S,系统引导程序,一般不超过512字节. 在PC系统结构中,线性地址0xA0000以上,即640K以上用于图形接口卡和BIOS自身,640K以下为系统的基本内存.如果配置更多的内存, ...

  3. Linux0.11启动过程

    从开机加电,到执行main函数之前的过程 好吧,这里应该是有执行3个汇编的文件,但是我不太了解.囧 从main函数,到启动OK(即可以响应用户操作了) 这个步骤做了3件事情: 创建进程0,使之具备在主 ...

  4. 【Linux0.11代码分析】02 之 bootsect.s 启动流程

    [Linux0.11代码分析]02 之 bootsect.s 启动流程 一.boot\bootsect.s 1.1 将bootsect.s 从0x7c00 移动到 0x90000 (512byte) ...

  5. 编译linux0.11内核

    编译linux0.11内核 一.实验环境 二.下载文件 三.配置Linux0.11所需环境 四.编译内核 五.运行linux0.11 六.说明 1.setup.sh脚本里进行了什么操作? 2.最后弹出 ...

  6. Linux0.11内核引导启动过程概述

    Linux0.11仅支持x86架构.它的内核引导启动程序在文件夹boot内,共有三个汇编代码文件.按照启动流程依次是: (1)bootsect.s.boot是启动引导的意思,sect即sector,是 ...

  7. bootsect.s 预备——Linux-0.11 剖析笔记(一)

    文章目录 boot 目录下文件介绍 16 位代码是什么意思 计算机启动过程 Linux 0.11 启动过程 boot 目录下文件介绍 boot 目录中一共有三个文件,都是用汇编语言写的,如下图(图来自 ...

  8. bootsect.s 解读——Linux-0.11 剖析笔记(二)

    题目:bootsect.s 解读--Linux-0.11 剖析笔记(二) 文章目录 一些符号常量 老式Linux设备号的命名规则 bootsect 把自己搬运到 0x90000,并跳转 加载 setu ...

  9. Linux0.11内核源码解析-bootsect.s

    学习资料: Linux内核完全注释 操作系统真像还原 极客时间-Linux内核源码趣读 Linux0.11内核源码 ->上电 ->80x86架构CPU会自动进入实模式 ->从地址0x ...

最新文章

  1. docker基础文档(链接,下载,安装)
  2. 架构师眼中的高并发架构
  3. acwing 3 完全背包
  4. 三分钟学会缓存工具DiskLruCache
  5. WEB页面性能指标与建议
  6. Vue中Object和Array数据变化侦测原理
  7. 透过IL看C# (1)——switch语句(上)
  8. Idea 集成Lombok插件
  9. axios java 参数,vue.js axios发请求时,参数包括dto和一个flag, 后台如何接?
  10. mysql主从搭建_手把手教你搭建MySQL主从架构
  11. DirectX 安装报错: 不能信任一个安装所需的压缩文件,请检查加密服务是否启用并且cabinet文件证书是否有效
  12. WebStorm开发插件
  13. 百度地图三维效果实现
  14. win7 按修改时间范围文件搜索
  15. 赛效:如何在线更改图片格式 图片格式在线转换方法介绍
  16. Ubuntu18.04配置搭建基于Gazebo的虚拟仿真平台(Px4):无人机(UAV)、无人车等模拟实验平台
  17. 使用uniapp绘制一个折线图(uCharts)
  18. 加餐0 | 前后端快速入门学习路线
  19. 机器学习-朴素贝叶斯。
  20. 硅谷AI人才7位薪酬时代开启,甲骨文600万美元年薪挖AI专家

热门文章

  1. Java用户输入圆半径求圆面积
  2. 软件测试 thirdday(边界测试)
  3. Linux SIGPIPE信号产生原因与解决方法
  4. 字节跳动如何系统性治理 iOS 稳定性问题
  5. android 微博分享 linkcard,#游戏王OCG# 1106 仪式枪管登场 ... - @NW任天堂世界游戏王区 的微博精选 - 微博国际站...
  6. 联想小新air13pro重装系统_联想小新air13pro笔记本U盘安装win10系统教程
  7. 温室气体真会导致第六次生物大灭绝?
  8. 如何安装NationalInstruments.NI4882
  9. 深度学习利器:分布式TensorFlow及实例分析
  10. ChatGPT生成量化交易策略,真好玩