冯诺依曼的体系结构只是构成了计算机系统的系统硬件基础,称为裸机,而实际呈现在用户面前的是经过若干层软件改造后的计算机。
操作系统(Operating System,OS)是配置在计算机硬件之上的第一层软件,其是对硬件系统的首次扩充。
提供一个计算机用户与计算机硬件系统之间的接口,是计算机系统更易于使用 用户通过 OS 来使用计算机,从下图可以看出,用户可以通过系统调用、命令方式、图形窗口三种方式来实现与 OS 的通信,并取得其服务
有效的控制和管理计算机系统,中的各种硬件和软件资源,使之得到更高效的利用 在计算机系统中,包含多种软硬件资源,OS 的主要功能正是对资源进行管理,归结来说,总共分为四类:
处理机管理:处理机的分配与控制存储器管理:内存的分配与回收I/O 设备管理:I/O 设备的分配、回收与操纵文件管理:对数据和程序文件的存取、共享、保护合理地组织计算机系统的工作流程,以改善系统性能
方便性:便于用户使用 (用户的观点):提供良好的、一致的用户接口。无需了解许多有关硬件和系统软件的细节。
有效性:提高系统资源利用率 (系统管理人员的观点):合理地组织计算机的工作流程,管理和分配硬件、软件资源,提高资源的利用率。
可扩充性:使用模块化以便于修改和扩充 给计算机系统的功能的扩展提供开放式的支撑平台。方便地增加新的功能和模块。
开放性:系统遵循国际标准以便实现互连
在未引入进程的系统中,同属一应用程序的计算程序与 I/O 程序间只能顺序执行,这样极大地影响了系统资源利用率。
若对内存中的多个程序都分别建立一个进程,他们就可以并发执行,从而提高系统资源利用率,所谓进程是指系统中能独立运行并作为资源分配的基本单位,是由一组机器指令、数据、堆栈等组成的能独立运行的实体。
在 OS 下的资源共享是指系统中的资源可供内存中多个并发执行的进程共同使用,由于内存资源有限,系统必须对资源共享进行妥善管理,以避免进程对共享资源的争夺。
根据资源属性的不同,进程对资源复用的方式也不同,目前主要有以下两种方式:
互斥共享方式:在一段时间内只允许一个进程访问资源(临界资源)同时访问方式:在一段时间内允许多个进程同时访问(在单处理机上,本质上是串行的)虚拟最早出现在通信系统中,为提高信道利用率从而引入了虚拟技术,所谓虚拟,是指通过某种技术将一个物理实体变为若干逻辑上的对应物。
在 OS 中,借鉴了通信系统的虚拟设备技术,有以下两种实现方式:
时分复用:利用处理机的空闲时间运行其他进程,提高处理机利用率空分复用:利用存储器的空闲空间,分区域存放运行多道程序,提高内存利用率由于资源等因素的限制,多个进程并发执行时间和执行顺序是不可预知的,所谓异步即是指进程的执行顺序与执行时间的不确定性
尽管如此,但只要在 OS 中配置有完善的进程同步机制,且运行环境相同,作业即使经过多次运行,得到的结果是完全相同的。
在多道程序系统中,处理机的分配与运行均以进程为基本单位,对处理机的管理,就是对进程的管理,其主要用于解决内存中多道并发执行的 “进程” 如何占用 CPU、如何运行的问题。
进程控制:为作业创建进程、撤销已结束的进程,控制进程在运行过程中的状态转换,即对单个进程基本信息进行管理进程同步:为多个进程运行进行协调,常用的协调方式有:进程互斥方式、进程同步方式进程互斥方式:进程在对临界资源访问时,采用互斥方式进程同步方式:在相互合作去完成共同任务的进程间,由同步机构对他们的执行次序进行协调进程通信:用于实现相互合作进程之间的信息交换调度:调度包括作业调度、进程调度两步作业调度:从后备队列中按照一定算法选择若干作业,并分配所需资源,在作业调入内存后,分别建立进程进程调度:从进程的就绪队列中按一定算法选择进程,并将处理机分配给他早期的操作方式是利用事先穿孔的纸带,装入纸带输入机将纸带上的程序与数据输入计算机,再启动计算机,只有当程序运行完毕并取走运算结果后,才允许下一个用户上机。
人工操作的方式严重降低了计算机资源的利用率,出现了所谓的人机矛盾,即用户独占全机、CPU 等待人工操作。
为解决人机矛盾,后出现了脱机 I/O 技术,即事先将装有用户程序和数据的纸带装入纸带输入机,在一台外围机的处理下,将纸带上的数据、程序输入到磁带上,当 CPU 需要时,再调入内存。
脱机 I/O 技术在一定程度上,减少了 CPU 的空闲时间并提高了 I/O 速度。
为实现作业的连续处理,需要将一批作业以脱机方式输入到磁带上,并在系统中配上监督程序,在监督程序的控制下,使得作业能一个接一个地连续处理。
虽然系统对作业的处理是成批进行的,但内存中始终保持一道作业,仍然存在 I/O 设备与 CPU 速度不匹配的情况。
对于单道批处理操作系统来说,其可以连续的运行多个程序,减少了程序切换时的 CPU 等待时间,但其问题在于:当执行 I/O 操作时,CPU 是空闲的,这极大的增加了 CPU 的等待时间。
为解决资源利用率与系统吞吐量低下的问题,出现了多道批处理系统。
多道批处理系统是将多个程序同时加载到内存中,当其中正在运行的程序执行 I/O 操作时,CPU 可以继续执行其他的程序,而当 I/O 操作结束后,之前的程序继续执行。
多道批处理系统虽然内存中存在多个程序,但同样一个时间内只有一个程序被执行,其他没有被执行的程序存入后备队列中,等待调度程序调用。
多道批处理系统具有多道性、无序性、调度性等特点,其资源利用率高、系统吞吐量大、平均运行时间长,但由于后备队列需要内存管理,调度程序需要设备管理等问题,增加了系统的负载。
资源利用率高 CPU处于忙碌状态,可以提高I/O设备的利用率
系统吞吐量大 Cpu和其他资源保持忙碌状态,仅当作业完成或运行不下去时切换
平均周转时间长
排队依次处理,作业的周转时间较长
无交互能力 用户一旦把作业提交给系统,直至作业完成,用户都不能与自己的作业交互
适合大型科学计算、数据处理
对于多道批处理系统来说,其人机交互性极差,为满足用户对交互性的需求,由此形成了一种新型 OS —— 分时系统。
所谓分时系统是指,在一台主机上连接了多个配有显示器与键盘终端,并由此组成的系统,该系统允许多个用户同时通过自己的终端,以交互式使用计算机,共享主机资源。
分时系统实现了多用户连接主机、请求轮转进内存、快速响应处理等功能,其最大特点是采用时间片轮转方式来处理服务请求。
所谓时间片,是指分配给进程运行的一段时间,根据时间片的定义,由此有了用户响应时间(RT),即:用户响应时间 ≈ 时间片 * 用户数量
用户感觉不到计算机为其他人服务,各用户独立操作,互不干扰。
通过时间片技术和轮转调度算法保证及时响应。
系统及时响应用户的请求,显著提高调试和修改程序的效率:缩短了周转时间。
随着计算机的发展,计算机需要一种能及时计算的系统,即系统的正确性不仅由计算的逻辑结果来确定,还取决于产生结果的时间。
简单来说,就是将时间作为关键参数,其必须对接收到的某些信号做出实时的反应。
由此我们可得到实时系统的定义:系统能及时响应外部事件的请求,在规定时间内完成对事件的处理,并控制所有实时任务协调一致地运行。
常见是实时系统有:工业控制系统、信息查询系统、武器控制系统、嵌入式系统等
在早期,操作系统的开发者只是将注意力放在功能的实现和获得高的效率上,缺乏首尾一致的设计思想。
此时 OS 是为数众多的一组过程的集合,每个过程可以任意地调用其他过程,使得操作系统内部结构混乱又复杂。
因此,这种 OS 是无结构的,也有人将其称为整体系统结构。
20 世纪 60 年代,随着模块化程序设计技术的出现,操作系统的编写也开始利用该技术。
该技术是基于分解与模块化的原则来控制大型软件的复杂度。
为使 OS 具有较清晰的结构,OS 的设计按照模块-接口法来进行,即按其功能精心地划分为若干具有一定独立性的模块,每个模块具有某方面的管理功能,各模块间能通过接口实现交互。
同时,进一步将各个模块分为若干具有一定功能的子模块,同样也规定好他们之间的接口。
load unsuccessful
该方法不仅提高设计的正确性、可理解性、可维护性,还增强了 OS 的可适应性,通过对相应功能模块增减和修补,可以满足新需求,同时还加速了开发过程。
但该方法同样存在不少问题,在设计初期,模块划分和接口规定是十分不精确的,并且很难保证其完全正确,这会使得接口规定与实际完成的模块需求不匹配,而出现装配困难。
此外,各模块的设计齐头并进,没有决策顺序,是一种 “无序” 模块,模块间仍会有复杂依赖关系,这反而可能会使 OS 结构不清晰。
为将模块-接口法中决定顺序的无序性变为有序性,引入了有序分层法,即在目标系统 A n A_n An和逻辑系统 A0 间,铺设若干层次的软件 A 1 , A 2 , … , A n − 1 A_1,A_2,…,A_{n−1} A1,A2,…,An−1,使得 A_n 通过 A n − 1 , … , A 2 , A 1 A_{n−1},…,A_2,A_1 An−1,…,A2,A1层后,最终能在 A 0 A_0 A0上运行。
在分层式操作系统中,采用自底向上的有序分层法,每一步设计都建立在可靠基础上,每一次仅能使用其底层所提供的功能与服务,由此使得系统的调试与验证变得十分容易。
由于各层之间只存在单向的依赖关系,即高层仅依赖紧邻的低层,这保证了系统正确性,使得系统容易维护与扩充。
但由于分层单向依赖,当执行一个功能时,总要自下而上地穿越多层,这增加系统通信开销,降低了效率。
微内核操作系统,即实现了一个可在其上构建通用 OS 的基础内核,该内核程序运行在核心态,开机常驻内存。
当前微内核操作系统结构仍没有一致公认的定义,但可从以下4方面进行描述:
足够小的内核:微内核并非一个完整的OS。与硬件紧密相关,实现较基本功能,复杂客户和服务器通信应用机制与策略分离原理:机制用于实现某一功能的具体执行机构,位于基层;策略借助某些参数和算法实现功能优化或达到不同功能目标,位于高层采用面向对象技术基于 C/S 模式 微内核包含的基本功能有:进程管理、低级存储管理、中断和陷入处理等,调度算法、虚拟内存的页面置换算法等都放入外部服务器中实现。对于微内核操作系统来说,只有内核能访问硬件,服务器在用户态出错时绝不会导致系统瘫痪,同时其可移植性强,尤适用于分布式系统。
风骨散人Chiam 认证博客专家 拖更专业户???? 大学僧,考研狗,没上岸,ACM退役选手。名字的含义:希望可以通过努力,能力让家人拥有富足的生活而不是为了生计而到处奔波。“世人慌慌张张,不过是图碎银几两。偏偏这碎银几两,能解世间惆怅,可让父母安康,可护幼子成长 …”Chiam是 -am爱 China中国文章主要内容:Python,C++,C语言,JAVA,C#等语言的教程,ACM题解、模板、算法等,主要是数据结构,数学和图论设计模式,数据库,计算机网络,操作系统,计算机组成原理,Python爬虫、深度学习、机器学学习,计算机系408考研的所有专业课内容。目前还在更新中,博客园,微信公众号同名“风骨散人”,关注公众号可获软件大礼包