Windows进程与线程_第1页
Windows进程与线程_第2页
Windows进程与线程_第3页
Windows进程与线程_第4页
Windows进程与线程_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、Windows进程与线程Windows进程与线程2内容安排Windows基本概念Windows进程Windows线程Windows进程线程模型Windows进程线程内部数据结构Windows进程的创建过程Windows线程调度线程的同步和互斥Windows进程与线程3Windows 核心系统文件核心系统文件Windows基本概念执行体(executive)和内核(kernel)简化的简化的windows结构图结构图Kernel: 由底层次由底层次的操作系统功能构的操作系统功能构成,比如线程调度、成,比如线程调度、中断和异常分发、中断和异常分发、多处理器同步等。多处理器同步等。提供了一些例程和提

2、供了一些例程和基本对象。执行体基本对象。执行体可以利用这些例程可以利用这些例程和对象实现更高层和对象实现更高层次的功能。次的功能。Executive: 包含了包含了基本的操作系统服基本的操作系统服务,包括内存管理、务,包括内存管理、进程和线程管理、进程和线程管理、安全性、安全性、I/O、网、网络和跨进程通信等。络和跨进程通信等。Windows进程与线程4Windows基本概念执行体对象和内核对象暴露给暴露给windows API的执行体对象的执行体对象执行体对象:执行体对象:指由执行体的各指由执行体的各种组件种组件(比如进比如进程管理器、内存程管理器、内存管理器、管理器、I/O子子系统等系统等

3、)所实现所实现的对象。的对象。内核对象内核对象指由指由Windows内内核实现的一组更核实现的一组更为基本的对象。为基本的对象。内核对象对用户内核对象对用户模式代码而言是模式代码而言是不可见的,只能不可见的,只能在执行体内部被在执行体内部被创建和使用。创建和使用。Windows进程与线程5Windows基本概念对象结构对象头:和对象类型无关的数据,对象头:和对象类型无关的数据,为所有对象共有。由对象管理器为所有对象共有。由对象管理器(object manager)管理。管理。对象体:单个对象特有的对象体:单个对象特有的数据。由执行体组件控制数据。由执行体组件控制和维护。和维护。类型对象:某类对

4、类型对象:某类对象共有的数据。象共有的数据。Windows进程与线程6Windows基本概念标准的对象头属性标准的对象头属性Windows进程与线程7Windows基本概念进程对象和进程类型对象进程对象和进程类型对象共享共享Windows进程与线程8Windows基本概念对象句柄即对象标识符。当一个进程通过名称创建或打开一个对象时,它会接收到一个句柄,此后通过此句柄来访问该对象。对象句柄实际上是一个索引,指向与进程相关的句柄表中的表项。对象句柄表(Handle Table)一个进程的句柄表包含所有已被该进程打开的那些对象的指针。一个句柄表项的结构如下:Handle Tableobjectobj

5、ectWindows进程与线程9Windows基本概念Windows2000进程句柄表结构图进程句柄表结构图级联结构级联结构Windows进程与线程10Windows进程Windows进程的组成(从最高抽象层次看)一个私有的虚拟地址空间一个可执行的程序,定义了代码和数据,并被映射到进程的虚拟地址空间一个已经打开句柄的列表指向各种资源,比如信号量、文件,该进程的所有线程都可访问这些系统资源一个被称为访问令牌的安全环境标识与该进程关联的用户、安全组和特权一个被称为进程ID的唯一标识至少一个执行线程Windows进程与线程11Windows进程Windows进程的关键数据结构执行体进程块(EPROC

6、ESS, Executive Process Block)执行体进程对象的对象体,包括进程ID、父进程ID、程序名、进程优先级、内存管理信息、设备映像等。核心进程块(KPROCESS, Kernel Process Block)内核进程对象的对象体,又称PCB,包括线程调度时需要的信息,如进程状态、线程时间片等。进程环境块(PEB, Process Environment Block)包括用户态代码需要和修改的信息。Windows环境子系统核心态部件为每个进程建立的进程信息数据结构WIN32KPROCESSWindows环境子系统进程csrss(用户态空间)为每个进程建立的进程信息数据结构Wi

