硬件是计算机的躯体,软件是计算机的灵魂。没有软件,硬件只是一堆不能干活的电子零件。
硬件:看得见摸得着;软件:程序、数据、文档,看不见,是指令与信息的集合。
软件本质:由一条条计算机指令组成,指挥硬件完成各种各样的工作。 按照经典分类,软件分为两大类:系统软件、应用软件。
一、软件两大分类
1. 系统软件
作用:管理、控制硬件,为上层应用软件提供运行环境,给硬件“搭桥”。 普通用户一般不直接使用它,应用软件依赖系统软件才能跑起来。
系统软件包含下面几大类:
(1)操作系统 OS(最重要)
代表:Windows、Linux(Ubuntu、CentOS、银河麒麟)、macOS、Android、iOS。 操作系统是所有系统软件的核心,充当硬件 和 应用软件之间的中间层。
操作系统承担5大核心职责:
硬件管理:管理CPU、内存、硬盘、显卡、网卡。应用软件不需要懂硬件电路,直接调用操作系统提供接口,就能读写硬盘、输出画面。
进程管理:同时运行多个程序,分配CPU时间片,调度各个程序轮流执行。比如一边浏览器,一边微信。
内存管理:给每个程序分配内存空间,回收闲置内存,防止程序之间互相破坏数据。
文件管理:管理磁盘上的目录、文件、权限,文件保存、删除、查找。
设备驱动管理:驱动程序本质属于系统软件。显卡驱动、网卡驱动,让操作系统可以识别硬件。
通俗比喻: 硬件 = 工厂机器; 操作系统 = 工厂厂长、调度员; 应用软件 = 来干活的工人。 工人(应用软件)不会直接操作机器,全部找厂长(操作系统)调度机器。
(2)驱动程序
属于系统软件的一部分。 硬件本身不会被操作系统直接认识,需要驱动。
显卡驱动、声卡驱动、网卡驱动、打印机驱动。 没有驱动:硬件通电,但系统不知道怎么控制它,设备无法工作。
(3)语言处理程序(编译器、解释器)
计算机硬件只认识二进制0和1,人写的高级语言(Python、C语言)CPU看不懂。 语言处理程序负责把人类写的代码翻译成机器可以识别的二进制指令。
编译器:C/C++,一次性全部翻译为可执行程序;
解释器:Python,边翻译边执行。
(4)数据库管理系统
MySQL、PostgreSQL,管理大规模数据,属于系统软件。
(5)工具类系统软件
调试工具、磁盘分区工具、系统备份工具等。
2. 应用软件
在操作系统之上运行,面向用户,完成具体业务需求。 我们日常点开使用的软件几乎都是应用软件。
例子:
办公:WPS、Office
聊天:微信、QQ
浏览器:Chrome、Edge
设计:PS
运维工具:Xshell、Wireshark
层级关系(从上往下):
用户 → 应用软件 → 操作系统(驱动) → 计算机硬件
⚠️关键区分:
系统软件:服务计算机本身,管理硬件资源;
应用软件:服务人,解决人的具体需求。
二、程序、进程、可执行文件(极易混淆,重点)
1. 程序(Program)
存放在硬盘上的静态文件。 比如 Windows 下 notepad.exe记事本程序,文件安静躺在磁盘里,没有运行,不占用CPU、内存。
2. 进程(Process)
程序运行起来之后,就变成进程。 双击exe,操作系统把这个程序从硬盘读取加载到内存,分配资源,CPU开始执行指令,此时就产生一个进程。
进程是操作系统资源分配的最小单位;
同一个程序可以同时产生多个进程:打开2个记事本,硬盘只有一份notepad.exe,内存里面2个独立进程。
总结: 程序 = 硬盘上的文件(静态) 进程 = 运行中的实例(占用内存CPU,动态)
3. 可执行文件
保存二进制机器指令的文件,操作系统可以直接加载运行。
Windows后缀
.exe;Linux没有后缀,靠文件权限标记是否可执行。
三、软件的运行完整过程(串联硬件+软件)
以Windows打开记事本举例:
硬盘上存在
notepad.exe(程序,静态)用户双击图标,操作系统收到指令
OS把exe文件从硬盘读取,加载到内存RAM
CPU读取内存中的二进制指令,开始执行,创建记事本进程
操作系统分配CPU时间、内存空间给这个进程
我们看到记事本窗口,可以打字
关闭记事本:操作系统回收分配的内存,进程结束消失;但是notepad.exe还留在硬盘,没有删除。
断电:内存数据清空,硬盘文件保留。
核心结论:任何软件想要运行,必须加载进入内存。硬盘只负责存放程序本体。
四、软件的几种形态
1. 本地软件(客户端软件)
安装在本机硬盘,在本机运行。微信PC版、WPS。需要安装,生成本地文件。
2. B/S网页软件(浏览器访问)
不需要安装,浏览器作为载体。网页版微信、网盘网页端。 代码一部分运行在浏览器,一部分运行在远端服务器。
3. 绿色软件 vs 安装版软件
安装版软件:运行安装程序,复制文件到磁盘,写入注册表,注册服务。卸载时需要卸载程序清理。
绿色软件:解压直接运行,不写系统注册表,删除文件夹即可卸载。
4. 开源软件、闭源软件
闭源软件:不公开源代码,用户只能拿到编译后的可执行文件。如Windows、QQ。
开源软件:源代码公开,可以查看、修改。Linux、Nginx、MySQL。
开源 ≠ 免费,开源可以收费;免费也不一定开源。
五、操作系统的用户态与内核态(基础概念)
操作系统内核掌管全部硬件资源。 为了安全,CPU提供两种运行权限:
内核态:操作系统内核运行在此。可以直接访问全部硬件、全部内存。权限最高。
用户态:普通应用软件运行在此。不能直接操作硬件。
应用软件想要读写硬盘、输出画面,不能直接操作硬件,要向操作系统发起系统调用,切换到内核态,由内核完成硬件操作。
举例:记事本保存文件。记事本(用户态)不能直接操控硬盘,向操作系统发起系统调用;内核态接管,完成磁盘写入。 好处:防止某个应用软件出错把整个系统搞崩。
六、文件、目录、权限概念
操作系统以文件的形式管理磁盘上全部数据。
文件:程序、文档、图片,都是文件。
目录(文件夹):用来组织管理大量文件。Linux一切皆文件。
文件权限:控制谁可以读、写、执行这个文件。 Windows、Linux都有权限机制。Linux权限尤为严格。
比如一个程序没有执行权限,就算文件完好,也无法运行。
七、库文件(动态库、静态库)
很多软件会复用别人写好的代码,打包成库。
Windows
.dll动态链接库Linux
.so动态库 程序运行依赖库文件,缺失库会出现报错,软件打不开。
现象:Windows常见报错“缺少xxx.dll”,就是依赖的动态库丢失。
八、软件常见故障底层原因(结合理论)
程序闪退:内存越界、缺少依赖库、权限不足;
双击软件没有反应:没有加载进内存,权限被拦截;
打开软件卡顿:CPU被占满,内存不足;
文件打不开:不是程序坏了,是缺少对应应用软件。
✅重点必背总结
软件分为系统软件、应用软件,理清层级:应用软件依赖操作系统访问硬件。
程序是硬盘上静态文件;进程是运行起来的实例,占用内存CPU。
软件运行流程:硬盘读取程序 → 加载内存 → CPU执行指令。
驱动属于系统软件,作用是让操作系统识别硬件。
用户态(普通软件)不能直接操作硬件,需要系统调用交给内核态。
开源不等于免费。
❌初学者不用深挖
操作系统内核源码、复杂编译原理,先掌握逻辑,后期再深入。
📌实操练习建议
Windows任务管理器,观察:打开软件就新增进程,关闭软件进程消失。
找到记事本exe文件,观察:关闭软件,exe文件仍然存在硬盘。
理解:删除快捷方式,不会删除程序本体。
如果你需要,我可以给你出一套选择、简答练习题巩固这一章。
评论交流
欢迎留下你的想法