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

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的入口地址

最新文章

  1. Visual Studio Code 智能提示文件
  2. 无限级ddsmoothmenu菜单实例
  3. Q的深层嵌套
  4. 安装redis
  5. Subtitute
  6. ACM/ICPC 之 DFS范例(ZOJ2412-ZOJ1008)
  7. Windows10 如何删掉内置的 skype ?
  8. Codeforces 749B:Parallelogram is Back(计算几何)
  9. ghost系统到硬盘完后,重启进入winxp安装的画面变成了蓝屏
  10. 用WebDriver实现基于jira过滤器视图的统计自动化
  11. 开发中,如何配合后端,保存你的静态html页
  12. 【Java】推断文件的后缀名
  13. Linux经常使用命令(十二) - less
  14. JavaEE(13) - JPA属性映射
  15. 2017-2018-1 Java演绎法 第八周 作业
  16. yum的一些命令使用方法
  17. 第一章:IPsecVPN
  18. mysql 的REPLAYCE语句
  19. 数据操作语句(DML)
  20. Jquery遍历筛选数组的几种方法和遍历解析json对象|Map()方法详解

热门文章

  1. 【API进阶之路6】一个技术盲点,差点让整个项目翻车
  2. RESTful API 规范(一)
  3. POI2014 FAR-FarmCraft
  4. C#几种单例模式
  5. rabbitmq部署及配置与验证
  6. WPF DataGrid ScrollBar Style
  7. mysql中常见约束
  8. SQLite数据库多平台应用及常见错误分析
  9. 集训 T4-分配时间
  10. 机器学习 | SVD矩阵分解算法,对矩阵做拆分,然后呢?