计算机操作系统(第四版)
汤小丹 梁红兵 哲凤屏 汤子瀛 编著
目标:方便性,有效性,可扩充性和开放性
联机控制方式(交互式命令接口,适用于分时或实时系统)
脱机控制方式(批处理命令接口,适用于批处理系统)
系统调用命令请求操作系统提供服务(从而间接使用资源),通过操作系统内核层提供的API函数(windows API, POSIX API , Java API)。
操作系统不能直接调用资源。
图形用户界面(GUI),即图形接口,其本质是通过调用程序接口实现的。
处理器管理(进程管理)
存储器管理(内存分配、地址映射、内存保护与共享、内存扩充等功能)
I/O设备管理(完成用户的I/O需求)
信息管理(数据和程序等)
没有任何软件支持的计算机称为裸机。
操作系统提供的资源管理功能和方便用户的各种服务功能,将裸机改造成功能更强、使用更方便的机器。
覆盖了软件的机器称为扩充机器或虚拟机。
不断提高计算机资源利用率
方便用户
器件的不断更新换代
计算机体系结构的不断发展
此阶段无操作系统
操作系统开始出现
单道批处理系统(Simple Batch Processing System)的处理过程
特征 (1) 自动性。 (2) 顺序性。 (3) 单道性。
同一时刻仅有一个进程占用处理机
操作系统正式诞生
多道程序设计技术允许多个程序同时进入内存并允许它们在CPU中交替的运行,共享系统中的硬件和软件资源。
特征 (1)多道性。 (2) 无序性。 (3) 调度性。
宏观上并行,微观上串行
多道批处理系统的优缺点
(1) 资源利用率高。
(2) 系统吞吐量大。
(3) 平均周转时间长。
(4) 无交互能力。
分时技术:处理器的运行时间分成很短的时间片,按时间片轮流把处理器分配给各联机作业使用。
T=Q·N(T:响应时间,Q:时间片,N:用户数)
在分时系统中,时间片一定时,用户数越多响应时间越长。
用户的需求具体表现在以下几个方面:
(1) 人—机交互。 (2) 共享主机。 (3) 便于用户上机。
分时系统实现中的关键问题
(1) 及时接收。 (2) 及时处理。
分时系统的特征
(1) 多路性。(2) 独立性。 (3) 及时性。 (4) 交互性。
系统能及时(或即时)响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。
优点:资源利用率高,系统吞吐量大
缺点:用户响应时间长,无交互能力。
应用需求
(1)实时控制。(2) 实时信息处理。
实时任务
1)按任务执行时是否呈现周期性来划分
a.周期性实时任务。
b.非周期性实时任务。
2)根据对截止时间的要求来划分
a.硬实时任务(hard real-time task)。系统必须满足任务对截止时间的要求,否则可能出现难以预测的结果。
b.软实时任务(Soft real-time task)。它也联系着一个截止时间, 但并不严格,若偶尔错过了任务的截止时间, 对系统产生的影响也不会太大。
操作系统和程序并发是一起诞生的。操作系统中引入进程的目的是使程序能并发执行。
并行性是指两个或多个事件在同一时刻发生;而并发性是指两个或多个事件在同一时间间隔内发生。
在多道程序环境下,一段时间内,宏观上有多道程序在同时执行,而在每个时刻,单处理机环境下实际仅能有一道程序执行,因此微观上这些程序仍是分时交替执行的。
在操作系统环境下,系统中的资源可供内存中多个并发执行的进程(线程)共同使用。
并发和共享是操作系统两个最基本的特征,资源共享是以程序的并发为条件的,不允许程序并发执行则不存在资源共享,不能对资源共享实施有效的管理必将影响到程序的并发执行。
虚拟是指通过某种技术把一个物理实体变为若干个逻辑上的对应物。
虚拟技术分为:时分复用技术(如处理器的分时共享)和空分虚拟技术(如虚拟存储器)
多道程序环境允许多个进程并发执行, 但由于资源有限,只有进程在获得所需的资源后方能执行。
进程控制
在传统的多道程序环境下,要使作业运行,必须先为它创建一个或几个进程,并为之分配必要的资源。
进程同步
进程同步的主要任务是为多个进程(含线程)的运行进行协调。
进程通信
进程(线程)之间,往往需要交换信息。
进程调度
在后备队列上等待的每个作业,通常都要经过调度才能执行。在传统的OS中,包括作业调度和进程调度两步。
内存分配
OS在实现内存分配时,可采取静态和动态两种方式。
内存保护
内存保护的主要任务,是确保每道用户程序都只在自己的内存空间内运行,彼此互不干扰。绝不允许用户程序访问操作系统的程序与数据,也不允许用户程序转移到非共享的其它用户程序中去执行。
地址映射
为保证程序正确运行,存储器管理必须提供地址映射功能,即能够将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址。该功能在硬件的支持下完成。
内存扩充
借助虚拟存储技术,从逻辑上扩充内存容量。
主要任务:完成用户进程提出的I/O请求