ucore_os_docs/lab7/lab7_2_labs.md

1.2 KiB
Raw Permalink Blame History

实验内容

实验六完成了用户进程的调度框架和具体的调度算法可调度运行多个进程。如果多个进程需要协同操作或访问共享资源则存在如何同步和有序竞争的问题。本次实验主要是熟悉ucore的进程同步机制—信号量semaphore机制以及基于信号量的哲学家就餐问题解决方案。然后掌握管程的概念和原理并参考信号量机制实现基于管程的条件变量机制和基于条件变量来解决哲学家就餐问题。

在本次实验中在kern/sync/check_sync.c中提供了一个基于信号量的哲学家就餐问题解法。同时还需完成练习即实现基于管程主要是灵活运用条件变量和互斥信号量的哲学家就餐问题解法。哲学家就餐问题描述如下有五个哲学家他们的生活方式是交替地进行思考和进餐。哲学家们公用一张圆桌周围放有五把椅子每人坐一把。在圆桌上有五个碗和五根筷子当一个哲学家思考时他不与其他人交谈饥饿时便试图取用其左、右最靠近他的筷子但他可能一根都拿不到。只有在他拿到两根筷子时方能进餐进餐完后放下筷子又继续思考。