【发布时间】:2021-05-24 22:50:07
【问题描述】:
在汇编中,我们通常使用mov 和ld 等指令将值加载到寄存器中。但是,为什么它只是工作?例如,如果一个程序正在向eax 寄存器写入一个值,而另一个程序从中读取,为什么它不读取另一个程序写入的值? CPU或操作系统或类似的东西是否为每个正在运行的程序提供一组寄存器?
【问题讨论】:
-
关于你的最后一个问题:是的。每个进程,或每个线程,或每个任务,都有自己的寄存器集。当操作系统抢占一个任务时,它会将所有寄存器保存在特定于任务的内存区域中。然后为了恢复同一个任务或另一个任务,目标任务的寄存器值从该任务的内存区域恢复。
-
@ecm 谢谢!现在只有我能找到一种方法来接受评论作为答案......
-
添加为答案,以便您接受。
-
@ecm 谢谢!
-
另见time slice。处理 CPU 的时间片是一种操作系统功能,可以虚拟化 CPU 的计算能力。