执行期间线程中的指令是否可以更改? (OS)

时间:2013-05-20 19:37:16

标签: operating-system

我目前正在研究操作系统环境中的线程,并且我不确定线程​​是否是一组可以重复执行的指令序列,或者它是否被填充并被新指令替换为用户或操作系统。

感谢捆绑! - 汤姆

1 个答案:

答案 0 :(得分:1)

我不太清楚你的意思 - 程序的编译指令存储在内存中,并且在运行时不会更改(至少对于非JIT编译的语言)。

线程与代码本身完全不同。线程使您能够在代码中的“两个位置”运行。在概念层面,线程只是在执行某些代码时需要的上下文的容器。这意味着每个线程都有一个调用堆栈和一组寄存器(如果线程正在运行,它们实际存储在处理器的寄存器中,如果线程暂停,则实际存储在其他位置)。

几乎所有线程库都工作,以便新线程将执行一些用户定义的函数,然后退出。这个函数可以长时间运行,就像main()(这是你的进程中第一个线程执行的函数)。

如果OS支持线程(即它们不是“绿色线程”/“光纤”),它们将通过调用OS API退出,该API告诉操作系统它可以解除分配与该线程相关的任何数据。

有时,抽象是建立在这种机制之上的,因此线程或线程池将执行一个简单地循环遍历任务队列的函数,但基本机制是相同的。但是,这些抽象是由构建在OS线程机制之上的用户库提供的,而不是由操作系统本身提供的。