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

时间:2018-03-12 01:30:27

标签: c multithreading unix process cpu

什么使得线程在同一进程中的其他线程中是唯一的,以及什么使得进程与其他进程不同? (通过独特我的意思是什么使它与其他人不同?)

2 个答案:

答案 0 :(得分:4)

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

每个流程都有自己的 address space 。 (进程的地址空间是从虚拟地址到物理RAM地址的映射 - 这个映射由计算机的MMU处理,并为该进程中的线程提供了他们自己拥有计算机RAM的错觉 - 特别是,默认情况下,一个进程无法读取或写入另一个进程的数据,因为默认情况下每个进程的虚拟地址都映射到计算机物理RAM的单独部分。

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

答案 1 :(得分:2)

操作系统将为每个线程分配唯一的线程ID - 每个进程都相同:进程ID或pid。鉴于同一进程中的多个线程可以在其他方面相同(即相同的入口点,相同的堆栈内容,相同的指令指针),这意味着线程ID是识别线程的唯一方式。同样适用于流程。