代码之家  ›  专栏  ›  技术社区  ›  AlanSTACK

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

  •  1
  • AlanSTACK  · 技术社区  · 7 年前

    当我打电话时 pthread_yield pthread_block CPU进行上下文切换

    程序计数器是否存储在 线程堆栈 (连同临时登记册)或 线程控制块 (堆栈指针旁边)

    2 回复  |  直到 7 年前
        1
  •  4
  •   aneesh jose    7 年前

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

    • 线程标识符:为每个新线程分配唯一id(tid)
    • 堆栈指针:指向进程中线程的堆栈
    • 程序计数器
    • 线程状态(正在运行、就绪、等待、启动、完成)
    • 线程的寄存器值
    • 指向线程所在进程的进程控制块(PCB)的指针
        2
  •  0
  •   MichaelGL    7 年前

    引用自 VxWorks:APPLICATION PROGRAMMER’S GUIDE ,第76页:

    每个任务都有自己的上下文,这是任务每次计划由内核运行时看到的CPU环境和系统资源。在上下文开关上,任务上下文保存在任务控制块(TCB)中。

    任务上下文包括:

    –执行线程;也就是说,任务 程序计数器

    任务虚拟内存上下文(如果包含进程支持)

    –CPU寄存器和(可选)协处理器寄存器 动态变量和函数调用的堆栈

    标准输入、输出和错误的I/O分配

    延迟计时器

    时间片计时器

    内核控制结构

    信号处理器

    –任务变量

    错误状态(errno)

    调试和性能监视值