Chapter 1 操作系统概述
1.1 操作系统直观认识和定义
1.1.1 操作系统的直观认识
操作系统提供以下几种直观功能:
- 提供操作界面,用户可以利用一些可视化的元素来操作计算机,展示计算机的执行结果。
- 控制程序运行,利用图形化或命令行的方式启动一个程序、结束一个程序、强制结束没有响应的程序等。
- 管理系统资源,用户可以更新驱动程序或安装新的驱动、卸载不再需要的设备,访问打印机、硬盘等资源。
- 配置系统参数,设置或改变系统参数。
- 监控系统状态,通过任务管理器等可以观察系统的实时工作情况。
- 工具软件集合,提供用于系统管理的辅助工具和内置命令便于用户进行个性化配置、调优或测试。
1.1.2 操作系统的定义
操作系统是一个大型的系统程序,它管理和分配计算机系统中软、硬件资源,控制和协调并发活动,为用户提供接口和良好的工作环境。
1.2 操作系统的发展历史
1.2.1 手动操作阶段
即电子管时代(1946-1955),此时没有操作系统,一个程序需要程序员通过打孔的方式写在纸带上,然后将纸带装入到设备中,启动输入设备将程序和数据输入到计算机内存中,然后控制台开关启动程序开始处理数据。整个过程中计算机被一个程序员占用。
特点:用户独占、缺少交互、效率低下(如运行一次程序可能需要提前几十分钟将设备全部装好,运行完之后还需要几十分钟将设备全部拆卸)
1.2.2 单道批处理系统
即晶体管时代(1955-1965)。单道批处理能够控制计算机自动处理一批作业,逐个加载、运行和撤出其中的每一个作业,直到全部作业处理完毕。批处理系统的特点:成批、自动、单道。缺点是平均周转时间长、无交互能力。
单道批处理系统两种实现方式:联机批处理系统和脱机批处理系统。联机批处理系统的输入输出过程都由主机控制,主机和输入设备之间添加一个磁带作为存储设备。运行于主机上的监督程序控制成批地将输入机上的用户作业读入磁带并形成作业队列,然后依次将磁带上的用户作业逐个装入主机运行并将结果输出到输出机,直到该批作业完成。脱机批处理系统增加一台与主机不直接相连而专门用于输入输出的卫星机,主机的作用是利用批处理方式自动按批处理磁带上的作业并将结果存放到输出磁带上。
1.2.3 多道批处理系统
集成电路时代(1965-1980),多道批处理系统利用多道程序处理技术,在内存中存放多道程序,当某道程序因为某种原因不能继续运行时监控程序会调度另一个程序运行,使得CPU尽量处于忙碌状态。多道批处理系统可以让CPU与外设,外设与外设之间处于并行状态。缺点是作业处理时间长,运行过程不确定,交互能力差。
1.2.4 分时操作系统
60年代中断技术的出现、80年代后大规模集成电路的出现、事务性程序和任务的出现允许CPU进行更加复杂的作业调度。现在的操作系统要求能够进行多任务多用户的调度。主机采用分时技术轮流为每一个终端服务,每一个终端都认为自己独占了整台计算机。
主机以很短的时间片为单位将CPU循环地轮流分配给每一个作业使用,直到全部作业运行完毕。时间片是较短的时间间隔,使得主机的响应时间较短。分时系统的特点:多路调制性、独占性(用户认为独占计算机)、交互性(能够及时响应用户请求)
1.2.5 分时操作系统衍化
- 微型计算机操作系统
- 实时操作系统(可靠性、安全性、强调作业完成时限和可预测性)
- 硬实时系统:必须按时完成
- 软实时系统:尽量按时完成
- 嵌入式操作系统
- 网络操作系统
- 分布式操作系统
1.3 操作系统的功能
1.3.1 处理机管理
处理机是计算机系统的核心资源,处理机管理即为进程管理或CPU管理。一个操作系统应该能够进行进程控制、进程同步、进程通信与进程调度。
- 进程控制:为一个作业创建一个或多个进程,并分配必要的资源。进程运行结束后应该撤销该进程并回收该进程占用的各种资源。主要功能是为作业创建进程、撤销已经结束的进程。
- 进程同步:保证进程之间有条不紊地进行,协调多个进程之间的运行。
- 进程通信:用于合作进程之间交换信息,操作系统使用合适的机制完成信息传输。
- 进程调度:操作系统需要根据某种策略选择合适的进程占用CPU。
1.3.2 存储管理
操作系统需要能够合理调度内存,内存管理需要支持多道程序设计,包含内存分配、内存共享、内存保护、地址映射和虚拟存储。
- 内存分配:程序运行需要将其存放在内存中,在程序运行前和运行时需要为其分配一定大小的内存。
- 内存共享:允许多道程序存放在内存中,实现内存的共享。另外实现多个进程共用一块内存空间,如dll文件所在的内存。
- 内存保护:保证进程在自己的内存空间中运行而不互相干扰,需要检查进程对内存的访问是否越界或越权。
- 地址映射:操作系统提供地址映射机构将进程地址空间的逻辑地址转化为内存空间对应的物理地址,地址映射可以使用户不必关心物理存储空间的分配细节。
- 虚拟存储:内存扩充功能,避免因为物理内存太小而导致大型程序无法运行或限制了多个进程的并发运行。实现了物理内存在逻辑上进行扩充,在不增加物理内存的情况下使用虚拟存储技术获得内存扩充的效果。
1.3.3 设备管理
操作系统不能让用户直接使用这些设备,这会使得用户的使用变得困难,因此操作系统需要使用合适的方式为进程分配这些资源,提高CPU和设备的使用率。操作系统提供统一规范的接口给应用程序使用,完成进程对设备的输入输出请求并方便用户添加新设备或删除旧设备。
- 分配设备:为申请设备的进程分配设备,记录设备的使用情况。
- 设备控制:通过合适的方式完成设备与CPU之间的数据传输。
- 设备映射:使用所谓的逻辑设备而不是物理设备,可以极大提高程序的灵活性、可移植性和可阅读性。用户可以使用友好名和不同的配置选项选择一个逻辑设备。
- 缓冲区管理:提高CPU的利用率,提高系统吞吐量,在内存中设置缓冲区并对缓冲区中的读写更新等操作进行有效管理以获得更好的系统性能。
1.3.4 文件管理
操作系统需要实现按名存取文件和目录,并向用户提供一条存取文件和目录的标准操作接口。除了基本的文件操作(如读写复制删除等)还需要实现文件的共享、保护和保密,保证文件的安全性和不被越权访问。
1.5 操作系统评价指标
- 吞吐量:系统在单位时间内处理信息的能力或可以处理的任务数量。是用于衡量系统性能的重要指标。操作系统合理分配和调度资源可以提高系统的吞吐量。
- 响应能力:表现为系统从接收数据到输出结果的时间间隔长短,时间间隔越长说明响应能力越差。系统响应时间与用户数量和时间片的大小有关。用户数量越多响应时间越长,时间片越短响应时间越短。
- 资源利用率:设备在单位时间内被利用的百分比。
- 可移植性:改变硬件环境,操作系统仍能正常工作的能力。一般在新的硬件环境中需要改写或增加一些代码来使得操作系统能够在新的环境下工作,这个修改工作中的代码修改量越少说明可移植性越好。
- 可靠性:即系统发生错误的概率大小和操作系统发现、诊断和恢复系统故障能力的大小。错误率越小可靠性越高。
1.7 操作系统的逻辑结构
1.7.1 整体式结构
整体式结构又称为模块化结构或宏内核结构,操作系统的常用设计模式和应用软件的基本设计模式。以模块为基本单位进行构建,系统中每一个过程都有明确的入口参数列表和返回值列表,大多数过程可以相互调用不受约束。如UNIX系统、Linux系统的单体内核。
优点:模块设计、编码和调试独立,模块之间可以自由调用
缺点:错误容易扩散,开发和维护困难,可伸缩性差
1.7.2 层次式结构
层次式结构将操作系统中所有功能模块按照调用次序分别排成若干层,确保各层之间只能单向依赖或单向调用。分层原则主要:
- 硬件相关放在最底层
- 与用户策略和交互有关的放在最顶层
- 中间各层按照调用次序或消息传递顺序安排
- 共性的和活跃的服务放在较低的层次
优点:结构清晰、整体问题局部化、有利于维护扩充和移植。
1.7.3 微内核结构
微内核结构又称为客户-服务机结构,分为两个部分:微内核和核外服务器。微内核足够小,只提供最基本的OS核心功能和服务,核外服务器完成OS绝大部分功能,等待客户提出请求。如Harmony-OS、Windows-NT(分层结构+微内核)。