写在前面:这篇是为了复习基础知识准备的,而不是根据学校的教材走的,所以叙述有些出入的地方请见谅,该系列旨在快速梳理操作系统的基础知识和一些常见的问题点,知识框架来自于王道操作系统,后续有机会的话会继续补充
1.操作系统的基本概念
一个计算机系统可以自上而下分成四个部分:用户层,应用程序,操作系统,硬件
一方面操作系统管理各种硬件,为程序提供基础,充当硬件和用户的中介.另一方面,操作系统协调和弘治应用程序对于硬件的分配与使用
综上所述,操作系统是指控制整个计算机系统的硬件和软件资源,合理组织调度计算机的工作和资源的分配,进而为其他软件和用户提供接口和环境的程序集合,是计算机系统中最基本的系统软件
2.操作系统的特征
操作系统也是一种软件,但是和其他软件有很大不同,主要体现在以下四个特征上
1.并发:并发指的是多个事件在同一时间段内发生,区别于并行,操作系统拥有处理和调度多个程序同时执行的能力
2.共享:操作系统中的资源可以被多个并发进程共享
3.虚拟:通过虚拟,可以把一个物理上的实体变成逻辑上的对应物,比如cpu只有一个,虚拟整个概念就算使用多道程序处理系统,让用户觉得自己在独享机器,这就叫做虚拟处理器
4.异步:多道程序允许多个进程并行,但是资源有限,因此可以允许一些进程以不可知的速度推进(比如某个进程因为缺少资源就暂时搁置)
这其中并发和共享是操作系统最重要的两个特点,这俩也是相互依存的,如果不能不发,则资源共享毫无意义.如果不能共享,并发也会出很多问题
3.操作系统的目标和功能
1.操作系统作为计算机资源的管理者
操作系统作为系统资源的管理者,主要提供的功能有
1.处理机管理:也就是对于cpu的管理,就算是俗称的cpu调度,关于进程的控制和管理
2.存储器管理:内存分配回收,地址映射,内存保护,内存扩充等功能
3.文件管理:文件存储空间的管理,目录管理,以及文件的读写保护
4.设备管理:主要完成各种io请求,方便用户使用各种设备
2.操作系统为用户提供的
1.命令接口:用户可以通过命令接口,执行某些任务(就类似平时用到的一些指令,ls-a之类的)
2.程序接口:编程人员可以实用程序接口实现些操作系统服务(比如具体的系统调用,比如io,扫描器这些函数)
GUI本质上是对程序接口的进一步调用,不属于操作系统,但是GUI所调用的系统调用指令是操作系统的一部分
3.对于机器
一个没有操作系统的机器被称为裸机,只有物质基础,大概就是猪和猪肉的区别
操作系统提供了一个扩充功能,让机器被软件覆盖
4.操作系统的发展(处理系统的变化)
操作系统的发展其实有很多分类,这里只展示其中的一条线(至于单道,多道这些概念,请根据具体的性质辨别)
1.手工操作阶段(了解即可,甚至不是操作系统)
手工操作阶段就是传说中的打纸带,整个阶段用户独占机器,想要开启什么计算任务,都要用户手动实现,你已经不能奢求CPU的使用效率了,这玩意是不是CPU都难说........
2.单道批处理系统(批处理系统开始出现,真正意义上的os)
系统成批的,按顺序的处理作业,保证内存中一直有一个作业在进行处理.可以理解为把任务先排好队列放入外存中,然后按顺序不断调用
具有自动行,顺序性,单道性的特点,一次只能执行一个,并且执行完上一个才能执行下一个
3.多道批处理系统
在弹道批处理系统的基础上,引入多道程序技术,使得当一个作业因为某些原因暂停运行的时候,cpu立刻转向执行另一个资源.让计算机各个部分都尽可能地忙起来
简单来说,比如任务A的cpu部分暂停了,那么cpu马上先去执行B.或者说A暂时不用打印机,那么B如果要用就赶紧占有整个资源
多道批处理系统在单道的基础上,增加了多道,宏观上并发,微观上并行的三个特点
4.分时操作系统
在多道批处理中,我们切换任务的判断准则就算"整个任务暂时阻塞,把某个资源先让出来",
而分时技术中,会把处理器的运行时间划分成很小的时间片,切换任务的标准就是分配的时间片用完,或者在时间片内结束任务,其实就算时间片轮转算法LU
这种操作系统的特点是增加了用户的共享性,也就是在分时操作系统开始,允许操作系统与用户进行人机交换,在批处理系统中式不允许的(因为不能共享)
5.实时操作系统
上面的几种操作系统我们可以叫做"非抢夺式的操作系统",是因为这些操作系统中的任务,是按照某个规律在执行或者切换的.
在实时操作系统中,为了能在某个时间内完成某个紧急任务而不需要时间片排队,允许某些任务抢占资源进行执行
6.网络操作系统和分布式计算机系统
网络操作系统的特点是同网络进行计算机之间的资源共享和通信,完成不同的任务
分布式系统的特点是系统中两台机器通过通信交换信息,和网络系统不同,分布式是多个系统同时完成一个任务
7.补充一道例题,可以理解单道和多道系统的区别
[王道考研的一个课后题,2022版12页
5.操作系统的运行机制
(1)两种不同的程序
在计算机中有两种不同的程序
1.操作系统内核程序(内核程序) 2.用户自编程序(应用程序)
内核程序可以执行一些特权指令,特权指令是不允许用户直接调用的(比如IO这种比较接近底层的内容)
CPU通过目前的状态位来判断能否执行特权指令
执行内核程序的时候,cpu的是内核态的,应用程序则是运行在用户态
(2)中断和异常的概念
中断表示外中断,是来自cpu执行指令以外的事件发生,比如IO请求
异常是内中断,通常是cpu执行内部的为题,比如地址越界,溢出,跳转
另外注意:cpu内核态和用户态的切换转化就是依靠中断实现的
(3)系统调用
系统调用是操作系统为用户提供的一些功能接口,比如io接口,文件管理等等,这些东西都是用户提出系统调用,然后操作系统代为执行
系统调用在内核的部分的操作,靠的就是特权指令进行执行
6.操作系统的体系结构
操作系统的体系结构分为大内核和微内核两种,这部分了解即可
大内核是指主要的功能模块都放在一个紧密联合的整体,全都在黑河太,从而提高高性能的服务,但是缺点在于难以进行对功能服务的增删改查
微内核指的是除了一些基本功能比如进程管理以外,剩下的服务全部放到用户态中,这样方便我们对于服务的添加,但是劣势在于每次信息交换都要进行用户态和内核态的转化,性能不行