/linux-car

使用 Linux 高级 IPC 机制(包括信号量和共享内存)来实现进程同步的一个大作业

Primary LanguageC++

linux-car

linux课程写的使用 Linux 高级 IPC 机制(包括信号量和共享内存)来实现进程同步的一个大作业

项目要求
该项目要求使用 Linux 高级 IPC 机制(包括信号量和共享内存)来实现进程同步。
实验要求实现一个多进程系统来模拟一个单向隧道内交通流量控制。出于安全原因,隧道内一次不能超过 N 辆车。入口处的交通灯控制车辆的进入,入口和出口处的车辆检测器则可以检测交通流量。当隧道已满时,到达的汽车将不允许进入隧道,直到隧道中有车辆离开。
隧道内的每辆车都可以访问和修改一个用以模拟隧道邮箱系统的共享内存段(可以看成是一个数组,访问操作操作包括: r 和 w),这样,隧道内的车辆就在进隧道后保持其手机通讯(隧道将阻塞手机信号)。隧道外的汽车则不需要访问该共享内存段。 每辆车都由一个 Linux 进程来模拟。 当汽车在隧道内,它们的操作是允许并发的,并且必须以 Linux 高级 IPC 机制进行同步。如果一个给定邮箱尚未因写操作而锁定,则对它的读操作可以并行, 但对同一邮箱的写操作则同一时刻只允许一个。

实验环境
VMwave,ubuntu虚拟机 64位

具体步骤
src中放的是源代码

input中放的是测试的输入文件,也可另外撰写,具体格式见config文件。但是需要注意,需要给车辆预留出足够的时间读写,穿越隧道的时间也需要适当大一些,否则车辆可能会没有足够的时间通过隧道而报错。

program为编译好的程序,可以使用input的test文件来测试。

运行命令

*进入到具体文件夹中

编译命令: make

测试命令: ./program test.txt