大家一起写操作系统-准备知识(1)--计算机的启动过程
来源:互联网 发布:总裁小说改编的网络剧 编辑:程序博客网 时间:2024/05/19 06:17
对于一个没有安装任何软件的裸机,我们想要利用它,就要给它写一个操作系统来充分发挥它的性能。所以想要写操作系统,首先就要知道裸机上电后会做些什么,会执行哪些指令,从而知道我们的操作系统应该放在哪儿,应该如何写,所以先介绍计算机的启动过程。
当计算机上电后,物理内存被设置成从地址0开始的连续区域。除了地址从0xA0000-0xFFFFF(640KB~~~1M共384KB,DOS中的经典640KB内存限制).和0xFFFE0000~~~0xFFFFFFFF(4GB处最后64KB)范围以外的所有内存都可用做系统内存。
CPU会自动把CS寄存器设置为0xF000,其段基地址为0xFFFF0000,段界限为64KB.而ip寄存器被设为0xFFF0,因此此时CPU代码指针指向0xFFFFFFF0处,即4GB地址空间的最后64KB处。这段地址正好映射为ROM BIOS存放的位置.BIOS会在这里存放一条JMP指令,用来跳转到BIOS 64KB范围内的某一条指令开始执行。BIOS完成一系列硬件检测和初始化操作后,就会把BIOS代码和数据放到1M内存的末端,然后跳转到这个地方让CPU真正运行在实模式下(即只能访问最多1M地址空间且末开启段级和页级保护).最后BIOS就会从硬盘或其他块设备把操作系统引导程序512B加载到内存0x7c00处,并跳转到这个地方开始执行引导程序。这时的CS,DS等段寄存器被初始化0x0000,ip为0x7c00.所以写操作系统的第一步就是写一个小于512B的引导程序,并放到软盘或硬盘的引导扇区中。下一节讲会写一个模仿引导功能的引导程序,并说明其中要注意的事项。
- 大家一起写操作系统-准备知识(1)--计算机的启动过程
- 大家一起写操作系统(1)-引导程序
- 【操作系统】计算机的启动过程
- 大家一起写操作系统(2)-简单的内核
- 大家一起写操作系统(4)-简单的任务切换
- 大家一起写操作系统(3)-时钟中断
- 计算机及操作系统启动的过程详解
- 操作系统知识(1)--Linux启动过程
- 动手写操作系统--启动过程
- 从操作系统的角度简述计算机的启动过程
- 一个操作系统的实现笔记2:计算机的启动过程
- 专注于操作系统3之计算机的启动过程
- 操作系统的启动过程
- 操作系统的启动过程
- 计算机视觉领域要准备的知识
- 计算机启动的过程
- 计算机的启动过程
- 计算机的启动过程
- 简单的线程工厂
- 杭电OJ题 1408 盐水的故事 解题报告
- 创建适配器时报:ERROR/AndroidRuntime(1703): Caused by: android.content.res.Resources$NotFoundExcepti
- LCD Driver for Linux2.6.xx+ARM9
- Chromium
- 大家一起写操作系统-准备知识(1)--计算机的启动过程
- 精明的程序员——小程大爱
- 杭电OJ题 1412 {A} + {B} 解题报告
- 多态性
- POJ 2763
- GNU C 的复合语句
- windows下技术
- VS2010下配置Opencv2.4.3
- net.sf.jasperreports.engine.util.JRFontNotFoundException: Font ‘黑体’ is not available to the JVM