当我呼叫pthread_yield
或pthread_block
并且CPU执行上下文切换
程序计数器是存储在线程堆栈(与其临时寄存器一起)还是存储在线程控制块中(与堆栈指针一起)
答案 0 :(得分:3)
通常它应该在TCB中。但我相信它是特定于实现的。 TCB中包含的信息示例如下:
答案 1 :(得分:0)
引自VxWorks:APPLICATION PROGRAMMER’S GUIDE,第76页:
每个任务都有自己的上下文,即每次内核运行时,任务看到的CPU环境和系统资源。在上下文切换中,任务的上下文保存在任务控制块(TCB)中。
任务的上下文包括:
■执行的线程;也就是说,任务的程序计数器
■任务的虚拟内存上下文(如果包含进程支持)
■CPU寄存器和(可选)协处理器寄存器 用于动态变量和函数调用的堆栈
■标准输入,输出和错误的I / O分配
■延迟计时器
■时间片计时器
■内核控制结构
■信号处理程序
■任务变量
■错误状态(错误)
■调试和性能监控值