L01_什么是操作系统

是计算机硬件和应用之间的一层软件

  • 方便我们使用硬件,如使用显存…
  • 高效的使用硬件,如开多个终端(窗口)
    • 管理哪些硬件
      • CPU管理 内存管理 终端管理 磁盘管理 文件管理 ——五基本功能(本课程重点)
      • 网络管理 电源管理 多核管理

问题:操作系统是如何加载的?

L02_掀开钢琴的盖子

计算机是如何工作的

:::info 计算机是计算模型的实践 ::: 最经典的计算机结构:图灵机

image.png
冯·诺伊曼存储程序思想: :::info 程序和数据放到计算机内部存储器中,计算机在程序的控制下一步步处理

  • 程序放在内存中
  • 用指针指向他
  • 取出指令并执行
  • 指针移向下一个指令 :::

    打开电源,PC执行的第一条指令?

    image.png :::info

  • CS=0xFFFF;IP=0000;

  • 0xFFFF0开始的区域为BIOS区,取出该部分的指令进行的是检查硬件完整性
  • 将从磁盘0磁道0扇区取出512字节的指令放在0x7c00处(引导扇区)
  • CS=0x7C00,IP=0000; ::: 引导扇区是启动设备的第一个扇区

    引导扇区代码:bootsect.s

    image.png

:::info 在上电时,操作系统在硬盘上,因此bootsect的第一个工作便是将操作系统从硬盘上载入到内存里; ::: :::tips BOOTSEG = 0x07c0
INITSEG = 0x9000
SETUPSEG = 0x9020
image.png :::

initseg

image.png
将steup读入内存

summary

计算机的基本结构:图灵机&冯·诺依曼结构

  • 存储程序
  • 取指执行 :::info bootsect.s的作用

  • 检测读入setup

  • 读入system :::

    L03_操作系统启动

    setup.s

    image.png :::info 完成OS启动前的设置 :::

  • int 0x15:获得扩展内存的大小(内存的管理是操作系统中的重要环节)

  • 操作系统移动到0地址开始的空间(之前为何将setup移动的原因,空出足够的空间)
  • 进入保护模式

    保护模式

    image.png :::tips jmpi 0,8?

  • 应该实际上跳到0地址处

  • 但是这里操作放在0X00080
  • 传统的寻址空间只有1M(16位机)
  • 实际上是从16位模式切换到32位模式;因此开启保护模式然后进入32位模式
  • cr0=0:16位模式;cr0=1保护模式 ::: image.png

    保护模式下地址翻译

    保护模式下的地址翻译:用硬件实现地址翻译(快速)
    image.png

  • CS:selector选择子,选择表格中的内容

  • 表:gdt global description table;
  • gdt表通过setup初始化;

    System模块执行

    Makefile:控制编译的顺序

    system模块中第一部分的代码是head.s
    通过控制makefile,可以控制编译顺序,让head.s先进行编译

head.s

head.s执行初始化GDT,IDT表
转到main函数(C函数)
image.png
image.png

三种汇编

  • 16位:as86汇编
  • 32位:GNUas汇编
  • 内嵌汇编:gcc编译过程中产生的;