====== 第五章:计算机软件系统 ======
* [[#5.1 操作系统|5.1 操作系统]]
* [[#5.2 程序设计语言处理系统|5.2 程序设计语言处理系统]]
* [[#5.3 数据库管理系统|5.3 数据库管理系统]]
* [[#5.4 软件开发工具|5.4 软件开发工具]]
* [[#5.5 应用软件|5.5 应用软件]]
* [[#5.6 练习题|5.6 练习题]]
----
===== 章节概述 =====
本章介绍计算机软件系统的组成和分类,包括系统软件和应用软件两大类别。重点讲解操作系统、程序设计语言处理系统、数据库管理系统等核心系统软件的功能和作用,以及软件开发工具和应用软件的类型。
**本章重点**:
- 操作系统的功能和类型
- 编译程序的工作过程
- 数据库管理系统的功能
- 软件的分类
**本章难点**:
- 编译过程的各个阶段
- 解释与编译的区别
----
===== 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