显示页面讨论过去修订反向链接回到顶部 本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。 ====== 第五章:计算机软件系统 ====== * [[#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 操作系统的概念 ====== **操作系统的定义**: 操作系统是控制和管理计算机硬件与软件资源,合理组织计算机工作流程,方便用户使用计算机的系统软件。它是用户和计算机硬件之间的接口。 **操作系统的作用**: <code> 操作系统地位示意图: 用户 │ ┌────┴────┐ ↓ ↓ 应用软件 系统工具 └────┬────┘ ↓ ┌─────────┐ │ 操作系统 │ ← 核心系统软件 └────┬────┘ ↓ ┌─────────┐ │ 硬件 │ └─────────┘ </code> ====== 5.1.2 操作系统的功能 ====== **五大管理功能**: - **处理器管理**:进程控制、进程同步、进程通信、进程调度 - **存储管理**:内存分配、地址映射、存储保护、虚拟存储 - **文件管理**:文件组织、文件存储、文件检索、文件共享 - **设备管理**:设备分配、设备驱动、缓冲管理、虚拟设备 - **用户接口**:命令接口、程序接口、图形接口 ====== 5.1.3 操作系统类型 ====== **批处理操作系统**: - 成批处理作业 - 用户不直接与计算机交互 - 效率高,但周转时间长 **分时操作系统**: - 多用户同时使用 - 采用时间片轮转调度 - 人机交互性好 - 代表:UNIX、Linux **实时操作系统**: - 对外部事件及时响应 - 严格的时间限制 - 用于工业控制、军事系统等 - 代表:VxWorks、RT-Linux **网络操作系统**: - 管理网络资源 - 提供网络服务 - 代表:Windows Server、Linux **分布式操作系统**: - 多台计算机协同工作 - 对用户透明 - 高可靠性和并行处理能力 **嵌入式操作系统**: - 运行在嵌入式设备中 - 资源受限 - 专用性强 - 代表:Android、iOS、RTOS <code> 操作系统发展时间线: 1950s 1960s 1970s 1980s 1990s 2000s │ │ │ │ │ │ ▼ ▼ ▼ ▼ ▼ ▼ 批处理 → 分时 → 个人电脑 → 网络 → 分布式 → 移动/云 系统 系统 操作系统 操作系统 操作系统 操作系统 │ └── UNIX(1969) → Linux(1991) └── Windows(1985) └── Mac OS(1984) </code> ====== 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等 <code> 语言层次对比: 高级语言: int sum = a + b; ↓ 编译/解释 汇编语言: MOV AX, [a] ADD AX, [b] MOV [sum], AX ↓ 汇编 机器语言: 10110000 01101010 ... ↓ CPU执行 硬件操作: 寄存器运算 </code> ====== 5.2.2 编译程序 ====== **编译程序**:将高级语言源程序翻译成目标机器语言程序的系统软件。 **编译过程**: <code> 编译过程各阶段: 源程序 │ ▼ ┌──────────┐ 词法分析 ┌──────────┐ │ 词法分析器│ ───────→ │ 单词序列 │ └──────────┘ └────┬─────┘ ↓ ┌──────────┐ 语法分析 ┌──────────┐ │ 语法分析器│ ───────→ │ 语法树 │ └──────────┘ └────┬─────┘ ↓ ┌──────────┐ 语义分析 ┌──────────┐ │ 语义分析器│ ───────→ │ 中间代码 │ └──────────┘ └────┬─────┘ ↓ ┌──────────┐ 代码优化 ┌──────────┐ │ 代码优化器│ ───────→ │ 优化代码 │ └──────────┘ └────┬─────┘ ↓ ┌──────────┐ 代码生成 ┌──────────┐ │ 代码生成器│ ───────→ │ 目标代码 │ └──────────┘ └──────────┘ ↓ 目标程序 </code> **各阶段说明**: - **词法分析**:将字符流转换为单词(Token)序列 - **语法分析**:根据语法规则构建语法树 - **语义分析**:检查语义正确性,进行类型检查 - **中间代码生成**:生成与机器无关的中间代码 - **代码优化**:改进代码质量,提高效率 - **目标代码生成**:生成特定机器的汇编或机器代码 ====== 5.2.3 解释程序 ====== **解释程序**:边翻译边执行,不生成目标程序。 **特点**: - 执行效率低 - 便于调试 - 跨平台性好 - 代表:Python解释器、JavaScript引擎 **编译 vs 解释**: <code> 编译执行: 源程序 → [编译器] → 目标程序 → [执行] → 结果 (一次编译,多次执行) 解释执行: 源程序 → [解释器] → 结果 (边解释边执行,每次重新解释) </code> **Java的混合模式**: Java采用编译+解释的方式: 1. Java源程序(.java)编译为字节码(.class) 2. 字节码在JVM上解释执行或JIT编译执行 <code> Java程序执行流程: Hello.java → [javac编译] → Hello.class(字节码) ↓ ┌──────────────┐ │ JVM │ │ ┌──────────┐ │ │ │解释执行 │ │ │ │或JIT编译 │ │ │ └──────────┘ │ └──────┬───────┘ ↓ 机器码执行 </code> ------ ===== 5.3 数据库管理系统 ===== ====== 5.3.1 数据库系统的组成 ====== **数据库系统(DBS)**由以下部分组成: - **数据库(DB)**:存储在计算机内的有组织的数据集合 - **数据库管理系统(DBMS)**:管理数据库的软件 - **应用程序**:使用数据库的程序 - **数据库管理员(DBA)**:管理和维护数据库的人员 - **用户**:最终使用数据库的人员 <code> 数据库系统结构: 用户 │ ┌────┴────┐ ↓ ↓ 应用程序 数据库管理员 └────┬────┘ ↓ ┌─────────┐ │ DBMS │ │ ┌─────┐ │ │ │DDL │ │ 数据定义语言 │ │DML │ │ 数据操纵语言 │ │DCL │ │ 数据控制语言 │ └─────┘ │ └────┬────┘ ↓ ┌─────────┐ │ 操作系统 │ └────┬────┘ ↓ ┌─────────┐ │ 数据库 │ └─────────┘ </code> ====== 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使用 <code> Git基本工作流程: 工作目录 → [add] → 暂存区 → [commit] → 本地仓库 → [push] → 远程仓库 ↑ │ └──────────────── [pull/clone] ←───────────────────────┘ </code> **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 登录 Detach Close 该主题尚不存在 您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。 计算机操作系统/第五章_计算机软件系统.txt 最后更改: 2026/02/09 23:27由 张叶安 登录