CPU是怎么区分特权指令和非特权指令的,为什么黑客在程序中插入的特权指令还没执行就被拦下了?

2 阅读2分钟

CPU到底是怎么知道,当前这条指令有没有资格执行的?

今天我们把这事彻底说清楚。

一、规矩是刻在骨子里的

首先,指令的等级不是到了执行的时候才来“查字典”的。

这个划分,在CPU被设计和生产的时候,就已经划分了特权指令和非特权指令,因此CPU在执行一条指令前就能判断出其类型。

这是一个硬件层面的协议。

就像你家的门锁,出厂的时候,工程师就设计好了:哪种钥匙是主人(特权指令),哪种钥匙是客人(非特权指令)。CPU也一样,在设计指令集的时候,每一条指令都被归好了类。

二、不是“执行”时才检查,而是进门之前就拦住了

很多人会下意识地以为,CPU是在“执行”阶段才看资格的——先把指令拿进来,准备干活了,再判断“这活你能不能干”。

不对。

一条指令在CPU里的生命周期是三步:

取指 → 译码 → 执行

真正的检查,发生在第二步——译码阶段

这时候,指令还没真正被执行,CPU的硬件电路就已经在对它做“身份识别”了。

三、机场安检的比喻,一眼看懂

你可以这样理解:

CPU像一座戒备森严的机场。

取指:乘客(指令)从外面走进了航站楼

译码:乘客走到安检口,刷身份证

执行:乘客通过安检,真的登机了

CPU不是等你登机了才发现你买没买票,而是在刷身份证的那一瞬间,系统就已经识别出——你是VIP,还是普通旅客。

如果你是普通旅客,却刷了VIP通道(普通程序试图执行一条特权指令),闸机当场锁死,报警响起。

这个“报警”,在CPU里就叫触发中断

CPU立刻停下手里的一切,把控制权交还给操作系统。操作系统接管之后,通常就是一句话:“这个程序违规操作,杀掉。”

四、总结,今天你只需要记住三件事

1指令的等级,是CPU设计和生产时就划定好的硬件协议,不是运行时软件判断的

2检查发生在译码阶段,不是执行阶段。还没干活,就已经被安检拦下了

3发现违规,触发中断,操作系统来收拾残局

故事到这儿,指令等级的检查机制你已经明白了。