操作系统课程设计报告handshake

上传人:鲁** 文档编号:504512753 上传时间:2023-10-08 格式:DOC 页数:21 大小:118.01KB
返回 下载 相关 举报
操作系统课程设计报告handshake_第1页
第1页 / 共21页
操作系统课程设计报告handshake_第2页
第2页 / 共21页
操作系统课程设计报告handshake_第3页
第3页 / 共21页
操作系统课程设计报告handshake_第4页
第4页 / 共21页
操作系统课程设计报告handshake_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《操作系统课程设计报告handshake》由会员分享,可在线阅读,更多相关《操作系统课程设计报告handshake(21页珍藏版)》请在金锄头文库上搜索。

1、操作系统课程设计报告 计算机学院网络工程专业操作系统课程设计报告 (2011/2012学年 第一学期)学生姓名: 学生班级: 网络工程092001 学生学号: 指导教师: 2011年12月28日 目录第一章 基本原理11.1基本概念11.2各函数作用及关系51.Resource.h的作用52.CmnHdr.h的作用53.Handshake.rc的作用64.Handshake.cpp的作用及结构65.Processinfo.cpp的结构7第二章 功能描述8第三章 实现描述11第四章 总结体会181操作系统课程设计报告 第一章 基本原理1.1基本概念1.句柄句柄,是整个windows编程的基础。一

2、个句柄是指使用的一个唯一的整数值,即一个四字节长的数值,来标志应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是一个指针,程序不能利用它句柄来直接阅读文件中的信息。如果句柄不用在I/O文件中,它是毫无用处的。 句柄是windows用来标志应用程序中建立的或是使用的唯一整数,windows使用了大量的句柄来标志很多对象。当一个进程被初始化时,系统要为它分配一个句柄表。该句柄表只用于内核对象。2.快照快照就是给当前的系统所处的状态拍了张照片,那么自然,这张照片里面就存放了当前系统在拍照那

3、会儿所处的状态,这就是快照了。所以如果要访问系统的当前状态,只需要给它拍一张快照就可以进行访问了。3.进程与线程进程是操作系统结构的基础;是一个正在执行的程序;计算机中正在运行的程序实例;可以分配给处理器并由处理器执行的一个实体;由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。线程是进程中某个单一顺序的控制流。也被称为轻量进程。计算机科学术语,指运行中的程序的调度单位。 下面的内核对象可以处于已通知状态或未通知状态:a.进程b.线程c.作业d.文件e.控制台输入f.信标g.互斥对象线程可以使自己进入等待状态,直到一个对象变为已通知状态。用于控制每个对象的已通知 /未通知

4、状态的规则要根据对象的类型而定。前面已经提到进程和线程对象的规则及作业的规则。线程具有如下的优点:(1)由于在进程内的线程共享和资源,因此创建线程无须进行资源的分配,比创建一个进程要顺利和会计诶得多;这也使得撤销线程比撤销一个进程所花费的时间短。(2) 同一进程中的线程间切换是在进程的地址空间中进行的,因此比进程间的不同地址空间中的切换开销要少得多。(3) 进程中的线程可以随时访问该进程所拥有的所有资源,而无需做任何切换工作。(4)同一进程中的诸多线程共享内存区域和文件 ,因此它们之间可以直接进行通信,不必通过系统内核。在看操作系统这本课本的时候,我尤其发现线程与进程在系统运行时的重要性,因此

