进程和线程有什么区别?

进程和线程之间的技术区别是什么?

我感觉像'过程'这样的词被过度使用,并且还有硬件和软件线程。 Erlang等语言中的轻量级过程如何? 有一个明确的理由使用一个术语而不是另一个术语?


进程和线程都是独立的执行序列。 典型的区别是线程(同一进程的)在共享内存空间中运行,而进程在单独的内存空间中运行。

我不确定你可能指的是什么“硬件”与“软件”线程。 线程是一种操作环境功能,而不是CPU功能(尽管CPU通常具有使线程高效的操作)。

Erlang使用术语“进程”,因为它不公开共享内存多进程编程模型。 将它们称为“线程”意味着它们共享内存。


处理
每个进程都提供执行程序所需的资源。 进程具有虚拟地址空间,可执行代码,系统对象的打开句柄,安全上下文,唯一进程标识符,环境变量,优先级类别,最小和最大工作集大小以及至少一个执行线程。 每个进程都使用单线程启动,通常称为主线程,但可以从其任何线程创建其他线程。

线
线程是可以安排执行的进程中的实体。 进程的所有线程共享其虚拟地址空间和系统资源。 另外,每个线程维护异常处理程序,调度优先级,线程本地存储,唯一线程标识符以及系统将用于保存线程上下文直到它被调度的一组结构。 线程上下文包括线程的一组机器寄存器,内核堆栈,线程环境块以及线程进程地址空间中的用户堆栈。 线程也可以有自己的安全上下文,可用于模拟客户端。


在MSDN上找到这里:
关于进程和线程

Microsoft Windows支持抢先式多任务处理,这可以创建同时执行多个进程中多个线程的效果。 在多处理器计算机上,系统可以同时执行与计算机上的处理器一样多的线程。


处理:

  • 程序的执行实例称为进程。
  • 一些操作系统使用术语“任务”来指代正在执行的程序。
  • 进程总是存储在主存储器中,也称为主存储器或随机存取存储器。
  • 因此,一个过程被称为活动实体。 如果机器重新启动,它会消失。
  • 几个过程可能与同一个程序相关联。
  • 在多处理器系统上,可以并行执行多个进程。
  • 在单处理器系统上,尽管没有实现真正的并行性,但是应用了进程调度算法,并且处理器被安排每次执行一个进程,产生并发幻觉。
  • 示例:执行“计算器”程序的多个实例。 每个实例都被称为一个进程。
  • 线:

  • 线程是进程的一个子集。
  • 它被称为“轻量级进程”,因为它类似于真实进程,但在进程的上下文中执行,并共享内核分配给进程的相同资源。
  • 通常,一个进程只有一个控制线程 - 一次执行一组机器指令。
  • 一个进程也可以由多个执行线程并发执行指令组成。
  • 多个控制线程可以利用多处理器系统上的真正并行性。
  • 在单处理器系统上,应用线程调度算法,并且处理器计划每次运行一个线程。
  • 一个进程内运行的所有线程共享相同的地址空间,文件描述符,堆栈和其他与进程相关的属性。
  • 由于进程的线程共享相同的内存,所以将对共享数据的访问与进程同步获得前所未有的重要性。
  • 我借鉴了知识任务中的以上信息 博客

    链接地址: http://www.djcxy.com/p/9407.html

    上一篇: What is the difference between a process and a thread?

    下一篇: How is calling module and function by string handled in python?