操作系统实验复习题

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

操作系统实验复习题

1. 目录操作(要求:写出相应的命令,并把执行过程截图)

●在/home目录下建立自己的子目录mydir。

●进入/home/mydir,创建多个子目录。

●查看当前目录下创建的子目录的详细情况。

●删除部分子目录。

●查看当前目录下创建的子目录和文件的详细情况。

●回退到上级目录

2. 文件操作(要求:写出相应的命令,并把执行过程截图)

●当前目录下,用文件编辑器gedit创建新的文件file.c 。

●ls –l 长格式显示目录清单,查看文件权限。

●创建子目录newdir,复制文件file.c到newdir目录。

●将file.c改名为myfile.c。

3. 编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一段字符信息。(要求:把代码、程序编译和运行结果截图)

4. 编译并并运行以下程序,利用kill命令对该后台执行程序的,分别执行让它暂停、恢复执行和终止控制方式,期间多次使用ps -l命令查看进程状态。(要求:把程序编译,后台执行,控制执行以及查看进程状态的运行结果截图)

/*loop.c*/

#include

main()

{

while(1){}

}

5.

/*forktree.c*/

#include

/*forktree.c*/

#include

#include

#include

#include

main()

{

int p;

p=fork();

printf("fork 1\n");

if (p>0) /*如果是父进程*/

{

fork();

fork();

}

else{ /*如果是子进程*/

fork();

fork();

}

sleep(50);

}

要求:把程序编译,后台执行,利用ps命令查看进程的ID号,以进程的ID号为进程名称,画出程序的运行过程中产生的进程树。

6.

/*fork2.c */

#include

#include

#include

#include

main()

{

int p,x;

x=1;

p=fork();

if (p>0)

printf("parent output x=%d\n",++x);

else

printf("child output x=%d\n",++x);

}

要求:写出程序的运行结果,并简要分析fork()系统调用创建子进程后,父进程和子进程之间的关系。

7. 编写程序代码,要求子进程利用execl()函数调用另一个可执行程序的代码。(要求:把代码、程序编译和运行结果截图)

8. 分析程序执行流程,运行结果以及kill()和signal()的功能。

/*signal1.c*/

#include

#include

#include

#include

int i;

void intfun( )

{

i=0;

}

main( )

{

int k,j,pid;

j=1;

while((pid=fork( ))==-1);

if (pid>0)

{

for(k=1;k<3;k++)

{

printf("how are you!\n");

sleep(1);

}

kill(pid,17); /*发送软中断信号给子进程*/

wait(0); /*等待子进程终止*/

printf("Parent exited\n");

exit(0);

}

else

{

signal(17,intfun); /*预置软中断信号17*/

i=1;

while(i==1) /*循环显示并等待父进程发软中断信号*/

{

printf("I am child:%d\n",j++);

sleep(1);

}

printf("Child exited\n");

exit(0);

}

}

9. 编写程序实现父进程和子进程基于无名管道进行通信。用系统调用pipe()建立一无名管道,父进程向管道写入一句话,子进程从无名管道中读出两个来自子进程的信息并显示。

(要求:把代码、程序编译和运行结果截图)

10. 把下面程序空缺的语句填写完整,通过这个程序分析共享存储区通信机制的优缺点。

#include

#include

#include

#include

#include

#define SHMKEY 75 //定义符号变量,每个用户取不同的共享内存关键字值

int shmid,i; int *addr; //定义指向整型变量的指针变量,

main( )

{ while ((i=fork( ))==-1);

if (!i) server( );

system(“ipcs -m”);

while ((i=fork( ))==-1);

if (!i) client( );

wait(0); wait(0);}

void server( )

{ ( 1 );

( 2 );

do

{ *addr=-1;

system(“ipcs -m”);

while (*addr==-1);

printf("(server) received:%d\n",*addr);

}while (*addr);

(3 );;

exit(0);

}

void client( )

{ int i;

( 4 );

(5);

for (i=9;i>=0;i--)

{ while (*addr!=-1);

*addr=i;

printf("(client) sent:%d\n",*addr);

}

exit(0);

}

11. 编写程序利用消息队列通信机制实现两个进程之间的单项通信程序,一个进程发送从键

相关文档
最新文档