本章介绍计算机软件系统的组成和分类,包括系统软件和应用软件两大类别。重点讲解操作系统、程序设计语言处理系统、数据库管理系统等核心系统软件的功能和作用,以及软件开发工具和应用软件的类型。
本章重点:
本章难点:
操作系统的定义: 操作系统是控制和管理计算机硬件与软件资源,合理组织计算机工作流程,方便用户使用计算机的系统软件。它是用户和计算机硬件之间的接口。
操作系统的作用:
操作系统地位示意图:
用户
│
┌────┴────┐
↓ ↓
应用软件 系统工具
└────┬────┘
↓
┌─────────┐
│ 操作系统 │ ← 核心系统软件
└────┬────┘
↓
┌─────────┐
│ 硬件 │
└─────────┘
五大管理功能:
批处理操作系统:
分时操作系统:
实时操作系统:
网络操作系统:
分布式操作系统:
嵌入式操作系统:
操作系统发展时间线:
1950s 1960s 1970s 1980s 1990s 2000s
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
批处理 → 分时 → 个人电脑 → 网络 → 分布式 → 移动/云
系统 系统 操作系统 操作系统 操作系统 操作系统
│
└── UNIX(1969) → Linux(1991)
└── Windows(1985)
└── Mac OS(1984)
Windows:
Linux:
macOS:
Android:
iOS:
机器语言:
汇编语言:
高级语言:
语言层次对比:
高级语言: int sum = a + b;
↓ 编译/解释
汇编语言: MOV AX, [a]
ADD AX, [b]
MOV [sum], AX
↓ 汇编
机器语言: 10110000 01101010 ...
↓ CPU执行
硬件操作: 寄存器运算
编译程序:将高级语言源程序翻译成目标机器语言程序的系统软件。
编译过程:
编译过程各阶段:
源程序
│
▼
┌──────────┐ 词法分析 ┌──────────┐
│ 词法分析器│ ───────→ │ 单词序列 │
└──────────┘ └────┬─────┘
↓
┌──────────┐ 语法分析 ┌──────────┐
│ 语法分析器│ ───────→ │ 语法树 │
└──────────┘ └────┬─────┘
↓
┌──────────┐ 语义分析 ┌──────────┐
│ 语义分析器│ ───────→ │ 中间代码 │
└──────────┘ └────┬─────┘
↓
┌──────────┐ 代码优化 ┌──────────┐
│ 代码优化器│ ───────→ │ 优化代码 │
└──────────┘ └────┬─────┘
↓
┌──────────┐ 代码生成 ┌──────────┐
│ 代码生成器│ ───────→ │ 目标代码 │
└──────────┘ └──────────┘
↓
目标程序
各阶段说明:
解释程序:边翻译边执行,不生成目标程序。
特点:
编译 vs 解释:
编译执行: 源程序 → [编译器] → 目标程序 → [执行] → 结果 (一次编译,多次执行) 解释执行: 源程序 → [解释器] → 结果 (边解释边执行,每次重新解释)
Java的混合模式:
Java采用编译+解释的方式:
1. Java源程序(.java)编译为字节码(.class) 2. 字节码在JVM上解释执行或JIT编译执行
Java程序执行流程:
Hello.java → [javac编译] → Hello.class(字节码)
↓
┌──────────────┐
│ JVM │
│ ┌──────────┐ │
│ │解释执行 │ │
│ │或JIT编译 │ │
│ └──────────┘ │
└──────┬───────┘
↓
机器码执行
数据库系统(DBS)由以下部分组成:
数据库系统结构:
用户
│
┌────┴────┐
↓ ↓
应用程序 数据库管理员
└────┬────┘
↓
┌─────────┐
│ DBMS │
│ ┌─────┐ │
│ │DDL │ │ 数据定义语言
│ │DML │ │ 数据操纵语言
│ │DCL │ │ 数据控制语言
│ └─────┘ │
└────┬────┘
↓
┌─────────┐
│ 操作系统 │
└────┬────┘
↓
┌─────────┐
│ 数据库 │
└─────────┘
数据定义:
数据操纵:
数据控制:
数据库维护:
关系型数据库:
非关系型数据库(NoSQL):
IDE:提供代码编辑、编译、调试等功能的集成软件环境。
主流IDE:
版本控制:管理代码变更历史,支持多人协作。
Git:
Git基本工作流程: 工作目录 → [add] → 暂存区 → [commit] → 本地仓库 → [push] → 远程仓库 ↑ │ └──────────────── [pull/clone] ←───────────────────────┘
SVN:集中式版本控制系统。
构建工具:Maven、Gradle、Ant、Make
测试工具:JUnit、Selenium、JMeter
项目管理:JIRA、禅道、Trello
持续集成/部署(CI/CD):Jenkins、GitLab CI、GitHub Actions
办公软件:
多媒体软件:
网络软件:
专业软件:
商业软件:
开源软件:
免费软件:
共享软件:
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