CPU到底是怎么知道,当前这条指令有没有资格执行的?
今天我们把这事彻底说清楚。
一、规矩是刻在骨子里的
首先,指令的等级不是到了执行的时候才来“查字典”的。
这个划分,在CPU被设计和生产的时候,就已经划分了特权指令和非特权指令,因此CPU在执行一条指令前就能判断出其类型。
这是一个硬件层面的协议。
就像你家的门锁,出厂的时候,工程师就设计好了:哪种钥匙是主人(特权指令),哪种钥匙是客人(非特权指令)。CPU也一样,在设计指令集的时候,每一条指令都被归好了类。
二、不是“执行”时才检查,而是进门之前就拦住了
很多人会下意识地以为,CPU是在“执行”阶段才看资格的——先把指令拿进来,准备干活了,再判断“这活你能不能干”。
不对。
一条指令在CPU里的生命周期是三步:
取指 → 译码 → 执行
真正的检查,发生在第二步——译码阶段。
这时候,指令还没真正被执行,CPU的硬件电路就已经在对它做“身份识别”了。
三、机场安检的比喻,一眼看懂
你可以这样理解:
CPU像一座戒备森严的机场。
取指:乘客(指令)从外面走进了航站楼
译码:乘客走到安检口,刷身份证
执行:乘客通过安检,真的登机了
CPU不是等你登机了才发现你买没买票,而是在刷身份证的那一瞬间,系统就已经识别出——你是VIP,还是普通旅客。
如果你是普通旅客,却刷了VIP通道(普通程序试图执行一条特权指令),闸机当场锁死,报警响起。
这个“报警”,在CPU里就叫触发中断。
CPU立刻停下手里的一切,把控制权交还给操作系统。操作系统接管之后,通常就是一句话:“这个程序违规操作,杀掉。”
四、总结,今天你只需要记住三件事
1指令的等级,是CPU设计和生产时就划定好的硬件协议,不是运行时软件判断的
2检查发生在译码阶段,不是执行阶段。还没干活,就已经被安检拦下了
3发现违规,触发中断,操作系统来收拾残局
故事到这儿,指令等级的检查机制你已经明白了。