C 什么使线程和进程独一无二?

C 什么使线程和进程独一无二?,c,multithreading,unix,process,cpu,C,Multithreading,Unix,Process,Cpu,是什么使一个线程与同一进程中的其他线程不同?是什么使一个进程与其他进程不同?(我所说的唯一性是指它与其他线程有什么不同?操作系统将为每个线程分配一个唯一的线程ID,并且对每个进程都是相同的:进程ID或pid。鉴于同一进程中的多个线程在其他方面可能相同(即相同的入口点、相同的堆栈内容、相同的指令指针),这意味着线程ID是标识线程的唯一方法。进程也是如此。操作系统将为每个线程分配一个唯一的线程ID,对于每个进程也是如此:进程ID,或pid。鉴于同一进程中的多个线程在其他方面可能相同(即相同的入口点、

是什么使一个线程与同一进程中的其他线程不同?是什么使一个进程与其他进程不同?(我所说的唯一性是指它与其他线程有什么不同?

操作系统将为每个线程分配一个唯一的线程ID,并且对每个进程都是相同的:进程ID或
pid
。鉴于同一进程中的多个线程在其他方面可能相同(即相同的入口点、相同的堆栈内容、相同的指令指针),这意味着线程ID是标识线程的唯一方法。进程也是如此。

操作系统将为每个线程分配一个唯一的线程ID,对于每个进程也是如此:进程ID,或
pid
。鉴于同一进程中的多个线程在其他方面可能相同(即相同的入口点、相同的堆栈内容、相同的指令指针),这意味着线程ID是标识线程的唯一方法。进程也是如此。

每个线程都有自己的线程和执行上下文。(堆栈是线程存储其局部变量的内存区域,执行上下文是与线程关联的各种CPU寄存器的状态。每当线程运行时,该状态会进入CPU的硬件寄存器,每当线程暂停时,该状态会保存到内存中,以让另一个线程运行。)

每个流程都有自己的流程。(进程的地址空间是从虚拟地址到物理RAM地址的映射——这种映射由计算机的线程处理,并使该进程内的线程产生一种错觉,以为它们自己拥有计算机的RAM——特别是,默认情况下,一个进程不可能读取或写入f另一个进程,因为每个进程的虚拟地址默认映射到计算机物理RAM的单独部分)

请注意,每个进程将有一个或多个线程在其内部运行,并且在同一进程内运行的所有线程共享相同的地址空间,因此,如果它们愿意,可以读/写彼此的数据。

每个线程都有自己的线程和执行上下文。(堆栈是线程存储其局部变量的内存区域,执行上下文是与线程关联的各种CPU寄存器的状态。每当线程运行时,该状态会进入CPU的硬件寄存器,每当线程暂停时,该状态会保存到内存中,以让另一个线程运行。)

每个流程都有自己的流程。(进程的地址空间是从虚拟地址到物理RAM地址的映射——这种映射由计算机的线程处理,并使该进程内的线程产生一种错觉,以为它们自己拥有计算机的RAM——特别是,默认情况下,一个进程不可能读取或写入f另一个进程,因为每个进程的虚拟地址默认映射到计算机物理RAM的单独部分)


请注意,每个进程都有一个或多个线程在其内部运行,并且在同一进程内运行的所有线程共享相同的地址空间,因此,如果它们愿意,可以读/写彼此的数据。

我投票将此问题作为离题题结束,因为它不是(尚未)编程问题。请将其改为编程问题。分享一些不起作用的代码,并提出一个具体的问题。我不太清楚你的意思,这听起来更像是一个哲学问题。是什么让我的笔记本电脑屏幕与您的笔记本电脑屏幕不同?是什么让我的咖啡与同一办公楼里的其他咖啡不同?我投票决定把这个问题作为离题题来结束,因为它(还)不是一个编程问题。请将其改为编程问题。分享一些不起作用的代码,并提出一个具体的问题。我不太清楚你的意思,这听起来更像是一个哲学问题。是什么让我的笔记本电脑屏幕与您的笔记本电脑屏幕不同?是什么让我的咖啡与同一办公楼里的其他咖啡不同?首先,一根线不一定有一堆。堆栈不是线程的定义特征。尽管大多数线程都有堆栈。其次,堆栈实际上是执行上下文的一部分。第三,线程在基本级别上没有执行上下文,它是执行上下文。第四,虚拟内存在技术上不是多重编程所必需的。最后,所有这些都不能回答这个问题,即线程和进程是如何区分的。这个问题问的是线程(或进程)的独特性是什么,而不是线程和进程是如何区分的。一个微妙的区别,我知道,但我们在这里。对于没有堆栈的线程,原则上我可以想象这样的事情,但我在现实生活中从来没有见过,对吗?微妙的区别是什么?“如何区分两个线程”是解析问题的一种方法——正如Dai在回答中指出的,这就是线程ID的用途。“是什么使一个线程区别于其他线程”是一个更深层次的问题,即线程a的所有属性是什么使它不同于线程B?这就是我回答的问题。首先,线程不一定有堆栈。堆栈不是线程的定义特征。尽管大多数线程都有堆栈。其次,堆栈实际上是执行上下文的一部分。第三,线程在基本级别上没有执行上下文,它是执行上下文。第四,虚拟内存在技术上不是多重编程所必需的。最后,所有这些都不能回答这个问题,即线程和进程是如何区分的。这个问题问的是线程(或进程)的独特性是什么,而不是线程和进程是如何区分的。一个微妙的区别,我知道,但我们在这里。对于没有堆栈的线程,我可以在原则b中想象这样的事情