"山东大学操作系统实验报告4:进程同步实验-抽烟者问题的 IPC 同步机制编程"

需积分: 15 5 下载量 17 浏览量 更新于2024-01-01 2 收藏 469KB DOC 举报
山东大学操作系统实验报告4进程同步实验.doc 本次实验的目的是加深对并发协作进程同步与互斥概念的理解,观察和体验并发进程同步与互斥操作的效果,分析与研究经典进程同步与互斥问题的实际解决方案。同时,我们也要了解 Linux 系统中 IPC 进程同步工具的用法,并练习并发协作进程的同步与互斥操作的编程与调试技术。 实验内容是实现“抽烟者问题”。假设一个系统中有三个抽烟者进程,每个抽烟者不断地卷烟并抽烟。抽烟者卷起并抽掉一颗烟需要有三种材料:烟草、纸和胶水。一个抽烟者有烟草,一个有纸,另一个有胶水。系统中还有两个供应者进程,它们无限地供应所有三种材料,但每次仅轮流提供三种材料中的两种。得到缺失的两种材料的抽烟者在卷起并抽掉一颗烟后会发信号通知供应者,让它继续提供另外的两种材料。这一过程不断重复。 为了实现这个问题,我们采用了 IPC 同步机制进行编程。首先,我们需要一个共享资源池,用来存放材料。这个共享资源池可以由两个供应者进程交替地提供材料,并由抽烟者进程使用。为了保证同一时间只有一个进程能够访问共享资源池,我们使用了信号量来实现互斥。当一个抽烟者进程需要材料时,它会尝试获取共享资源池的信号量,如果获取失败,则进程被阻塞,直到有材料可用。当一个供应者进程提供完材料后,会发送信号通知阻塞的抽烟者进程,让它继续执行。 在具体的编程实现中,我们使用了Linux系统中的IPC工具,包括信号量和共享内存。信号量用于实现互斥和同步,共享内存用于存放共享资源池。通过在进程中对信号量和共享内存的操作,我们实现了抽烟者问题的功能。 在硬件环境方面,我们使用了Intel® Core™ i3-2350M CPU处理器,2.30GHz × 4的图形芯片和4G的内存。 通过本次实验,我们深化了对并发协作进程同步与互斥概念的理解,观察和体验了并发进程同步与互斥操作的效果。同时,我们也学习了Linux系统中IPC进程同步工具的用法,并练习了并发协作进程的同步与互斥操作的编程与调试技术。这些知识和经验对于我们进一步学习操作系统和并发编程都具有重要的意义。