操作系统(哈工大李治军老师)学习笔记 - 什么是操作系统

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


什么是操作系统

操作系统是管理硬件资源、控制程序运行 、改善人机界面和为应用软件提供支持的一种系统软件。

这是什么?这个其实是计算机硬件,也称作裸机。而裸机需要穿上衣服即操作系统、应用软件,才能在屏幕上输出“hello!”。

操作系统是计算机硬件和应用之间的一层软件,方便我们使用硬件,如使用显存…;高效地使用硬件,如开多个终端(窗口)。

操作系统管理哪些硬件呢?CPU管理、内存管理、终端管理、磁盘管理、文件管理、网络管理、电源管理、多核管理。

对于学习操作系统也有多种层次?可看作由浅入深的程度。首先是从应用软件出发“探到操作系统”,这一层次主要集中在使用计算机的接口上;使用显示器:printf;使用CPU:fork,使用文件:open、read…。其次是从应用软件出发“进入操作系统”,我们要明白一段文字是如何写到磁盘上的…。最后从硬件出发“设计并实现操作系统”,给你一块板子,配一个操作系统…。国内的一些课程,大部分只讲到第二层次,而国外的一些课程会将从硬件出发设计实现操作系统,比如CMU的课程。

我们学习操作系统的主要目标是能偶真正进入操作系统,修改操作系统(改CPU管理、改屏幕输出、改系统接口、改内存管理),理解操作系统的运转,理解屏幕输出一串字符串的过程等等。

操作系统的几点理解:
1.操作系统大多数情况算最底层的东西,通过操作系统使得软件顺利运行在逻辑上。
2.操作系统有控制程序运算的能力。操作系统使得多个程序互不干扰的运行。
3.操作系统往往设置有系统调用,供应用软件使用。这些系统调用也称作操作系统对上层的接口。
4.操作系统需要人机交互。

一台电脑,从打开电脑电源开始,就意味着计算机要开始工作了,然后计算机怎么工作,这个就需要我们去思索。

计算机怎么工作,说到底就是一个计算模型。

从白纸到图灵机:

从图灵机到通用图灵机

通用的图灵机,就不只是会做加法运算,它还能进行乘法、除法、减法等等运算。

从通用图灵机到计算机

这个时候诞生了冯诺依曼思想。

到了计算机,当我们打开电源,计算机执行的第一句指令是什么?
在这里插入图片描述
关于CS和IP: CS和IP是8086CPU中两个关键的寄存器,它们指示了CPU当前要读取指令的地址。
CS : 代码段寄存器;IP : 指令指针寄存器。在8086机中,任意时刻,CPU将CS:IP指向的内容当作指令来执行。

CPU读取、执行指令的流程图:下面是8086CPU 读取、执行一条指令的过程:(控制输入输出电路到控制器不存在数据线)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注:在CPU向内存读取内容之前(这里的内容是:指令),会通过控制总线发出内存读取命令,“告诉”内存,我要开始读内容了,请你(内存)准备好。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
之后:CPU将会从 内存单元2000:0003读取指令,依次循环上面的步骤。

总的来看,计算机操作系统做的事情就是在不断地取指、执行。

① CPU从CS : IP指向的地址读取指令,读取的指令进入到指令缓冲器中;

② IP = IP + 所读取的指令长度,从而指向下一条指令;

③ 执行指令。转到步骤① ,重复这个过程。

根据上面的内容,我们知道了CS和IP的概念。而在0x7c00处存放的代码是什么呢?是从磁盘引导扇区读入的那512个字节。
在这里插入图片描述
引导扇区的代码:bootsect.s

.s代表汇编语言,为啥不使用c语言进行编写这一扇区代码呢?因为c语言在经过编译成为汇编的过程可能不能完全正确转换,而汇编代码可以完全正确的转变为机器可以识别的二进制代码。

在这里插入图片描述
ds = 0x7c00 es = 0x9000
cx = 256 si = 0 di = 0
ds:si 结成一个地址 es:di结成一个地址,所以这个时候有两个地址,第一个地址为7c00,第二个地址为90000。
rep movw这句代表接下来要移动字,重复移动字,移动的数量为256个字,也就是512个字节,然后结合地址的变化,代表将bootset中的东西从7c00处移动到90000处,为什么做这个事情,其实是为了腾出空间,腾出空间具体的目的是啥?目的是供其他使用,具体是啥后续学习解答。
jmpi go,INITSEG jmp是直接进行跳转,而jmpi代表是间接进行跳转,指令代表的含义是go->IP, INITSEG->CS(一个地址在inter结构下由两部分组成,一个段寄存器,一个段内偏移),这里的IP是一个标号,在后面会有,也就是会跳到标号的位置。

在这里插入图片描述
0x13读磁盘扇区的中断,刚才读的只是引导扇区,但还有其他扇区要读。从哪开始读呢?cl:读的开始扇区,也就是cx的低8位开始读即02(第二个扇区开始读),因为bootset是第一个扇区。读几个扇区?al代表扇区数量即ax的低8位+SETUPLEN(4个扇区),显然图片中setup有4个扇区。读到哪里?读到bootset所在位置的上面,bootset我们前面知道在90000的位置(512字节),因此setup在90000+512字节(0x200)= 90200的位置,而es:bx就代表这个读到的位置的地址,es = ax = 9000,bx = 200,因此和我们计算的是一致的。
思考:setup用来干什么?
在这里插入图片描述
0x10是一个BIOS中断,用来显示字符,详细参考博客:https://blog.csdn.net/judyge/article/details/52289231
ES:BP 字符串的段:偏移地址
msg1代表偏移,给了bp。这里就解释了每次开机黑色屏幕后面在干嘛?打出logo(”Loading system“),然后call read_it将操作系统的东西读进来以及其他事。
所以现在我么知道了,开机先把setup的代码读进来,然后再读其他代码,把logo打在屏幕上增加交互性。
如果想要修改字符串,直接在代码中把字符串修改了,然后把cx设置为修改后的字符数,其他代码不用修改。
在这里插入图片描述
read_it仍然是调用13号中段,把操作系统后面的东西读进来,读完以后,bootset就结束,由此可知:bootset就是把操作系统读进来,然后在屏幕上打出logo。
然后要将控制权交给setup,怎么交?通过跳转,即jmpi 0,SETUPSEG,前面我们知道setup是在90200地址处,因此SETUPSEG = 9020(SETUPSEG<<4+0)。

总结

以上学习完了bootset的内容,将下来将学习setup。

参考博客:https://zhuanlan.zhihu.com/p/258863021

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值