5、在参阅课本以及查阅网上资料的帮助下,我总结了一些线程与进程的区别:(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源(3)线程是处理器调度的基本单位,但进程不是.(4)二者均可并发执行简而言之,一个程序至少有一个进程,一个进程至少有一个线程.线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执

6、行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的

7、其他的线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执。4.模块模块是在程序设计中,为完成某一功能所需的一段程序或子程序;或指能由编译程序、装配程序等处理的独立程序单位;或指大型软件系统的一部分。5.列表框列表框英文意思为ListBox,列表框中的项目是通过程序插入到其中的,用户无法向清单中输入数据,当选择其中的项目,并在用户单击一个按钮或者执行某个操作时,由应用程序完成对指定项目的具体操作。,ListBox窗口用来列出一系列的文本,每条文本占一行,用户可以从中选择一项或多项。当项总数超过可以显示的项数时,则会自动向ListBox控件添加滚动

8、条。6.组合框组合框控件很简单,可以节省空间。组合框的风格取值定义了组合框的具体属性,包括是否自动排序,是否有滚动条。7.LRESULTLRESULT是一个数据类型。8.MFCMFC(Microsoft Foundation Classes),是一个微软公司提供的类库(class libraries),以C+类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。在MFC应用程序中传输的消息有三种类型:窗口消息、命令消息和控件通知。1.2各函数作用及关系1.Reso

9、urce.h的作用Resource.h是用户所有资源的ID,如果源代码中需要使用这些ID的话,就需要包含这个文件。它是由VC自己维护的,一般不用修改它。2.CmnHdr.h的作用此程序要包含CmmHdr.h头文件,并且要在其他头文件之前包含。这个文件包含 Unicode建立选项、窗口定义和第4级警告、Pragma消息帮助宏、chINRANGE和chDIMOF宏、chBEGINTHREADEX宏、对x86平台的调试断点改进、建立软件异常代码、chMB宏、chASSERT和chVERIFY宏、chHANDLE_DLGMSG宏、chSETDLGICONS宏、OS版本检查内联函数、确认宿主系统是否支持

10、Unicode、强制链接程序寻找(w)WinMain进入点函数。3.Handshake.rc的作用设置了窗口的字体、字号、组合框、列表框、编辑控件的参数等。4.Handshake.cpp的作用及结构Handshake.cpp由5个函数组成,各个函数的作用如下:(1).DWORD WINAPI ServerThread(PVOID pvParam),是一个返回 DWORD(32位数据)的 API 函数。(2).BOOL Dlg_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)。OnInitDialog是MFC的面向对象编程语言的类CDi

11、alog中的成员函数名。他的函数原型为CDialog:OnInitDialog virtual BOOL OnInitDialog();调用这个成员函数是对WM_INITDIALOG消息作出的反应。这条消息是在对话框即将显示之前,在Create,CreateIndirect或DoModal调用期间发出的。如果在对话框初始化后需要执行特别处理,覆盖该函数。首先调用基类OnInitDialog,但不考虑其返回值。正常情况下,覆盖的函数返回TRUE。Windows调用OnInitDialog函数是通过标准的全局对话框过程(它们对于所有的Microsoft基础类库的对话框是通用的),而不是通过消息映射

12、。因此该函数不需要消息映射入口。(3).void Dlg_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify),主要是用来处理消息(控件,菜单,加速键)的。(4).INT_PTR WINAPI Dlg_Proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)(5).int WINAPI _tWinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int) (6).ServerThread,函数,该函数立即让服务器等待

13、客户机的请求。 (7).DialogBox函数,该函数负责显示应用程序的用户界面。5.Processinfo.cpp的结构函数之间的调用关系是:在运行函数5的时候需要调用函数4,而运行的函数4中需要分别调用函数3以及函数2,具体见下表: 5 4 3 2 表1-1第二章 功能描述在老师已给出的文件夹里有一个exe文件, 其中里面包含Handshake应用程序“09 Handshake.exe ”,它展示了自动重置事件的使用情况。当运行Handshake应用程序时,就会出现如下图所示的对话框。 图2-1 图2-2Handshake应用程序一开始会先收到一个请求字符串,Handshake应用程序在完

14、成将请求字符串反转,将结果放入Result域时所用的方法不同一般的应用程序,而这也是其优点之所在吧。Handshake能够解决常见的编程问题。现在有一个之间需要互相进行通信的客户机和一个服务器。开始时,服务器会由于长期无事可做,因此它进入等待状态,直到客户机向服务器发送申请请求通知的时候。客户机想把一个请求提交给服务器时,它它会把请求先放入一个共享内存的缓冲区中,然后再向服务器发出一个事件通知。这时候,服务器会从等到状态走出,服务器线程会查看数据缓冲区并处理客户机的请求。相反,当服务器线程忙于处理该请求的时候,客户机的线程则会进入等待状态,直到服务器发出另一个事件通知,指明结果已经准备好。这时

15、候客户机则要对服务器传出的结果进行相应的处理。当客户机再次被唤醒的时候,结果已经放入共享数据缓冲区中,并且客户机会把最终结果显示给用户。当Handshake用程序启动运行时,它立即创建两个未通知的自动重置的事件对象。一个事件是用于指明何时为服务器准备一个请求的g_hevtRequestSubmitted,服务器线程用来等待g_hevtRequestSubmitted,而客户机线程则会发出通知通知该事件。第二个事件是 g_hevtResultReturned,用来指明何时为客户机准备好结果。客户机线程等待该事件,而服务器线程则负责发出该事件的通知。当各个事件创建后,服务器线程就产生ServerThread函数。该函数立即让服务器等待客户机的请求。然后服务器线程

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

当前位置:首页 > 大杂烩/其它

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