gpt4 book ai didi

assembly - 处理器如何知道程序结束?

转载 作者:行者123 更新时间:2023-12-04 02:23:29 27 4
gpt4 key购买 nike

我想知道,处理器如何知道何时停止执行程序。或者更确切地说,何时停止“获取、解码执行”循环。
我想过不同的方法,但不确定哪个是正确的,或者它们是否都是错误的。
1- 可能末尾有一条特殊指令由汇编程序自动添加,让处理器知道到此结束。
2- 当它到达无效内存时(但它如何识别)。
3- 它循环并重新运行程序,但它又是如何识别何时循环或者它可能是由汇编程序自动添加的。
4- 或者也许它根本不会停止,它会一直运行下去。 (但这不是很耗电吗?

请指教。
如果答案可能因处理器而异,我们以 MIPS 和 x86 为例。

谢谢。

最佳答案

这取决于操作系统和处理器。

对于带有halt指令的处理器(如X86),当所有进程和线程都处于等待状态(无事可做)时,操作系统可能会执行halt指令,这将使cpu暂停并等待中断。如果下一个中断没有导致任何线程的状态切换到可运行状态,则操作系统将返回到暂停指令。

在没有 halt 指令的 cpu 上,当所有线程都在等待时,操作系统会进入一个空闲循环,该循环只会分支到自身。

回到最初的问题,运行一个程序的基本顺序是为一个程序做一个内存空间的初始分配,加载一个程序,然后调用这个程序。程序最终应该从回调中返回给操作系统,操作系统将释放分配给运行程序的内存。操作系统还可以在初始分配阶段创建虚拟地址空间。

进一步阅读

wiki loader , wiki program execution .对于 MSDOS,程序使用 INT 软件序列返回 MSDOS,例如设置 AH = 04Ch,然后执行 INT 21H。对于其他操作系统,加载程序调用程序,程序完成后返回。

关于assembly - 处理器如何知道程序结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25336465/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com