预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

《操作系统》实训指导书2011-9-26 PAGE\*MERGEFORMAT4北京理工大学珠海学院计算机学院龚友明 实操二:线程互斥与同步 实操目的: 1理解进程(线程)互斥与同步的作用。 2学习在高级语言(C++、C#)中实现线程互斥与同步。 3学习VisualStudio开发平台的使用。 4使用Procexp进程管理工具观察线程。 操作一:在C#中用Mutex类实现线程的互斥 创建新C#项目,并将代码“Mutex_C#示例原代码.txt”复制到源文件中。 编写一个程序段(在“//Placecodetoaccessnon-reentrantresourceshere.”下),用于完成从0—30的递增并显示。 分别观察启用与不启用互斥体输出结果的差异。 采用互斥体的结果: 不采用互斥体的结果: 操作二:在C++中用Mutex类实现线程的互斥 要求同上。 操作三:观察线程的同步。 下述C#代码中实现两个线程,Thread1输出1-10之间的偶数,Thread2输出1-20之间的奇数。 usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading; namespaceConsoleApplication1 { classProgram { privatestaticThreadthread1,thread2; privatestaticEventWaitHandlehandle=newEventWaitHandle(true,EventResetMode.AutoReset); staticvoidMain(string[]args) { thread1=newThread(Method1); thread2=newThread(Method2); thread1.Start(); thread2.Start(); Console.Write("PressanyKeyforExit!\n"); Console.Read(); } privatestaticvoidMethod1() { while(true) { handle.WaitOne(); for(inti=1;i<=10;i++) { if(i%2==0) { Console.Write(i+""); Thread.Sleep(300); } } handle.Set(); } } privatestaticvoidMethod2() { while(true) { handle.WaitOne(); for(inti=1;i<=10;i++) { if(i%2!=0) { Console.Write(i+""); Thread.Sleep(300); } } handle.Set(); } } } } 观察并设置使两个线程同步运行及非同步运行。 附表:引导选项(启动选项) Boot.ini的引导选项(祥情见《深入解释Windows操作系统》第4版,P257序号引导修饰符含义1/3G增加用户进程地址空间的大小,从2GB增加到3GB(因此,也将系统空间的大小从2GB将低到1GB)。对于虚拟内存紧张的应用程序,比如数据库服务器,加大地址空间可以提高它们的性能。然而,为了让一个应用程序能够利用这一特性,必须满足两个额外的条件:该系统必须运行WindowsXP、WindowsServer2003、Windows2000AdvancedServer或者DatacenterServer;应用程序的.exe必须被标记成一个能理解3GB的应用程序。(仅适用于32位系统)2/SAFEBOOT:指定安全模式引导的选项同。相当于F8菜单来执行安全模式引导。应该永远也不需要手工指定此选项。3/NOGUIBOOT指示Windows,专门负责在引导过程中显示位图图像的VGA视频驱动程序不必初始化了。该驱动程序被用于显示有关引导过程的信息,所以,禁止了该驱动程序以后,也等于禁止了Windows显示这些信息的能力。4/BOOTLOG使Windows记录一份引导日志,位于文件%SystemRoot%\Ntbtlog.txt中5/BASEVIDEO让Windows使用标准的VGA显示驱动程序来执行GUI模式的操作6/SOS让Windows列出那些已被标记为要在引导时刻加载的设备驱动程序,然后显示系统版本号(包括编译版本号)、物理内存的数量、以及处理器的数目。7/MAXMEM=限制Windows忽略(不使用)超出限额的那部分物理内存。此限制值是以兆字节为单位的。例如,/MAXMEM=32将限制系统只使用物理内存的前32MB,即使实际的内存还有更多。8