计算机系统由硬件和软件两个部分组成,缺一不可,只有硬件、没有软件的计算机(裸机)就像一个没有灵魂、没有思想的植物人,根本无法运行;而硬件又是软件的载体,说白了,软件就是硬件的状态,软件就是由硬件的两种状态(高低电平)来体现的,所以没有硬件,软件也就不存在。
正巧这次自考和软考碰到一块了,索性一起总结一下操作系统的知识。画了满满的一张图,还是先宏观再微观地来看一下吧:
整体上把操作系统所涉及的知识点分为处理器、存储、文件和外围设备四部分:
处理器
处理器是整个操作系统的核心。
进程是程序的一次动态的执行过程,为了进一步提高资源利用率,又可以将一个进程进化成为多个线程。
为了减小作业的平均周转时间,或者按实际情况(比如进程分为高低不同的优先级等)分配处理器,可以用到处理器的两级调度——作业调度(根据适当算法把进入作业井中的作业装入内存)和进程调度(根据适当算法把内存中的作业相对应的进程送入处理器执行);处理器还需要处理整个计算机运行过程中出现的各种各样的中断——中断响应→中断处理。
进程有等待、就绪、执行等多种状态,处理器的进程调度对进程状态的切换,反映了进程的并发。因为同一个程序可以为不同的用户执行,也就创建了多个进程,多个进程间也可能要用到同一种或同一个资源,这时就要通过PV操作来合理分配并发进程在相关临界区的资源分配。
存储
存储器可以分为三个层次:寄存器(通常在CPU中)、主存储器和高速缓冲存储器、辅助存储器(硬盘、光盘、U盘等),存取速度依次越来越慢,价格越来越便宜。我们都知道,内存空间通常有系统区和用户区,这里只涉及到用户区的管理。
对申请主存空间的作业如何为其分配,有如下几种方式:
单用户连续存储管理——除操作系统外,其他空间(用户区)都分配给一个作业(感觉好浪费有木有);
固定分区存储管理——把主存用户区事先划分成若干个区域(大小可等可不等),然后在每个作业申请时即为其分配一个未被占用的区域;
可变分区存储管理——不事先分好区域,在作业申请空间时,“根据情况”来为作业分配空间,因为这里的“情况”复杂,所以有最先适应分配、最优适应分配、最坏适应分配等算法为其服务;
页式存储管理——把住存储器分成许多大小相等的块,作业的逻辑地址分成页,页和块大小相等,主存分配空间时,为每个作业建立一张页表,作业的逻辑页号和为其分配的主存块号一一对应,不一定要为每个作业分配连续的地址,充分利用了松散的空间。
文件
文件这一块比较简单,主要就我们脑子里对文件的认识(逻辑结构)和文件在存储介质中的存储方式的对应。
想深究的同志们,给您分享一篇文章:无结构文件(流式文件)和有结构文件(记录式文件)
设备
设备可以分为独占设备和可共享设备,独占设备从一个作业开始占用它直到作业结束的期间内,不允许其他作业占用,如打印机,即使分配了多个打印的作业,它也是打完一份菜会开始下一个作业的打印;可共享设备可以让多个作业同时使用(但不是实际意义上的痛一个设备在同时处理多件事情,我的理解是跟处理器可以同时处理多个“交替”的进程差不多)。
磁盘的调度很大程度上也会影响计算机的性能,如下:
寻找(查找)时间就是磁头从一个柱面移动到另一个柱面所用时间,可以用先来先服务、最短寻找时间、电梯调度等算法来减小磁头移动的时间;延迟(等待)时间就是扇区转到磁头指定位置的时间;传送(传输)时间就是磁头把信息从磁道上读取到内存或把内存中的信息写到磁道上的时间。
缓冲技术主要用来缓解CPU与外部设备工作速度不匹配的矛盾。
关于通道,正如思维导图上,用了一张图来表示,主要用来协助CPU管理输入输出设备,当需要输入和输出时,CPU启动通道并向通道传达输入输出的命令,剩下的就由通道自己控制了,当完成输入输出的操作时,向CPU报告执行情况,CPU根据结果执行下一步操作。就如同原来所有的事情都是老板(CPU)一个人做,后来老板雇了一个员工(通道)帮他做一些事,这样老板就能去做其他事情,当然如果员工在工作过程中出现了意外无法处理的情况,就得停止当前作业(中断),由老板来处理。