LAB7:同步互斥

在之前的几章中我们已经实现了进程以及调度算法,可以让多个进程并发的执行。在现实的系统当中,有许多多线程的系统都需要协同的完成某一项任务。但是在协同的过程中,存在许多资源共享的问题,比如对一个文件读写的并发访问等等。这些问题需要我们提供一些同步互斥的机制来让程序可以有序的、无冲突的完成他们的工作,这也是这一章内我们要解决的问题。

我们最终实现的目标是解决“哲学家就餐问题”。“哲学家就餐问题”是一个非常有名的同步互斥问题:有五个哲学家围成一圈吃饭,每两个哲学家中间有一根筷子。每个需要就餐的哲学家需要两根筷子才可以就餐。哲学家处于两种状态之间:思考和饥饿。当哲学家处于思考的状态时,哲学家便无欲无求;而当哲学家处于饥饿状态时,他必须通过就餐来解决饥饿,重新回到思考的状态。如何让这5个哲学家可以不发生死锁的把这一顿饭吃完就是我们要解决的目标。

最后更新于