第1章 绪论
1.1 操作系统在计算机系统中的地位
1.1.1 存储程序式计算机的结构和特点
存储程序式计算机(Stored Program Computer)是现代计算机的基础,其概念源于冯·诺依曼(John von Neumann)提出的模型。这种计算机架构的核心特点包括:
-
存储程序与数据统一性:
在存储程序式计算机中,程序和数据以相同的方式存储在存储器中。存储器由多个存储单元组成,每个单元都有唯一地址,可以存储指令或数据。这一特点为程序的灵活性和自动化运行奠定了基础。 -
指令按序执行:
CPU从存储器中按顺序读取指令并执行,但通过条件跳转指令可以改变执行顺序,从而实现复杂的流程控制。 -
输入输出统一:
输入设备用于将外部数据输入到计算机,输出设备将处理结果呈现给用户。这一机制实现了程序与用户的交互。 -
主要组成部分:
- 中央处理单元(CPU): 包括算术逻辑单元(ALU)和控制单元,负责指令执行和运算处理。
- 存储器: 包括主存(RAM)和辅存(如磁盘),存储程序和数据。
- 输入/输出设备: 如键盘、显示器、打印机等,用于交互。
下图展示了冯·诺依曼结构的计算机模型:
这种架构为现代计算机的设计提供了理论基础,其优点包括操作简单和设计灵活,但也存在如存储墙问题等瓶颈。
1.1.2 操作系统与计算机系统各层次的关系
计算机系统的整体结构可以分为硬件、操作系统和应用程序三个层次,操作系统作为核心组件,连接了硬件与用户应用程序之间的桥梁。
-
硬件层:
- 提供计算能力和存储能力的基础,包括CPU、内存、磁盘等。
- 硬件本身只能执行低级操作,如加减法、数据读写。
-
操作系统层:
- 操作系统通过抽象硬件的复杂性,为用户和程序提供友好的接口。
- 提供文件系统、进程管理、内存管理等功能,简化用户的使用。
-
应用程序层:
- 运行在操作系统之上,提供特定功能,如文字处理、网络浏览等。
- 应用程序通过操作系统访问硬件资源。
下图描述了计算机系统的分层结构及操作系统的中介作用:
1.1.3 操作系统与计算机体系结构的关系
操作系统的设计和实现必须与计算机体系结构紧密结合。计算机体系结构提供了操作系统赖以运行的硬件环境,而操作系统通过优化资源调度、并发处理等技术充分发挥硬件的性能。
- 中断机制:
操作系统通过中断响应硬件事件,例如外设请求或异常情况,从而提高系统响应速度。 - 存储管理:
操作系统利用体系结构中的内存管理单元(MMU)实现虚拟内存,支持程序运行所需的大容量内存。 - 多核处理:
在多核处理器中,操作系统负责将任务分配到不同的核心,从而实现并行计算。
操作系统与体系结构的紧密结合是提高计算机性能和可靠性的关键。
1.2 操作系统的形成和发展
1.2.1 操作系统发展的初级阶段
在计算机发展的早期阶段,操作系统的概念尚未出现,用户需要直接控制硬件运行程序。此阶段的主要特点是:
-
手工操作:
用户通过插拔电缆、打孔卡输入程序。- 优点:操作简洁,无需额外软件。
- 缺点:效率极低,无法实现资源共享。
-
单用户环境:
计算机资源由单一用户独占,多个作业之间无法并发执行。 -
缺乏抽象:
用户需要了解底层硬件细节,例如设备地址、内存布局等。
这种方式虽然简单,但随着计算需求的增加,手工操作已无法满足要求。
1.2.2 操作系统的形成
随着硬件性能的提高和计算需求的增长,批处理系统成为最早的操作系统形式:
- 作业控制:
用户通过作业描述语言提交任务,计算机自动执行作业。 - 资源调度:
批处理系统引入了作业调度机制,允许系统按顺序执行作业,从而提高资源利用率。 - 离线处理:
使用磁带等存储设备将作业排队执行,减少用户干预。
1.2.3 操作系统的进一步发展
20世纪60年代之后,操作系统逐步向多用户和实时方向发展:
- 分时操作系统:
支持多用户共享计算机资源,通过时间片轮转机制实现任务交替运行。 - 实时操作系统:
提供确定性响应,确保任务在规定时间内完成。 - 分布式操作系统:
通过网络连接多个计算节点,实现跨节点的资源共享和任务协作。
1.3 操作系统的基本概念
1.3.1 操作系统的定义和特性
操作系统是管理计算机硬件和软件资源的系统软件,为用户和程序提供接口。
其主要特性包括:
-
并发性:
- 支持多个任务或程序同时运行。
- 提供同步和互斥机制,避免资源竞争。
-
共享性:
- 通过虚拟化技术实现资源的共享使用。
-
虚拟性:
- 将物理资源抽象为虚拟资源,为用户提供更高层次的操作接口。
-
异步性:
- 程序执行过程中可以中断并恢复。
通过这些特性,操作系统将复杂的硬件操作抽象为用户友好的接口。
1.3.2 操作系统的资源管理功能
操作系统是计算机资源的管理者,其主要资源管理功能包括:
-
处理器管理:
- 操作系统通过进程调度算法(如先来先服务、短作业优先等)控制处理器的分配,确保所有任务能够有效执行。
- 实现并发执行,支持多任务和多用户环境。
-
内存管理:
- 操作系统通过内存分配和回收机制,确保程序运行所需的内存得到满足。
- 使用虚拟内存技术,通过页表和段表实现对物理内存的抽象。
-
文件系统管理:
- 操作系统负责文件的存储、读取和权限控制,提供层次化目录结构。
- 通过缓冲和缓存机制,提高文件操作效率。
-
设备管理:
- 操作系统通过设备驱动程序抽象硬件设备,为用户提供一致的操作接口。
- 采用中断机制,实现高效的设备数据传输。
-
网络资源管理:
- 在分布式环境中,操作系统通过协议栈管理网络资源,实现节点之间的通信和资源共享。
1.3.3 操作系统应解决的基本问题
操作系统在运行中需解决以下基本问题:
-
同步问题:
- 确保多个进程或线程之间能够协同工作,避免竞争条件或死锁。
-
死锁问题:
- 通过死锁预防、避免、检测和恢复技术,确保系统资源能够正常分配。
-
安全与保护问题:
- 防止未经授权的访问或恶意操作,确保用户数据和系统稳定性。
-
性能优化问题:
- 通过调度优化和资源分配策略,提高系统响应速度和吞吐量。
1.4 操作系统的基本类型
1.4.1 批量操作系统
批量操作系统是计算机发展的早期操作系统类型,主要用于提高资源利用率。
-
特点:
- 用户将多个作业(程序和数据)提交到输入设备,系统按批次运行作业。
- 采用脱机处理方式,通过输入/输出设备(如磁带)实现作业存储与读取。
-
优点:
- 减少了用户与计算机的交互时间,提高了计算机的资源利用率。
- 系统能够自动化调度作业,减少人为干预。
-
缺点:
- 实时性差,用户需等待作业完成后查看结果。
- 不支持多任务并发运行。
-
典型应用:
- 在科学计算和数据处理领域广泛应用。
1.4.2 分时操作系统
分时操作系统是为了支持多用户共享计算机资源而设计的系统。
-
核心技术:
- 时间片机制:每个用户分配固定的时间片,系统按时间片轮转执行任务。
- 多任务调度:支持多用户、多任务同时运行。
-
优点:
- 提供交互式操作,用户可以实时与系统交互。
- 充分利用计算机资源,提高系统吞吐量。
-
缺点:
- 对硬件资源要求较高。
-
应用场景:
- 用于早期的多用户终端环境,如大学主机系统。
1.4.3 实时操作系统
实时操作系统(Real-Time Operating System,RTOS)用于对时间敏感的应用场景。
-
分类:
- 硬实时系统:严格满足时间限制,典型应用包括航空航天、工业控制等。
- 软实时系统:在一定范围内满足时间要求,典型应用包括多媒体处理、游戏等。
-
特点:
- 高可靠性和确定性。
- 提供中断处理和任务优先级机制。
-
应用领域:
- 医疗设备、自动驾驶、通信设备等。
1.4.4 个人计算机操作系统
个人计算机操作系统(PC OS)是专为单用户设计的操作系统。
-
特点:
- 图形用户界面(GUI),操作直观易用。
- 支持丰富的应用程序和硬件设备。
-
代表系统:
- Windows、macOS、Linux桌面版。
-
应用场景:
- 家庭、办公、娱乐等个人计算环境。
1.4.5 网络操作系统
网络操作系统(Network OS)用于管理联网计算机之间的通信和资源共享。
-
功能:
- 提供文件共享、打印共享、网络通信等功能。
- 管理网络节点间的权限与安全。
-
典型系统:
- Windows Server、UNIX网络版本。
1.4.6 分布式操作系统
分布式操作系统(Distributed OS)在多个计算节点上协同工作。
-
特点:
- 透明性:对用户隐藏底层节点分布。
- 高可靠性:通过冗余和容错机制增强系统稳定性。
-
关键技术:
- 分布式文件系统、分布式进程管理。
-
应用:
- 大规模计算集群、云计算平台。
1.5 操作系统采用的关键技术
1.5.1 操作系统采用的并行处理技术
并行处理技术使操作系统能够充分利用硬件资源,提高计算性能。
-
线程与进程并发:
- 支持多进程、多线程运行,使用多核处理器实现任务并行。
- 提供线程同步与互斥机制,避免资源竞争。
-
多处理器支持:
- 在对称多处理(SMP)架构中,操作系统可将任务动态分配到多个处理器。
- 支持负载均衡和任务迁移。
-
并行算法:
- 提供如快速排序、矩阵乘法等并行算法库。
1.5.2 操作系统采用的虚拟技术
虚拟化技术实现了对物理资源的抽象管理。
-
虚拟内存:
- 通过地址转换机制,将逻辑地址映射到物理地址。
- 提供分页、分段等管理方式。
-
虚拟机:
- 支持在单一物理机上运行多个操作系统实例。
- 提供硬件抽象层,实现资源隔离与共享。
-
容器技术:
- 提供轻量级虚拟化环境,例如Docker。
1.6 UNIX、Linux操作系统概述
1.6.1 UNIX操作系统的发展
UNIX操作系统起源于20世纪60年代,最初由AT&T贝尔实验室开发。
-
发展阶段:
- 早期开发:1969年,Ken Thompson和Dennis Ritchie开发了第一版UNIX。
- 标准化:20世纪80年代,IEEE制定了POSIX标准。
-
影响:
- UNIX的设计思想影响了后续众多操作系统,包括Linux和macOS。
1.6.2 UNIX操作系统的类型及特点
-
UNIX类型:
- System V:商业版UNIX,应用于企业服务器。
- BSD:学术版UNIX,注重网络功能。
-
特点:
- 简洁、优雅的设计,提供强大的命令行接口。
- 高度模块化,支持多用户、多任务。
1.6.3 Linux系统及其特点
Linux是基于UNIX思想开发的自由开源操作系统。
-
发展:
- 1991年,由Linus Torvalds开发的Linux内核问世。
- 通过社区协作和开源贡献迅速发展。
-
特点:
- 开源免费,适合个人用户和企业应用。
- 高度可定制,支持多种硬件架构。
- 提供丰富的软件生态系统。