多任务编程_理论篇.ppt
文本预览下载声明
进程的定义和性质 1960年在MIT的MULTICS和IBM公司的TSS/360系统中提出 进程的属性 结构性 可再入程序 和 不可再入程序 具有多进程(线程)的操作系统必须考虑可再入问题 进程的内存映像 进程时机 进程内存映像(Process Image) 进程程序块 进程控制块 (PCB) 每一个进程都有一个也只有一个进程控制块 进程的状态和转换 -三态模型 三态模型 进程的状态和转换 -五态模型 五态模型 五态模型状态转化 ·NULL-→新建态 执行一个程序,创建一个进程。 ·新建态-→就绪态 当操作系统完成了进程创建的必要操作,并且当前系统的性能和虚拟内存的容量均允许。 ·运行态-→终止态 当一个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作 系统所终结,或是被其他有终止权的进程所终结。 ·就绪态-→终止态 未在状态转换图中显示,但某些操作系统允许父进程终结子进程。 ·终止态-→NULL 完成善后操作。 ·等待态-→终止态 未在状态转换图中显示,但某些操作系统允许父进程终结子进程。 Windows 2000/XP中的线程状态 引入多线程技术的动机 进程切换的开销大,频繁的进程调度将耗费大量处理器时间 线程特点 线程被进程拥有,是系统进行处理器调度的基本单位 线程内存映象和内容 线程存在于进程之中,除了堆栈和CPU状态外,全部数据是共享的 Windows2000的线程内存映像 线程的实现方法 Windows 2000/XP中的进程与线程概念 Windows 2000/XP进程设计的目标是提供对不同操作系统环境的支持,具有:多任务(多进程)、多线程、支持SMP、能在任何可用CPU上运行的特点。由内核提供的进程结构和服务相对来说简单、适用,其重要的特性如下: 1)进程和线程是用对象来实现的(内核对象) 2)一个可执行的进程可以包含一个或多个线程 3)进程或线程两者均有内在的同步设施 4)线程是基本的调度单位,能够被系统中断,系统得以调度其他线程 5)进程是不活泼的,只是线程的容器 6)一个进程内的线程共享同一块内存地址,文件句柄等资源 中断 -进程切换调度的根源 中断是指程序执行过程中,当发生某个事件时,中止CPU上现行程序的运行,引出处理该事件的程序执行的过程 进程的控制 -- 进程切换与模式切换 中断是激活操作系统的唯一方法 模式切换 - 内核态和用户态 1 特权指令(Privileged Instructions)和非特权指令 模式切换 -内核态和用户态 2 Pentium的处理器状态有四种 Ring0-Ring3 系统调用的实施 系统调用使操作系统转入内核态 系统调用 例-WIN32 WriteFile GDI 任务的优先级 优先级:根据任务的重要性不同,可以设定优先级 Windows2000线程的优先级 每个线程都会被赋予一个从0-31的优先级号码 只要是高优先级的线程是可以调度的,系统绝对不会调度低优先级的(渴求调度Starvation) 系统引导的时候创建特殊的线程——0页线程,其优先级为0,当系统中没有任何其他线程运行时,0页线程负责将系统中所有的空闲RAM页面置0 进程内使用线程相对的优先级:空闲、低于正常、高于正常、最高、关键时间。 进程也根据具体情况被分为7个进程优先级类:空闲、低于正常、高于正常、最高、关键时间 线程的实际优先级是进程优先级类和进程内线程相对优先级的组合 正常优先级类的进程的基本优先级是5, 进程内正常优先级线程的优先级是8, 所以一个正常进程中的正常优先级线程的真正优先级是13 任务调度 按照某种原则把处理器分配给就绪进程或内核级线程 调度算法要考虑因素 响应时间 合作型多任务调度算法(Non-preemptive Multitasking ) 各个任务共享CPU,由任务控制CPU的使用权。 基于优先级抢占式调度算法(Preemptive Multitasking) 由操作系统控制CPU的使用权 同一优先级时间片轮转 单调速率 同一优先级时间片轮转 先来先服务 彩票调度 先来先服务 常见操作系统的任务调度算法 Linux提供符合了POSIX标准的调度策略,包括FIFO调度策略、时间片轮转调度策略和静态优先级抢占式调度策略。 使用多进程/多线程 多进程和多线程统称为多任务 并发任务的同步 - 问题 并发的几个任务同时访问了一个不可重入代码段,结果不可预期 机票问题 (结果不唯一) 任务的交互(Interaction Among Processes)——协作和竞争 竞争关系:多个任务共用了一套计算机系统资源,因而,必然要出现多个任务竞争资源的问题。当多个任务竞争共享硬设备、变量、表格、链表、文件等资源
显示全部