《操作系统》北大教学教案讲义11实习1读者写者问题.doc

《操作系统》北大教学教案讲义11实习1读者写者问题.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《操作系统》北大教学教案讲义11实习1读者写者问题.doc

密酉宿御题之api m: 下面是本实习所涉及到的主要的API函数: CreateThread 函数功能:该函数创建一个在调用进程的地址空间中执行的线程。 函数原型: HANDLE CreateThread ( LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINE IpStartAddress, LPVOID IpParameter, DWORD dwCreationFlags, LPDWORD lpThreadld); 参数: lpThreadAttributes:指向——个SECURITY_ATTRIBUTES结构,该结构决定了返回的句柄是否 可被子进程继承。若IpThreadAttributes为NULL,则句柄不能被继承。 在Windows NT中该结构的IpSecurityDescriptor成员定义了新进程的安全性描述符。若 IpThreadAttributes为NULL,则线程获得一个缺省的安全性描述符。 dwStackSize: 义原始堆栈提交时的大小(按字节计)。系统将该值舍入为最近的页。若该值为0, 或小于缺省吋提交的大小,缺省情况是使用与调用线程同样的大小。更多的信息,请看线程堆栈 大小。 IpStarAddress:指向一个LPTHREAD_START_ROUTINE类型的应用定义的函数,该线程执行此 函数。该指针还表示远程进程屮线程的起始地址。该函数必须存在于远程进程屮。 IpParameter: /E义一个传递给该进程的32位值。 dwCreationFla那 定义控制进稈创建的附加标志。若定义了 CREATE_SUSPENDED标志,线程 创建时处于挂起状态,并且直到ResumeThread函数调用时才能运行。若该值为0,则该线程在创 建后立即执行。 lpThreadld:指向一个32位值,它接受该线程的标识符。 返回值: 若函数调用成功,返回值为新线程的句柄;若函数调用失败,返回值为NULL。 备注: 新进程的句柄创建时设为THREAD_ALL_ACESS访问权限。若未提供安全性描述符,则该 句柄可被任何要求一个线程对象句柄的函数所使用。若提供了安全性描述符,则以后使用该句柄 时,将在授权访问以前执行访问检查。若访问检查拒绝访问,则请求进程不能使用该句柄获得对 该线程的访问。 线程从IpStartAddress参数定义的函数处开始执行。若该函数返回,则DWORD返回值被用 于以隐含调用ExitThread函数的方法终止该线程。使用GetExitCodeThread函数来获得线程的返 回值。 CreateRemoteThread函数使得一个新的执行线程从指定进程的地址空间开始执行。该线程可 以访问进程打开的所有对象。 新线程的句柄创建时对于新线程具有完全访问的权限。若未提供安全性描述符,则任何一个 需要线 程对象句柄的函数均可使用该句柄。若提供了一个安全性描述符,则以后使用该句柄时,将在授 权访问 以前执行访问检查。若访问检查拒绝访问,则请求进程不能使用该句柄获得对该线程的访问。 即使IpStartAddress指向数据,代码,或不可访问,CreateRemoteThread函数仍能成功调用。 若线程运行时起始地址无效,则发生异常,线程终止。rfl于无效的起始地址而终止的线程被处理 为“从该线程的进程屮错误退出”。此种行为类似于CreateProcess的异步特性。在CreateProcess 函数中,即使进程引用了无效的或己丢失的动态连接库(DLL)仍能被创建。 线程创建时拥有 THREAD_PRIORITY_NORMAL 优先权。使用 GetThreadPriority 和 SetThreadPriority函数可以获得和设置线程的优先权值。 —个线程终止吋,该线程对象被设为发信号状态,以满足在该对象上等待的所有进程。 一个线程对象始终存在于系统屮,直到该线程终止,且它所有的句柄都已通过调用 CloseHandle函数关闭。 ExitProcess,ExitThread,CreateThread,CreateRemoteThread 和一个止被启动(调用 CreateProcess 的结果)的进程将被在进程内部彼此串联起来。任一时刻,在某一地址空间屮仅能发生上述事件之 一。这意味着将有如下的限制: 在进程启动和DLL初始化例程期间,可以创建新线程,但是新线程只有在进程的DLL初始 化完成后才开始执行。 任一时刻,进程屮仅有一个线程可以存在于一个DLL初始化例程或一个分离例程中。 仅当所有线程的DLL初始化例程和分离例程都已完成时,ExitProcess函数才返冋。 使用C运行时间库函

文档评论(0)

ggkkppp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档