操作系统原理实验报告.docx

《操作系统原理》 实验报告 班级: 学号: 指导老师: 目录: 实验题目:实验一 线程创建与撤销 2 实验题目:实验二 线程同步 6 实验题目:实验三 线程互斥 1.4.…..… 实验题目:实验四 进程通信 2.0 实验题目:实验五读者-写者问题 26 实验题目:实验六 进程调度 42 实验题目:实验七 存储管理之动态链接库 62 实验题目:实验八 存储管理之内存分配 67 实验题目:实验九 存储管理之页面置换算法 83 ... 实验题目:实验十 设备管理 104 实验题目:实验^一 文件管理之文件读写 121... 实验题目:实验一线程创建与撤销 完成人:XXX 报告日期:2018年3月31日 一、 实验内容简要描述 熟悉 VC++、Visual Studio 开发环境。 使用相关函数创建和撤销线程。 在一个进程中创建 3个线程,名字分别为threada、threadb、threadc threada 输出 hello world! ”。 threadb 输出 My name is …”。 threadc 输出 Please wait…”,然后sleep 5 秒钟,接着输出 “ wake up ”。 二、 程序设计 1、 设计思路 该函数创建一个在调用进程的地址空间中执行的线程。 2、 主要数据结构 HANDLE CreateThread( LPSECURITY_ATTRIBUTES IpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreatio nFlags, LPDWORD lpThreadId ); VOID ExitThread(DWORD dwExitCode); VOID Sleep(DWORD dwMilliseco nds); VOID Sleep(DWORD dwMilliseco nds); 、实验结果 1、基本数据 IpThreadAttributes :指向一个 SECURITY_ATTRIBUTE结构,该结构决定了返回 的句柄是否可被子进程继承。若IpThreadAttributes为NULL,则句柄不能被继承。 在WindowsNT中该结构的IpSecurityDescriptor成员定义了新进程的安全性描述 符。若IpThreadAttributes为NULL,则线程获得一个默认的安全性描述符。 dwStackSize:定义原始堆栈提交时的大小(按字节计)。系统将该值舍入为最近的 页。若该值为0,或小于默认时提交的大小,默认情况是使用与调用线程同样的 大小。更多的信息,请看 ThreadStackSize. lpStartAddress :指向一个LPTHREAD_START_ROUTIN类型的应用定义的函数, 该线程执行此函数。该指针还表示溃程进程中线程的起始地址。该函数必须存在 于远程进程中。 IpParameter :定义一个传递给该迸程的 32位值。 dwCreatio nF lags :定义控制进程创建的附加标志。若定义了 CREATE_SUSPENDED 标志,线程创建时处于挂起状态,并且直到ResumeThread函数调用时d能运行。 若该值为0,则该线程在创建后立即执行。 IpThreadId :指向一个32位值,它接收该线程的标识符。 2. 源程序代码行数 完成该实验投入的时间(小时数) 与其他同学讨论次数 31 1 1 3、测试结果分析 ■【:、可移宙兰隹A乍H摄乜亲统\七e迅b in\Debu g\test. exe flslla World* 我的务字:孙婷 莪的睪号r 141340209 PleAffe uait--. I uake up_ Process returned 46B3872 0x^778execution time = 5.029 s Press any kev to cont inue, 四、实验体会 1、实验体会和收获 深入理解了线程与进程的概念,熟悉了在 Windows环境下何时使用进程, 何时使用线程,怎么创建和撤销线程。 五、源代码 #in elude win dows.h #in elude iostream using n amespaee std; DWORD WINAPI ta(LPVOID argv) { coutHello World! n; } DWORD WINAPI tb(LPVOID argv) cout cout我的名字: 婷\n; cout cout我的名字: 婷\n; cout我的学号:141340209\n; } DWORD WINAPI

文档评论(0)

1亿VIP精品文档

相关文档