操作系统实验复习题(带答案) 下载本文

内容发布更新时间 : 2024/12/24 0:11:01星期一 下面是文章的全部内容请认真阅读。

{ while (*addr!=-1); *addr=i;

printf(\ }

exit(0); }

11. 编写程序利用消息队列通信机制实现两个进程之间的单项通信程序,一个进程发送从键盘接收的数据,另一个进程接收数据并显示。在程序运行期间调用“ipcs –q”查看消息队列的使用情况。 (要求: 把代码、程序编译和运行结果截图)

12. 文件硬链接(要求按照下面的步骤操作,把操作命令、操作流程和结果截图)

(1)创建一个文件a: (2)创建一个链接:

(3)创建文件a的一个复制版本:

(4)观察3个文件a, b, c的索引节点、权限、属主、大小、时间等属性: (5)修改文件a中的内容。

(6)使用cat命令分别观察文件b和文件c的内容。

(7)再次观察3个文件a, b, c的索引节点、权限、属主、大小、时间等属性: (8)删除文件a:

(9)观察文件b, c是否仍然存在: (10)查看文件b的内容: 13. 文件符号链接(软链接)

(1)创建一个文件a:

(2)创建文件a的一个符号链接: (3)创建文件a的一个复制版本:

(4)观察3个文件a, b, c的索引节点、权限、属主、大小、时间等属性: (5)修改文件a中的内容。

(6)使用cat命令分别观察文件b和文件c的内容。

(7)再次观察3个文件a, b, c的索引节点、权限、属主、大小、时间等属性: (8)删除文件a:

(9)观察文件b, c是否仍然存在:

(10)查看文件b的内容:

14. 写出分析程序执行结果,将_exit(0)换为exit(0),再写出程序执行结果,并分析运行结果差异的原因。

/*exit1.c*/

#include include

#include #include main() { int p;

printf(\p=fork(); if (p>0)

printf(\else {

printf(\n”); printf(\ _exit(0); } } 15.

输出设备加锁程序:lockf2.c /* lockf2.c*/ #include #include #include #include

main( ) {

int p1,p2,i;

p1=fork( ); /*创建子进程p1*/ if (p1==0) {

lockf(1,1,0); /*加锁,这里第一个参数为stdout(标准输出设备的描述符)*/ for(i=0;i<5;i++) {

printf(\

sleep(2);

}

lockf(1,0,0); /*解锁*/ } else {

p2=fork(); /*创建子进程p2*/ if (p2==0) {

lockf(1,1,0); /*加锁,第一个参数为stdout(标准输出设备的描述符)*/ for(i=0;i<5;i++) {

printf(\sleep(2); }

lockf(1,0,0); /*解锁,第一个参数为stdout(标准输出设备的描述符)*/ } else {

lockf(1,1,0); /*加锁*/

for(i=0;i<5;i++) {

printf(\

sleep(2);

}

lockf(1,0,0);/*解锁*/

}

} }

程序说明:

按以下步骤分析上面的程序

? 将程序中所有的lockf()函数加上注释,再观察程序执行结果并估算程序执行所需的

时间。

? 分析程序两次执行的结果与时间的区别。