第11章-win2000xp进程和处理机管理

上传人:豆浆 文档编号:47429656 上传时间:2018-07-02 格式:PPT 页数:80 大小:1.43MB
返回 下载 相关 举报
第11章-win2000xp进程和处理机管理_第1页
第1页 / 共80页
第11章-win2000xp进程和处理机管理_第2页
第2页 / 共80页
第11章-win2000xp进程和处理机管理_第3页
第3页 / 共80页
第11章-win2000xp进程和处理机管理_第4页
第4页 / 共80页
第11章-win2000xp进程和处理机管理_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《第11章-win2000xp进程和处理机管理》由会员分享,可在线阅读,更多相关《第11章-win2000xp进程和处理机管理(80页珍藏版)》请在金锄头文库上搜索。

1、MicrosoftWindows 2000/XP第11章 进程、线程和处理机管理1MicrosoftWindows 2000/XP11.1 进程同步与进程间通信11.2 线程调度2MicrosoftWindows 2000/XP11.1 进程同步与进程间通信11.1.1 Windows 2000/XP的进程互斥和同步 11.1.2 Windows 2000/XP的信号(signal) 11.1.3 Windows 2000/XP基于文件映射的共享 存储区 11.1.4 Windows 2000/XP管道 11.1.5 Windows 2000/XP邮件槽 11.1.6 Windows 2000

2、/XP套接字 11.1.7 剪帖板(Clipboard)返回3MicrosoftWindows 2000/XP11.1.1 Windows 2000/XP的 进程互斥和同步返回对象状态可分成可用和不可用两种。对象可用(signaled state)表示该对象不被任何线程使用或所有;而对象不可 用(nonsignaled state)表示该对象被某线程使用。对象名称是由用户给出的字符串。不同进程中用同样的名 称来创建或打开对象,从而获得该对象在本进程的句柄。在Windows 2000/XP中提供了互斥对象、信号量对象和 事件对象等三种同步对象和相应的系统调用,用于进程 和线程同步。从本质上讲,这

3、组同步对象的功能是相同 的,它们的区别在于适用场合和效率会有所不同。4MicrosoftWindows 2000/XP11.1.1.1 互锁变量访问 11.1.1.2 临界区对象(Critical Section) 11.1.1.3 互斥对象(Mutex) 11.1.1.4 信号量对象(Semaphore) 11.1.1.5 事件对象(Event)5MicrosoftWindows 2000/XP互锁变量访问是最基本的互斥手段,其他的互斥和共享机 制都是以它为基础的。它相当于硬件TS指令。用于对整型 变量的操作,可避免线程间切换对操作连续性的影响。这 组互锁变量访问API包括:Interloc

4、kedExchange进行32位数据的先读后写原子操作; InterlockedExchangePointer对指针的Exchange原子操作; InterlockedCompareExchange依据比较结果进行赋值的原子操作; InterlockedCompareExchangePointer对指针的CompareExchange原子 操作; InterlockedExchangeAdd先加后存结果的原子操作; InterlockedDecrement先减1后存结果的原子操作; InterlockedIncrement先加1后存结果的原子操作。11.1.1.1 互锁变量访问返回6下面是In

