一、程序计数器PC
程序计数器PC指示的当前要执行的程序在CPU中的地址。
二、寄存器EBP、ESP
每个线程执行时,操作系统会为其分配一个栈帧,存储局部变量、返回地址等要素。
描述这个栈帧用到了两个寄存器:
EBP存储着当前函数栈底的地址,栈底通常作为基址,我们可以通过栈底地址和偏移相加减来获取变量地址。
ESP是一个始终指向栈顶的指针。
三、线程控制块TCB
与进程控制块PCB相似,线程控制块TCB中存储着与该线程有关的信息,如寄存器ESP等的值。
四、单用户级线程程序执行原理
执行A程序,即将存储在磁盘中的A程序的指令通过总线读入CPU中。
A程序的逻辑为main函数中又调用了func函数,其执行过程如图(假设main函数的地址为a*,func函数为b*):
1.调用函数func时,将main函数的下一条指令地址压栈,并修改PC为func函数的地址。
2.将EBP中的值压栈,更新EBP使得空间能够满足func函数的需要。然后将EBP赋给ES