/wheat

os for fun

Primary LanguageC

OS 学习笔记

x86 是个简称,80386 等

80386 四种运行模式 1 实模式, 只能够访问不超过1MB的内存 2 保护模式,支持内存分页

寄存器:

通用寄存器

  1. EAX:累加器
    1. AL
    2. AH
  2. EBX:基址寄存器
    1. BL
    2. BH
  3. ECX:计数器
  4. EDX:数据寄存器
  5. ESI:源地址指针寄存器
  6. EDI:目的地址指针寄存器
  7. EBP:基址指针寄存器
  8. ESP:堆栈指针寄存器

段寄存器

  1. CS:代码段(Code Segment)
  2. DS:数据段(Data Segment)
  3. ES:附加数据段(Extra Segment)
  4. SS:堆栈段(Stack Segment)
  5. FS:附加段
  6. GS:附加段

指令寄存器

  • EIP:低16位就是8086的IP,存储的是下个指令的内存地址,在分段地址转换中,表示指令段内的便宜地址。

标志寄存器

  • IF(Interrupt Flag):中断允许标志位,由CLI,STI两条指令来控制;设置IF使CPU可识别外部(可屏蔽)中断请求,复位IF则禁止中断。 IF对不可屏蔽的外部中断和故障中断识别没有任何作用

内存架构:

寻址算法

段地址 * 0x10H + 偏移地址

物理地址

处理器提交到总线上用于访问计算机系统中的内存和外设的最终地址 一个计算机系统中只有一个物理地址空间

线性地址

80386处理器通过段(Segment)机制控制下的形成的地址空间

逻辑地址

编写的应用程序所用到的逻辑地址(也有人称为虚拟地址)

三者关系

  1. 分段机制启动、分页机制未启动:

逻辑地址—>段机制处理—>线性地址=物理地址

  1. 分段机制和分页机制都启动:

逻辑地址—>段机制处理—>线性地址—>页机制处理—>物理地址

asm 语法

AT&T

mov %x, %y 把 x 移动到 y

Inten

  1. mov x,y 把 y 里面的值 移动的x
  2. jmp x == mov ip,x 把x里面的值移动到 ip
  3. cli
  4. cld
  5. xorw
  6. inb
  7. testb
  8. jnz
  9. outb

Kernel

可执行文件

  1. 一个执行程序的内容是至少由 bss段、data段、text段三大部分组成

中断 异常 系统调用

  • 中断:外设, 异步
  • 异常:应用程序意想不到的行为,同步
  • 系统调用:应用程序要求操作系统提供服务,异步或者同步

系统调用

  • 引导机制
  • 简历内核堆栈
  • 验证参数
  • 内核态映射到用户态的地址空军映射
  • 内核态独立地址空间TLB

存储分级

   +---------------------------+
   |                           |
   |     处理器                |                                 +----------------------------+
   |                           |                                 |                            |
   |                           |             访问速度            |                            |
   |      +------------+       |                |                |                            |
   |      |  CPU       |       |                | 3.6GHz         |     硬件                   |
   |      |  L1缓存    |       |                |                |    MMU                     |
   |      +------------+       |                |                |                            |
   |+-------------------------+|                |                |                            |
   ||     L2缓存              ||                |                |                            |
   ||                         ||                |                +----------------------------+
   |+-------------------------+|                |
   +---------------------------+                |                             |
                                                |                             |
                  |                             |                             |
                  |    高速缓存未命中           |                             |
------------------+-----------------------------+-----------------------------+---------------------------o
                  |                             |                             |
  +---------------o------------------+          |                             |
  |                                  |          |                             |
  |               内存               |          | 1.3Ghz                      |
  |                                  |          |                +------------+---------------+
  |                                  |          |                |                            |
  +---------------+------------------+          |                |                            |
                  |                             |                |      OS                    |
                  |                             |                |                            |
                  |                             |                |                            |
  +----------------------------------+          |                |                            |
  |                                  |          |  5ms           |                            |
  |                                  |                           +----------------------------+
  |              外存(Swap)        |
  |                                  |
  +----------------------------------+