单线程内的代码具有一定的内存保证,例如先读后写(即将一些值写入内存位置,然后读回它应该给出您写入的值)。
如果线程被重新安排在不同的 CPU 核心上执行,这样的内存保证会发生什么?假设一个线程将 10 写入内存位置 X,然后重新调度到不同的核心。该核心的 L1 缓存可能具有不同的 X 值(与之前在该核心上执行的另一个线程不同),因此现在读取 X 不会像线程期望的那样返回 10。当线程被调度到不同的核心上时,是否会发生一些 L1 缓存同步?
multithreading operating-system cpu-architecture memory-barriers cpu-cache
当中断到达 CPU 时,如果它被确认,则通过在跳转到处理程序之前保存当前地址位置来处理它。否则将被忽略。
我想知道汇编指令调用是否被中断。
例如,
mvi a, 03h ; put 3 value into acc. in 8080 assembly
Run Code Online (Sandbox Code Playgroud)
一行指令可以中断吗?或者如果不是,它是原子的?
是否总能保证“一行汇编指令”总是原子的?
如果8080汇编中没有“lock”关键字呢,那么原子性是如何提供的呢?
例如,如果要操作64位和,但是“一行指令”没有办法做到,并且在对和进行操作时出现中断怎么办?如何在装配级别防止它?
对我来说,这个概念正在开始归结。
assembly interrupt cpu-architecture atomicity interrupted-exception