预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共29页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

... 操作系统实验报告(Linux版) 网络142豹142999 .... ... 实验一观察Linux进程状态 一、实验目的 在本实验中学习Linux操作系统的进程状态,并通过编写一些简单代码来观察各种情况 下,Linux进程的状态,进一步理解进程的状态及其转换机制。 二、实验环境 硬件环境:计算机一台,局域网环境; 软件环境:LinuxUbuntu操作系统,gcc编译器。 (四)查看“不可中断阻塞”状态(D) 创建一个C程序,如uninter_status.c,让其睡眠30s 代码: #include<unistd.h> #include<stdio.h> intmain() { inti=0,j=0,k=0; for(i=0;i<1000000;i++) { for(j=0;j<1000000;j++) { k++; k--; } } } 实验结果: .... ... (二)查看“暂停”状态(T) 运行run_status进程,其进入R状态: 代码同上: (三)查看“可中断阻塞”状态(S) 创建一个C程序,如interruptiblie_status.c,让其睡眠30s 编译,后台运行该程序(后接&符号),并使用ps命令查看运行状态 代码: #include<unistd.h> #include<stdio.h> intmain() { sleep(30); return; } 实验结果: (四)查看“不可中断阻塞”状态(D) 创建一个C程序,如uninter_status.c,让其睡眠30s 编译,后台运行该程序(后接&),并使用ps命令查看运行状态 代码: #include<unistd.h> #include<stdio.h> intmain() { if(vfork()==0) .... ... { sleep(300); return; } } 实验结果: (五)查看“僵尸”进程(Z) 创建一个C程序,如zombie_status.c,在其中创建一个子进程,并让子进程迅速结束, 而父进程陷入阻塞 编译,后台运行该程序(后接&),并使用ps命令查看运行状态(30s) 代码: #include<unistd.h> #incldue<stdio.h> intmain() { if(fork()) { sleep(300); } } 实验结果: 实验二观察Linux进程/线程的异步并发执 行 .... ... 一、实验目的 通过本实验学习如何创建Linux进程及线程,通过实验,观察Linux进程及线程的异步 执行。理解进程及线程的区别及特性,进一步理解进程是资源分配单位,线程是独立调度单 位。 二、实验环境 硬件环境:计算机一台,局域网环境; 软件环境:LinuxUbuntu操作系统,gcc编译器。 三、实验容和步骤 1、进程异步并发执行 编写一个C语言程序,该程序首先初始化一个count变量为1,然后使用fork函数创 建两个子进程,每个子进程对count加1后,显示“Iamson,count=x”或“Iamdaughter, count=x”,父进程对count加1之后,显示“Iamfather,count=x”,其中x使用count 值代替。最后父进程使用waitpid等待两个子进程结束之后退出。 编译连接后,多次运行该程序,观察屏幕上显示结果的顺序性,直到出现不一样的情 况为止,并观察每行打印结果中count的值。 代码: #include<unistd.h> #include<stdio.h> intmain() { pid_tson_pid,daughter_pid; intcount=1; son_pid=fork(); if(son_pid==0) { count++; } else { daughter_pid=fork(); if(daughter_pid==0) { count++; } else { count++; waitpid(son_pid,NULL,0); .... ... waitpid(daughter_pid,NULL,0); } } } 2、线程异步并发执行 编写一个C语言程序,该程序首先初始化一个count变量为1,然后使用pthread_create 函数创建两个线程,每个线程对count加1后,显示“Iamson,count=x”或“Iamdaughter, count=x”,父进程对count加1之后,显示“Iamfather,count=x”,其中x使用count 值代替。最后父进程使用pthread_join等待两个线程结束之后