第六讲+进程、线程与调度.ppt_第1页
第六讲+进程、线程与调度.ppt_第2页
第六讲+进程、线程与调度.ppt_第3页
第六讲+进程、线程与调度.ppt_第4页
第六讲+进程、线程与调度.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2020/9/13,北京理工大学珠海学院 计算机教研室,1,第二章 Windows CE体系结构与功能,北京理工大学珠海学院 计算机教研室,2,2020/9/13,教学目的,熟悉进程和线程的定义方法;掌握Windows CE5.0线程调度的原则及方法,北京理工大学珠海学院 计算机教研室,3,2020/9/13,项目4:多线程-PDA下多任务实现,本节课程主要知识点 Windows CE的结构功能概览 进程与线程的定义(重点) Windows CE5.0的线程调度(难点),北京理工大学珠海学院 计算机教研室,4,2020/9/13,教学重点 进程与线程的定义及调用方法 教学难点 线程的调度方法,

2、北京理工大学珠海学院 计算机教研室,5,2020/9/13,2.1 Windows CE的结构功能概览,2.1.1 Windows CE的层次体系结构 Windows CE属于典型的微内核操作系统 Windows CE采用层次化的设计方法 硬件层 OEM层 操作系统层 应用程序层 硬件层和OEM层由OEM厂商提供;操作系统层由微软公司提供;应用程序层由独立的软件开发商提供,北京理工大学珠海学院 计算机教研室,6,2020/9/13,Internet客户 端服务,第三方应用程序,Windows CE应用程序,用户界面 (国际化),应用和服务,CoreDll,对象存储,多媒体技术,GWES,设备管

3、理器,网络,内核,OEM抽象层,BootLoader,配置文件,驱动程序,硬件层,OEM层,操作系统层,应用程序层,图2.1 Windows CE的层次化体系结构,北京理工大学珠海学院 计算机教研室,7,2020/9/13,2.1.2 硬件层 嵌入式系统的硬件有如下特点: 处理器体系结构不统一 硬件资源通常受限 外部设备种类繁多 有实时性和可靠性要求 2.1.3 OEM层 逻辑上位于硬件和Windows CE操作系统之间的一层硬件相关代码 作用是对具体的硬件进行抽象,得到统一的接口 包括OEM抽象层、引导程序Bootloader、配置文件(Configuration File)和驱动程序(De

4、vice Driver),北京理工大学珠海学院 计算机教研室,8,2020/9/13,OEM抽象层是整个OEM层的主体。负责Windows CE内核与硬件的通信,并进行硬件平台的初始化;物理上是内核的一部分 引导程序Bootloader是在硬件开发板上执行的一段代码,主要功能是初始化硬件,加载操作系统映像到内存,然后跳转到操作系统代码去执行。 配置文件是一些包含配置信息的文件 驱动程序直接与硬件外设打交道,是应用程序或操作系统与硬件外设交互的桥梁 与Windows CE的OEM层相对应的概念:BSP BSP是介于主板硬件和操作系统之间的一层。目的是为了支持操作系统,使之能够正常地运行于硬件主板

5、上,北京理工大学珠海学院 计算机教研室,9,2020/9/13,2.1.4 操作系统层 Windows CE的进程管理、线程管理、处理机管理、调度、物理内存和虚拟内存管理、文件系统及设备管理功能的实现都位于这一层 操作系统的基本功能放在多个独立的进程里实现 内核NK.EXE 对象存储FILESYS.EXE 设备管理系统DEVICE.EXE 图形系统GWES.EXE 服务SERVICES.EXE 由于Windows CE是一个可裁剪的嵌入式操作系统,所以 未必所有的Windows CE系统中都有上述的几个进程,北京理工大学珠海学院 计算机教研室,10,2020/9/13,图2.2 Windows

6、 CE的模块图,北京理工大学珠海学院 计算机教研室,11,2020/9/13, 系统调用与CoreDll.dll 主要功能负责应用程序与Windows CE通信以及完成Windows CE的系统调用(System Call) 系统调用的过程 应用程序首先直接调用CoreDll.dll中的一个包装(Wrapper)函数,此包装函数为真正的系统调用准备所需的参数。进程内部的调用 CoreDll.dll发起一个异常。其作用是把执行权重新由应用程序交给操作系统,北京理工大学珠海学院 计算机教研室,12,2020/9/13,操作系统内核会捕捉所有的异常,当操作系统捕获到此异常时,也就获得了

