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 到硬件的软件分层图”,我可以按这个再画一版。