Operating system 线程中的指令在执行过程中会发生变化吗?(OS)

Operating system 线程中的指令在执行过程中会发生变化吗?(OS),operating-system,Operating System,我目前正在操作系统的上下文中研究线程,我不确定线程是否是一组可以重复执行的指令序列,或者它是否由用户或操作系统填充并替换为新指令 非常感谢! -Tom我不太清楚您的意思-程序的编译指令存储在内存中,并且在运行时不会更改(至少对于非JIT编译的语言) 线程是与代码本身完全不同的概念。线程使您能够在代码中“同时在两个位置”运行。在概念层面上,线程只是在执行某些代码的任何时候所需的上下文的容器。这意味着每个线程都有一个调用堆栈和一组寄存器(如果线程正在运行,则实际上存储在处理器的寄存器中,如果线程暂停

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

非常感谢!
-Tom

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

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

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

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

有时,抽象是建立在这种机制之上的,这样一个线程或线程池将执行一个函数,该函数只在要运行的任务队列上循环,但基本机制是相同的。然而,这些抽象是由构建在操作系统线程机制之上的用户库提供的,而不是由操作系统本身提供的