Post

操作系统复习(二) 线程

线程的引入 目前为止进程的两个特点: 资源所有权 一个进程具有一个执行状态和一个被分配的优先级,进程是一个可被CS调度和分派的实体

两个特点是独立的,OS应该能够独立的处理它们。所以,为了区分这两个特点,分派的单位通常称为线程,而进程仍然为拥有资源所有权的单位。

多线程 指OS在单个进程中支持多个并发执行路径的能力。 多线程环境中:

进程: 定义为资源分配的单位一个被保护的单位。 线程: 一个进程中可以有多个线程。进程中的所有线程共享进程的状态和资源 与进程相关的内容: A. 存放进程映像的虚拟地址空间 B. 受保护地对处理器、其他进程、文件和I/O资源的访问

与线程相关的内容: A. 线程的执行状态 B. 未运行时的保存的线程上下文 C. 一个执行栈 (有线程的OS中,每个线程都有执行栈) D. 用于每个线程局部变量的静态存储空间 E. 与进程内的其他线程共享的对进程内存和资源的访问

线程的优点:

在一个已有进程中创建一个新线程比创建一个全新的进程所需要的时间少很多 终止一个线程比终止一个进程花费的时间少 同一进程内线程间切换比进程间切换花费的时间少 线程提高了不同的执行程序间通信的效率 线程状态 线程中的关键状态:运行、就绪和阻塞(线程级别没有挂起状态)

基本操作:派生、阻塞、解除阻塞、解除

线程同步:与进程同步的内容类似

用户级线程和内核级线程 用户级线程: 定义:在一个纯粹的用户级线程软件中有关线程管理所有工作均由应用程序完成,内核意识不到线程的存在。 线程与进程的相互关系:(设进程B有两个线程分别为1,2) A. 线程2进行了用户调用,阻塞的进程B: 此时线程库来看的线程2处于运行态,处理器来看,线程2未运行,进程B处于阻塞态。 B. 进程B因时间片用完,时钟中断把控制传给了内核: 线程库来看,线程2处于运行态,处理器来看,此时进程B处于就绪态。 C. 线程2需要线程1执行某个点: 此时,线程库来看,线程2处于阻塞态,而线程1处于运行态。 使用用户线程的优点 A. 所有线程管理数据结构都在一个进程的用户地址空间中,线程切换不需要内核态特权,节省了两次状态转换。 B. 调度可以是应用程序相关的,可以为应用程序量身定做调度算法而不扰乱底层OS的调度程序。 C. 用户级线程可以在任何操作系统中运行 使用用户线程的缺点: A. 典型的OS中,许多系统调用都会引进阻塞,用户级线程阻塞后,所有线程均被阻塞。 B. 在纯粹的用户级线程策略中,一个多线程应用程序不能利用多处理技术。 内核级线程: 定义:一个纯粹的内核级线程软件中,有关线程管理的所有工作均由内核完成,应用程序没有进行线程管理的代码。 优点: A. 内核可以同时把同一个进程中的多个线程调度到多个处理器中 B. 若进程中有一个线程被阻塞,内核可以调度同一个进程中的另一个线程。 缺点: 把控制从一个线程传送到同一个进程中的另一个线程时,需要内核的状态转换。

This post is licensed under CC BY 4.0 by the author.