处理器管理-多线程技术

多线程技术

单线程结构进程

传统进程是单线程结构进程程序员

单线程结构进程的问题:算法

单线程结构进程在并发程序设计上存在的问题,进程切换开销大,进程通讯开销大,限制了进程并发的粒度,下降了并行计算的效率网络

解决问题的思路:数据结构

把进程的两项功能,即“独立分配资源”与“被调度分派执行”分离开来,进程做为系统资源分配和保护的独立单位,不须要频繁地切换,线程做为系统调度和分派的基本单位,能轻装运行,会被频繁地调度和切换,线程的出现会减小进程并发执行所付出的时空开销,使得并发粒度更细、并发性更好多线程

多线程结构进程

多线程环境下进程的概念:并发

在多线程环境中,进程是操做系统中进行保护和资源分配的独立单位。具备:用来容纳进程映像的虚拟地址空间,对进程、文件和设备的存取保护机制性能

线程是进程的一条执行路径,是调度的基本单位,同一个进程中的全部线程共享进程得到的主存空间和资源。它具备:线程执行状态,受保护的线程上下文,当线程不运行时,用于存储现场信息,独立的程序指令计数器,执行堆栈,容纳局部变量的静态存储器操作系统

多线程环境下线程的状态与调度

线程状态有运行、就绪和睡眠,无挂起,与线程状态变化有关的线程操做有:孵化、封锁、活化、剥夺、指派、结束,OS感知线程环境下:处理器调度对象是线程,进程没有三状态(或者说只有挂起状态),OS不感知线程环境下:处理器调度对象还是进程,用户空间中的用户调度程序调度线程线程

并发多线程程序设计的优势:快速线程切换,减小(系统)管理开销,(线程)通讯易于实现,并行程度提升,节省内存空间设计

多线程技术的应用:前台和后台工做,C/S应用模式,加快执行速度,设计用户接口

KLT和ULT

内核级线程KLT,Kernel-LevelThreads

线程管理的全部工做由OS内核来作,OS提供了一个应用程序设计接口API,供开发者使用KLT,OS直接调度KLT用户空间P内核空间P

内核级线程的特色

进程中的一个线程被阻塞了,内核能调度同一进程的其它线程占有处理器运行,多处理器环境中,内核能同时调度同一进程中多个线程并行执行,内核自身也可用多线程技术实现,能提升操做系统的执行速度和效率,应用程序线程在用户态运行,线程调度和管理在内核实现,在同一进程中,控制权从一个线程传送到另外一个线程时须要模式切换,系统开销较大

用户级线程ULT,User-LevelThreads

用户空间运行的线程库,提供多线程应用程序的开发和运行支撑环境,任何应用程序均需经过线程库进行程序设计,再与线程库链接后运行,线程管理的全部工做都由应用程序完成,内核没有意识到线程的存在P用户空间线程库内核空间

用户级线程的特色

全部线程管理数据结构均在进程的用户空间中,线程切换不须要内核模式,能节省模式切换开销和内核的宝贵资源,容许进程按应用特定须要选择调度算法,甚至根据应用需求裁剪调度算法,能运行在任何OS上,内核在支持ULT方面不须要作任何工做,不能利用多处理器的优势,OS调度进程,仅有一个ULT能执行,一个ULT的阻塞,将引发整个进程的阻塞

Jacketing技术

把阻塞式系统调用改形成非阻塞式的,当线程陷入系统调用时,执行jacketing程序,由jacketing程序来检查资源使用状况,以决定是否执行进程切换或传递控制权给另外一个线程

ULT适用于解决逻辑并行性问题,KLT适用于解决物理并行性问题

多线程实现的混合式策略

线程建立是彻底在用户空间作的,单应用的多个ULT能够映射成一些KLT,经过调整KLT数目,能够达到较好的并行效果

多线程实现混合式策略的特色

组合用户级线程/内核级线程设施,线程建立彻底在用户空间中完成,线程的调度和同步也在应用程序中进行,一个应用中的多个用户级线程被映射到一些(小于等于用户级线程数目)内核级线程上,程序员能够针对特定应用和机器调节内核级线程的数目,以达到总体最佳结果,该方法将会结合纯粹用户级线程方法和内核级线程方法的优势,同时减小它们的缺点

