本文已参与「新人创作礼」活动,一起开启掘金创作之路。
OS学习
一.计算机的基本认识
计算机
- 应用软件 Word Matlab...
- 操作系统 Windows Linux...
- 计算机硬件 CPU 内存 显存...
称只有计算机硬件的是裸机
操作系统是计算机硬件与应用之间的一层软件;方便我们使用硬件,如使用显存;高效的使用硬件,如开多个终端(窗口)
操作系统管理的硬件
CPU管理 内存管理 终端管理 磁盘管理 文件管理 网络管理 电源管理 多核管理(多CPU服务系统)
操作系统的学习
-
从应用软件出发“探到操作系统”
集中在使用计算机的接口上
使用显示器:printf;使用CPU;fork,使用文件;open、read...
-
从应用软件出发“进入操作系统”
一段文字是如何写到磁盘上的...
-
从硬件出发“设计并实现操作系统”
给你一个板子,配一个操作系统
要会改CPU管理、改屏幕输出、改系统输出、改内存管理
斯坦福学习操作系统、CMU的方法
实验一:扩展线程 | 实现线程调度 |
---|---|
实验二:实现系统调用 | 将整个接口剥掉,添加 |
实验三:实现虚存管理 | 扩展实现内存管理 |
实验四:扩展文件系统 | 扩展实现一个文件系统 |
我们应该穿过APP与OS之间的接口,了解OS与硬件之间的关系才能够深入了解计算机如何将printf实现出来
二.进入计算机的内部
计算机是如何工作的
1.图灵机
相当于一个只会做一道菜的厨师
说到底计算机是一个计算模型,由图灵提出的一种模型。类似于控制器读取纸带上的内容,像数据结构中的“栈”,二控制器中有一个进行运算的逻辑,读取纸带中的内容就会进行相应的操作。
2.通用图灵机
相当于一个能看懂菜谱从而根据菜谱进行菜的开发
在控制器中形成了一套控制逻辑,将动作载入到控制器。如何设置控制器的逻辑,控制器就会如何工作。读进来什么图灵机就能够执行什么图灵机。相当于一个应用程序
3.冯诺依曼存储程序思想
将程序和数据存放到计算机内部的存储器中,通过IP(指令指针/指令寄存器)(PC)指针来执行当前处理的那条指令,然后把这条指令载入进来,即形成了控制指令,他是用来描述控制器如何工作的,计算机在程序的控制下一步一步进行处理。
计算机的核心结构:
计算机的工作原理 :自动进行取址执行,取址执行,取址执行......
计算机模型
要关注指针IP及其指向的内容
对于计算机而言,他的有些内容是固化的
例如x86结构 PC的开机指令内容:
(1)x86 PC刚开机时CPU处于实模型
(2)开机时,CS=0xFFFF;IP=0x0000
(3)寻址0xFFFF0(ROM BIOS映射区)
(4)检查RAM,键盘,显示器,软硬磁盘
(5)将磁盘0磁道0扇区读入0x7c00处(0磁道0扇区是操作系统的引导扇区,也是操作系统上的第一段代码)
(6)设置cs=0x07c0,ip=0x0000
BIOS:基本输入输出系统
和保护模式对应,实模式的寻址CS:IP(CS左移4位+IP),和保护模式不一样。CS和IP和在一起形成一个地址。
一个扇区是512字节
0x7c00处存放的代码
就是从磁盘引导扇区读入的那512个字节
引导扇区就是启动设备的第一个扇区(开机时按住del键即可进入启动设备设置界面,可以设置为光盘启动)
启动设备信息被设置在CMOS中(CMOS:互补金属氧化物半导体。用来存储实时种和硬件配置信息)
引导扇区代码:bootsect.s <s指的是汇编语言>
引导扇区要对代码进行完整、严格的控制
汇编语言对应的是C语言代表的高级语言代码,但是C程序需要编译,利用汇编语言可以直接将指令变成机器指令。
bootsect.s这一段汇编文件将来会变成机器指令,然后机器指令会放到引导扇区上
BOOTSEG = 0x07c0
INITSEG = 0x9000
SETUPSEG = 0x9020
汇编的标号其实就是一个地址