gpt4 book ai didi

linux - "really"如何理解进程和线程?

转载 作者:太空宇宙 更新时间:2023-11-04 05:21:02 27 4
gpt4 key购买 nike

我试图“真正”理解进程和线程 - 我读过有关它们的书籍和文章,但总体情况似乎总是缺少一些东西。当然,我可以喋喋不休地谈论细节,例如每个进程如何拥有自己的内存空间以及属于同一进程的线程如何共享相同的内存空间等,但我想我正在从操作系统和内存的角度寻找东西 - 例如:

  1. 如何生成它们以及内存中到底发生了什么。
  2. IPC 和线程间通信期间会发生什么。
  3. 如何在多核系统上处理它们。
  4. 代码中的上下文是如何确定的? (即函数如何属于进程/线程)。 {希望这很清楚!!!!}

所有这些加上简单的代码示例就太棒了。非常感谢。

最佳答案

进程封装了代码以及执行该代码所需的所有资源(内存、打开的文件、共享内存)。线程只是进程中的一个执行,这大致意味着线程当前指令的指针和调用堆栈。一个进程至少包含一个线程,但单个进程中可能有多个线程。

  1. 生成进程是操作系统的问题,这可能非常不同。 Unix 传统上提供了允许进程克隆自身的fork(几乎所有东西都是重复的)。产生线程既是语言也是操作系统的问题(存在从语言线程到操作系统线程的映射)。 C API 包含 pthread_create,它只是为其分配一个新堆栈,并将指令指针初始化为要运行的某个函数的地址。
  2. 没有什么特别的...线程间通信非常容易,因为它们共享相同的地址空间,但要注意并发是一个问题。
  3. 一切皆有可能:从同一个核心上的一个进程及其所有线程,到分布在一组核心上并在运行过程中移动的线程。
  4. 没有属于线程的函数。线程首先执行某个函数,并在其调用堆栈为空时终止(从该初始调用返回)。

关于linux - "really"如何理解进程和线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41972969/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com