当前位置:首页 > 《计算机操作系统》实验指导书
专业资料
int pid1,pid2; main(){ int fd[2];
char OutPipe[100],InPipe[100]; pipe(fd);
while((pid1=fork())==-1); if(pid1==0){ lockf(fd[1],1,0);
sprintf(OutPipe,\write(fd[1],OutPipe,50); sleep(5);
lockf(fd[1],0,0); exit(0); } else{
while((pid2=fork())==-1); if(pid2==0){ lockf(fd[1],1,0);
sprintf(OutPipe,\write(fd[1],OutPipe,50); sleep(5);
lockf(fd[1],0,0); exit(0); } else{ wait(0);
read(fd[0],InPipe,50); printf(\wait(0);
read(fd[0],InPipe,50); printf(\exit(0); } } }
word完美格式
专业资料
七、
实验步骤 1)进入vi编辑器
2)在编译器中输入所要运行的程序代码
3)退出编辑器,返回命令行输入方式,使用gcc编译器编译程序,获得能运行的目标程序。
4)运行目标程序,查看运行结果。 八、
注意事项
1)管道按怎样的方式传送消息?是否能够双向传送消息? 2)在管道通信方式中,如何来实现进程同步与互斥的? 3)pipe()函数的使用可参看第一部分的介绍。 九、
实验报告要求
需要列出运行了的程序清单及相应结果,并对结果进行分析和讨论。对结果的分析主要讨论管道通信方式的特点,实验结果是否体现该特点。
word完美格式
专业资料
实验五 存储管理实验
一、 二、
实验类型
本实验为综合性实验。
实验目的与任务
1)理解动态异长存储分区资源管理 2)掌握所需数据结构和管理程序
3)了解各种存储分配算法的优点和缺点。 4)编程实现动态不等长存储管理的模拟程序。 三、
预习要求
1)进程控制的概念及内容 2)熟悉存储管理的概念
3)了解动态分区管理的思想,熟悉分配算法和回收算法 4)熟悉c语言编程,指针及结构体等知识 5)数据结构中的链表的建立及基本操作 四、
实验基本原理
使用一个一维数组来模拟内存储空间,建立内存块来记录内存分配使用情况,通过随机产生进程及其所需要的内存来模拟真实的进程。通过给进程分配内存及回收来实现对动态不等长存储管理方法。 五、 译器。
六、
实验内容
(1) 内存块表,包括参数①进程名name;②起始地址 address;③长度 length;④标志 flag,表示该块是否被分配。
(2) 为简单起见,只设内存分配记录链表数据结构,用来记录内存分配与空闲情况。
word完美格式
实验仪器与设备(或工具软件)
实验设备:计算机一台,软件环境要求:安装Red Hat Linux操作系统和gcc编
1)实验中使用的数据结构
专业资料
2)实验中假设有若干个进程,如5个,每个需要空间随机产生,为0~20之间的整数,进程名字实验者自己定义,可以是一个整数。
3)其他一些参数,如内存空间的大小实验者自己定义,建议为100;
4)为了得到清晰的实验结果,建议先给每个进程分配存储空间,后进行回收。 5)程序的流程图如图5.1, 图5.2, 图5.3
建立链表 查找链表,找到一个大于或等于进程所需空间的空闲节点 初始化链表,表示整个存储空间 是 对5个进程分别分配空间 将节点分配给该进回收1个进程 程,即修改相应参数 将该节点空间分割成两部分,分别修改其参数,插入链表 |节点空间-进程空间| 图5.3回收流程图 6)参考程序 #include \#include \ word完美格式
共分享92篇相关文档