操作系统——引论
1月 09, 2019
2940
操作系统的目标和作用
操作系统的目标
- 方便性:编写代码方便用户,方便计算机系统的使用
- 有效性:合理的组织计算机的工作流程,改善资源的利用率、提高系统吞吐量
- 可扩充性:操作系统采用层次化结构,以便增加新的功能层次和模块(Linux 就是一个典型的例子)
- 开放性:遵循 OSI 国际标准,彼此兼容,方便互联
操作系统的作用
- 用户角度:作为用户与计算机硬件系统之间的接口
- 资源管理角度:作为计算机系统个资源的管理者
- 实现了对计算机资源的抽象
- OS 是一组控制和管理计算机硬软件资源合理对各项作业调度以及方便用户使用的系统软件的集合。
- 操作体系提供三种类型调用接口: ~命令方式~、 ~系统调用方式~、 ~图形窗口方式~
操作系统的发展过程
无操作系统的计算机系统
- 人工操作方式
这种人工操作方式有以下三方面的缺点:
(1) 用户独占全机。
(2) CPU 等待人工操作。
(3) 数据的输入,程序的执行、结果的输出均联机进行 - 脱机输入/输出(Off-Line I/O)方式
优点如下:(1) 减少了 CPU 的空闲时间。 (2) 提高 I/O 速度。
单道批处理操作系统
- 单道批处理系统的特征
(1) 自动性:在顺利的情况下,在磁带上的一批作业能自动地逐个地依次运行,而无需人工干预。
(2) 顺序性:磁带上的各道作业是顺序地进入内存的。正常情况下,各道作业的完成顺序与它们进入内存的顺序应相同。
(3) 单道性:内存中仅有一道作业运行。最早出现的一种 os
多道批处理操作系统
- 该系统中,用户所提交的作业都先存放在外存上,并排成一个队列,称为后备队列;然后,由作业调度程序按一定的算法从后备队列中选择若干个作业调入内存,使它们共享 CPU 和系统中的各种资源。
从宏观上讲:是并行的
从微观上讲:是串行的 - 多道程序设计的优点:
(1) 提高 CPU 的利用率。
(2) 可提高内存和 I/O 设备利用率。
(3) 增加系统吞吐量。 - 多道程序设计的缺点:
(1) 平均周转时间长
(2) 无交互能力
分时操作系统
分时系统是指,在一台主机上连接了多个带有显示器和键盘的终端,同时允许多个用户通过自己的终端,以交互方式使用计算机,共享主机中的资源。
- 分时系统的特征
(1) 多路性(同时性)
宏观上,多个用户同时工作,共享主机。
微观上,内存中多个用户作业轮流使用时间片。
(2) 独立性
每个用户一个终端,互不干扰,相互独立。
(3) 及时性
响应时间,应该是人所能接受的等待时间,一般为 2~3 秒
(4) 交互性
终端用户可以对主机内存中自己的程序进行控制、修改
分时与批处理操作系统的区别 - 目标不同
批处理系统:以提高系统资源利用率和作业吞吐能力为目标
分时系统:强调及时性,对于联机用户的立即型命令要快速响应 - 适应作业的性质不同
批处理系统:适应已调试好的大型作业
分时系统:适应正在调试的小型作业 - 资源使用率不同
批处理系统:可以合理安排不同负载的作业,使资源利用率达到最佳
分时系统:能够公平地调配 CPU 和主存资源 - 作业控制方式不同
批处理系统:由用户通过 JCL 书写作业控制流,预先提交,脱机工作
分时系统:交互型作业由用户从键盘输入控制命令,以交互方式联机工作
实时操作系统
提供及时的响应和高可靠性是其主要特点。
(例如银行业务)
操作系统的基本特征
三种基本操作系统:
批处理系统:批处理具有成批处理的特征
分时系统:分时具有交互特征
实时系统:实时系统具有实时特征
它们同时具有并发、共享、虚拟、异步这四个基本特征,其中并发特征是操作系统最重要的特征,其他三个以并发为前提
并发和共享关系:
他们是 OS 两个最基本的特征,又是互为存在条件
- 共享以并发为前提条件,没有并发,不存在共享,就是“独享”
- 如果共享资源的访问不能协调好,会影响进程的并发执行,甚至无法实现并发,出现进程死锁的情况
为什么要引入进程
- 操作系统引入进程的概念
(1)从理论角度看:对正在运行的程序过程的抽象
(2)从实现角度看:是一种数据结构,目的在于清晰的刻画动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。 - 因此,进程既能描述程序的并发执行状态,又是共享资源的一种基本单位。
为什么要引入线程
- 进程切换
(1)进程间进行通信和切换的系统开销大,限制了系统中并发运行的进程的数目
(2)进程是操作系统中资源分配和系统调度的基本单位,拥有独立的地址空间和运行环境,从而相关进程间耦合关系差。 - 解决方案
(1)每个进程中包含多个线程,线程是进程中的一条执行路径。
(2)把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位
(3)线程基本不拥有系统资源,故对它的调度所付出的开销小
操作系统的结构
现代操作系统的基本单位:内核、进程、线程、类程、管程
内核
- 内核(kernel)是一组程序模块,作为可信软件来提供支持进程并发执行的基本功能和基本操作的一组程序模块,
- 内核通常驻留在内核空间,运行于核心态,具有访问硬设备和所有主存空间的权限,是仅有的能执行特权指令的那部分程序。
- 在内核的支撑下,机器功能得到扩展、进程运行环境得到改善,安全性得到保证,系统效率得到提高。
单内核
- 单内核:是一个很大的进程。它的内部又可以被分为若干模块(或者是层次或其它)。其模块间的通讯是通过直接调用其它模块中的函数实现的,而不是消息传递。
微内核
- 微内核:操作系统仅将所有应用必需的核心功能放入内核,其他功能都在内核之外,由在用户态运行的服务进行实现,通过微内核所提供的消息传递机制完成进程之间的通信。
单内核与微内核的比较
单内核:开销会少一些,所以运行效率会高一些。
微内核:更灵活一些,若恰当的分配内核空间的内容,可减少开支提高运行小效率
- 微内核灵活:内核只需要确定出一套标准(类似 API),随便改周围的一切都可以,都不会相互影响。哪怕改内核,只要不改标准,周围的一切都可以不改变。
- 微内核稳定性高:毕竟周围的一切都在进程中,哪一部分崩溃,也只是会影响到和这个进程有关的东西。
- 单内核不灵活:改一点点东西,整个内核就要重新编。
- 单内核稳定性差:不管哪个地方出问题,整个内核就全崩,内核全崩,电脑也就全崩了。
基本服务和用户接口
基本服务
- 创建程序
- 执行程序
- 数据 I/O
- 信息存取
- 通信服务
- 错误检测和处理
- 还具有另外一些功能:资源分配,统计,保护。
用户接口
- 程序接口(API)
该接口是为用户程序在执行中访问系统资源而设置的,是用户程序取得操作系统服务的惟一途径( 提供给程序员在编程时使用的接口,是用户程序取得操作系统服务的唯一途径)。
它是由一组系统调用组成,每一个系统调用都是一个能完成特定功能的子程序,每当应用程序要求 OS 提供某种服务(功能)时,便调用具有相应功能的系统调用. - 操作接口
由一组控制命令和(或)作业控制语句组成,是操作系统为用户提供的组织和控制作业执行的手段
系统调用
- 系统调用是一种中介角色,把用户与硬件隔离开来。
- 系统调用是应用程序获得操作系统服务的唯一途径
- 内核的主体是系统调用的集合,内核可以看成是特殊的公共子程序
- 系统调用的作用
(1)内核可以基于权限和规则对资源访问进行裁决,保证系统的安全性
(2)系统调用对资源进行抽象,提供一致性接口,避免用户在使用资源时发生错误,且编程效率提高。