mit-6.828 Lab01:Booting a PC exercise1.1
Lab01:Booting a PC
JOS
- the initial template for our 6.828 kernel itself, named JOS
BIOS
- basic input output system
- 在IBM PC兼容系统上,是一种业界标准的固件接口。 [1] BIOS这个字眼是在1975年第一次由CP/M操作系统中出现。
- BIOS是PC启动时加载的第一个软件。
- 其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。此外,BIOS还向作业系统提供一些系统参数。系统硬件的变化是由BIOS隐藏,程序使用BIOS功能而不是直接控制硬件。现代作业系统会忽略BIOS提供的抽象层并直接控制硬件组件。
背景知识
- x86、8086区别
- 8086,16位是INTEL公司推出的最早实际应用到微型个人计算机上CPU芯片型号;x86架构的鼻祖
- X86架构(The X86 architecture)是微处理器执行的计算机语言指令集;不只intel有x86指令集的CPU;i386, 586,奔腾(pentium)都是x86架构的CPU
8086的基本知识
8086地址总线(AB)有20位,也即寻址空间 2^20 B = 1MB, 从0x00000 到 0xFFFFF
8086数据总线(DB)只有16位。
如何用16位寻找20位空间?
分段寻址
(segment << 4) + offset;即
physical address = 16*segment + offset
通用寄存器
8086在为程序分配内存空间的时候,将其分成 代码段CS,数据段DS,堆栈段SS和附加段ES,这些信息都存储在一些寄存器上(16位).
通用寄存器:
AX,BX,CX,DX 称作为数据寄存器:
AX (Accumulator):累加寄存器,也称之为累加器;
BX (Base):基地址寄存器;
CX (Count):计数器寄存器;
DX (Data):数据寄存器;
SP 和 BP 又称作为指针寄存器:
SP (Stack Pointer):堆栈指针寄存器;
BP (Base Pointer):基指针寄存器;
SI 和 DI 又称作为变址寄存器:
SI (Source Index):源变址寄存器;
DI (Destination Index):目的变址寄存器;控制寄存器:
IP (Instruction Pointer):指令指针寄存器;
FLAG:标志寄存器;段寄存器:
CS (Code Segment):代码段寄存器;
DS (Data Segment):数据段寄存器;
SS (Stack Segment):堆栈段寄存器;
ES (Extra Segment):附加段寄存器;
GDB 常用调试指令
http://sourceware.org/gdb/current/onlinedocs/gdb/
https://blog.csdn.net/u014023993/article/details/88861115
Labguide 资料中有提到
Real mode && Protected mode
实模式(real mode)
- 早期8086CPU ,只有20位地址线,8个16位通用寄存器,4个16位段寄存器
- 如何通过16位寄存器表达20位的主存地址?
- 即物理存储空间20位,2^20=1MB,但是CPU的寄存器最多16位,没办法直接表示主存地址
- 所以:(段基址:段偏移量) /(segment:offset)
- 物理地址 = 段基址<<4 + 段内偏移
保护模式(protected mode)
80286有24根地址线,80386有32根地址线
只有在保护模式下,80386的全部32根地址线有效
可采用分段存储管理机制和分页存储管理机制;才可以实现虚拟存储(提供了硬件支持)
通过提供4个特权级和完善的特权检查机制,既能实现资源共享又能保证代码数据的安全及任务的隔离。
- 在保护模式下,特权级总共有4个,编号从0(最高特权)[ring 0]到3(最低特权)[ring 3]。
16-bit protected mode
- 对比
real mode
中,selector
是 a paragraph number of physical memory;segments在固定的物理存储中,selector给出了paragraph number protected mode
中,selector
是 index into a descriptor table;segments不一定要在内存中
- 对比
32-bit protected mode
- 与16-bits相比,① offsets 是32-bits的;②segments可以被分成更小的4K的单元——页式机制
- Windows 9X, Windows NT/2000/XP,OS/2 and Linux all run in paged 32-bit protected mode.
参考资料:
https://www.cnblogs.com/dirge/p/10080855.html
< pscam-book> // PC Assembly Language 1.2.6-1.2.8
GDT/LDT
全局描述符表GDT(Global Descriptor Table)
- 整个系统中,全局描述符表GDT只有一张(一个处理器对应一个GDT)
- 系统设置了GDTR寄存器存放GDT的入口地址
最新文章
- Visual Studio Code 智能提示文件
- 无限级ddsmoothmenu菜单实例
- Q的深层嵌套
- 安装redis
- Subtitute
- ACM/ICPC 之 DFS范例(ZOJ2412-ZOJ1008)
- Windows10 如何删掉内置的 skype ?
- Codeforces 749B:Parallelogram is Back(计算几何)
- ghost系统到硬盘完后,重启进入winxp安装的画面变成了蓝屏
- 用WebDriver实现基于jira过滤器视图的统计自动化
- 开发中,如何配合后端,保存你的静态html页
- 【Java】推断文件的后缀名
- Linux经常使用命令(十二) - less
- JavaEE(13) - JPA属性映射
- 2017-2018-1 Java演绎法 第八周 作业
- yum的一些命令使用方法
- 第一章:IPsecVPN
- mysql 的REPLAYCE语句
- 数据操作语句(DML)
- Jquery遍历筛选数组的几种方法和遍历解析json对象|Map()方法详解