💿

计算机软件

软件是计算机系统的灵魂。本章讲解软件的概念与分类,重点介绍操作系统的五大管理功能, 并介绍应用软件、程序设计语言的发展、语言处理程序(编译与解释)以及软件知识产权。

📚 8 个小节🧠 操作系统五大管理🔤 三代语言⚖️ 知识产权

1软件概述

软件(Software):计算机系统中与硬件相互依存的另一部分,是包括程序、数据及其相关文档的完整集合。 即:软件 = 程序 + 数据 + 文档。
  • 程序:用程序设计语言描述的、适合计算机执行的指令(语句)序列,告诉计算机"做什么"和"怎么做"。
  • 数据:程序处理的对象,包括输入数据和运行所需的初始化数据。
  • 文档:与程序开发、维护和使用有关的图文资料,如需求说明书、用户手册等。

1.1 硬件与软件的关系

硬件是软件运行的物质基础,软件指挥硬件完成任务,二者缺一不可。没有软件的计算机称为"裸机", 裸机上只能运行机器语言,几乎无法使用;正是一层层软件的封装,才形成了易用的计算机系统。

软件运行于裸机之上形成层次:裸机 → 操作系统 → 语言处理程序/数据库管理系统等系统软件 → 应用软件。 下层为上层提供服务,上层不必了解下层的硬件细节。

1.2 软件的分类

🛠️

系统软件

管理计算机、支持应用开发运行的软件,面向硬件

📝

应用软件

为解决各类具体应用问题而编制,面向用户

🔑

判断技巧:操作系统、编译程序、数据库管理系统、诊断程序属于系统软件; 办公软件、游戏、浏览器、微信属于应用软件。二者的区别在于"为谁服务"——系统软件管理机器本身,应用软件解决用户具体问题。

2系统软件

系统软件是控制和协调计算机及外部设备、支持应用软件开发和运行的一类软件, 它使计算机的各种资源得到充分利用,并为用户提供方便的使用环境。主要包括:

类别作用例子
操作系统最基本、最重要的系统软件,管理软硬件资源Windows、Linux、macOS、Android、HarmonyOS
语言处理程序把高级语言/汇编语言翻译成机器语言汇编器、编译器、解释器(如 gcc、JVM)
数据库管理系统建立、使用和维护数据库MySQL、Oracle、SQL Server
服务性程序(支撑软件)辅助日常使用与系统维护诊断程序、调试程序、备份工具、压缩软件、设备驱动程序
网络软件支持网络通信与管理协议栈、网络操作系统
📝

设备驱动程序是操作系统与硬件设备之间的"翻译官",没有正确的驱动,打印机、显卡等设备无法正常工作。

3操作系统概述

操作系统(Operating System,OS):是管理和控制计算机硬件与软件资源的一组大型程序, 是最贴近硬件的系统软件;它合理组织计算机的工作流程,并为用户和应用程序提供方便的接口与运行环境。

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 编译的五个阶段

  1. 词法分析:把字符流切分为一个个单词符号(关键字、标识符、常数、运算符)。
  2. 语法分析:根据语法规则把单词组成各类语法成分(表达式、语句、函数),生成语法树。
  3. 语义分析与中间代码生成:检查类型等语义错误,生成介于源语言和机器语言之间的中间代码。
  4. 代码优化:对中间代码进行等价变换,使目标程序运行更快、占用更少。
  5. 目标代码生成:把优化后的中间代码转换为特定机器的机器语言或汇编代码。

全过程还有符号表管理与出错处理贯穿其中。链接器再把目标文件与库函数链接成最终可执行文件。

源程序.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(宽松)等。

⚠️

使用盗版软件、未经授权复制传播他人软件,或在开源项目中不遵守协议,都构成侵权,需承担民事甚至刑事责任。尊重知识产权是每个计算机从业者的基本素养。

💡

本章小结:软件 = 程序 + 数据 + 文档,分系统软件与应用软件;操作系统以五大管理(进程、内存、文件、设备、作业)成为软硬件之间的核心枢纽;程序设计语言从机器语言、汇编语言发展到高级语言,经编译或解释执行;软件使用应尊重著作权与开源许可。下一章学习把计算机连成整体的——计算机网络。