7、ndows进程与线程12Windows线程组成线程的基本部件一组代表处理器状态的CPU寄存器中的内容两个栈一个用于当线程在内核模式下执行的时候,另一个用于线程在用户模式下执行的时候。一个被称为线程局部存储区(TLS, Thread Local Storage)的私有存储区域各个子系统、运行库和DLL都会用到该存储区域一个被称为线程ID的唯一标识符安全环境Windows进程与线程13Windows线程Windows线程的关键数据结构执行体线程块(ETHREAD, Executive Thread Block)执行体线程对象的对象体,包括:进程ID、起始执行地址、访问令牌、LPC消息、定时器信息、

8、KTHREAD等。核心线程块(KTHREAD, Kernel Thread Block)内核线程对象的对象体,包括线程调度信息、同步信息、核心栈信息等。线程环境块(TEB, Thread Environment Block)包括用户态代码需要和修改的信息。Windows环境子系统核心态部件为每个线程建立的线程信息数据结构WIN32THREADWindows环境子系统进程csrss(用户态空间)为每个线程建立的线程信息数据结构Windows进程与线程14Windows进程线程模型Windows进程线程模型图进程线程模型图Windows进程与线程15Windows进程线程模型Process env

9、ironment blockThread environment blockThread block(ETHREAD)Win32 process block Handle table.Process address spaceSystem address spaceProcess block(EPROCESS)Windows中与进程和线程相关联的数据结构中与进程和线程相关联的数据结构Windows进程与线程16Dispatcher HeaderProcessor AffinityKernel TimeUser TimeInw List EntryProcess Spin LockResiden

10、t Kernel Stack CountProcess Base PriorityDefault Thread QuantumProcess StateThread SeedDisable Boost FlagProcess Page DirectoryKTHREAD. . .KPROCESSWindows进程线程内部数据结构EPEOCESS & KPROCESSQuota BlockExit StatusPrimary Access TokenProcess IDParent Process IDException PortDebugger PortHandle TableProcess E

11、nvironment BlockCreate and Exit TimeNext Process BlockImage Process Priority ClassMemory Management InformationEPROCESSKernel Process Block (or PCB)Image Base AddressWin32 Process BlockEPROCESSWindows进程与线程17Windows进程线程内部数据结构PEBQuota BlockExit StatusPrimary Access TokenProcess IDParent Process IDExce

12、ption PortDebugger PortHandle TableProcess Environment BlockCreate and Exit TimeNext Process BlockImage Process Priority ClassMemory Management InformationEPROCESSKernel Process Block (or PCB)Image Base AddressWin32 Process BlockEPROCESSPEBImage base addressModule listThread-local storage dataCode p

13、age dataCritical section time-outNumber of heapsHeap size infoGDI shared handle tableOS version no infoImage version infoImage process affinity maskProcessheapWindows进程与线程18Total User TimeTotal Kernel TimeThread Scheduling InformationSynchronization InformationList of Pending APCsTimer Block and Wai

14、t BlocksList of Objects Being Waiting OnSystem Service TableTEBKTHREADThread Local StorageKernel Stack InformationDispatcher HeaderTrap FrameWindows进程线程内部数据结构ETHREAD & KTHREADETHREADCreate and Exit TimeProcess IDThread Start AddressImpersonation InformationLPC Message InformationEPROCESSAccess Token

15、KTHREADTimer InformationPending I/O RequestsWindows进程与线程19Windows进程线程内部数据结构TEBException listStack baseStack limitThread IDActive RPC handleLastError valueCount of owned crit. sect.Current localeUser32 client infoGDI32 infoOpenGL infoTLS arraySubsyst. TIBFiber infoPEBWinsock dataWindows进程与线程20Windows

16、进程的创建过程与进程相关的函数Windows进程与线程21Windows进程的创建过程Open EXE andcreate selection objectCreate NTprocess objectCreate NTthread objectNotify WindowssubsystemSet up for newprocess andthreadStart execution of the initialthreadReturn to callerFinalprocess/imageinitializationStart executionat entry point toimageCr