7、CPU。在Windows CE上,NK.EXE会处理这个软件终端。此时进行系统调用的应用程序进程就挂起,执行就转入NK.EXE NK.EXE根据系统调用的不同,找到具体实现该系统调用的进程。此进程可能是NK.EXE,也可能不是。若不是则执行再次跳转,把执行转到具体实现系统调用的进程去执行 实现此系统调用的进程得到执行机会,会根据具体系统调用的不同而完成系统调用希望实现的功能,然后返回。,北京理工大学珠海学院 计算机教研室,13,2020/9/13,当实现系统调用的进程执行结束返回的时候,整个系统调用也就结束。应用程序从CoreDll.dll的调用处返回,然后继续执行。 CreateWindow

8、()、CreateProcess()、CharLowerBuff(),User mode thread,Win32 API Thunks,Function Call,Coredll.dll,App.exe,KernelTrap,Win32 API Dispatch,Nk.exe,Jump,Function Code,GWES. EXE,KernelCall,ReturnCall,北京理工大学珠海学院 计算机教研室,14,2020/9/13, 内核NK.EXE 所有基于Windows CE的系统中都存在的核心进程。实现了Win32 API核心中进程创建加载、线程调用、中断处理和内存

9、管理等核心功能。 NK.LIB + OAL.LIB = NK.EXE 微软提供了预先编译的 NK.LIB 库文件。其代码与CPU指令体系结构相关而与具体的外设无关。 OAL.lib是OEM层中的OAL代码编译后的输出 图形系统GWES.EXE 图形窗口事件系统 (Graphical Windowing and Event System,GWES),北京理工大学珠海学院 计算机教研室,15,2020/9/13,负责操作系统中与图形界面相关的部分及用户的输入。 Windows CE5.0中将电源管理从GWES.EXE中移走 对象存储FILESYS.EXE 文件系统和

10、数据存储统称为对象存储。 对象存储包括文件系统、Windows CE数据库和系统注册表 文件系统包括RAM文件系统和ROM文件系统 Windows CE数据库提供结构化的数据存储 系统注册表负责存储系统和应用程序的配置信息,北京理工大学珠海学院 计算机教研室,16,2020/9/13, 设备管理DEVICE.EXE 负责加载、卸载和管理所有不被GWES.EXE管理的驱动程序。如总线驱动程序、电源管理DLL等。 服务SERVICES.EXE 负责加载系统服务的进程,如FTP, TELNET, HTTPD (Web), UPnP, SMB, 其它 2.1.5 应用程序

11、层 位于Windows CE层次结构的最顶层。 每个应用程序都是Windows CE中的一个单独进程,其运行在权限较低的处理机状态下。使用操作系统提供的API系统调用与操作系统交互。,北京理工大学珠海学院 计算机教研室,17,2020/9/13,进程是程序的一次运行活动,是操作系统中分配资源的基本单位。 进程具有动态性、并行性和异步独立性。 动态性:任务状态是不断变化的。 并行性:系统中同时存在多个任务,它们宏观上是同时运行的 异步独立性:每个任务各自按相互独立的不可预知的速度运行。,2.2 进程、线程与调度,北京理工大学珠海学院 计算机教研室,18,2020/9/13,进程和程序的区别,程序

12、是静态的,进程是动态的。 进程有生命周期,有诞生有消亡,短暂的;而程序是相对长久的。 一个程序可对应多个进程,反之亦然。 进程具有创建其他进程的功能,而程序没有。,北京理工大学珠海学院 计算机教研室,19,2020/9/13,生活中的实例,电影胶片相当于程序,放电影的过程相当于进程。 电影胶片是静态的,放电影的过程是动态的。 电影胶片可以长期保存,放电影的过程是有时间的,短暂的。 一个电影胶片可以对应多个放映活动。 一次放映过程可以放映多部电影。,北京理工大学珠海学院 计算机教研室,20,2020/9/13,进程的组成,进程是由程序、数据及进程控制块三部分组成。 进程的程序部分描述了进程所要完

