1软件概述
- 程序:用程序设计语言描述的、适合计算机执行的指令(语句)序列,告诉计算机"做什么"和"怎么做"。
- 数据:程序处理的对象,包括输入数据和运行所需的初始化数据。
- 文档:与程序开发、维护和使用有关的图文资料,如需求说明书、用户手册等。
1.1 硬件与软件的关系
硬件是软件运行的物质基础,软件指挥硬件完成任务,二者缺一不可。没有软件的计算机称为"裸机", 裸机上只能运行机器语言,几乎无法使用;正是一层层软件的封装,才形成了易用的计算机系统。
软件运行于裸机之上形成层次:裸机 → 操作系统 → 语言处理程序/数据库管理系统等系统软件 → 应用软件。 下层为上层提供服务,上层不必了解下层的硬件细节。
1.2 软件的分类
系统软件
管理计算机、支持应用开发运行的软件,面向硬件
应用软件
为解决各类具体应用问题而编制,面向用户
判断技巧:操作系统、编译程序、数据库管理系统、诊断程序属于系统软件; 办公软件、游戏、浏览器、微信属于应用软件。二者的区别在于"为谁服务"——系统软件管理机器本身,应用软件解决用户具体问题。
2系统软件
系统软件是控制和协调计算机及外部设备、支持应用软件开发和运行的一类软件, 它使计算机的各种资源得到充分利用,并为用户提供方便的使用环境。主要包括:
| 类别 | 作用 | 例子 |
|---|---|---|
| 操作系统 | 最基本、最重要的系统软件,管理软硬件资源 | Windows、Linux、macOS、Android、HarmonyOS |
| 语言处理程序 | 把高级语言/汇编语言翻译成机器语言 | 汇编器、编译器、解释器(如 gcc、JVM) |
| 数据库管理系统 | 建立、使用和维护数据库 | MySQL、Oracle、SQL Server |
| 服务性程序(支撑软件) | 辅助日常使用与系统维护 | 诊断程序、调试程序、备份工具、压缩软件、设备驱动程序 |
| 网络软件 | 支持网络通信与管理 | 协议栈、网络操作系统 |
设备驱动程序是操作系统与硬件设备之间的"翻译官",没有正确的驱动,打印机、显卡等设备无法正常工作。
3操作系统概述
3.1 操作系统的作用
- 资源管理者:管理 CPU、内存、文件、设备,使多道程序能共享并有序使用资源。
- 用户与硬件之间的接口:用户通过命令行、图形界面或系统调用使用计算机,无需直接操作硬件。
- 虚拟机/扩展机:在裸机上提供文件、进程等好用的抽象,把难用的硬件封装成友好的服务。
3.2 操作系统的分类
| 分类角度 | 类型 | 特点 / 例子 |
|---|---|---|
| 按用户数 | 单用户单任务 | 同一时间只能一个用户运行一个程序,如 MS-DOS |
| 单用户多任务 | 一个用户可同时运行多个程序,如 Windows、macOS | |
| 多用户多任务 | 多个用户通过终端共享主机,如 Linux、UNIX | |
| 按界面 | 命令行界面 CLI | 输入命令操作,如 DOS、Linux Shell |
| 图形界面 GUI | 窗口、图标、菜单操作,直观易用 | |
| 按应用场景 | 批处理 / 分时 / 实时 / 网络 / 嵌入式 | 实时系统用于导弹控制、工业控制(响应及时可靠);嵌入式 OS 如 FreeRTOS、嵌入式 Linux |
3.3 常见操作系统
- Windows:微软出品,桌面市场占有率最高,软件生态丰富(Windows 10/11)。
- macOS:苹果电脑专用,基于 UNIX,界面精美、与苹果生态联动好。
- Linux:开源免费、稳定安全、可定制,广泛用于服务器、嵌入式和超算;发行版有 Ubuntu、CentOS、Debian 等。国产操作系统如统信 UOS、麒麟均基于 Linux。
- UNIX:历史悠久的多用户多任务系统,是 Linux/macOS 的技术源头。
- 移动操作系统:Google Android(基于 Linux 内核)、Apple iOS、华为 HarmonyOS 鸿蒙。
4操作系统的五大管理功能
从资源管理角度,操作系统具有处理器(进程)管理、存储器管理、文件管理、设备管理、作业管理五大功能。
4.1 处理器管理(进程管理)
在多任务系统中,操作系统把 CPU 时间合理分配给各个程序:
- 进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;程序是静态的,进程是动态的、有生命周期的。
- 线程是进程内的执行单元,一个进程可含多个线程,线程是 CPU 调度的基本单位,同进程内线程共享资源。
- 进程三态:就绪态、运行态、阻塞(等待)态,在调度程序控制下相互转换。
- 常用调度算法:先来先服务(FCFS)、短作业优先、时间片轮转、优先级调度。
- 死锁:多个进程互相等待对方占有的资源而无限僵持;产生死锁需同时具备互斥、占有且等待、不可剥夺、循环等待四个必要条件。
4.2 存储器管理(内存管理)
- 内存分配与回收:为每个程序分配内存空间,结束后及时回收。
- 地址映射:把程序中的逻辑地址转换为内存中的物理地址。
- 内存保护:保证各程序只能访问自己的空间,互不干扰。
- 虚拟内存:结合磁盘扩"大"内存,基于请求分页/分段和页面置换算法(如 LRU 最近最久未用)。
- 内存管理方案经历了:单一连续分配 → 分区 → 分段、分页、段页式管理。
4.3 文件管理
操作系统以文件为单位管理外存上的信息,并以树形目录(文件夹)组织文件,提供建立、删除、读写、复制、检索等操作。 文件管理还负责文件存储空间管理、文件共享与保护。常见文件系统有 FAT32、NTFS(Windows)、ext4(Linux)、APFS(macOS)。
D:\
└── 学习资料\
├── 计算机导论\
│ ├── 第一章-硬件.pptx
│ └── 复习笔记.docx
└── 程序设计\
└── hello.c
↑ 树形目录结构:路径唯一标识一个文件
4.4 设备管理
负责管理各类 I/O 设备:通过设备驱动程序驱动硬件,利用缓冲技术、SPOOLing(假脱机)技术、中断技术、DMA 缓解高速 CPU 与慢速外设之间的速度矛盾,提高 CPU 与设备的并行程度。
4.5 作业管理
作业是用户提交给系统的一个完整任务(程序+数据+处理步骤)。作业管理负责作业的组织、调度与控制, 提供命令接口(命令行)与程序接口(系统调用 API)。
记忆口诀:进、存、文、设、作——进程、内存、文件、设备、作业,五大管理是操作系统部分的核心考点。
5应用软件
应用软件是为特定应用目的、在系统软件支持下开发的程序,直接面向最终用户。种类繁多,常见分类如下:
| 类别 | 典型软件 |
|---|---|
| 办公自动化 | Microsoft Office(Word/Excel/PowerPoint)、WPS、金山文档 |
| 网页浏览与通信 | Chrome、Edge、Firefox;微信、QQ、电子邮件客户端 |
| 图形图像设计 | Photoshop、Illustrator、CorelDRAW、AutoCAD、Blender |
| 多媒体处理 | 剪映、Premiere、格式工厂、网易云音乐 |
| 科学计算与工程 | MATLAB、SPSS、ANSYS、仿真软件 |
| 企业管理信息系统 | ERP(企业资源计划)、CRM(客户关系管理)、财务软件、OA 系统 |
| 教育、游戏及其他 | 在线学习平台、各种游戏、导航地图、手机银行 App |
应用软件的形态也从早期的单机软件发展到网络应用、移动 App、小程序、SaaS 云应用(如在线文档、腾讯会议), 用户无需安装,通过浏览器即可使用。
6程序设计语言
程序设计语言是人与计算机交流、描述解题步骤的工具。其发展经历了三代(也有"四代语言"说法):
| 代次 | 语言 | 特点 |
|---|---|---|
| 第一代 | 机器语言 | 由 0、1 二进制代码组成,是 CPU 唯一能直接执行的语言;执行快、可读性极差、依赖具体机器、难记难改。 |
| 第二代 | 汇编语言 | 用助记符(如 MOV、ADD)代替二进制指令,仍面向机器、与硬件结构紧密相关,需汇编器翻译。 |
| 第三代 | 高级语言 | 接近自然语言和数学表达式,独立于机型、易学易用,如 C、Java、Python、C++。 |
| 第四代 | 4GL(非过程化语言) | 只需说明"做什么"而非"怎么做",如 SQL 查询语言、报表生成器。 |
机器语言和汇编语言统称为低级语言(这里"低级"指更接近硬件,并非"落后")。汇编语言示例:
; 计算 3 + 5(x86 汇编,用助记符书写)
MOV AX, 3 ; 把 3 送入 AX 寄存器
ADD AX, 5 ; AX = AX + 5
HLT ; 停机
6.1 高级语言的执行方式
高级语言程序必须翻译成机器语言才能执行,翻译方式分为编译型与解释型:
编译型
- 用编译器把整个源程序一次性翻译成可执行文件
- 以后运行直接执行目标程序,速度快
- 代表:C、C++
解释型
- 解释器逐条翻译并立即执行,不生成完整可执行文件
- 跨平台灵活,但运行速度较慢
- 代表:Python、JavaScript、PHP
Java 介于两者之间:源代码先编译成与平台无关的字节码,再由各平台的 JVM(Java 虚拟机)解释或即时编译执行,从而实现"一次编写,到处运行"。
7语言处理程序
语言处理程序是把一种语言书写的程序(源程序)翻译成另一种语言程序(目标程序)的系统软件。具体包括:
- 汇编程序(汇编器):把汇编语言源程序翻译成机器语言目标程序。
- 编译程序(编译器):把高级语言源程序整个翻译成机器语言(或汇编)目标程序。
- 解释程序(解释器):对源程序逐句解释执行,不产生保存的目标程序。
7.1 编译的五个阶段
- 词法分析:把字符流切分为一个个单词符号(关键字、标识符、常数、运算符)。
- 语法分析:根据语法规则把单词组成各类语法成分(表达式、语句、函数),生成语法树。
- 语义分析与中间代码生成:检查类型等语义错误,生成介于源语言和机器语言之间的中间代码。
- 代码优化:对中间代码进行等价变换,使目标程序运行更快、占用更少。
- 目标代码生成:把优化后的中间代码转换为特定机器的机器语言或汇编代码。
全过程还有符号表管理与出错处理贯穿其中。链接器再把目标文件与库函数链接成最终可执行文件。
源程序.c → [词法→语法→语义→优化→代码生成] → 目标程序.obj → 链接 → a.exe
编译阶段(compiler) 链接器
8软件知识产权
软件是知识密集型产品,受法律保护。与软件相关的知识产权主要包括著作权(版权)、专利权、商标权和商业秘密。
8.1 软件著作权
- 软件开发者对其开发的软件依法享有发表权、署名权、修改权、复制权、发行权、信息网络传播权等专有权利。
- 我国《计算机软件保护条例》规定:软件著作权自软件开发完成之日起自动产生(自动保护原则),不以登记为前提,但登记有助于举证。
- 保护期:自然人的软件为终生及其死亡后 50 年;法人作品一般为首次发表后 50 年。
8.2 软件的授权方式
| 类型 | 说明 |
|---|---|
| 商业软件 | 付费购买使用许可,源码通常不公开,如 Microsoft Office |
| 共享软件(Shareware) | 可先免费试用,满意后再付费注册,常有限时/功能限制 |
| 免费软件(Freeware) | 可免费使用和传播,但版权仍归作者,不一定开源 |
| 自由/开源软件(FOSS) | 公开源代码,允许使用、修改和再分发,遵循相应开源协议 |
8.3 常见开源协议
开源不等于"无任何限制"。常见协议:MIT(限制最少,几乎可任意使用)、Apache 2.0(宽松且含专利授权条款)、 GPL(具有"传染性":修改后再分发必须同样开源,如 Linux 内核)、BSD(宽松)等。
使用盗版软件、未经授权复制传播他人软件,或在开源项目中不遵守协议,都构成侵权,需承担民事甚至刑事责任。尊重知识产权是每个计算机从业者的基本素养。
本章小结:软件 = 程序 + 数据 + 文档,分系统软件与应用软件;操作系统以五大管理(进程、内存、文件、设备、作业)成为软硬件之间的核心枢纽;程序设计语言从机器语言、汇编语言发展到高级语言,经编译或解释执行;软件使用应尊重著作权与开源许可。下一章学习把计算机连成整体的——计算机网络。