linux0.11启动时bootsect.s和setup.s的主要作用
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的主要作用相关推荐
- linux0.11 init函数,linux0.11启动与初始化
简单描述Linux0.11的启动与初始化过程. 启动过程中需要关注:IDT, GDT, LDT, TSS, 页表, 堆栈这些数据. 一:启动过程 启动的代码文件为bootsect.s.setup.s. ...
- 很好的linux启动说明( bootsect.S、setup.S、head.S)
bootsect.S,系统引导程序,一般不超过512字节. 在PC系统结构中,线性地址0xA0000以上,即640K以上用于图形接口卡和BIOS自身,640K以下为系统的基本内存.如果配置更多的内存, ...
- Linux0.11启动过程
从开机加电,到执行main函数之前的过程 好吧,这里应该是有执行3个汇编的文件,但是我不太了解.囧 从main函数,到启动OK(即可以响应用户操作了) 这个步骤做了3件事情: 创建进程0,使之具备在主 ...
- 【Linux0.11代码分析】02 之 bootsect.s 启动流程
[Linux0.11代码分析]02 之 bootsect.s 启动流程 一.boot\bootsect.s 1.1 将bootsect.s 从0x7c00 移动到 0x90000 (512byte) ...
- 编译linux0.11内核
编译linux0.11内核 一.实验环境 二.下载文件 三.配置Linux0.11所需环境 四.编译内核 五.运行linux0.11 六.说明 1.setup.sh脚本里进行了什么操作? 2.最后弹出 ...
- Linux0.11内核引导启动过程概述
Linux0.11仅支持x86架构.它的内核引导启动程序在文件夹boot内,共有三个汇编代码文件.按照启动流程依次是: (1)bootsect.s.boot是启动引导的意思,sect即sector,是 ...
- bootsect.s 预备——Linux-0.11 剖析笔记(一)
文章目录 boot 目录下文件介绍 16 位代码是什么意思 计算机启动过程 Linux 0.11 启动过程 boot 目录下文件介绍 boot 目录中一共有三个文件,都是用汇编语言写的,如下图(图来自 ...
- bootsect.s 解读——Linux-0.11 剖析笔记(二)
题目:bootsect.s 解读--Linux-0.11 剖析笔记(二) 文章目录 一些符号常量 老式Linux设备号的命名规则 bootsect 把自己搬运到 0x90000,并跳转 加载 setu ...
- Linux0.11内核源码解析-bootsect.s
学习资料: Linux内核完全注释 操作系统真像还原 极客时间-Linux内核源码趣读 Linux0.11内核源码 ->上电 ->80x86架构CPU会自动进入实模式 ->从地址0x ...
最新文章
- 你在「动森」里遇到的那些「丑动物」,后来怎么样了?
- POJ 1852 Ants O(n)
- SpringBoot-高级-检索-整合SpringDataElasticsearch
- Codeforces Round #358 (Div. 2) A. Alyona and Numbers 水题
- 用java写jsp页面跳转页面跳转_五种 JSP页面跳转方法详解
- 圣地亚哥分校 计算机,加州大学圣地亚哥分校计算机怎么样?
- BZOJ5093 图的价值(NTT+斯特林数)
- MSSQL → 04:表的创建与维护
- 网络安全菜鸟学习之杂项篇——WIFI安全(一)
- JAVAWEB学习总结
- 弹性力学经典解法与有限元法的不同特点
- 微分几何笔记(1)——参数曲线、内积、外积
- 一篇文章彻底搞懂JVM常见垃圾收集器算法、常见收集器、CMS三色标记等(深度剖析)
- vtk 中vtkMapper的各函数解析
- 新应用——信息化财务管理,一站式满足多个需求
- 简单的车票管理系统(c语言)
- linux pip安装(下载)
- Ubuntu设置终端打开时的默认窗口大小和位置坐标
- 对 Spring 的核心(AOP 和 IOC)的理解(大白话)
- matlab编译得到的可执行文件修改软件图标的方法
热门文章
- python生成word文档的表格_2018-10-04 [日常]用Python读取word文档中的表格并比较
- 傻瓜攻略(十七)——MATLAB实现SVM二分类之fitcsvm
- 【学习总结】网络编程技术
- Spring 核心技术 - 数据缓冲区和编解码器
- 特立独行的幸福 (25分)
- 魏副业而战:做一个特立独行的人,为别人提供价值
- 泰达机器人董事长_【百佳专访】深圳泰达董事长陈大立:“沉迷”研发喷涂自动化中国方案的“匠人”...
- Host Bridge
- 重装系统-入门到精通-window系统
- Uni-app原生插件开发