操作系统笔记 第四章线程

第四章 线程

4.1概述

进程是资源的拥有者也是调度单位,这两个属性构成了进程并发执行的基础。

由于进程创建、撤销、切换时,系统开销过大,限制了并发,我们考虑引入了线程。

引入目的:减少进程切换和创建开销,提高执行效率和节省资源。
实现手段:将进程的资源申请和调度属性分开。即进程作为资源的申请和拥有者,但不作为调度的基本单位,这样,就产生了线程的概念,线程是独立调度和分派的基本单位。

单线程与多线程

在这里插入图片描述

线程是CPU运行的一个基本单元
包括:

program counter 程序计数器
register set 寄存器集
stack space 栈空间


一个线程与它的对等线程共享:
code section 代码段
data section 数据段
operating-system resources 操作系统资源

4.2多线程模型

线程分类 ——分为用户级和内核级

用户级
(1) 利用用户级的线程库进行管理,在用户层通过线程库来支持,线程库提供对线程的创建、调度和管理,无需用户干预。
(2)内核不知道用户线程的存在,会导致以下问题。
如果内核是单线程的,那么任何一个用户级线程执行阻塞原语的时候就会引起整个进程阻塞,即使当时还有该进程内还有其他的线程可以被调度执行。
内核级
操作系统内核负责其创建、调度和管理.
内核直接管理线程,因此当一个线程调用阻塞原语,进入阻塞态时,内核能调度当前进程内的其他线程执行

用户级线程和核心级线程的区别

1.  线程的调度与切换时间
         用户级线程的切换通常发生在一个应用进程的多个线程之间,无须通过中断进行OS的内核,且切换规则也简单,因此其切换速度特别快。
         而核心级线程的切换时间相对比较慢。
         
2.  系统调用
         用户级线程调用系统调用时,内核不知道用户级线程的存在,只是当作是整个进程行为,
         使进程等待并调度另一个进程执行,在内核完成系统调用而返回时,进程才能继续执行。
         而核心级线程则以线程为单位进行调度,当线程调度系统调用时,内核将其作为线程的行为,
         因此阻塞该线程,可以调度该进程中的其他线程执行。
         
3.  线程执行时间
         如果用户设置了用户级线程,系统调用是以进程为单位进行的,但随着进程中线程数增加,每个线程得到的执行时间就少。
         而如果设置的是核心级线程,则调度以线程为单位,因此可以获得良好的执行时间。

多线程模型

1. Many-to-One Model

  • 多个用户级线程映射到一个内核线程.
  • 如果一个线程执行了阻塞系统调用,整个进程会阻塞.
  • 任一时刻只有1个线程访问内核,并行性差.
    在这里插入图片描述
    2. One-to-one Model
    每个用户级线程映射到一个内核线程
    在这里插入图片描述
    3. Many-to-Many Model
    允许多个用户级线程映射到多个内核线程上
    在这里插入图片描述

4.3 线程池

1.创建一定数量的线程,放到池中等待工作
2.优点:
通常用现有线程处理请求比等待创建新的线程要快
限制了在任何时候可用线程的数量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值