- 1、本文档共38页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
08本920082100228李海全操作系统实验
《操作系统实验》
实验报告
年级:学号:姓名:
指导老师:
实验设计时间:
一.实验目的:
通过采用模拟的方法与编写操作系统内核相关的程序,设计、实现一种操作系统的某几个主要功能,巩固和加深对操作系统的主要功能、基本原理、主要算法和实施技术的理解,将操作系统理论与实际相结合,提高编程能力。通过操作系统课程设计,学习和掌握操作系统的主要功能、基本原理、主要算法和实施技术,懂得操作系统在现代计算机系统中的重要作用,具有初步分析实际操作系统的基本能力。
二.实验的内容:
通过编程解决生产者-消费者问题、读者-写者问题和多线程文件拷贝,学习多线程同步。程序的并发执行往往带来与时间有关的错误,甚至引发灾难性的后果。这需要
引入同步机制。使用多进程与多线程时,有时需要协同两种或多种动作,此过程就称同步
(Synchronization)。引入同步机制的第一个原因是为了控制线程之间的资源同步访问,因为多个线程在共享资源时如果发生访问冲突通常会带来不正确的后果。例如,一个线程正在更新一个结构,同时另一个线程正试图读取同一个结构。结果,我们将无法得知所读取的数据是新的还是旧的,或者是二者的混合。第二个原因是有时要求确保线程之间的动作以指定的次序发生,如一个线程需要等待由另外一个线程所引起的事件。
通过编程实现Socket聊天程序,学习网络编程。
所谓socket通常也称作套接字,应用程序通常通过套接字向网络发出请求或者应答网络请求。 以J2SDK-1.3为例,Socket和ServerSocket类库位于 java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。
通过编程现实大文件操作,学习内存映射。
内存映射文件,是由一个文件到一块内存的映射。Win32提供了允许应用程序把文件映射到一个进程的函数(CreateFileMapping)。内存映射文件与虚拟内存有些类似,通过内存映射
文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,内存文件映射的物理存储器来自一个已经存在于磁盘上的文件,而且在对该文件进行操作之前必须首先对文件进行映射。使用内存映射文件处理存储于磁盘上的文件时,将不必再对文件执行I/O操作,使得内存映射文件在处理大数据量的文件时能起到相当重要的作用。
三.实验设计的主要思想:
通过编程解决一些经典的问题来学习操作系统编程,如多线程同步中,选择了生产者-消费者问题、读者-写者问题和多线程文件拷贝。网络通信中,选择了Socket聊天程序。文件系统中,选择了大文件操作。很多相关的其实问题都是这些经典问题的变种而已,可以说是一通百通的。本项目所有例子统一在Windows环境下,用MFC进行开发。
四.实验设计的实现总体框架:
由于所选择的实验例子都是独立的,所以打算让它们实现和运行都互相独立,互不影响。这样方便调试,也容易看出每个例子的各自效果。
如图,这是程序的主界面。在“例子选择区”里,用户可以选择相应的例子。然后点击“运
行”,就能启动相应的例子。在输出区中,将会有相关的实验数据输出。
每个例子都建立至少一个头文件和源文件,如下面大文件操作例子中的部分代码,edit是输出区的控件指针,status字符串反映实验中各种变量或状态,events字符串反映实验中发生的各种事件。UpdateOutput函数将负责输出区的更新。每个例子都有一个Main函数。Main函数名字和例子相关。
static CEdit*edit;static CStringstatus;static CStringevents;static int64qwFileSize;
static void UpdateOutput()
{
status.Format(LFileSize:%d\r\n,qwFileSize);CStringres;
res.Append(L版权所有:华南师范大学08级李海全\r\n);res.Append(L**************************************************************
*********************************\r\n);res
文档评论(0)