没有合适的资源?快使用搜索试试~ 我知道了~
首页吉林大学计算机专业操作系统实验报告
吉林大学计算机专业操作系统实验报告
需积分: 50 132 下载量 163 浏览量
更新于2023-03-16
24
收藏 41.29MB DOC 举报
本文档为吉林大学计算机科学与技术专业大三上学期的操作系统实验课的实验报告,有需要的可以借鉴。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/10320601/bg1.jpg)
《操作系统》
实 验 报 告
学 号:
教 学 号:
姓 名:
学 院:计算机科学与技术学院
专 业:计算机科学与技术专业
学 期: - ( )
1
![](https://csdnimg.cn/release/download_crawler_static/10320601/bg2.jpg)
实验一 Linux 进程与线程通信
1. 实验目的:
深刻理解线程与进程的概念,掌握线程与进程在组成成分上的差别,以及与其相适应的通
信方式和应用目标。
系统的 保持了 的经典语义,被创建进程具有独立于父进程的地址空间,
二者之间的通信通常可以采用 机制。是 系统特有的系统调用,可以通过参数
确定父子之间是否共享存储空间等资源,在地址空间等资源共享的情况下,实质上相当
于创建了一个轻进程或线程,这是 的通常用法。实际在 系统中,()以及用
户级线程 都是基于 实现的。
2. 实验内容:
以 系统进程和线程机制为背景,掌握 和 系统调用的形式和功能,以
及与其相适应的高级通信方式。由 ()派生的子进程之间通过 ()通信,由 创
建的线程之间通过共享内存通信,对于后者需要考虑互斥问题。
以生产者消费者问题为例,通过实验理解 和 两个系统调用的区别。程序要求能够
创建 个进程或线程,其中包括两个生产者和两个消费者,生产者和消费者之间能够传递数据。
3. 实验准备:
!系统调用
"
创建一个子进程,子进程是父进程的完整复制,正常返回值为非负整数,对于父进程来说该数
大
于 ,是子进程的编号;对于子进程来说该数为 。正是利用返回值的差别可以决定二者
不同的后继动作。
#系统调用
$%$&'%$(')&'%$&
其 中 ' 是 轻 进 程 所 执 行 的 函 数 *( 是 轻 进 程 所 使 用 的 栈 *)& 是
+,-./'+,-01'+,-0,1'+,-12345'+,-65 的组合*& 是调
用过程的对应参数。的关键是 )& 的设定,+,-./ 表示子进程共享父进程内存,
+,-01 表示子进程共享父进程的文件系统,+,-12345 表示子进程共享父进程的
消息处理机制,+,-65 是指子进程继承父进程的 号。
7系统调用
-%"
参数定义为 89。创建一个管道文件,返回两个文件描述符 89和 89分别用于管道文件
的读和写操作。管道文件创建后,可以被 创建的子进程共享。
:(;-<=(和 (;-(=(
(;-<=(和 (;-(=(分别相当于信号灯的 6 操作和 . 操作。其中 ( 是说明为 (;-
2
![](https://csdnimg.cn/release/download_crawler_static/10320601/bg3.jpg)
int producer (int id){
printf ("生产者 %d 正在运行!\n",id);
close(pipe_fd[0]);
int i=0;
for(i=1;i<10;i++){
sleep(1);
if(id==1)
strcpy(w_buf,"aaa\0");
else
strcpy(w_buf,"bbb\0");
if(write(pipe_fd[1],w_buf,4)==-1)
printf("写入管道错误!\n");
}
close(pipe_fd[1]);
printf("生产者 %d 结束!\n",id);
exit(id);
}
int consumer (int id){
close(pipe_fd[1]);
printf("消费者 %d 正在运行!\n",id);
if(id==1)
strcpy(w_buf,"ccc\0");
else
strcpy(w_buf,"ddd\0");
while(1){
//sleep(1);
strcpy(r_buf,"eee\0");
if(read(pipe_fd[0],r_buf,4)==0)
break;
printf ("当写缓冲为 %s 时,消费者 %d
得到了 %s\n",w_buf,id,r_buf);
}
close(pipe_fd[0]);
printf ("消费者 %d 结束!\n",id);
exit(id);
}
类型的信号灯。初始化函数 (;-(''。
>-;-=;和 -;-=;
-;-=;和 -;-=;分别用于加锁和解锁。
参 数 为 -;- ; 定 义 的 互 斥 锁 。 初 始 化
-;-=;'。
4. 参考代码:
基于 系统调用
基于 系统调用
3
!" "#"
$%
&$%
&$%
'
$$%(%'
)$*管道创建错误!+*%
,$-!%.
'
)$*管道创建成功!+*%
$$!/0$%%//(%
$!%
$$ /0$%%//(%
$ %
$$#/0$%%//(%
&$!%
$$/0$%%//(%
&$ %.
$(%
$!%
""
$/(11%
/$2%
,$(%
.
1 2
&
$34%
&$34%
&,&,
&
&
56
/(
&$"443%
'
&,$2&,"7899%
&$2"("(%
&$2"("6%
:"("!"3
40
:/ ;9<7=>?@;9<7=ABCDE7F@
;9<7=GA@;9<7=GB9=A(,(((((!((@
(,(((((6((@(,((((( ((@(,(((((((
$/( 11%
'
创建四个线程
/
0/$4%&$(HI%
3 /
$$34%"2$0(HJ%":
"$34%2%
0/$4%&$(HI%
3 /
$$34%&"2$0(HJ%":
"$34%2%
.
$ (%E
,$!%
.
$34%
'
)$*+*%
/4$$4%%
$/(!(11%
'
$1!%表现线程速度差别
&$2%
&,0$2&,%
$//(%
$5"*+(*%
$5"*+(*%
11
)$*生产者K在位置K生产了K+
*""-!"5-!%
&,0$2&,%
&$2%
.
)$*生产者K结束!+*"%
(
.
&$34%
'
/4$$4%%
$/(!(11%
'
$!(-%表现线程速度差别
&$2%
&,0$2&,%
--
)$*消费者K在位置K得到了K+
*"""5%
$5"*LLL+(*%
&,0$2&,%
&$2%
.
)$*消费者K结束!+*"%
(
.
![](https://csdnimg.cn/release/download_crawler_static/10320601/bg4.jpg)
5. 运行结果:
4
剩余15页未读,继续阅读
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/9ba923aad465446a90aaf1574a4c91d5_sy686.jpg!1)
BlingBlingY
- 粉丝: 3
- 资源: 3
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- VMP技术解析:Handle块优化与壳模板初始化
- C++ Primer 第四版更新:现代编程风格与标准库
- 计算机系统基础实验:缓冲区溢出攻击(Lab3)
- 中国结算网上业务平台:证券登记操作详解与常见问题
- FPGA驱动的五子棋博弈系统:加速与创新娱乐体验
- 多旋翼飞行器定点位置控制器设计实验
- 基于流量预测与潮汐效应的动态载频优化策略
- SQL练习:查询分析与高级操作
- 海底数据中心散热优化:从MATLAB到动态模拟
- 移动应用作业:MyDiaryBook - Google Material Design 日记APP
- Linux提权技术详解:从内核漏洞到Sudo配置错误
- 93分钟快速入门 LaTeX:从入门到实践
- 5G测试新挑战与罗德与施瓦茨解决方案
- EAS系统性能优化与故障诊断指南
- Java并发编程:JUC核心概念解析与应用
- 数据结构实验报告:基于不同存储结构的线性表和树实现
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)