进程和线程


01.进程(process)是计算机中的程序关于某数据集合上的一次运行活动。

  • 进程是系统进行资源调度和分配的基本单位,是操作系统结构的基础。
    • linux中的进程有父进程,子进程之分,windows中的进程是平等关系。
  • 进程是一个程序执行的实例。
    • 程序是源代码编译后的文件,当程序被操作系统加载到内存中,就称为进程。
  • 进程中存放着指令和数据(资源),它是线程的容器。


02.线程(thread),也称为轻量级进程(lwp),是操作系统能够进行运算调度的最小单位。

  • 线程被包含在进程之中,是进程的实际运作单位。
    • 线程只能在实现了线程的操作系统中产生。
    • 线程由线程id,当前指令指针(pc),寄存器集合和堆栈组成;线程的创建比进程快1-2个数量级。
  • 线程的状态包括:
    • 就绪(ready),线程能够运行,但在等待被调度;可能线程刚刚创建启动,或者刚从阻塞中恢复,被其他线程抢占。
    • 运行(running),线程正在运行。
    • 阻塞(blocked),线程等待外部事件发生而无法运行,如I/O操作。
    • 终止(terminated),线程完成或退出,或被取消。
  • 线程的状态转换如下图:



03.进程和线程的理解:

  • 现代操作系统提出进程的概念,每一个进程都认为自己独占所有的计算机硬件资源。
    • 进程之间不共享数据。
    • 线程之间可以共享进程的资源,每一个线程拥有自己独立的堆栈。
文档更新时间: 2021-10-04 00:19   作者:闻骏