13、成的功能。 如果一个程序能为多个进程同时共享执行,那么,这部分就应以再入码(reentry code)编制,它是进程执行时不可修改的部分。,北京理工大学珠海学院 计算机教研室,21,2020/9/13,进程的数据,进程的数据集合部分包含两方面内容,即程序运行时所需要的数据和工作区。 数据集合部分通常由一个进程独占,为进程的可修改部分。 程序和数据集合部分是进程存在的物质基础,是进程的实体。,北京理工大学珠海学院 计算机教研室,22,2020/9/13,进程控制块PCB,进程控制块PCB (Process Control Block),它包含了进程的描述信息、控制信息、资源管理信息和进程的现场保

14、护信息,是进程动态特性的集中反映。 一般包含以下内容: 进程标识名和标识数 位置信息 进程的状态信息 进程的优先权 进程间进行通讯的有关信息 进程现场保护区,北京理工大学珠海学院 计算机教研室,23,2020/9/13,2.2.1 Windows CE的进程,Windows CE5.0是多进程多线程操作系统,最多支持32个进程同时运行,理论上每一个进程可拥有无数个线程。 系统启动时,默认启动最少4个进程: NK.exe 提供有关内核的服务 FILESYS.exe 提供有关文件系统服务 GWES.exe 提供对GUI系统的支持 Device.exe 载入管理设备驱动程序,北京理工大学珠海学院 计

15、算机教研室,24,2020/9/13,Windows CE的进程结构,在Windows CE中,进程本身不参加系统的调度,也没有优先级和上下文。 进程创建时,会创建一个主线程作为该进程默认的执行体。 每个进程占据32MB的虚拟内存空间。 4G的虚拟内存分成若干个Slot,Slot0-32分配给系统的32个进程使用。 其中Slot 0用于映射当前正在执行的进程。,北京理工大学珠海学院 计算机教研室,25,2020/9/13,进程在内存中,北京理工大学珠海学院 计算机教研室,26,2020/9/13,Windows CE的进程不支持环境变量和当前目录 P35 应用程序使用CreateProcess

16、()函数创建进程。若创建成功,则函数返回非0;若失败函数返回FALSE。函数原型为 BOOL CreateProcess( LPCTSTR lpszImageName,/可执行文件的路径和名字 LPTSTR lpszCmdLine,Null,Null,False,/命令行参数 DWORD fdwCreate,Null,Null,Null,/执行进程加载后的状态 LPPROCESS_INFORMATION lppiProcInfo /返回的进程相关信息 );,北京理工大学珠海学院 计算机教研室,27,2020/9/13,第1个参数是可执行文件的路径和名称,如果没有明确指明可执行文件的路径,那么W

17、indows CE会按照如下顺序搜索: Windows目录(“Windows”); 对象存储的根目录(“”); OEM所指定的搜索目录(在系统注册表的”HEKY_LOCAL_MACHINELoaderSystemPath”下添加) 第2个参数lpszCmdLine指定要传递给新进程的命令行参数,命令行参数必须以Unicode字符串的形式传递 fdwCreate指定进程加载后的初始状态,北京理工大学珠海学院 计算机教研室,28,2020/9/13,最后一个参数lppiProcInfo指向一个PROCESS_INFORMATION结构体,此结构体返回进程和主线程的句柄以及ID。 进程终止的最佳方法

18、是从WinMain()函数返回。还有另外几种方法 ExitThread()使进程的主线程退出从而终止进程 ExitProcess() TerminateProcess(),表2.1 CreateProcess的fdwCreate参数,北京理工大学珠海学院 计算机教研室,29,2020/9/13,2.2.2 线程 Windows CE中最小的可执行单元。Windows CE的调度系统只识别和调度线程 进程中所有的线程共享进程的所有资源 一个进程拥有的线程数理论上没有限制,只与当前可用的内存有关 线程占用内存、处理器的寄存器和栈。每个线程有自己独立的栈。这些资源构成了线程的上下文。,北京理工大学珠

19、海学院 计算机教研室,30,2020/9/13,线程可运行在核心态或用户态 核心态,线程可访问操作系统所有的资源。一般操作系统线程和中断服务例程运行在核心态 应用程序和设备驱动程序的中断服务线程运行在用户态 线程有五种状态,分别为运行、挂起、睡眠、阻塞、终止。 应用程序使用CreateThread()函数创建一个新线程。原型如下:,北京理工大学珠海学院 计算机教研室,31,2020/9/13,HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpsa, DWORD cbStack, LPTHREAD_START_ROUTINE lpStartAddr, LP

