ScholarGate
助手

进程与线程管理

进程与线程管理是指操作系统如何创建、调度和销毁执行单元——拥有独立地址空间的进程和共享地址空间的线程——以及如何在它们之间切换处理器。

用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
下载幻灯片
Learn & explore
视频即将推出

Definition

进程与线程管理包括操作系统机制,这些机制将运行中的程序表示为进程和线程,维护它们的执行状态,创建和终止它们,并在保存和恢复其上下文的同时在它们之间切换处理器。

Scope

本主题涵盖进程抽象及其生命周期、进程控制块、进程创建与终止、线程与多线程模型、上下文切换以及进程间通信。它不包括决定下一个运行就绪任务的策略(CPU调度)和共享数据协调(并发,通常在操作系统主题下处理),而是侧重于表示和管理执行的结构。

Core questions

  • 操作系统必须为每个进程和线程保留哪些状态?
  • 进程是如何创建的?线程与进程有何不同?
  • 上下文切换期间会发生什么?其成本是多少?
  • 进程如何在不同的地址空间之间进行通信和协调?

Key concepts

  • 进程与进程控制块
  • 进程状态与生命周期
  • 线程与多线程
  • 用户级线程与内核级线程
  • 上下文切换
  • fork与exec
  • 进程间通信
  • 进程隔离

Key theories

进程抽象
操作系统将每个运行中的程序表示为一个具有独立地址空间和存储在进程控制块中的执行上下文的进程,从而实现隔离、调度和对处理器的受控共享。

Mechanisms

每个进程都由一个进程控制块描述,其中包含其寄存器、内存映射、打开文件和调度状态。系统创建进程(例如通过fork和exec),使它们在不同状态(新建、就绪、运行、等待、终止)之间转换,并通过保存一个上下文并恢复另一个上下文来在它们之间切换。线程共享其进程的地址空间,这使得切换成本更低但需要同步;进程间通信使用管道、消息或共享内存。

Clinical relevance

进程与线程管理是所有现代系统多任务处理的基础。进程隔离是安全性和稳定性的基石,线程使应用程序具有响应性和并行性,而上下文切换和进程间通信的成本则影响着服务器、运行时和并发软件的设计。

History

进程概念随着20世纪60年代多道程序设计和分时系统的发展而成熟,UNIX确立了当今广泛使用的fork/exec模型和进程抽象。为了利用多处理器并提高响应性,引入了线程,并通过POSIX线程等标准对用户可见的线程进行了规范。

Debates

用户级线程与内核级线程
用户级线程管理成本低,但不能独立地跨核心调度,并且在阻塞调用时会阻塞整个进程;而内核级线程以更高的开销与调度器集成;混合模型试图结合两者的优点。

Key figures

  • Ken Thompson
  • Dennis Ritchie
  • Per Brinch Hansen
  • Abraham Silberschatz
  • Andrew S. Tanenbaum

Related topics

Seminal works

  • silberschatz2018
  • tanenbaum2014os

Frequently asked questions

操作系统为每个进程保留哪些信息?
它保留一个进程控制块,记录进程保存的寄存器和程序计数器、内存映射、调度状态和优先级、打开文件以及记账和身份信息——所有这些都是暂停进程并在之后精确地从中断处恢复它所需的。
为什么线程之间的切换比进程之间的切换成本更低?
进程内的线程共享相同的地址空间和资源,因此在它们之间切换不需要更改内存映射。进程之间的切换还需要更改地址空间,并可能刷新转换缓存,使其成本更高。

Methods for this concept

Related concepts