操作系统导论

希望跟着李老师来了解一下,嵌入式系统和微机原理没有了解的地方,来见证计computer是如何从计算机变成电脑的。可能需要看一下<计算机组成原理>,但是因为太下饭了,就看一下这个吧,掌握概念就好。Learning OS concepts by coding them!

0x01 什么是操作系统

计算机是用来帮助人们解决一些实际问题的,它需要通过总线来连接输入输出设备、存储、CPU和内存等设备。其中最重要的CPU(Central Processing Unit,中央处理器)主要是解释计算机中的指令并处理数据的单元。

比如计算机在终端输入hello的过程

  1. cpu发出指令,取内存
  2. 内存取对应地址的内容
  3. 通过控制器、总线来传递到图形控制器

操作系统(operation system)将计算机硬件设备管理,在这个基础上实现应用软件。基本的软件包括CPU、内存、终端、磁盘、文件;在之外的高级操作系统中添加不同计算机之前的使用。

我们需要学习

  1. 从应用软件出发看操作系统,只能是仅仅停留在操作系统的接口
  2. 从应用软件出发进入到操作系统,理解其中命令的过程,理解量才能知道背后的功能并开发
  3. 从硬件出发设计并实现操作系统

希望了解操作系统是如何运转的,八个实验

img

添加图片注释,不超过 140 字(可选)

0x02 bootsect.s

2.1 计算机发展的历史

  1. 从白纸到图灵机,1936年,通过模拟人对计算过程得到计算模型
  2. 从图灵机到通用图灵机的过程

img

添加图片注释,不超过 140 字(可选)

  1. 从通用图灵机到计算机(1946年,冯·洛依曼)

img

添加图片注释,不超过 140 字(可选)

2.2 计算机开机的过程

  1. 计算机中开始电源的最初的IP是由硬件设计者决定,比如x86的开机CS=0xffff,ip=0x0000,以及寻址(Bios映射区),检查RAM、键盘、显示器和软硬磁盘,汇编中的每一条指令中有着操作

img

添加图片注释,不超过 140 字(可选)

  1. BIOS的引导扇区代码(bootsect.s)

img

添加图片注释,不超过 140 字(可选)

0x03 setup.s and head.s

img

添加图片注释,不超过 140 字(可选)

在上述bootsec.s运行完之后,可以是导入setup.s,它主要做了两件事情

  1. 添加操作系统代码到内存中,并为了保证操作系统的完整性,移动到0地址,第一个代码是head.s
  2. 读取硬件信息并初始化,mem_init

运行setup.s的过程中会短暂的定义GDT和IDT表格,之后系统会进行模式的转换,将16位模式来变为32位模式,提高对内存使用的权限

16位模式的寻址解析电路:CS<<4+ip (称为实模式)

32位模式的寻址解析电路:根据CS查表+IP(称位保护模式)

img

添加图片注释,不超过 140 字(可选)

在运行完head.s之后便可以孩子选哪个main.c,这里是根据栈来进行处理的,也就是内存中函数的记录和返回

0x04 Interface

接口就是系统提供的一些可以调用的函数,因为接口是函数,函数是通过调用实现的,因此也称为系统调用

在具体到操作系统中,系统的接口需要一些统一的规范,最基本的是POSIX中的接口列表

img

添加图片注释,不超过 140 字(可选)


操作系统导论
https://blog.tjdata.site/posts/3d85131.html
作者
chenlongxu
发布于
2024年4月29日
许可协议