17、eaeProcess()Windows subsystemNew processStep 1Step 2Step 3Step 4Step 5Step 6Windows进程与线程22Windows线程调度调度算法(Windows XP/2000/2003)采用动态优先级多队列调度算法优先级Windows进程与线程23Windows线程调度 Win32 Process Classes Realtime High Above Normal Normal Below Normal Idle Win32 Time-critical 31 15 15 15 15 15 Thread Highest 26

18、15 12 10 8 6 Priorities Above-normal 25 14 11 9 7 5 Normal 24 13 10 8 6 4 Below-normal 23 12 9 7 5 3 Lowest 22 11 8 6 4 2 Idle 16 1 1 1 1 1 Windows线程的基本优先级线程的基本优先级动态优先级:动态优先级:每个线程的每个线程的“动态优先级动态优先级”以线程的基以线程的基本优先级为初始值,随着进程所做工作本优先级为初始值,随着进程所做工作类型的不同而上下浮动类型的不同而上下浮动Windows进程与线程24Windows线程调度调度器Dispatcher(

19、分发器):内核中负责调度的例程的集合。为方便调度,内核维护着一个数据结构,称为“Dispatcher Database”(分发器数据库)分发器数据库分发器数据库(就绪队列就绪队列)Windows进程与线程25Windows线程调度Windows Server 2003线程状态备用备用转换转换延迟的就绪延迟的就绪抢占抢占自愿切换自愿切换Windows进程与线程26Windows线程调度Windows线程的基本状态Ready (1)Running (2)Waiting (5)voluntaryswitchpreemption, quantum end抢占抢占,时间约束时间约束自愿切换自愿切换Win

20、dows进程与线程27Windows线程调度调度情形Preemption(抢占)181716151413Running Readyfrom Wait stateWindows进程与线程28Windows线程调度Ready after Wait Resolution(等待结束进入就绪状态)181716151413Running Readyfrom Wait stateWindows进程与线程29Windows线程调度Voluntary Switch(自愿切换)181716151413Running Readyto Waiting stateWindows进程与线程30Windows线程调度Qua

21、ntum End (时间片用完)Running Ready181716151413Windows进程与线程31线程的同步和互斥同步对象Windows 2000/XP中提供了同步对象来解决线程同步和互斥问题。在任何时刻,同步对象都处于两种状态中的一种信号态(signaled state)或者非信号态(nonsignaled state)这些对象包括事件对象信号量对象临界区对象定时器对象队列对象等 Windows进程与线程32线程的同步和互斥事件对象(Event)是最简单的同步对象,它包括有信号和无信号两种状态。在线程访问某一资源之前,需要等待某一事件的发生,这时用事件对象最合适。相关API:Cr

22、eateEvent:创建一个事件对象,返回对象句柄。OpenEvent:返回一个已存在的事件对象句柄,用于后续访问。SetEvent:设置指定事件为可用状态。ResetEvent:设置指定事件对象为不可用状态。Windows进程与线程33线程的同步和互斥信号量对象(Semaphore)信号量对象是同步对象,初值为0至某个最大值之间的正整数,它允许同时对多个线程共享资源进行访问,用于限制并发资源的线程数。相关API:CreateSemaphore :创建一个信号量对象,返回对象句柄。OpenSemaphore :返回一个已存在的信号量对象句柄,用于后续访问。ReleaseSemaphore:释放

23、对信号量对象的占用。Windows进程与线程34线程的同步和互斥互斥体对象(Mutex)互斥体对象的状态在它不被任何线程拥有时才有信号,而当它被拥有时则无信号。互斥体对象适合用来协调多个线程对共享资源的互斥访问,它在同一时刻只能被一个线程占用。相关API:CreateMutex :创建一个互斥对象,返回对象句柄。OpenMutex :打开并返回一个已存在的互斥对象句柄,用于后续访问。ReleaseMutex:释放对互斥体对象的占用,使之成为可用。Windows进程与线程35线程的同步和互斥临界区对象(CriticalSection)临界区对象只能用于同一进程的线程之间共享资源处理,同一进程内各线程对它的访问是互斥进行的。把变量类型说明为CRITICAL_SECTION,就可作为临界区使用。相关API:InitializeCriticalSection:对临界区对象进行初始化。EnterCriticalSection:等待占用临界区的使用权,得到使用权时返回。Le

温馨提示

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

评论

0/150

提交评论