《计算机操作系统》实验指导书 联系客服

发布时间 : 星期二 文章《计算机操作系统》实验指导书更新完毕开始阅读

专业资料

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完美格式