操作系统实验内容

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

实验一Linux基本命令的使用实验

(一)实验学时:2学时

(二)实验类型:验证

(三)实验目的:

1. 掌握监视系统的几个Linux基本命令:

PS--查看系统的进程

tty--查看当前使用的终端

df--查看系统的文件系统的空间使用情况

du--查看具体某个文件和目录的磁盘空间的占用情况

free--查看使用的内存资源的情况

2. 掌握Linux下的联机帮助手册的使用

3. 掌握Linux命令的简要帮助的获取方法

4. 掌握一些其他常用的Linux命令:

adduser--添加新用户

passwd--修改用户口令

ls--查看文件属性

cal--显示日历

date--显示系统的日期和时间

clear--清屏

find--查找文件

uname--查看系统信息

who--查看其他登录的用户

which--查看命令的全路径

tar--Linux下的压缩与解压缩命令

(四)实验内容:

1.以root用户身份登陆,并使用“ls”、“cat”、“cd”等命令来实现基本的文件操作并观察

Linux文件系统的特点。

2.使用ps查看系统的进程运行情况,使用不同的命令选项并比较显示结果的差别;查

看当前系统已安装的文件系统的空间使用情况;查看用户的家目录占用了多少空间;

查看使用的内存资源的情况。

3.查看ls命令的详细使用方法,查看ps命令的详细使用方法。

4.获取ls命令的简要帮助信息,获取ps命令的简要帮助信息。

5.用cal命令显示日历,用date命令显示系统的日期和时间,用clear清除屏幕,用find

命令在系统中查找文件ch1.doc,用uname命令查看系统的信息,用who命令查看其他登录的用户,用which命令查看一些命令的全路径,用tar命令来压缩test目录下的所有后缀为doc的文件到文件doc.tar.gz中,将doc.tar.gz复制到用户的家目录并展开压缩文件。

实验二进程的创建实验

(一)实验学时:2学时

(二)实验类型:验证

(三)实验目的:

1、加深对进程概念的理解,明确进程和程序的区别

2、进一步认识并发执行的实质

(四)实验内容:

1、阅读linux的fork.c源码文件,分析进程的创建过程

2、学会在linux环境下编程及使用gcc编译器

3、编写一个输出“Hello world”的程序

4、编写一段程序,使用系统调用fork()函数创建两个子进程。当此程序运行时,在

系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符;父进程显示字符“a”,子进程分别显示字符“b”和“ c”。

5、修改已编写的程序,将每个进程的输出由单个字符改为一句话,再观察程序执行时

屏幕上出现的现象,并分析其原因。

实验三进程的管理实验

(一)实验学时:2学时

(二)实验类型:验证

(三)实验目的:

分析进程争用资源的现象,学习解决进程互斥的方法

(四)实验内容:

1、阅读linux的sched.h源码文件,加深对进程管理概念的理解

2、在以下程序中使用系统调用lockf()来给进程加锁,实现进程之间的互斥,观察并

分析出现的现象

#include

main()

{

int p1,p2,i;

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

if(p1==0)

for(i=0;i<500;i++)

printf("child%d\n",i);

else

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

if(p2==0)

for(i=0;i<500;i++)

printf("son%d\n",i);

else

for(i=0;i<500;i++)

printf("daughter%d\n",i);

}

}

实验四进程软中断通信实验

(一)实验学时:2学时

(二)实验类型:验证

(三)实验目的:

1.了解linux系统中进程软中断通信的基本原理

2.了解signal(SIGINT,SIG_IGN)和signal(SIGQUIT,SIG_IGN)两条语句的功能

(四)实验内容:

1.在程序中使用系统调用fork()来创建进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按del键),当捕捉到中断信号后,父进程用系统调用kill ()向两个子进程发出信号,观察并分析出现的现象

#include

#include

void waiting(),stop();

int wait_mark:

main(){

int p1,p2;

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

if(p1>0){

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

if(p2>0){wait_mark=1;

signal(SIGNAL,stop);

waitting(0);

kill(p1,16);

kill(p2,17);

wait(0);

wait(0);

printf("parent process is killed !\n");

exit(0);

}

else

{wait_mark=1;

signal(17,stop);

waitting();

lockf(stdout,1,0);

printf("child process2 is killed by parent !\n");

lockf(stdout,0,0);

exit(0);}

}

else

{wait_mark=1;

signal(16,stop);

waitting();

lockf(stdout,1,0);

printf("child process 1 is killed by parent ! \n");

相关文档
最新文档