📄 ass.html
字号:
<html><head><meta http-equiv="Content-Language" content="zh-cn"><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>操作系统实验安排</title></head><body><p align="center"><font size="6">操作系统实验安排</font></p><p>实验地点:B3-239</p><p>实验时间:第6周-第13周,每周三3-4节</p><p>指导老师:罗绵川</p><p>实验要求:</p><p>1。所有的实验必须独立完成</p><p>2。实验一、二、三的操作系统环境为windows,使用vc,实验四的操作系统环境为linux,C编译器使用gcc。</p><p>3。第14周周3提交实验报告,每个实验写一份实验报告。实验报告要求提交打印版,并且刻一张光盘,光盘内容包括你的每个实验的源程序以及实验报告的电子版。也可以全班同学刻一张光盘,但必须每个同学一个目录,目录的名字为同学的姓名。</p><p>实验内容:</p><p>一、进程与线程</p><p>下载相关的<a href="process_and_thread.pdf">阅读材料</a></p><p>1. 在windows 下编写一个控制台应用程序,命名为an_ch2_1b。这个程序不断地输出如下行:<br>Those output come from child,[系统时间]<br>另外写一个控制台应用程序,命名为an_ch2_1a。这个程序创建一个子进程,执行an_ch2_1b。这个程序不断地输出如下行:<br>Those output come from child,[系统时间]<br>观察程序运行的结果,并对你看到的现象进行解释。你如何修改程序使得两个进程的输出出现在两个不同的控制台窗口上?</p><p><br>2。在windows 环境下编写一个控制台应用程序,输出系统中正在运行的进程的信息,包括进程号、进程所运行的程序、进程的启动时间、在核心态下消耗的时间以及在用户态下消耗的时间。</p><p><br>3。在windows 环境下编写一个控制台应用程序,程序中有一个共享的整型变量shared_var,初始值为0;创建一个线程并使其立即与主线程并发执行。新创建的线程与主线程均不断地循环,并输出shared_var 的值。主线程在循环中不断地对shared_var 进行加1操作,即每次循环shared_var 被加1;而新创建的线程则不断地对shared_var 进行减1 操作,即每次循环shared_var 被减1。观察程序运行的结果,并对你看到的现象进行解释。</p><p>二、进程、线程之间的同步</p><p>下载相关的<a href="ipc.pdf">阅读材料</a></p><p>1。生产者消费者问题(信号量+mutex)</p><p>参考教材中的生产者消费者算法,创建5个进程,其中两个进程为生产者进程,3个进程为消费者进程。一个生产者进程试图不断地在一个缓冲中写入大写字母,另一个生产者进程试图不断地在缓冲中写入小写字母。3个消费者不断地从缓冲中读取一个字符并输出。为了使得程序的输出易于看到结果,仿照阅读材料中的实例程序,分别在生产者和消费者进程的合适的位置加入一些随机睡眠时间。</p><p>可选的实验:在上面实验的基础上实现部分消费者有选择地消费某些产品。例如一个消费者只消费小写字符,一个消费者只消费大写字母,而另一个消费者则无选择地消费任何产品。消费者要消费的产品没有时,消费者进程被阻塞。注意缓冲的管理。</p><p>2。用信号量和mutex方式实现睡觉的理发师问题</p><p>3。读者写者问题</p><p>教材和相关的阅读材料中对读者写者问题算法均有描述,但这个算法在不断地有读者流的情况下,写者会被阻塞。编写一个写者优先解决读者写者问题的程序,其中读者和写者均是多个进程,用信号量作为同步互斥机制。</p><p>三、实现一个文件查找程序</p><p>仿照unix操作系统中的find命令,在windows上实现一个find命令。<font class="f14" id="zoom0"><font color="#000000">find命令从指定的目录下开始,递归地查找指定文件。其命令格式如下:</p><p><strong>find PATH -option 参数 [-print] [-exec 命令 {} \;]</strong></p><p>PATH:查找的起始目录。</p><p>-option 参数:用来控制搜索方式,具体如下(以下只给我常用的):</p><p> -name "文件":指定要查找的文件名,可以有通配符?*等。</p><p> -prune 目录:指出搜索时不搜索该目录。</p><p> -mtime +n或-n:按时间搜索,+n:表示n天之前修改过的文件;-n:表示今天到n天前之间修改过的文件。</p><p> -ctime +n或-n:也是按时间查找,+n:表示n天之前创建的文件;-n:表示今天到n天前之间创建的文件。</p><p> -mulstream:如果是多流的文件,查找流的名字</p><p> -print:将搜索结果输出到标准输出。</p><p>提示:有关多流文件的介绍,请看<a href="intro_of_mulstream.pdf">文档</a>。其他相关的API请查看MSDN.</p><p>可选的实验1:实现-exe选项。</p><p> -exec:对查找到的每一个结果实行指定的程序。格式如下:</p><p> -exec 程序名</p><p>提示:执行指定的程序可以创建一个进程执行</p><p>可选的实验:</p><p> 将你实现的find命令改为用多线程的方式实现。比较多线程实现的find与单线程实现的find的执行结果、效率等,并在实验报告中给出你的解释。</p><p>四。编写一个简单的unix命令解释程序,详细要求<a href="unix_shell.pdf">点击这里</a></p></font></font></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -