操作系统四大特征|软考架构师考点梳理

四大特征:并发性、共享性、虚拟性、不确定性,选择题高频考点,务必分清概念。

1)并发性

宏观同时运行,微观交替执行

  • 单 CPU:并发 。一段时间看上去多个程序同时跑;某一瞬间,只有一个程序真正在 CPU 上执行,进程轮流交替使用 CPU。
  • 多 CPU:可以做到并行,多个程序真正同一时刻分别在不同 CPU 上一起执行。

✅考点区分

  • 并发:时间上交替,宏观同时,微观串行(单核 CPU)
  • 并行:同一时刻真正同时执行(多核 / 多 CPU)

一句话记忆:并发是 "看上去一起跑";并行是 "真的一起跑"

2)共享性

多个并发进程共同使用系统资源,资源不被某一个进程独占。分为两种共享方式:

  1. 互斥共享(临界资源):同一时刻只允许一个进程使用。例如打印机,不能两个进程同时打印。
  2. 同时共享:同一时间段多个进程可以同时访问。比如磁盘文件,多个进程可以读同一个文件。

为什么要共享:硬件资源昂贵,如果每个程序独占一套资源,成本极高,不现实。

⚠️小知识点:并发和共享互为条件。没有并发就不存在资源共享;没有共享,并发也失去意义。软考经常考这句话。

3)虚拟性

物理实体 ↔ 逻辑虚构对象,是操作系统的管理技术。 两类情况:

  1. 物理 1 个 → 逻辑多个(最常见) 例:一台物理 CPU,通过分时,逻辑上看成多个虚拟 CPU,每个进程感觉自己独占 CPU。
  2. 物理多个 → 逻辑 1 个 把多个物理设备,对外包装成一个逻辑设备给用户使用。

例子:虚拟存储器、虚拟处理器、SPOOLing 假脱机技术(把一台打印机虚拟成多台打印机)。

重点:虚拟出来的逻辑对象,是用户感知到的假象,并不是物理真实存在

4)不确定性(也叫异步性)

进程是走走停停,执行节奏不可预知:

  • 进程什么时候被调度运行、什么时候被暂停、执行速度、总耗时,都不确定。
  • 不是说结果一定错:只要初始输入相同,最终结果必须是确定的;只是执行的时间顺序、推进速度不确定

❗考试大坑(极易选错)

❌错误理解:不确定性 = 输出结果一定不一样 ✅正确理解:执行时序、速度、什么时候完成不确定;只要输入一样,正确程序输出结果唯一。 如果不加保护,并发竞争资源,才会造成结果不唯一。


极简对比表格(复习直接背)

表格

特征 核心含义 典型例子
并发性 宏观多程序同时运行;单核微观交替执行;多核可并行 多任务同时打开浏览器、微信
共享性 多个进程共用软硬件资源;分互斥共享、同时共享 打印机(互斥);磁盘读文件(同时)
虚拟性 物理实体,映射成逻辑虚构对象 虚拟内存、SPOOLing 假脱机
不确定性 (异步性) 进程走走停停,执行时机、速度不可预知;输入相同结果应相同 进程随时可能因等待 IO 被挂起

📝简答背诵版(案例如果考简答直接写)

  1. 并发性:多道程序环境,宏观多个程序同时运行;单 CPU 下微观交替执行;多 CPU 可以实现并行执行。
  2. 共享性:系统资源被多个并发进程共同使用,分为互斥共享、同时共享。并发与共享互为存在条件。
  3. 虚拟性:操作系统把物理实体映射为多个逻辑对象,或是多个物理实体抽象为一个逻辑对象,为用户提供方便高效环境。
  4. 不确定性(异步性):进程执行走走停停,执行时机、推进速度不可预知;输入相同,程序运行结果应当确定。

记忆小口诀

并共虚异(并发性、共享性、虚拟性、异步 / 不确定性)

相关推荐
Huangjin007_1 小时前
【Linux 系统篇(十九)】进程(七):深入理解虚拟地址空间:从进程地址空间到内核管理
linux·运维·服务器
砚底藏山河1 小时前
并发与限频工程:把20只的2秒压到0.5秒不封号(魔码量化实战 #03)
java·开发语言·数据库·python·金融
ly76891 小时前
Spring WebFlux背压机制在生产环境的调优与陷阱
java·spring·microsoft·webflux·project reactor·背压·响应式流
YIN_尹1 小时前
【Linux系统编程】模拟实现一个最简版C语言标准IO库
linux·服务器·c语言
FW-Linker1 小时前
什么是5G直播背包?广电记者外场推流入门指南
服务器·网络·5g
云雀衔光2 小时前
MCP 协议全景:为什么它是 AI 连接工具的「USB-C」
java·开发语言·数据库·人工智能·ai编程
ly76892 小时前
Spring 异步编程的隐藏风险:@Async 线程池耗尽与异常处理详解
java·后端·spring·异常处理·线程池·任务拒绝
用户8181870627462 小时前
第23章 热点Key问题排查与解决:大促场景经典坑
java·后端
IT枫斗者枫哥2 小时前
Java 接口超时后,重试为什么会多建一条任务?
java