一、为何要有操作系统
1、操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。
2、操作系统的位置:
操作系统位于计算机硬件与应用软件之间,本质也是一个软件。操作系统由操作系统的内核(运行于内核态,管理硬件资源)以及系统调用(运行于用户态,为应用程序员写的应用程序提供系统调用接口)两部分组成,所以,单纯的说操作系统是运行于内核态的,是不准确的。
二、操作系统的发展史
没有操作系统的概念,所有的程序设计都是用纯粹的机器语言来写的,且同一时刻只有一个程序在内存中被cpu调用执行,是串行运行的,容易造成资源的浪费,但好处是程序员可以在使用过程中独享资源,可以随时调试自己的程序,有bug的话,也可以立即处理
为了解决第一代计算机中的资源浪费问题,所以在第二代计算机时,出现了批处理系统,即收集好批量作业,集中将卡片读进磁带,然后人工将磁带送入机房装到磁带机上,通过特殊的程序从磁带上挨个读入每个作业并运行,(和第一代计算机一样是串行运行的)当所有的作业结束后,将其打印出来。解决了第一代计算机中的资源浪费问题,但整个的流程都需要人员参与操作,增加了人工成本,且程序员如若需要调试程序,需要等同批次的作业运行完才可以调试,无法及时调试程序,影响了开发效率
解决了第二代计算机的人工搬运输入输出问题,并且采用了多道技术解决了第一代、第二代计算机的串行运行问题,同时,采用了分时操作系统、多联机终端和多道技术,解决了第二代计算机中程序员无法及时调试程序的问题
三、多道技术
现代计算机或者网络都是多用户的,多个用户不仅共享硬件,而且共享文件,数据库等信息,共享意味着冲突和无序。
(一)操作系统主要使用来
1.记录哪个程序使用什么资源
2.对资源请求进行分配
3.为不同的程序和用户调解互相冲突的资源请求。
我们可将上述操作系统的功能总结为:处理来自多个程序发起的多个(多个即多路)共享(共享即复用)资源的请求,简称多路复用
(二)多路复用有两种实现方式
1.时间上的复用
当一个资源在时间上复用时,不同的程序或用户轮流使用它,第一个程序获取该资源使用结束后,在轮到第二个。。。第三个。。。
例如:只有一个cpu,多个程序需要在该cpu上运行,操作系统先把cpu分给第一个程序,在这个程序运行的足够长的时间(时间长短由操作系统的算法说了算)或者遇到了I/O阻塞,操作系统则把cpu分配给下一个程序,以此类推,直到第一个程序重新被分配到了cpu然后再次运行,由于cpu的切换速度很快,给用户的感觉就是这些程序是同时运行的,或者说是并发的,或者说是伪并行的。至于资源如何实现时间复用,或者说谁应该是下一个要运行的程序,以及一个任务需要运行多长时间,这些都是操作系统的工作。
2.空间上的复用
每个客户都获取了一个大的资源中的一小部分资源,从而减少了排队等待资源的时间。
例如:多个运行的程序同时进入内存,硬件层面提供保护机制来确保各自的内存是分割开的,且由操作系统控制,这比一个程序独占内存一个一个排队进入内存效率要高的多。
有关空间复用的其他资源还有磁盘,在许多系统中,一个磁盘同时为许多用户保存文件。分配磁盘空间并且记录谁正在使用哪个磁盘块是操作系统资源管理的典型任务。
这两种方式合起来便是多道技术