线程混合式策略下的线程状态

KLT三态,系统调度负责,ULT三态,用户调度负责,活跃态ULT表明绑定KLT的三态,活跃态ULT运行时可激活用户调度,非阻塞系统调用可以使用Jacketing启动用户调度,调整活跃态ULT

多线程实现的各类策略总结

处理器调度的层次

高级调度:又称长程调度,做业调度,决定可否加入到执行的进程池中

中级调度,又称平衡负载调度,决定主存中的可用进程集合

低级调度:又称短程调度,进程调度,决定哪一个可用进程占用处理器执行

高级调度

分时OS中,高级调度决定:是否接受一个终端用户的链接,命令可否被系统接纳并构成进程,新建态进程是否加入就绪进程队列

批处理OS中,高级调度又称为做业调度,功能是按照某种原则从后备做业队列中选取做业进入主存,并为做业作好运行前的准备工做和完成后的善后工做

中级调度

引进中级调度是为了提升内存利用率和做业吞吐量,中级调度决定那些进程被容许驻留在主存中参与竞争处理器及其余资源,起到短时间调整系统负荷的做用,中级调度把一些进程换出主存,从而使之进入“挂起”状态,不参与进程调度,以平顺系统的负载

低级调度

低级调度:又称处理器调度、进程调度、短程调度,按照某种原则把处理器分配给就绪态进程或内核级线程,进程调度程序:又称分派程序,操做系统中实现处理器调度的程序,是操做系统的最核心部分,处理器调度策略的优劣直接影响到整个系统的性能

低级调度的主要功能:

  • 记住进程或内核级线程的状态
  • 决定某个进程或内核级线程何时得到处理器,以及占用多长时间
  • 把处理器分配给进程或内核级线程
  • 收回处理器

处理器调度算法

选择处理器调度算法的原则

  • 资源利用率:使得CPU或其余资源的使用率尽量高且可以并行工做
  • 响应时间:使交互式用户的响应时间尽量小,或尽快处理实时任务
  • 周转时间:提交给系统开始到执行完成得到结果为止的这段时间间隔称周转时间,应该使周转时间或平均周转时间尽量短
  • 吞吐量:单位时间处理的进程数尽量多
  • 公平性:确保每一个用户每一个进程得到合理的CPU份额或其余资源份额

优先数调度算法

根据分配给进程的优先数决定运行进程:抢占式优先数调度算法(对实时的适用),非抢占式优先数调度算法(对大多数适合)

优先数的肯定准则:进程负担任务的紧迫程度,进程的交互性,进程使用外设的频度,进程进入系统的时间长短

与进入系统时间相关的优先数

  • 计算时间短(做业/进程)优先
  • 剩余计算时间短进程优先
  • 响应比高者(做业/进程)优先响应比=等待时间/进入时间
  • 先来先服务:先进队先被选择
    • 多用于高级调度;低级调度中,以计算为主的进程过于优越

时间片轮转调度算法

  • 根据各个进程进入就绪队列的时间前后轮流占有CPU一个时间片
  • 时间片中断
  • 时间片的肯定:选择长短合适的时间片,过长则退化为先来先服务算法,太短则调度开销大
  • 单时间片,多时间片和动态时间片

分级调度算法

又称多队列策略,反馈循环队列,基本思想是创建多个不一样优先级的就绪进程队列,多个就绪进程队列间按照优先数调度,高优先级就绪进程,分配的时间片短,单个就绪进程队列中进程的优先数和时间片相同

分级调度算法的分级原则

  • 通常分级原则
    • 外设访问,交互性,时间紧迫程度,系统效率,用户立场,...
  • 现代操做系统的实现模型
    • 多个高优先级的实时进程队列,如:硬实时、网络、软实时
    • 多个分时任务的进程队列,根据基准优先数和执行行为调整
    • 队列数可能多达32-128个

彩票调度算法

基本思想:为进程发放针对系统各类资源(如CPU时间)的彩票;当调度程序须要作出决策时,随机选择一张彩票,持有该彩票的进程将得到系统资源,合做进程之间的彩票交换

相关文章
相关标签/搜索