0;i--){printf("" />

操作系统试验.

  • 格式:doc
  • 大小:353.50 KB
  • 文档页数:26

下载文档原格式

  / 26
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《操作系统》实验报告2013/2014 学年第2 学期

系别************

专业************

班级****************

姓名*******

学号**************

授课老师*********

姓名:课程名称:**************

massage="I am father\n";

}

for(;i>0;i--)

{

printf("%s",massage);

sleep(1);

}

return 0;

}

运行结果:(截图)

运行结果:

四、实验分析与总结

1.实验内容1运行结果为什么无固定顺序,fork()函数创建进程是如何并发执行的。

答:因为是并发执行的,fork()函数创建的三个进程抢占CPU不同,从而导致三个进被CPU调用执行的顺序不同,从而输出的结果无固定顺序;fork()函数调用成功后,子进程与父进程并发执行相同的代码,但由于子进程也继承了父进程的程序指针,所以子进程是从fork()后的语句开始执行,另外fork在子进程和父进程中的返回值是不同的,在父进程中返回子进程的PID,而在子进程中返回0,使父进程和子进程执行不同的分支,从而实现了进程的并发执行。

2.实验内容3是如何实现父子进程的同步执行的。

答:wait()会暂时停止目前进程的执行,直到有信号来到或子进程结束。程序段主要使用了函数wait()和,e x i t()这是因为父进程必须等待两个子进程终止后才终。在父进程中调用wait()函数,则父进程被阻塞,进入等待队列,等待子进程结束。子进程终止时执行exit()向父进程发终止信号,当接到信号后,父进提取子进程的结束状态值,从wait()返回继续执行原程序,从而实现了父、子进程的同步推进。

运行结果:(截图)

运行结果:(截图)

运行结果:(截图)

四、实验分析与总结

对实验运行结果进行分析:试比较实验中两种方法实现进程通信的不同之处。

答:①消息队列的建立比共享区的设立消耗的资源少.前者只是一个软件上设定的问题,后者需要对硬件操作,实现内存的映像,当然控制起来比前者复杂.如果每次都重新进行队列或共享的建立,共享区的设立没有什么优势。

②当消息队列和共享区建立好后,共享区的数据传输,受到了系统硬件的支持,不耗费多余的资源;而消息传递,由软件进行控制和实现,需要消耗一定的CPU资源.从这个意义上讲,共享区更适合频繁和大量的数据传输.

③消息的传递,自身就带有同步的控制.当等到消息的时候,进程进入睡眠状态,不再消耗CPU资源.而共享队列如果不借助其他机制进行同步,接受数据的一方必须进行不断的查询,白白浪费了大量的CPU资源。

运行结果:(截图)

四、实验分析与总结

对实验运行结果进行分析:程序采用的是何种动态分区分配算法,写出判断依据,并分析该算法的优缺点。

答:采用的是首次适应算法,程序使用一个链表来模拟内存存储空间,以地址递增的顺序链接。该算法倾向于优先利用内存中低地址部分的空闲分区,保留了高地址部分的大空闲分区,为后来的大作业分配大内存创造了条件;其缺点是低地址部分被不断划分,留下了许多小的空闲分区,而每次查找又是从低地址部分开始的,从而增加了查找可用空闲分区时的开销。

//加减乘除四则运算

#!/bin/bash

printf "please input first num:" read fnum;

echo "please input second num:" read snum;

read -p "please input function:" fun

case $fun in

"+") result=$(( $fnum + $snum ));; "-") result=$(( $fnum - $snum ));; "*") result=$(( $fnum * $snum ));; "/") result=$(( $fnum / $snum ));; esac

echo "The result is: $resu

运行结果:(截图)

八、实验分析与总结

对实验运行结果进行分析和总结。

答:显示指定文件内容部分echo输出Please input your name,输入建立的文本文档的名字,如test.txt,cat是显

示文本本文档的内容。加减乘除四则运算部分先输入第一个数和第二个数,用case语句实现运算功能的选择,用;;来终止语句。

在刚开始用shell程序编写时感觉比较困难,因为对每个指令所代表的功能并不是很熟悉,但在熟悉shell程序指令之后,感觉比c语言编写更加简便,更加直观明了。