线程对称多处理和微内核重点课件.ppt
第3章 线程、对称多处理和微内核,进程和线程,进程的概念 资源分配的单位 调度/执行的单位解决进程切换开销大、提高并发程度线程:一个进程内的基本调度单位,线程和进程的主要区别:,1 进程是资源管理基本单位2 线程是处理机调度的基本单位(共享进程资源、自己没有资源)3 进程切换涉及资源转移及现场保护,时间长4 线程切换不发生资源变化、切换(线程上下文)时间短5 线程没有单独的数据和程序空间,不能交换到外存6 进程调度大多由操作系统内核完成,线程控制可以由操作系统内核进行,也可由用户控制7 线程通信效率高:在同一进程内,无需调用内核,可利用共享的存储空间,线程,执行状态(运行、就绪等)保存的线程上下文(非运行时)一个执行栈 独立的用来存储局部变量的静态存储器 对进程的存储器和其他资源的访问,与进程的其他线程共享这些资源 一个独立的程序指令计数器,进程与线程的关系,单线程和多线程的进程模型,线程应用实例,文件服务器每个新文件请求到达,为文件管理器产生一个新线程多线程在多处理器上性能更优,单用户多处理系统中线程使用,前台和后台操作(显示读取输入、执行命令更新)异步处理(周期性备份、缓冲区写磁盘)加速执行(多处理器多线程)模块化程序结构进程挂起-线程挂起进程终止-线程终止,线程功能,派生(spawn):又称创建线程。阻塞(block):又称线程阻塞或等待。当一个线程等待一个事件时,将变成阻塞态,保护它的用户寄存器、程序计数器和堆栈指针等现场。解除阻塞(unblock):又称恢复线程。当被阻塞线程等待的事件发生时,线程变成就绪态结束(finish):又称撤销线程。当一个线程正常完成时,便回收它占有的寄存器和堆栈等资源,撤销线程TCB。当一个线程运行出现异常时,允许强行撤销一个线程。,线程的实现,用户级线程(User-level Threads,ULT):POSIX的P-threads、Java的线程库内核级线程(Kernel-level Threads,KLT):Windows2000/XP、OS/2和Mach C-thread组合的方法(Combined Approaches):SolarisSUN 最初在Solaris 操作系统上实现的虚拟机采用的是用户级的线程库,以后改用内核线程和用户线程相结合的方式;Linux 系统上的虚拟机kaffe采用的是纯用户级的线程;Krall等人在为DEC Unix平台设计64 位Java 虚拟机时,采用的也是用户级的线程.,用户线程(user-level thread),用户线程的维护由应用进程完成;内核不了解用户线程的存在;用户线程切换不需要内核特权;用户线程调度算法可针对应用优化;,不依赖于OS核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。如:数据库系统informix,图形处理Aldus PageMaker。,特点:应用程序和线程被分配给内核管理的进程。线程创建:线程库派生控制权传递:过程调用线程上下文的保存:用户寄存器、PC、栈指针内核无法知晓用户空间的活动Java语言的用户级线程机制,线程阻塞导致进程阻塞虚拟感知,进程B在线程2中运行,进程B时间片到,用户级线程代替内核级线程优点,线程切换不需要模式切换调度算法可以去适应应用程序,而不会扰乱底层的操作系统调度程序不需要对底层内核进行修改以支持ULT,用户级线程代替内核级线程缺点,(系统调用)线程阻塞导致进程中所有线程阻塞一个多线程应用程序不能利用多处理技术一次进程中只有一个线程可以执行,内核维护进程和线程的上下文信息;线程切换由内核完成;一个线程发起系统调用而阻塞,不会影响其他线程的运行。时间片分配给线程,所以多线程的进程获得更多CPU时间。,依赖于OS核心,由内核的内部需求进行创建和撤销,用来执行一个指定的函数。Windows 2000/xp和Winnt支持内核线程;,内核线程(kernel-level thread),优点:线程阻塞不会导致进程阻塞可以利用多处理器技术内核例程本身也可以使用多线程线程管理使用API函数缺点:线程切换需要访问模式效率比用户级线程低(应用程序性质),组合方法(Solaris),ULT被映射到KLT多个线程可以在多个处理器上并行运行线程创建、调度和同步在用户空间某个会引起阻塞的系统调用不需要阻塞整个进程,其他方案,线程:进程 描述 示例 1:1 每个线程是一个进程 Unix M:1 进程中创建多个线程 windows Solaris、linux、os/2 1:M 线程在进程中迁移 Ra、Emerald M:N 综合M:1和1:M TRIX,进程和线程的比较,地址空间资源:不同进程的地址空间是相互独立的,而同一进程的各线程共享同一地址空间。一个进程中的线程在另一个进程中是不可见的。通信关系:进程间通信必须使用操作系统提供的进程间通信机制,而同一进程中的各线程间可以通过直接读写进程数据段(如全局变量)来进行通信。调度切换:同一进程中的线程上下文切换比进程上下文切换要快得多。,使用单线程的RPC,每个服务器使用 一个线程的RPC(单处理器),单处理器上的多线程,Windows2000/xp 的线程状态,对称多处理,分布式系统,每个CPU 都拥有自己的高速缓存、RAM、磁盘、图形子系统、声卡、监视器等,它们是一组普通的计算机,可能具有完全不同的体系结构,但都共同工作在某个网络之上。SMP,系统所有的CPU 都是相同的,且在一个计算机里,它们通过特殊用途的硬件通信,系统除了CPU 以外,每样东西只有一个一块图形卡、一个声卡等等之类,诸如RAM和磁盘及类似的资源为系统的CPU 所共享,引入:进程演化线程目的核心级线程并发使用处理器资源满足SMP主从结构缺点:内核在某个特定处理器上运行主处理器失败导致整个系统失败主处理器单独完成所有调度和进程管理(瓶颈)对称多处理:内核可运行在任一处理器上每个处理器可从可用进程和线程池完成自身的调度工作内核并行运行,多处理器操作系统的设计思考,多道程序系统+多个处理器关键设计问题同时的并发进程/线程:多处理器同时执行相同内核代码,内核例程可重入调度:避免多处理器的调度冲突同步:锁存储器管理:协调多处理器分页机制可靠性和容错,微内核体系结构,只有最基本操作系统功能放在内核中,运行在核心模式不是最基本服务和应用在内核之外,运行在用户模式(设备驱动程序、文件系统、虚存管理程序、窗口系统、安全),微内核组织结构的优点,一致接口:进程不区分内核还是用户,所有服务都以消息的形式提供可扩展性:允许增加新的服务、作为用户级进程实现、无需改动内核灵活性:可以增加新的功能、删除现有功能可移植性:把系统移植到新处理器上只需要对内核修改(大部分处理器专用代码在微内核中)可靠性:模块化、掌握少量API、小的微内核可以被严格地测试分布式系统支持:消息传送不需要知道目标机器的位置对面向对象操作系统的支持:组件技术,微内核性能,增大微内核:把一些关键的服务程序和驱动程序重新放回操作系统减少用户-内核模式切换的次数及地址空间进程切换的次数减少微内核:微内核构造和发送信息、接受应答并解码所花费时间比进行一次系统调用时间要多一代微内核:300KB代码140个系统调用接口第二代微内核:13KB代码7个系统调用接口,微内核设计,低级存储器管理微内核负责把每个虚页映射到一个物理页帧核外:包括保护一个进程的地址空间免于另一个进程的干涉、页替换算法以及分页逻辑都可以在内核外实现.,进程间通信:消息(消息头、消息体)IO和中断管理:识别中断、消息处理硬件中断可如同消息一样来处理微内核将生成一个消息传送给用户层中相关的处理中断的进程内核中并不包含特定设备专有中断处理代码,Windows线程和SMP管理,Windows进程作为对象实现一个可执行的进程可能包含一个或多个线程进程对象和线程对象都具有同步能力,Windows进程和线程对象,Windows线程状态,Solaris多线程体系结构,当应用不需要并发运行时,可以利用单线程进程结构;当程序设计时要表示并发而不真正需要多线程并行执行时,可以建立多个ULT,所有ULT对应于一个LWP,由单个内核线程支撑;当应用需要全面并行时,可以建立多个UL T,每个ULT 对应于一个LWP,从而使内核并行机制完全对应用可见.,Solaris用户级线程和轻量级进程状态,