c - 是什么让线程和进程独一无二?

标签 c multithreading unix process cpu

是什么使一个线程与同一进程中的其他线程不同,又是什么使一个进程与其他进程不同? (我所说的独特是什么让它与众不同?)

最佳答案

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

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

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

关于c - 是什么让线程和进程独一无二?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49226934/

相关文章:

c - 函数 memcpy() 正在关闭程序

java - MetaController 应该观察三个对象

linux - 如何使用 unix 命令在文本文件中查找列号

c - 以字符串形式获取输入并打印

c - unix 域套接字的临时文件

c - 如何根据用户的输入计算账单?

java - 证明以下代码不是线程安全的

c++ - 如果我以与锁定它们相反的顺序解锁互斥锁,这是否容易出现死锁?

shell - 如何在ksh中导出具有相同值的多个变量?

json - Unix命令行JSON解析器?