线程 线程

线程概述

  • 为了提升性能 需要提出一种实体:
    • 实体之间可以并发执行
    • 可以共享相同的地址空间
  • 定义:进程当中的一条执行流程
  • 重看进程:
    • 进程就是管理资源的 通过线程来执行
    • 可以说 进程由资源管理和线程组成
      一个进程存在多个线程 各个线程共享进程提供的资源
  • 线程的组织 :
    • 独有:TCB (PC 堆栈 寄存器)
    • 线程共享:代码段 数据段
  • 线程的优点:
    • 一个进程可以同时存在多个线程
    • 各个线程可以并发执行
    • 各个线程之间可以共享地址空间和文件资源
  • 缺点:
    • 一个线程崩溃,会导致其所属进程的所有线程崩溃
  • 线程适用情况:
    • 追求高性能,但网页不用线程 ,一个网页就是一个进程 。网页崩溃不会影响到别的网页打开。
      现代操作系统支持 多进程 一个进程多线程
  • 进程与线程比较:
    • 进程是资源分配的单位,线程是cpu调度单位
    • 进程用有一个完整的资源平台 而线程只独享必不可少的资源,如 寄存器和栈
    • 线程与进程的几种基本状态相同 相同的转换关系
    • 线程能减少并发执行的时间和空间开销
      • 线程创建时间比进程短(进程会创建资源管理,而线程创建时 进程已经管理好了某些资源)
      • 终止时间段短(不需要管理资源释放)
      • 同一进程内的线程切换比进程短(线程具有同一个地址空间 有同一个页表 所有信息可以重用 不需要切换页表 而进程需要切换 )
      • 各个线程共享内存和文件管理, 可直接进行不通过内核的通信。

线程的实现

  • 用户线程 :在用户空间实现 OS看不到 由一组用户级线程库函数来完成对线程的管理,包括创建 终止 同步 调度
    • 由于线程的维护依靠线程库函数(相应进程),不需要OS,可用于不支持线程技术的多进程操作系统
    • 每个进程有自己的TCB列表,用来跟踪记录它的各个线程的状态信息,TCB由线程库函数来维护
    • 用户线程切换也是又线程库函数来完成,无需用户态/内核态切换,所以速度快
    • 允许每个进程拥有自定义的线程调度算法
  • 缺点:
    • 如果一个线程发起系统调用而阻塞,则整个进程在等待
    • 当线程运行后,除非它主动的交出cpu的使用权,否则其他线程无法运行。OS有中断的能力,线程库没有
    • 由于时间片分配给进程,所以每个线程得到的时间较少,执行会慢。

内核线程:在内核中实现 OS看得到 TCB在内核

  • 由内核来维护PCB和TCB
  • 每次线程切换,OS都要切换状态 开销大

轻量级进程:在内核中实现 支持用户进程 (Solaris/linux)
内核支持的用户线程 一个进程可有多个轻量级进程,每个量级进程由一个单独的内核线程来支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值