✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛)
🌈 个人Motto:实践是检验真理的唯一标准!!!
💫 欢迎来到我的学习笔记!
前言
各位uu好,现在我们要开始一个新的篇章——操作系统(Operating System)。
操作系统这门课程据我了解,他主要是理论与实践相互结合。因此,我们要想学好操作系统,就不进要学习它的理论知识,还要学会动手实操。
【操作系统】这一系列博客也是我的学习笔记,源自于中国大学慕课哈工大李志军老师的操作系统课程。
操作系统就像一个潘多拉魔盒。这是一个全新的领域,之所以这样称呼它,是因为李志军老师曾用钢琴盒来描述它。更加容易激起我们学习探索操作系统的兴趣。那么接下来,让我们一起踏上征途,扬帆,启航!
一、初识操作系统——邂逅
我们主要的内容就从附图1.1开始引出。
根据上图1.1可知,我们可以将这个小型的抽象的操作系统看作是一个小型计算机。
那么,计算机又是做什么的呢?答案很简单——解决人类的实际问题。比如说:在显示屏幕上输出字符串Hello!
。大致过程就是:CPU向内存发出指令要求输出字符串。字符对应的ASCII码值被存入内存转换成二进制。
下图1.2是一种最简易的计算机,一般被戏称为“裸机”。
计算机管理的硬件主要有:CPU管理、内存管理、终端管理、磁盘管理、文件管理、网络管理、电源管理、多核管理。
二、操作系统应该学习什么?
- 应用软件探索到操作系统,中间的叫做接口;使用显示器:
printf
;使用CPU
:fork
;使用文件:open
、read
。 - 应用软件进入操作系统;设计并实现操作系统。(如何将文字配一个板子,配一个操作系统)
- 硬件到设计并实现操作系统。
- 要求:能自主实现操作系统中改动CPU管理、改变屏幕输出、改变系统接口、改变内存管理等操作,学会自主实现一个真实的操作系统。
三、如何学好操作系统?
操作系统就像一个神秘的潘多拉魔盒,在它的背后总会有很多我们不知道的什么的宝藏!操作系统这门课注重实践,一定要学会动手操作!就像我们不能只停留于潘多拉魔盒的表面一样,而是要深入去探索、去实践、勇于发现!
除此之外,我们还可以借助书籍《Linux内核设计与实现》、《30天自制操作系统》、《自己动手写操作系统》等书籍。
四、冯·诺依曼存储思想——引路人
当我们打开电源、开启电脑时,屏幕上就会出现神秘的黑色开机背景,计算机开始工作。那么在这黑色背景的后面到底有什么秘密或者故事?此时计算机执行的第一条指令又是什么?
从第一步——打开电源开始,计算机就开始工作了。那么计算机是怎么工作的呢?
4.1 从白纸到图灵机
计算机其实就是一种计算模型。1936年英国数学家A.C.图灵从小孩的计算过程中得到启发:小孩在计算“3 + 2”的结果的过程中,首先是在纸上看见“3 + 2”这个算式,然后眼睛将获取的信息传入大脑,大脑开始工作,将结果反馈给手,手再拿着笔在纸上写下结果“5”。A.C.图灵讲这一过程模拟抽象成一种计算模型,如下图:
4.2 从图灵机到通用图灵机
下面是图灵机的简化模型,但是它只有一种计算逻辑,就像是一位只会做一种菜的厨师。而我们需要的是一位可以看懂菜谱、做出几种菜来的厨师。因此图灵机做了改进,可以实现多逻辑:
上面就是冯·诺依曼存储程序思想
的提出过程(1946年)。**存储程序的主要思想:将程序和数据存放到计算机内部的存储器中,计算机在程序的控制下一步一步进行处理。**其中,控制器的工作过程如下图4.6。
所以,计算机工作的方式就是——取址执行(PC/IP指针指向的内容
)。打开电源时,计算机执行的第一条指令就是IP指向的内容
。
4.3 0x7c00处存放的代码
刚上电时,对于X86英特尔结构计算机来说,它有一部分内存是固化的,固话地址为CS = 0xFFFF0
,IP = 0x0000
,CPU处于实模式。CS和IP相结合(CS<<4+IP),会产生一个地址:0xFFFF0
(ROM BIOS映射区)。有了代码开始取址执行,接着检查RAM(内存)、键盘、显示器、软硬磁盘(这里出错,说明计算机硬件损坏)。然后将磁盘0磁道0扇区(操作系统的引导扇区)的内容(512字节)读入0x7c00
处,记录CS = 0x07c0
,IP = 0x0000
。
在计算机中,0x7c00
这个地址将会发生很多的故事。
引导扇区存放的代码叫做bootsect.s
(.s
汇编代码)。设置汇编代码的原因:不用C语言程序写该处代码是因为C语言程序需要编译,而且有一些不可控因素,例如int x = 10;
代码中无法指定内存开辟的位置。我们在这里需要对它进行完全的控制,不能使用C语言程序编写而使用汇编代码。
结语
本文到这里就结束了,我们目前对操作系统有了初步的认识,后面的文章将会继续更新,感谢各位uu的支持!