c - 线程上下文切换期间程序计数器存储在哪里?

标签 c multithreading operating-system

当我调用 pthread_yieldpthread_block 并且 CPU 进行上下文切换时

程序计数器是存储在线程堆栈(与其临时寄存器一起)还是线程控制 block (与堆栈指针一起)

最佳答案

通常应该在TCB中。但我相信它是特定于实现的。 TCB 中包含的信息示例如下:

  • 线程标识符:分配给每个新线程的唯一 ID (tid)
  • 栈指针:指向线程在进程中的栈
  • 程序计数器
  • 线程的状态(运行、就绪、等待、开始、完成)
  • 线程的寄存器值
  • 指向线程所在进程的进程控制 block (PCB) 的指针

关于c - 线程上下文切换期间程序计数器存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47824932/

相关文章:

c# - 线程和 session 对 asp.net c# 中的 paypal 机制的影响应该是什么

linux - 哪些进程状态会影响服务器的平均负载?

linux - 操作系统确定内核或某些用户程序的输入

c - 指向结构的指针在每次函数调用时变为 NULL

c - libevent中两个回调之间的区别

c++ - 在单个多线程 C++ 进程中使用 boost::interprocess::interprocess_semaphore 有缺点吗?

python - 何时在 python 的线程模块中使用事件/条件/锁/信号量?

c - 使用 gdb 进行 fork() 系统调用

c - 使用结构将值发送到另一个函数 - 这有什么问题?

c - 实现带有头指针和尾指针的固定长度缓冲区