第五章:计算机软件系统
章节概述
本章介绍计算机软件系统的组成和分类,包括系统软件和应用软件两大类别。重点讲解操作系统、程序设计语言处理系统、数据库管理系统等核心系统软件的功能和作用,以及软件开发工具和应用软件的类型。
本章重点:
- 操作系统的功能和类型
- 编译程序的工作过程
- 数据库管理系统的功能
- 软件的分类
本章难点:
- 编译过程的各个阶段
- 解释与编译的区别
5.1 操作系统
5.1.1 操作系统的概念
操作系统的定义: 操作系统是控制和管理计算机硬件与软件资源,合理组织计算机工作流程,方便用户使用计算机的系统软件。它是用户和计算机硬件之间的接口。
操作系统的作用:
操作系统地位示意图:
用户
│
┌────┴────┐
↓ ↓
应用软件 系统工具
└────┬────┘
↓
┌─────────┐
│ 操作系统 │ ← 核心系统软件
└────┬────┘
↓
┌─────────┐
│ 硬件 │
└─────────┘
5.1.2 操作系统的功能
五大管理功能:
- 处理器管理:进程控制、进程同步、进程通信、进程调度
- 存储管理:内存分配、地址映射、存储保护、虚拟存储
- 文件管理:文件组织、文件存储、文件检索、文件共享
- 设备管理:设备分配、设备驱动、缓冲管理、虚拟设备
- 用户接口:命令接口、程序接口、图形接口
5.1.3 操作系统类型
批处理操作系统:
- 成批处理作业
- 用户不直接与计算机交互
- 效率高,但周转时间长
分时操作系统:
- 多用户同时使用
- 采用时间片轮转调度
- 人机交互性好
- 代表:UNIX、Linux
实时操作系统:
- 对外部事件及时响应
- 严格的时间限制
- 用于工业控制、军事系统等
- 代表:VxWorks、RT-Linux
网络操作系统:
- 管理网络资源
- 提供网络服务
- 代表:Windows Server、Linux
分布式操作系统:
- 多台计算机协同工作
- 对用户透明
- 高可靠性和并行处理能力
嵌入式操作系统:
- 运行在嵌入式设备中
- 资源受限
- 专用性强
- 代表:Android、iOS、RTOS
操作系统发展时间线:
1950s 1960s 1970s 1980s 1990s 2000s
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
批处理 → 分时 → 个人电脑 → 网络 → 分布式 → 移动/云
系统 系统 操作系统 操作系统 操作系统 操作系统
│
└── UNIX(1969) → Linux(1991)
└── Windows(1985)
└── Mac OS(1984)
5.1.4 主流操作系统介绍
Windows:
- Microsoft公司开发
- 图形用户界面
- 应用广泛,兼容性好
- 主要版本:Windows 10/11、Windows Server
Linux:
- 开源操作系统
- 基于UNIX
- 稳定、安全、免费
- 发行版:Ubuntu、CentOS、Debian等
macOS:
- Apple公司开发
- 基于UNIX
- 优秀的用户体验
- 与Apple硬件深度整合
Android:
- Google开发
- 基于Linux内核
- 移动设备主流系统
- 开源,生态丰富
iOS:
- Apple开发
- 专用于iPhone、iPad
- 封闭但优质的生态系统
5.2 程序设计语言处理系统
5.2.1 程序设计语言分类
机器语言:
- 二进制代码
- 计算机直接执行
- 难以编写和阅读
汇编语言:
- 使用助记符代替二进制
- 与机器语言一一对应
- 需要汇编程序翻译
- 依赖于特定硬件
高级语言:
- 接近自然语言
- 独立于硬件
- 需要编译或解释
- 代表:C、C++、Java、Python等
语言层次对比:
高级语言: int sum = a + b;
↓ 编译/解释
汇编语言: MOV AX, [a]
ADD AX, [b]
MOV [sum], AX
↓ 汇编
机器语言: 10110000 01101010 ...
↓ CPU执行
硬件操作: 寄存器运算
5.2.2 编译程序
编译程序:将高级语言源程序翻译成目标机器语言程序的系统软件。
编译过程:
编译过程各阶段:
源程序
│
▼
┌──────────┐ 词法分析 ┌──────────┐
│ 词法分析器│ ───────→ │ 单词序列 │
└──────────┘ └────┬─────┘
↓
┌──────────┐ 语法分析 ┌──────────┐
│ 语法分析器│ ───────→ │ 语法树 │
└──────────┘ └────┬─────┘
↓
┌──────────┐ 语义分析 ┌──────────┐
│ 语义分析器│ ───────→ │ 中间代码 │
└──────────┘ └────┬─────┘
↓
┌──────────┐ 代码优化 ┌──────────┐
│ 代码优化器│ ───────→ │ 优化代码 │
└──────────┘ └────┬─────┘
↓
┌──────────┐ 代码生成 ┌──────────┐
│ 代码生成器│ ───────→ │ 目标代码 │
└──────────┘ └──────────┘
↓
目标程序
各阶段说明:
- 词法分析:将字符流转换为单词(Token)序列
- 语法分析:根据语法规则构建语法树
- 语义分析:检查语义正确性,进行类型检查
- 中间代码生成:生成与机器无关的中间代码
- 代码优化:改进代码质量,提高效率
- 目标代码生成:生成特定机器的汇编或机器代码
5.2.3 解释程序
解释程序:边翻译边执行,不生成目标程序。
特点:
- 执行效率低
- 便于调试
- 跨平台性好
- 代表:Python解释器、JavaScript引擎
编译 vs 解释:
编译执行: 源程序 → [编译器] → 目标程序 → [执行] → 结果 (一次编译,多次执行) 解释执行: 源程序 → [解释器] → 结果 (边解释边执行,每次重新解释)
Java的混合模式:
Java采用编译+解释的方式:
1. Java源程序(.java)编译为字节码(.class) 2. 字节码在JVM上解释执行或JIT编译执行
Java程序执行流程:
Hello.java → [javac编译] → Hello.class(字节码)
↓
┌──────────────┐
│ JVM │
│ ┌──────────┐ │
│ │解释执行 │ │
│ │或JIT编译 │ │
│ └──────────┘ │
└──────┬───────┘
↓
机器码执行
5.3 数据库管理系统
5.3.1 数据库系统的组成
数据库系统(DBS)由以下部分组成:
- 数据库(DB):存储在计算机内的有组织的数据集合
- 数据库管理系统(DBMS):管理数据库的软件
- 应用程序:使用数据库的程序
- 数据库管理员(DBA):管理和维护数据库的人员
- 用户:最终使用数据库的人员
数据库系统结构:
用户
│
┌────┴────┐
↓ ↓
应用程序 数据库管理员
└────┬────┘
↓
┌─────────┐
│ DBMS │
│ ┌─────┐ │
│ │DDL │ │ 数据定义语言
│ │DML │ │ 数据操纵语言
│ │DCL │ │ 数据控制语言
│ └─────┘ │
└────┬────┘
↓
┌─────────┐
│ 操作系统 │
└────┬────┘
↓
┌─────────┐
│ 数据库 │
└─────────┘
5.3.2 DBMS的主要功能
数据定义:
- 提供数据定义语言(DDL)
- 定义数据库结构(表、索引、约束等)
数据操纵:
- 提供数据操纵语言(DML)
- 查询、插入、删除、修改数据
数据控制:
- 提供数据控制语言(DCL)
- 权限管理、完整性控制、并发控制
数据库维护:
- 备份与恢复
- 性能监控与优化
- 数据重组
5.3.3 主流数据库系统
关系型数据库:
- Oracle:企业级大型数据库
- MySQL:开源,Web应用广泛使用
- SQL Server:Microsoft开发
- PostgreSQL:功能强大的开源数据库
- SQLite:轻量级嵌入式数据库
非关系型数据库(NoSQL):
- MongoDB:文档型数据库
- Redis:键值存储,内存数据库
- Cassandra:列族存储
- Neo4j:图数据库
5.4 软件开发工具
5.4.1 集成开发环境(IDE)
IDE:提供代码编辑、编译、调试等功能的集成软件环境。
主流IDE:
- Visual Studio:Microsoft,支持多种语言
- IntelliJ IDEA:JetBrains,Java开发首选
- Eclipse:开源,Java开发
- PyCharm:JetBrains,Python开发
- VS Code:轻量级,插件丰富
5.4.2 版本控制工具
版本控制:管理代码变更历史,支持多人协作。
Git:
- 分布式版本控制系统
- 速度快,功能强大
- 支持分支管理
- 配合GitHub/GitLab使用
Git基本工作流程: 工作目录 → [add] → 暂存区 → [commit] → 本地仓库 → [push] → 远程仓库 ↑ │ └──────────────── [pull/clone] ←───────────────────────┘
SVN:集中式版本控制系统。
5.4.3 其他开发工具
构建工具:Maven、Gradle、Ant、Make
测试工具:JUnit、Selenium、JMeter
项目管理:JIRA、禅道、Trello
持续集成/部署(CI/CD):Jenkins、GitLab CI、GitHub Actions
5.5 应用软件
5.5.1 应用软件分类
办公软件:
- 文字处理:Microsoft Word、WPS文字
- 电子表格:Microsoft Excel、WPS表格
- 演示文稿:Microsoft PowerPoint、WPS演示
- 办公套件:Microsoft Office、WPS Office、LibreOffice
多媒体软件:
- 图像处理:Photoshop、GIMP
- 视频编辑:Premiere、Final Cut Pro
- 音频处理:Audition、Audacity
网络软件:
- 浏览器:Chrome、Firefox、Edge、Safari
- 即时通讯:微信、QQ、钉钉
- 邮件客户端:Outlook、Thunderbird
专业软件:
- CAD:AutoCAD、SolidWorks
- 统计分析:SPSS、SAS、R
- 设计:Sketch、Figma
- 开发工具:见5.4节
5.5.2 软件许可模式
商业软件:
- 付费购买使用许可
- 闭源
- 提供技术支持
- 代表:Microsoft Office、Adobe Photoshop
开源软件:
- 源代码公开
- 自由使用和修改
- 社区驱动
- 代表:Linux、Firefox、LibreOffice
免费软件:
- 免费使用
- 不一定是开源
- 代表:微信、QQ
共享软件:
- 试用期免费
- 试用期后需付费
5.6 练习题
一、选择题
1. 操作系统的五大功能不包括( ) A. 处理器管理 B. 存储管理 C. 网络管理 D. 设备管理
2. 以下属于实时操作系统的是( ) A. Windows B. Linux C. VxWorks D. Android
3. 编译程序的作用是( ) A. 直接执行源程序 B. 将源程序翻译成目标程序 C. 调试程序 D. 管理内存
4. Java程序的执行方式是( ) A. 纯编译 B. 纯解释 C. 编译+解释 D. 直接执行
5. 以下属于NoSQL数据库的是( ) A. Oracle B. MySQL C. MongoDB D. SQL Server
二、填空题
1. 操作系统是用户和_______之间的接口。
2. 程序设计语言分为_______、_______和_______三类。
3. 编译过程的五个阶段是_______、_______、_______、_______、_______。
4. DBMS的主要功能包括_______、_______和_______。
5. 常用的版本控制工具有_______和_______。
三、简答题
1. 简述操作系统的五大管理功能。
2. 比较编译和解释的区别。
3. 什么是数据库管理系统?它有哪些主要功能?
4. 简述开源软件和商业软件的区别。
参考答案:
一、选择题:1.C 2.C 3.B 4.C 5.C
二、填空题:
1. 计算机硬件 2. 机器语言、汇编语言、高级语言 3. 词法分析、语法分析、语义分析与中间代码生成、代码优化、目标代码生成 4. 数据定义、数据操纵、数据控制 5. Git、SVN