multithreading - 在单核系统中如何处理抢占?

标签 multithreading assembly parallel-processing operating-system multitasking

给定一个采用多任务抢占的单核系统,当用户模式应用程序在系统上执行时,操作系统如何执行线程中断?由于处理器正在处理用户代码,它什么时候有机会向线程调度程序询问上下文切换。它的处理方式与页面错误类似吗?如果是,它多久发生一次,是否会导致性能下降?

最佳答案

阅读硬件中断。

硬件定时器发出周期性中断。当发生这种情况时,CPU 切换到内核模式并执行一个例程,即中断处理程序。这就是上下文切换发生的地方。当 CPU 从内核返回到用户模式时,它会将控制权返回给与发生中断的线程不同的线程。自然而然地保存了被抢占线程的状态。

关于multithreading - 在单核系统中如何处理抢占?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35136776/

相关文章:

memory - 内存一致性模型 CUDA 4.0 和全局内存?

Python 将 GCS 中的 .json 文件并行读取到 pandas DF 中

c# - ICommand Execute() 任务.ContinueWith()

iphone - 一个线程将BOOL更改为YES,另一个线程看不到更改

java - 多线程写入多个文件,但是会互相影响

c - Linux-MIPS 系统调用保存的寄存器?

c - 涉及多个 .c 文件时如何处理全局变量

python-3.x - 在threading.thread中,为什么args末尾带逗号

linux - 汇编中的 ROT13 密码

string - 反转程序集 8086 中的字符串时出现问题