20、VOID lpvThreadParam, DWORD fdwCreate, LPDWORD lpIDThread );,北京理工大学珠海学院 计算机教研室,32,2020/9/13,如果线程创建成功,函数返回新创建线程的句柄;否则返回NULL 若将fdwCreate参数设置为CREATE_SUSPENDED来创建一个起始状态为挂起的线程,否则线程创建结束后就会立即执行。 线程结束最好的方法是从线程的执行函数返回。另Windows CE提供了ExitThread()和TerminateThread()函数来结束线程。,北京理工大学珠海学院 计算机教研室,33,2020/9/13,2.2.3 调度

21、 Windows CE是一个抢占式多任务操作系统。调度程序使用基于优先级的时间片算法对线程进行调度。 Windows CE每个线程都有一个优先级,调度系统根据线程的优先级进行调度 线程可拥有256个优先级。0为优先级最高,255表示优先级最低。,北京理工大学珠海学院 计算机教研室,34,2020/9/13,0-96:供优先级高于驱动程序的实时程序使用 97-152:基于Windows CE的驱动程序 153-247:供优先级低于驱动程序的实时程序使用 248-255:非实时的普通应用程序 驱动程序和应用程序可使用CeGetThreadPriority()和CeSetThreadPriority

22、()函数来获取和设置线程的优先级 每个线程都有一个时间片大小,默认为100ms。此时间片大小可用CeGetThreadQuantum()函数获得,线程获得处理器后,会执行特定的一段时间,然后重新调度,北京理工大学珠海学院 计算机教研室,35,2020/9/13,线程的运行状态: 运行(Running) 线程正在处理器上执行 就绪(Ready) 线程可执行,但此刻并没有占用处理器。若被调度程序选中,则占有处理器就进入运行状态 挂起(Suspended) 创建线程时指定CREATE_SUSPENDED参数或调用SuspendThread函数都可导致线程挂起。此状态不占用处理器。每个线程都有一个挂起

23、计数,SuspendThread函数用来增加挂起计数,ResumeThread函数使线程挂起计数减1.当挂起计数为0时,线程转入就绪态。 睡眠(Sleeping) 调用Sleep函数可使线程进入睡眠状态。此状态不能占有处理器。睡眠结束后,线程转入就绪态,北京理工大学珠海学院 计算机教研室,36,2020/9/13,阻塞(Blocked) 如果线程申请的共享资源暂时无法获得,此时线程进入阻塞状态,此状态不占有处理器。当共享资源可以获得后,线程转入就绪态。 终止(Terminated) 线程运行结束,运行,就绪,阻塞,睡眠,挂起,终止,上下文 切换,得到 处理器,睡眠结束,Resume,运行结束,

24、Sleep(n),得到 资源,Suspend,申请被其 他线程占 有的共享 资源,图 线程状态转换图,北京理工大学珠海学院 计算机教研室,37,2020/9/13,基于优先级不可抢占调度,一旦某个线程占有了处理器就一直运行下去,直到该线程由于自身的原因自愿放弃处理器,线程调度程序才按优先级进行重调度,让其它线程运行。,北京理工大学珠海学院 计算机教研室,38,2020/9/13,基于优先级可抢占调度,任何时刻都严格按照高优先级线程在处理器上运行的原则进行线程调度,或者说,在处理器上运行的线程永远是就绪线程中优先级最高的线程。 嵌入式操作系统要保证实时性,必须要求可抢占调度。,北京理工大学珠海学

25、院 计算机教研室,39,2020/9/13,轮转调度,是指当有两个或多个就绪线程具有相同的优先级且它们是就绪线程中优先级最高的线程时,线程调度程序按照这组线程就绪的先后次序调度第一个线程,让它运行一段时间。 运行的这段时间称为时间片。 当任务运行完一个时间片后,该线程即使还没有运行完成,也必须释放处理器让下一个与它相同优先级的线程运行。,北京理工大学珠海学院 计算机教研室,40,2020/9/13,举例,线程A拥有最高的优先级,他会一直执行直到结束或阻塞 线程B和C使用Round-Robin算法运行 在round-robin 每个线程都运行一个固定的时间,叫做时间片 优先级数字越小,优先级越高,北京理工大学珠海学院 计算机教研室,41,2020/9/13,Windows CE调度系统的特点: 具有最高优先级的进程如果处于就绪状态,则总是会被调度系统选中执行; 若系统中存在多个优先级相同的就绪进程,这些进程以时间片轮转算法调度; 若线程的时间片大小被设置

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论