操作系统概述
前言
记录操作系统的学习笔记。
一、操作系统的概念
操作系统的定义:
操作系统的功能和目标:
step1: 文件管理
step2:内存管理
step3: 处理机管理
step4: 设备管理
这个就体现了程序当中的封装思想。
总结:
二、操作系统的四个特征
并发:
共享:
同时有时候在微观上也是同时共享的,比如说我们打游戏时候扬声器的使用,游戏里使用扬声器,然后我们用开着QQ音乐播放音乐,这个时候游戏和QQ音乐共享扬声器。
虚拟:
异步:
在9.-10.的时候,心被占用了,10.-11.的指令就没办法得到满足,所以二号的约会任务就会被阻塞,一直等到1号的指令结束之后,才能执行二号指令。
这个是另外一种执行的过程,也就是9.-10.执行二号的指令1,这是就把心占有了,到了10.-11.执行一号指令2时,因为前面被占用了,就需要阻塞等待,直到前面执行完成后才能接着执行。
总结:要理解并发、共享、虚拟、异步这四个操作系统的特征,同时要理解并发与并行的区别。
三、操作系统的发展与分类
手工操作阶段:
打孔机,二进制,打一个孔代表一个1,不打孔的地方代表0,把纸带装到计算机中,然后计算机处理完成之后,又会把数据从内存通过cpu输出到纸带机上,纸带上的内容就是输出的结果。
单道批处理系统:
程序员提前把自己的程序放到纸带机上,然后会有一个专门的外围控制机,专门控制把纸带机上的纸带数据读到一个速度更快的磁带里,之后计算机是直接从磁带,这个更高速的输入输出设备上,把用户的各个程序依次读入到计算机的内存当中进行处理,处理完成后一次输入到磁带里,输出的过程就和输入过程是相反的。
可以看出,磁带是一种比纸带机读取纸带数据速度快很多的输入输出设备。这是计算机在等待数据输入输出的过程就会减少很多,所以CPU有更多的时间是用来忙碌计算的,而磁带上的各个程序的输入和输出是由监督程序负责控制的,监督程序就是后续操作系统的雏形。
串行执行的
多道批处理系统:
为什么多道批处理系统的资源利用率大幅度提升了呢?
输入设备、CPU、输出设备这三种系统资源都是串行的工作的,并不能并行的工作,所以这种情况下系统的利用率就很低。而我们采样了多道批处理系统,由于内存当中可以读入多道程序,而且程序可以并发执行, 这个时候输入设备、CPU、输出设备这三种资源可以并行的开始工作了,并不像之前只能串行的进行工作,这个时候资源就会有更多的时间处于忙碌的状态,这就是多批道处理系统资源利用率大幅度提升的原因。
分时操作系统:
多道批处理系统有一个主要的缺点就是不提供人机交互的能力。
实时操作系统:
其他操作系统:
总结:
四、操作系统的运行机制和体系结构
什么是指令?
有的程序可以使用特权指令和非特权指令,有的程序只能使用非特权指令。
操作系统的内核
操作系统还可以细分为一定的层次:最接近硬件的部分称作操作系统的内核,在上面会铺设一些非内核的功能,而操作系统的内核可以铺设为与硬件相关的时钟管理、中断处理、原语(设备驱动、CPU切换等),而时钟管理就是实现计时功能,所有的进程切换、进程调度都需要经过计时实现。而原语是一种特殊的程序,是最接近硬件的部分,这种程序的运行具有原子性,原子性指的是这种程序要么不执行,要么刚开始执行就执行到结束,一气呵成,中间不能被中断 。除了这些之外,内核还包括进程管理、存储器管理、设备管理等功能。
不同的操作系统,它的功能划分是不一样的。
操作系统的体系结构
一般分为大内核和微内核。
五、中断和异常
早期的计算机当中各个程序只能串行的执行,一个程序放入了计算机内存当中之后,接下来这个程序便会进行运行,当他运行结束之后,需要等待IO设备输出操作结束,这个时候程序才可以从内存中移出,接下来再移入第二个程序,同样的第二道程序移入后执行,等待结束之后,移出内存,第三道程序也一样。
这种方式的缺点很明显:各个程序只能串行的执行,系统资源利用率低下。
引入中断机制之后,就可以把多道程序同时放入内存,各个程序并发的执行,例如进程1他在用户态下运行,运行了一段时间之后CPU收到计时部件发出的中断信号,此时CPU切换为核心态,操作系统展开管理工作。
然后操作系统内核负责对中断信号进行处理。
操作系统告诉它时间片已到,进程1的时间片已经用完了,换进程2运行,这就是操作系统开展的一系列管理工作。
开展完这些工作之后,操作系统会把CPU的使用权交还给用户进程,接下来进程2就会在用户态下,然后当进程2执行一段时间之后,进程2发出系统调用(内中断信号),为了保证系统安全性,像输入输出操作那些指令属于特权指令,不允许用户进程直接使用,因此用户进程普通的应用程序只能通过系统调用的方式来主动要求操作系统接入操作,让操作系统带他完成请求输出这一事情。因此接下来CPU同样会进入核心态,然后操作系统的内核接管进程2提出的请求,之后操作系统会按照进程2的请求要求打印出这个输出设备开始工作,进程2等待这个IO设备的完成,所以他会让进程2暂停运行,换进程3运行。完成这一系列的管理工作之后,操作系统又会再次把CPU的使用权还给用户进程,然后进程3开始工作,并且这个输出设备在系统的要求下也会并行的工作,当它工作结束之后,会向CPU发出一个IO完成的中断信号,当CPU接到这个中断信号之后,之后这个时候需要操作系统接入,开展管理工作。接下来CPU切换为核心态处理中断,操作系统的内核会根据中断信号进行处理。刚才的中断信号是通知进程2的IO操作完成,让进程2恢复运行,以完成后续工作。
中断的概念和作用:
中断分类:
CPU外部与当前执行的指令无关,例如打印机完成工作之后向CPU发出的一个外部中断信号,这就属于外部中断。
另一种分类方式:
外中断的处理过程:
CPU在用户态下执行用户程序
总结:
六、系统调用
什么是系统调用?
系统调用与库函数的区别:
系统调用背后的过程:
int 指令是陷入指令,当执行了陷入指令之后,CPU的控制权就会交给操作系统,之后就由操作系统的系统调用相关的处理程序来运行,根据用户提供的参数来进行相应的系统调用的处理。
int 指令就是系统调用号,指定操作系统具体执行哪个系统调用。int是interrupt的缩写,也就是中断,系统调用属于内中断。
用户态下只能执行非特权指令,而核心态下既可以执行特权指令,也可以执行非特权指令。陷入指令是唯一一个不在核心态下执行的,在用户态下执行的指令。
总结
今天学习了操作系统的概述,里面的知识点也比较多。