实验**程管理—进程互斥与同步实验。
实验目的。1、进一步认识并发执行的实质。
2、分析进程竞争资源的现象,学习解决进程互斥的方法。
3、掌握用linux信号灯集机制实现两个进程间的同步问题。
实验内容。调试运行程序,观察并分析出现的现象。
实验指导。一、所涉及的系统调用。
lockf(files,function,size)
用作锁定文件的某些段或者整个文件。
本函数的头文件为。
#include ""
参数定义:int lockf(files,function,size)
int files,function;
long size;
其中:files是文件描述符;function是锁定和解锁:1表示锁定,0表示解锁。size是锁定或解锁的字节数,为0,表示从文件的当前位置到文件尾。
二、参考程序。
2.1 进程互斥实验。
#include <>
#include <>
main()
int p1,p2,i;
while((p1=fork())1创建子进程p1*/
if (p1==0)
elseelse
semid=semget(semkey,2,ipc_creat|0666);
if(semid==-1)
seminit(semid,0,0);/对信号灯集的0号分量进行初始化。
seminit(semid,0,1);/对信号灯集的1号分量进行初始化
if(fork()=0)//createaprocess
else//父进程作为售票员进程。
for(j=1;j<10;j++)
printf("conductor(pid:%d):close all doors.",getpid())
semup(semid,0);/唤醒司机。
printf("conductor(pid:%d):ticketing...n",getpid())
semdown(semid,1);/等待汽车到站。
printf("conductor(pid:%d):open all doors.",getpid())
sleep(1);
将上述**写入文件中,再通过gcc -o driver 进行编译,编译无错误后产生driver可执行文件,最后使用。/driver运行可查看结果。
三、运行结果。
3.1 进程互斥实验结果。
parent…
son…daughter..
daughter..
或parent…
son…parent…
daughter…
3.2 进程同步实验结果。
conductor(pid:3306):close all doors.
conductor(pid:3306):ticketing...
driver(pid:3307):startthebus.
driver(pid:3307):tr**eling...
driver(pid:3307)
conductor(pid:3306):open all doors.
conductor(pid:3306):close all doors.
conductor(pid:3306):ticketing...
driver(pid:3307):startthebus.
driver(pid:3307):tr**eling...
driver(pid:3307)
实验4进程调度
实验4 进程调度算法实验。4.1实验目的与要求 通过了解在真实的操作系统中它是怎样实现教材中讲解的进程调度效果的,加深对进程调度概念的理解,体验进程调度机制的功能 了解linux系统中进程调度策略的使用方法,练习进程调度算法的编程和调试技术。根据示例程序和独立实验程序中观察和记录的信息及其结果分析写...
实验4 进程通信
1 熟悉操作系统进程通信原理。2 设计程序,实现共享内存 管道通信 消息通信。1 进程间通信的几种方法简介。1 消息队列 消息队列是消息的链接表,包括posix消息队列systemv消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。2 共享内存 使得多个进程可...
实验4内存管理
仲恺农业工程学院实验报告纸。计算机科学与工程 院 系 网络工程专业 081 班组 操作系统 学号姓名实验日期 2011 6 教师评定 实验四内存管理。一 实验目的 通过实验使学生了解可变式分区管理使用的主要数据结构,分配 的主要技术,了解最优分配 最坏分配 最先分配等分配算法。基本能达到下列具体的目...