没有合适的资源?快使用搜索试试~ 我知道了~
中原工学院操作系统实验报告.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 169 浏览量
2022-12-22
19:40:36
上传
评论
收藏 2.19MB DOC 举报
温馨提示
试读
30页
中原工学院操作系统实验报告.doc
资源推荐
资源详情
资源评论
中原工学院操作系统实验报告
1 / 30
计算机操作系统实验报告
专 业: 网络工程
班 级: 162 班
学 号:
学生姓名:
指导教师:
2019/06/06
中原工学院操作系统实验报告
2 / 30
目 录
实验一 进程控制 ..............................................................3
一、实验目的:............................................................3
二、实验平台:............................................................4
三、实验内容:............................................................4
实验结果..................................................................5
单线程执行结果:..........................................................7
实验总结..................................................................8
实验二 进程同步 ..............................................................8
一、实验目的:............................................................8
二、实验平台:............................................................8
三、实验内容:............................................................9
执行结果.................................................................12
实验总结.................................................................12
实验三 添加内核模块 .........................................................12
一、实验目的:...........................................................12
二、实验平台:...........................................................13
三、实验内容:...........................................................13
readprocess.c 代码: .....................................................14
Makefile 代码: ..........................................................15
processinfo 文件源代码: .................................................17
Makefile 文件源代码: ....................................................18
实验总结.................................................................20
实验四 统计操作系统缺页次数 .................................................20
实验目的.................................................................20
实验内容.................................................................21
实验过程.................................................................21
1. 修改内核源代码,添加统计变量..........................................21
2. 配置编译新内核........................................................23
3. 编译内核和模块........................................................24
4. 安装新内核模块和新内核................................................24
5. 编写读取 pfcount 值的模块代码..........................................25
6.编译、构建内核模块.....................................................26
7.加载模块到内核中.......................................................26
实验总结.................................................................27
实验五 EXT4 文件系统结构分析.................................................27
一、实验目的:...........................................................27
二、实验平台:...........................................................27
三、实验内容:...........................................................27
实验总结.................................................................31
中原工学院操作系统实验报告
3 / 30
实验一 进程控制
一、实验目的:
加深对进程概念的理解,明确进程和程序的区别;掌握 Linux 操作系统的进程创建和终
止操作,体会父进程和子进程的关系及进程状态的变化;进一步认识并发执行的实质,编写
并发程序。
二、实验平台:
虚拟机:VMWare9 以上
操作系统:Ubuntu12.04 以上
编辑器:Gedit | Vim
编译器:Gcc
三、实验内容:
(1)编写一段程序,使用系统调用 fork()创建两个子进程,当此程序运行时,在系统中有
一个父进程和两个子进程活动。让每一个进程在屏幕上显示“身份信息”:父进程显示“Parent
process! PID=xxx1 PPID=xxx2”;子进程显示“Childx process! PID=xxx PPID=xxx”。多运行几次,
观察记录屏幕上的显示结果,并分析原因。
说明:
xxx1 为进程号,用 getpid()函数可获取进程号;
xxx2 为父进程号,用 getppid()函数可获取父进程号;
Childx 中 x 为 1 和 2,用来区别两个子进程;
wait()函数用来避免父进程在子进程终止之前终止。
程序源码:
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#define NUM 2
int main(void)
{
pid_t pid1,pid2;
if((pid1=fork())<0){
中原工学院操作系统实验报告
4 / 30
printf("创建进程 1 失败");
}else{
if(pid1==0){
//子进程 1 执行
printf("Child1 process: ");
printf("PID=%d PPID=%d \n",getpid(),getppid());
sleep(2);
}else{
if((pid2=fork())<0){
printf("创建进程 2 失败");
}else{
if(pid2==0){ //子进程 2 执行
printf("Child2 process: ");
printf("PID=%d PPID=%d \n",getpid(),getppid());
}
else{
//父进程执行
wait();
wait();
printf("Parent process: ");
printf("PID=%d PPID=%d \n",getpid(),getppid());
exit(0);
}
}
}
}
}
实验结果
whtcmiss@whtcmiss-VirtualBox:~/Desktop$ gcc test1.c -o test
whtcmiss@whtcmiss-VirtualBox:~/Desktop$ ./test
Child2 process: PID=2527 PPID=2525
Child1 process: PID=2526 PPID=2525
Parent process: PID=2525 PPID=2127
中原工学院操作系统实验报告
5 / 30
whtcmiss@whtcmiss-VirtualBox:~/Desktop$ ./test
Child2 process: PID=2530 PPID=2528
Child1 process: PID=2529 PPID=2528
Parent process: PID=2528 PPID=2127
whtcmiss@whtcmiss-VirtualBox:~/Desktop$ ./test
Child2 process: PID=2533 PPID=2531
Child1 process: PID=2532 PPID=2531
Parent process: PID=2531 PPID=2127
实验结果分析:
第一次程序运行结果,两个子进程的 PPID 都是 2525,是由同一个进程创建。而父进程
PID 是 2525,父进程 PPID 是 2127,说明父进程也是一系统进程的子进程。
第二次程序运行结果,父进程 PID 是 2528,PPID 是 2127,说明父进程是由同一进程创
建的,父进程也是以子进程的方式存在,且进程 ID 是逐渐递增的。
(2)fork()和exec()系列函数能同时运行多个程序,利用上述函数将下面单进程顺序执行
的程序single.c改造成可并发执行3个进程的程序multi_process.c;并用time命令获取程序的执
行时间,比较单进程和多进程运行时间,并分析原因。
//single.c
#include <stdio.h>
#define NUM 5
int main(void)
{
void print_msg(char *m);
print_msg("Good ");
print_msg("Morning ");
print_msg("201608030222\n");
return 0;
}
void print_msg(char *m)
{
int i;
for(i = 0; i<NUM; i++){
printf("%s",m);
fflush(stdout);
sleep(1);
}
}
编译运行方法:
#gcc single.c –o single
剩余29页未读,继续阅读
资源评论
是空空呀
- 粉丝: 173
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功