传统进程是单线程结构进程程序员
单线程结构进程的问题:算法
单线程结构进程在并发程序设计上存在的问题,进程切换开销大,进程通讯开销大,限制了进程并发的粒度,下降了并行计算的效率网络
解决问题的思路:数据结构
把进程的两项功能,即“独立分配资源”与“被调度分派执行”分离开来,进程做为系统资源分配和保护的独立单位,不须要频繁地切换,线程做为系统调度和分派的基本单位,能轻装运行,会被频繁地调度和切换,线程的出现会减小进程并发执行所付出的时空开销,使得并发粒度更细、并发性更好多线程
多线程环境下进程的概念:并发
在多线程环境中,进程是操做系统中进行保护和资源分配的独立单位。具备:用来容纳进程映像的虚拟地址空间,对进程、文件和设备的存取保护机制性能
线程是进程的一条执行路径,是调度的基本单位,同一个进程中的全部线程共享进程得到的主存空间和资源。它具备:线程执行状态,受保护的线程上下文,当线程不运行时,用于存储现场信息,独立的程序指令计数器,执行堆栈,容纳局部变量的静态存储器操作系统
线程状态有运行、就绪和睡眠,无挂起,与线程状态变化有关的线程操做有:孵化、封锁、活化、剥夺、指派、结束,OS感知线程环境下:处理器调度对象是线程,进程没有三状态(或者说只有挂起状态),OS不感知线程环境下:处理器调度对象还是进程,用户空间中的用户调度程序调度线程线程
并发多线程程序设计的优势:快速线程切换,减小(系统)管理开销,(线程)通讯易于实现,并行程度提升,节省内存空间设计
多线程技术的应用:前台和后台工做,C/S应用模式,加快执行速度,设计用户接口
线程管理的全部工做由OS内核来作,OS提供了一个应用程序设计接口API,供开发者使用KLT,OS直接调度KLT用户空间P内核空间P
进程中的一个线程被阻塞了,内核能调度同一进程的其它线程占有处理器运行,多处理器环境中,内核能同时调度同一进程中多个线程并行执行,内核自身也可用多线程技术实现,能提升操做系统的执行速度和效率,应用程序线程在用户态运行,线程调度和管理在内核实现,在同一进程中,控制权从一个线程传送到另外一个线程时须要模式切换,系统开销较大
用户空间运行的线程库,提供多线程应用程序的开发和运行支撑环境,任何应用程序均需经过线程库进行程序设计,再与线程库链接后运行,线程管理的全部工做都由应用程序完成,内核没有意识到线程的存在P用户空间线程库内核空间
全部线程管理数据结构均在进程的用户空间中,线程切换不须要内核模式,能节省模式切换开销和内核的宝贵资源,容许进程按应用特定须要选择调度算法,甚至根据应用需求裁剪调度算法,能运行在任何OS上,内核在支持ULT方面不须要作任何工做,不能利用多处理器的优势,OS调度进程,仅有一个ULT能执行,一个ULT的阻塞,将引发整个进程的阻塞
把阻塞式系统调用改形成非阻塞式的,当线程陷入系统调用时,执行jacketing程序,由jacketing程序来检查资源使用状况,以决定是否执行进程切换或传递控制权给另外一个线程
ULT适用于解决逻辑并行性问题,KLT适用于解决物理并行性问题
线程建立是彻底在用户空间作的,单应用的多个ULT能够映射成一些KLT,经过调整KLT数目,能够达到较好的并行效果
组合用户级线程/内核级线程设施,线程建立彻底在用户空间中完成,线程的调度和同步也在应用程序中进行,一个应用中的多个用户级线程被映射到一些(小于等于用户级线程数目)内核级线程上,程序员能够针对特定应用和机器调节内核级线程的数目,以达到总体最佳结果,该方法将会结合纯粹用户级线程方法和内核级线程方法的优势,同时减小它们的缺点
KLT三态,系统调度负责,ULT三态,用户调度负责,活跃态ULT表明绑定KLT的三态,活跃态ULT运行时可激活用户调度,非阻塞系统调用可以使用Jacketing启动用户调度,调整活跃态ULT
高级调度:又称长程调度,做业调度,决定可否加入到执行的进程池中
中级调度,又称平衡负载调度,决定主存中的可用进程集合
低级调度:又称短程调度,进程调度,决定哪一个可用进程占用处理器执行
分时OS中,高级调度决定:是否接受一个终端用户的链接,命令可否被系统接纳并构成进程,新建态进程是否加入就绪进程队列
批处理OS中,高级调度又称为做业调度,功能是按照某种原则从后备做业队列中选取做业进入主存,并为做业作好运行前的准备工做和完成后的善后工做
引进中级调度是为了提升内存利用率和做业吞吐量,中级调度决定那些进程被容许驻留在主存中参与竞争处理器及其余资源,起到短时间调整系统负荷的做用,中级调度把一些进程换出主存,从而使之进入“挂起”状态,不参与进程调度,以平顺系统的负载
低级调度:又称处理器调度、进程调度、短程调度,按照某种原则把处理器分配给就绪态进程或内核级线程,进程调度程序:又称分派程序,操做系统中实现处理器调度的程序,是操做系统的最核心部分,处理器调度策略的优劣直接影响到整个系统的性能
低级调度的主要功能:
根据分配给进程的优先数决定运行进程:抢占式优先数调度算法(对实时的适用),非抢占式优先数调度算法(对大多数适合)
优先数的肯定准则:进程负担任务的紧迫程度,进程的交互性,进程使用外设的频度,进程进入系统的时间长短
又称多队列策略,反馈循环队列,基本思想是创建多个不一样优先级的就绪进程队列,多个就绪进程队列间按照优先数调度,高优先级就绪进程,分配的时间片短,单个就绪进程队列中进程的优先数和时间片相同
基本思想:为进程发放针对系统各类资源(如CPU时间)的彩票;当调度程序须要作出决策时,随机选择一张彩票,持有该彩票的进程将得到系统资源,合做进程之间的彩票交换