天津科技大学操作系统实验

天津科技大学操作系统实验

ID:33641644

大小:966.03 KB

页数:40页

时间:2019-02-27

天津科技大学操作系统实验_第1页
天津科技大学操作系统实验_第2页
天津科技大学操作系统实验_第3页
天津科技大学操作系统实验_第4页
天津科技大学操作系统实验_第5页
资源描述:

《天津科技大学操作系统实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、2012-2013学年第一学期计算机操作系统实验报告专业:软件工程班级:111033学号:11103325姓名:赵孟翔提交日期:2013年11月27日39目录实验一Windows多线程..................................................1实验二Windows线程同步机制...........................................5实验三Windows线程通信................................................9实验四银行家算法模拟..........

2、.......................................15实验五页面置换算法模拟...............................................2239实验一Windows多线程【开发语言及实现平台或实验环境】C++/C#MicrosoftVisualStudio6.0/MicrosoftVisualStudio.NET【实验目的】(1)进一步理解操作系统的并发性;(2)了解Windows线程创建方法,并通过查阅资料理解各参数的含义;(3)了解多线程程序设计方法,并进行简单应用。【实验要求】(1)逐程序进行简要分

3、析、运行各程序并仔细阅读注释;(2)查阅MSDN或其他资料,掌握相关系统调用使用方法和参数含义;(3)完成实验报告。【相关知识】一、内核对象(一)内核对象的概念内核对象是内核分配的一个内存块,这种内存块是一个数据结构,表示内核对象的各种特征。并且只能由内核来访问。应用程序若需要访问内核对象,需要通过操作系统提供的函数来进行,不能直接访问内核对象(Windows 从安全性方面来考虑的)。内核对象通过 Create* 来创建,返回一个用于标识内核对象的句柄,这些句柄(而不是内核对象)可在创建进程范围内使用,不能够被传递到其他进程中被使用。(二)内核对象使用的计数因为内核

4、对象的所有者是内核,而不是进程,所以何时撤销内核对象由内核决定,而内核做这个决定的依据就是该内核对象是否仍然被使用。那么如何判断内核对象是否被使用呢?可以通过内核对象的“使用计数”属性,一旦这个值变成0了,内核就可以释放该对象了。(三)创建内核对象1、进程与句柄表每个进程在初始化的时候,将被分配一个句柄表,该句柄表中只存储内核对象的句柄,不存储用户对象的句柄。句柄表的详细结构微软没有公布,但是大致包含三个内容:内核对象句柄,内核对象地址,访问屏蔽标志。2、创建内核对象及操作系统内部机制39利用 CreateSomeObject 的函数来创建内核对象。调用该函数的时候

5、内核就为该对象分配一个内存块,并进行初始化,然后内核再扫描该进程的句柄表,初始化一条记录并放在句柄表中。3、进程中使用内核对象的内部机制假设函数 F 使用某个内核对象,其参数为 Handle1,则该函数内部需要查找该进程的句柄表,找出参数句柄对应的记录,然后才能使用该内核对象。(四)关闭内核对象无论进程怎样创建内核对象,在不使用该对象的时候都应当通过boolCloseHandle(HANDLEhobj) 来向操作系统声明结束对该对象的访问。为什么叫声明呢?是因为此时也许还有其他进程对该对象的访问,操作系统可能并不立即释放该对象。操作系统需要做的是:从进程的句柄表中删

6、除该内核对象的记录,另外再考察该内核对象的使用计数以决定是否需要释放该对象。(五) 内核对象的共享说到共享,与之孪生的就是共享权限。 Windows 内核对象的共享有三种方式:1、继承式共享(父子进程间)只有当进程是父子关系的时候,才能使用此种方式的共享。特别要注意的是继承的是内核对象的句柄,内核对象本身是不具备继承性。要达到这种继承的效果需要做以下几件事:在进程创建内核对象的时候,需要一个安全结构 sa ( SECURITY_ATTRIBUTES 类型,以向 OS 声明对象的访问方式)作为参数。继承式共享需要将结构的成员 sa.bInheritHandle 设置为

7、 TRUE 。此时 OS 内部的处理式将进程的句柄表中的该对象的访问屏蔽字段设置成“可继承”。在创建子进程( CreateProcess 函数)时,设置创建参数 bInheritHandles 为 TRUE 。表示被创建的子进程可以继承父进程中的所有可继承内核对象。 OS 内部的处理是:复制父进程句柄表中的记录到子进程的句柄表中,并使用相同的句柄值;为内核对象的使用计数器加 1 。特别说明:子进程能够继承的的内核对象仅局限于父进程创建它的时候所拥有的可继承内核对象。子进程诞生后,父进程再搞出什么可继承的东西,子进程是不能用的。这就需要在子进程中使用继承的内核对象

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。