华科操作系统实验报告要点.docx
- 文档编号:1121363
- 上传时间:2022-10-17
- 格式:DOCX
- 页数:23
- 大小:312.17KB
华科操作系统实验报告要点.docx
《华科操作系统实验报告要点.docx》由会员分享,可在线阅读,更多相关《华科操作系统实验报告要点.docx(23页珍藏版)》请在冰豆网上搜索。
华科操作系统实验报告要点
课程实验报告
课程名称:
操作系统原理
专业班级:
cs1209
学号:
姓名:
指导教师:
报告日期:
2015年1月5日
计算机科学与技术学院
目录
1实验一Linux线程及信号灯..........................................................................1
1.1实验目的与内容....................................................................................1
1.1.1实验目的..........................................................................................1
1.1.2实验内容.........................................................................................1
1.2实验过程................................................................................................1
1.2.1预备知识.........................................................................................1
1.2.2实验测试与结果.............................................................................2
1.3实验总结................................................................................................3
1.4源代码....................................................................................................4
2实验二Linux进程及同步..............................................................................7
2.1实验目的与内容....................................................................................7
2.1.1实验目的.........................................................................................7
2.1.2实验内容.........................................................................................7
2.2实验过程................................................................................................7
2.2.1预备知识.........................................................................................7
2.2.2实验测试与结果.............................................................................8
2.3实验总结................................................................................................9
2.4源代码....................................................................................................9
3实验三Linux文件目录操作.........................................................................13
3.1实验目的与内容...................................................................................13
3.1.1实验目的........................................................................................13
3.1.2实验内容........................................................................................13
3.2实验过程...............................................................................................13
3.2.1预备知识........................................................................................13
3.2.2实验测试与结果............................................................................14
3.3实验总结...............................................................................................15
3.4源代码...................................................................................................15
实验一Linux线程及信号灯
1.1实验目的与内容
1.1.1实验目的
1、熟悉Linux线程接口。
2、熟悉Linux信号灯编程。
3、了解Linux进程同步与通信的主要机制,并通过信号灯操作实现进程间的同步与互斥。
1.1.2实验内容
1、编程模拟实现飞机售票:
创建多个售票线程;
使用公用全局变量保存已售票数量;
创建互斥信号灯;
对售票线程临界区实施P、V操作;
2、编程模拟实现双线程单缓冲区的合作
创建一个计算线程与一个输出线程;
创建同步信号灯;
缓冲区用全局公用数组变量;
对计算线程与输出线程实施P、V操作;
1.2实验过程
1.2.1预备知识
Linux下的信号灯及其P、V操作:
表1.1P、V操作定义
voidp(intsemid,intsemno)
{
structsembufsop;
sop.sem_num=semno;
sop.sem_op=-1;
sop.sem_flg=0;
semop(semid,&sop,1);
}
voidv(intsemid,intsemno)
{
structsembufsop;
sop.sem_num=semno;
sop.sem_op=1;
sop.sem_flg=0;
semop(semid,&sop,1);
}
线程:
表1.2线程相关函数
线程创建
pthread_create(pthread_t*thread,pthread_attr_t*attr,
void*(*start_routine)(void*),void*arg);
线程挂起
pthread_join(pthread_tth,void**thread_retrun);
共享内存:
使用共享内存是运行在同一计算机上的进程进行进程间通信的最快的方法,shmget与shmat系统调用。
进程控制:
fork与execv系统调用;
编译、编辑、调试
表1.3编译、编辑、调试
编译
cc–otest-gtest.c–lpthread
cc–osub1sub1.c
编辑
vi
调试
gdb
1.2.2实验测试与结果
测试结果:
模拟售票
说明(图1.1.1和1.1.2):
共有300张票,有三个线程分别代表三个售票窗口
图1.1.1
图1.1.2
说明(图1.1.3和1.1.4):
每个窗口每次只卖出一张,直到卖完
图1.1.3图1.1.4
测试结果:
双线程单缓冲区的合作
图1.2
1.3实验总结
本次实验刚做的时候用三个线程做依次访问卖几张来卖出,后来老师让我改成每次买一张直到卖完,做出来了,但是我加的循环体加的位置不对,运行一两次可能没问题,但运行几万次可能会出现问题,此bug老师给我指出的,程序还有待优化。
1.4源代码
1:
#include
#include
#include
#include
#include
intticket=300;
intmutex;
voidp(intsemid,intsemno)
{
structsembufsop;
sop.sem_num=semno;
sop.sem_op=-1;
sop.sem_flg=0;
semop(semid,&sop,1);
}
voidv(intsemid,intsemno)
{
structsembufsop;
sop.sem_num=semno;
sop.sem_op=1;
sop.sem_flg=0;
semop(semid,&sop,1);
}
voidthread1(void)
{
inti;
p(mutex,0);
printf("窗口1:
本航班共有%d个座位,请问您需要买几张?
\n",ticket);
scanf("%d",&i);
if(i>ticket)
printf("窗口1:
剩余票数不够");
else
ticket=ticket-i;
v(mutex,0);
}
voidthread2(void)
{
inti;
p(mutex,0);
printf("窗口2:
本航班共有%d个座位,请问您需要买几张?
\n",ticket);
scanf("%d",&i);
if(i>ticket)
printf("窗口2:
剩余票数不够");
else
ticket=ticket-i;
v(mutex,0);
}
voidthread
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 报告 要点