夜雨聆风学习资料网

ARTICLE · 1046658

软件的分类

软件的分类
软件分类没有唯一标准,主要看你按什么维度分。最常用的是按层次和职责分:
1. 按层次/职责分(最常用)
类别 干什么 例子
固件 最底层,开机先跑,常写在 Flash/ROM 里 BootROM、UEFI/BIOS、手机引导程序
操作系统 管 CPU、内存、文件、进程、设备 Android、iOS、Windows、Linux
驱动程序 让操作系统能控制具体硬件 显卡驱动、Wi-Fi 驱动、触摸屏驱动
运行时/库 给程序提供基础能力 JVM、ART、Python 解释器、C 库
中间件 连接系统软件和应用软件 数据库、消息队列、Web 服务器、HAL
应用软件 用户直接用的程序 微信、浏览器、游戏、相机 App
所以从下到上可以串成:
硬件 → 固件 → 操作系统 → 驱动 → 运行时/库 → 中间件 → 应用软件
这正好对应你前面说的“应用 → 操作系统 → 硬件”那条链。
2. 按运行环境分
· 本地软件:装在自己电脑/手机上。
· 云端软件:跑在服务器上,你通过浏览器/App 用,比如网页版邮箱。
· 嵌入式软件:跑在单片机、路由器、汽车 ECU 里。
· 移动软件:Android/iOS App。
· Web 软件:前端+后端,浏览器访问。
3. 按授权/商业模式分
· 开源软件:代码公开,如 Linux、Android 开源部分。
· 闭源/专有软件:代码不公开,如 Windows、iOS。
· 商业软件:要付费授权。
· 免费软件:免费但不一定开源。
· 自由软件:强调用户自由使用、修改、分发。
4. 按交互方式分
· 交互式软件:你点一下它响应,如 App、游戏。
· 批处理软件:一次处理一堆任务,如报表生成。
· 实时软件:必须在规定时间内响应,如汽车刹车控制、5G 基带。
· 后台服务:没界面,常驻运行,如数据库、Web 服务。
5. 按 CPU 权限分
· 内核态软件:操作系统内核、驱动,权限高,能直接碰硬件。
· 用户态软件:普通 App,权限低,要通过系统调用请内核帮忙。
手机里的软件分类,通常这样看
SoC 固件 → 引导程序 → Linux 内核/Android 系统 → HAL/驱动 → ART 运行时 → Android 框架 → 用户 App
一句话:
软件最粗分就是系统软件、中间件、应用软件;再往下分,就是固件、OS、驱动、运行时、库、App。
如果你要的是“手机从 App 到硬件的软件分层图”,我可以按这个再画一版。

相关学习资料