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提供的抽象层并直接控制硬件组件。

背景知识

  1. 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 资料中有提到

image-20200725183328211

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的入口地址
image-20200725183328211
posted @ 2020-07-31 12:53  Cindy's  阅读(404)  评论(0编辑  收藏  举报