5、terlockedExchange()的汇编结果: 17: InterlockedExchange( 0040119A mov esi,esp 0040119C mov eax,dword ptr ebp-8 0040119F push eax; lTemp压栈 004011A0 push offset lCounter (004299ec); lCounter地址压 栈 004011A5 call dword ptr _imp_InterlockedExchange8 (0042c178) 004011AB cmp esi,esp 004011AD call _chkesp (0040394

6、0); 这个函数就一条指令77E66AC3 mov ecx,dword ptr esp+4; 取lCounter的地址 77E66AC7 mov edx,dword ptr esp+8; 取lTemp 77E66ACB mov eax,dword ptr ecx; 取lCounter 77E66ACD nop 77E66ACE cmpxchg dword ptr ecx,edx; 比较交换指令 77E66AD1 jne 77E66ACD 77E66AD3 ret 87MicrosoftWindows 2000/XP11.1.1.2 临界区对象(Critical Section) 只能用于在同一

7、进程内使用的临界区,同一进 程内各线程对它的访问是互斥进行的。相关API 包括: InitializeCriticalSection对临界区对象进行初始化; EnterCriticalSection等待占用临界区的使用权,得到 使用权时返回; TryEnterCriticalSection非等待方式申请临界区的使 用权;申请失败时,返回0; LeaveCriticalSection释放临界区的使用权; DeleteCriticalSection释放与临界区对象相关的所有 系统资源。 返回8MicrosoftWindows 2000/XP11.1.1.3 互斥对象(Mutex) 互斥对象相当于互

8、斥信号量,在一个时刻只能 被一个线程使用。有关的API: CreateMutex创建一个互斥对象,返回对象句柄; OpenMutex返回一个已存在的互斥对象的句柄,用 于后续访问; ReleaseMutex释放对互斥对象的占用,使之成为可 用;返回9MicrosoftWindows 2000/XP11.1.1.4 信号量对象(Semaphore) 信号量对象的取值在0到指定最大值之间 ,用于限制并发访问的线程数。有关的 API: CreateSemaphore创建一个信号量对象,指 定最大值和初值,返回对象句柄; OpenSemaphore返回一个已存在的信号量对 象的句柄,用于后续访问; R

9、eleaseSemaphore释放对信号量对象的占用 ; 返回10MicrosoftWindows 2000/XP11.1.1.5 事件对象(Event) 事件对象相当于“触发器“,可通知一个或多个 线程某事件的出现。有关的API: CreateEvent创建一个事件对象,返回对象 句柄; OpenEvent返回一个已存在的事件对象的句 柄,用于后续访问; SetEvent和PulseEvent设置指定事件对象为 可用状态;设置指定事件对象为不可用状态 ResetEvent;手工复位,并唤醒所有等待线 程;返回11MicrosoftWindows 2000/XP11.1.1.6 同步对象等待对

10、于这些同步对象,Windows 2000/XP提供了两个统一的等 待操作WaitForSingleObject和WaitForMultipleObjects。(1) WaitForSingleObject在指定的时间内等待指定对象为 可用状态(signaled state);DWORD WaitForSingleObject( HANDLE hHandle,/ handle of object to wait for DWORD dwMilliseconds/ time-out interval in milliseconds ); 返回12MicrosoftWindows 2000/XP(2

11、) WaitForMultipleObjects在指定的时间内等待多个 对象为可用状态;DWORD WaitForMultipleObjects( DWORD nCount,/对象句柄数组中的句柄数;CONST HANDLE *lpHandles,/ 指向对象句柄数组的指针,数组中可包括多种对象 句柄;BOOL bWaitAll,/ 等待标志:TRUE表示所有对象同时可用,FALSE表示 至少一个对象可用;DWORD dwMilliseconds / 等待超时时限;); 13MicrosoftWindows 2000/XP11.1.2 Windows 2000/XP的信号(signal)11.

12、1.2.1 SetConsoleCtrlHandler和 GenerateConsoleCtrlEvent 11.1.2.2 signal和raise返回信号是进程与外界的一种低级通信方式。进程可发送 信号,每个进程都有指定信号处理例程。信号通信是 单向和异步的。Windows 2000/XP有两组与信号相关的 系统调用,分别处理不同的信号。14MicrosoftWindows 2000/XP11.1.2.1 SetConsoleCtrlHandler和 GenerateConsoleCtrlEvent返回 SetConsoleCtrlHandler在本进程的处理例程 (HandlerRout

13、ine)列表中定义或取销用户定义的 处理例程;如:缺省时,它有一个CTRL+C输 入的处理例程,我们可利用本调用来忽视或恢 复CTRL+C输入的处理; GenerateConsoleCtrlEvent发送信号到与本进程 共享同一控制台的控制台进程组;15MicrosoftWindows 2000/XP处理信号列表(5种)16MicrosoftWindows 2000/XP11.1.2.2 signal和raise返回 signal设置中断信号处理例程;如:SIGINT( CTRL+C)、SIGABRT异常中止等信号的处理; raise给本进程发送一个信号; UNIX中的kill可向其他进程发信

14、号,但在Windows 2000/XP 中没有kill。 处理信号列表(6种)17MicrosoftWindows 2000/XP11.1.3 Windows 2000/XP基于文件映射的共享存储区返回 将整个文件映射为进程虚拟地址空间的一部分来加以访 问。在CreateFileMapping和OpenFileMapping时可以指 定对象名称。 CreateFileMapping为指定文件创建一个文件映射对象,返回对 象指针; OpenFileMapping打开一个命名的文件映射对象,返回对象指针 ; MapViewOfFile把文件映射到本进程的地址空间,返回映射地址 空间的首地址; 这时

15、可利用首地址进行读写; FlushViewOfFile可把映射地址空间的内容写到物理文件中; UnmapViewOfFile拆除文件映射与本进程地址空间间映射关系; 随后,可利用CloseHandle关闭文件映射对象;18MicrosoftWindows 2000/XP共享存储区实例http:/ wicked/wicked1198.htm 在Windows 2000/XP中的规范称为“Winsock“(与协议独 立,或支持多种协议):WSASend, WSASendto, WSARecv, WSARecvfrom;26MicrosoftWindows 2000/XP11.1.7 剪帖板(Clipboard) 当进程间的复杂信息交流需要约定交流信息的 格式。剪帖板就是Windows 2000/XP提供的一 种信息交流方式,可增强进程的信息交流能力 。 Windows 2000/XP提供了一组相关的API来完 成应用进程与剪帖板间的格式化信息交流。 当执行复制操作时,应用程序将选中的数据以 标准的格式或者应用程序定义的格式放到剪贴 板中,然后其他的应

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号