zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    .net正在终止线程异常
    js判断客户浏览器类型,版本
    C#中ToString格式大全
    WPF TextBox 搜索框 自定义
    C#:获取设备电量相关信息
    C#中的委托与事件并存的理由
    WPF中的Pack URI
    SQLServer中的数据库备份和还原
    使用Aspose.Cells读取Excel
    SQLServer存储过程事务用法
  • 原文地址:https://www.cnblogs.com/cindycindy/p/mit-6828_Lab01_Booting_a_PC_exercise1.html
Copyright © 2011-2022 走看看