什么是操作系统(OS)?
操作系统是控制和管理计算机的软硬件资源,合理组织计算机的工作流程,提高资源利用率的程序集合。是系统软件。
下面就详细介绍一下操作系统的发展历程
人工操作阶段
在刚诞生计算机的阶段,还没有出现操作系统,对计算机的操作都是人来完成,操作方式是:程序员将事先已穿孔的纸带装入纸带输入机,再启动它们将纸带上的程序和数据输入到计算机,启动计算机进行运算。
这种操作方式明显存在着很大问题,只有当用户把数据进行输入完成后才能启动计算机,而在用户输入的这段时间内CPU一直处于空闲状态,一个计算机一次只能输入一段纸带也就意味着一个计算机一次只能一个人使用,归结为两个问题:
- CPU等待人工操作
- 用户独占全机
脱机输入/输出
为了解决人工操作阶段人机矛盾以及CPU与IO设备之间的矛盾,出现了脱机IO技术,该技术是将事先装有程序和数据的纸带在一台外围机的控制下,输入到磁带上,当CPU需要时从磁带上高速读入内存,输出时也是一样,程序得到输出结果后就立即输出到磁带上,然后在外围机控制下将磁带上的结果通过输出设备进行输出。
通过这种脱机输入输出在一定程度上提高了CPU资源的利用率,减少了CPU的空闲时间,但是仍然没有充分的利用CPU资源,也没有解决用户独占全机的问题。
单道批处理
使用脱机输入输出只是CPU不用等待IO设备,但是每一个程序之间的切换仍然还需要人来完成,人工操作切换不但效率低,而且出错率高,所以这个时候监督程序便出现了,在它的控制下,作业可以一个接一个有序的进行处理。详细过程是:首先由监督程序将磁带上的第一个作业装入内存,并把控制权交给该作业,该作业处理完成后又把控制权返回给监督程序,由监督程序调度第二个作业进行… …
上面的过程以及监督程序就构造了早期的批处理系统,进一步提高了CPU的利用率,但是每一次内存中都只有一个作业,这样其实CPU还是有空闲的,举个例子来说:
现在有两个程序P1,P2,按照单道批处理来讲,P1先运行,但是我的P1程序内容是这样的:
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
...
上面的是一个等待用户输入的信息,那么在用户输入的这段时间内,P2程序还是不能运行的,它必须得等待P1程序运行完成后,才能被调入内存运行。
这就是单道批处理的问题所在了,为了解决这个问题,出现了多道批处理
多道批处理
为了进一步提高资源的利用率,多道批处理系统产生了,该系统是将所有的程序在外存中形成一个后备队列,当CPU空闲时,会按照调度算法把几个作业调入内存,这几个作业同时共享CPU和资源。这个时候,如果程序A出现了上面所说的用户输入这种IO请求中断的话,CPU就会先去执行B程序,如果B程序也有IO请求中断,那么CPU又去执行其他的程序,这样交替进行,使得CPU处于忙碌状态。
很明显,这样做提高了资源利用率,但是所有的程序调度都由系统来进行调度了,人为不能干涉,而且存在平均周转时间长的特点。
周转周期:作业从提交到完成所经历的时间
举一个例子来暴露一下这个问题:
现在有三个程序分别为A,B,C,这三个程序都没有IO请求中断,且三个程序都从后备队列中进入内存执行,那么执行过程用一张表来描述:
提交时间 | 程序所用时间 | 完成时间 | 周转时间 | |
---|---|---|---|---|
A | 0 | 3 | 3 | 3 |
B | 1 | 100 | 103 | 102 |
C | 2 | 2 | 105 | 103 |
通过上表可以明显发现问题所在,C程序明明只用 2 时间即可,但是周转时间却是103,如果把B程序放到C程序的后面,那么平均周转时间就大大下降了,可以使用短作业优先的原则,这种判断的过程是一个比较复杂的过程,所以采用的方案是分时系统
分时系统
分时系统提供多个终端,同时给多个用户使用,可以及时接收和处理用户的作业,这里引入了时间片的概念,一个时间片就是一段很短的时间,系统规定每个作业每次只能运行一个时间片,然后就暂停该作业的运行,调度下一个作业运行,这样对于每一个作业不论用时长短,都是公平的,而且在宏观上表现为用户独占全机,这样不但解决了用户独占全机的问题,而且还提高了CPU的利用率。
分时系统又可以分为简单分时,前后台分时,多道分时。简单分时是指内存中只有一道作业,也就是单道的,这样在轮询作业的时候会频繁的把作业调入调出内存,这是一笔很大的开销。前后台分时是指把内存区域分为前台和后台两个区域,所有的不执行的作业都在后台区域,执行时调入前台区域,都是在内存中进行操作,所以速度会很快,但是对内存的管理会很复杂。多道分时是和多道批处理很相似,都是把用到的作业全放入内存中进行轮询。
实时系统
实时系统是表示及时,而实时系统是指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致的运行。实时一同经常用于工业武器控制,多媒体等。