F_JustWei's Studio.

进程与线程

字数统计: 678阅读时长: 2 min
2021/04/28 Share

进程与线程

进程

进程是操作系统资源分配的基本单位。

进程可以并发地执行。

进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。

线程

线程是任务调度和执行的基本单位。

一个进程中可以有多个线程,同一类线程共享地址空间,但每个线程都有自己独立的运行栈和程序计数器。

QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。

进程与线程的区别

  1. 进程是操作系统资源分配的基本单位,线程是任务调度和执行的基本单位。
  2. 每个进程都有独立的地址空间。同一类线程共享地址空间,但每个线程都有自己独立的运行栈和程序计数器。
  3. 在操作系统中能同时运行多个进程。在同一个进程中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)。
  4. 线程之间通信更方便,同一个进程下,线程共享全局变量,静态变量等数据。
  5. 多进程程序更安全,生命力更强,一个进程死掉不会对另一个进程造成影响(源于有独立的地址空间),多线程程序更不易维护,一个线程死掉,整个进程就死掉了(因为共享地址空间)。
  6. 进程对资源保护要求高,开销大,效率相对较低,线程资源保护要求不高,但开销小,效率高,可频繁切换。

进程状态的切换

img

  • 就绪状态(ready):等待被调度
  • 运行状态(running)
  • 阻塞状态(waiting):等待资源

应该注意以下内容:

  • 只有就绪态和运行态可以相互转换,其它的都是单向转换。就绪状态的进程通过调度算法从而获得 CPU 时间,转为运行状态。而运行状态的进程,在分配给它的 CPU 时间片用完之后就会转为就绪状态,等待下一次调度。
  • 阻塞状态是因为缺少需要的资源从而由运行状态转换而来,但是该资源不包括 CPU 时间,缺少 CPU 时间会从运行态转换为就绪态。
CATALOG
  1. 1. 进程与线程
    1. 1.0.1. 进程
    2. 1.0.2. 线程
    3. 1.0.3. 进程与线程的区别
    4. 1.0.4. 进程状态的切换