经典PIC问题

哲学家进餐:

哲学家问题可出现拿起左边的筷子,然后拿起右边的筷子进餐,但是假如五个哲学家同时拿起左边的筷子,那么右边的筷子都取不到

你可能这样思考就是就是你拿起左边的筷子,查看右边的筷子是否可用,如果不可用,等一会在重复上述问题,但是可能在某一瞬间,所有哲学家都拿起左边的筷子,然后发现没有右边的筷子,同时又放下左边的筷子,这样重复下去,这种情况成为饥饿

解决上述方法可以使用一个二进制信号量,这里面有一个性能问题,就是采用信号量同一时间只有一个哲学家就餐,但是实际上可以允许俩个哲学家就餐

这里面涉及俩个信号量一个临界区信号量,代表着同一时刻只有一个哲学家,另一个信号量是哲学家信号量如果一个哲学家准备就餐,那么down该信号量,如果俩个叉子都可用,那么会吃面,然后放下叉子,如果获取不到叉子那么就会,就会把他的哲学家信号量down然后阻塞还哲学家,就是他不能就餐然后必须等别人放下叉子之后就可以了

读-写者问题:

它为数据库访问建立了一个模型

有一种解法就是,第一个读者对该信号量执行一个down操作,随后读者只是递增一个计数器rc,然后读者离开时,递减这个计数器。但是这里面有一个问题,由于写操作是排他的,所以写操作到来时,只要有读操作那么,写操作永远都不会被执行,写操作后面的读操作都被允许访问数据库。提供了一种解法就是如果写操作到来那么后面的读操作都会被阻塞,写操作前的读操作结束之后写操作就会被执行

理发师睡觉问题

这个问题的原型是一个理发椅,多个顾客等待椅,一个理发师,如果没有客人那么理发师睡觉,第一个客人来到了,那么它获得信号量,其他客人只能等第一个客人释放信号量,他才能继续剪头,如果等待剪头的椅子满了的话,顾客就离开了,等待顾客也是获得该信号量,只不过阻塞在该信号量上,有顾客来就把up顾客的信号量,顾客释放了信号量,理发师先获得信号量,整理之后才能剪头,然后顾客才能获得该信号量

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 过桥问题 一条河上架设了由N个桥墩组成的一座桥。若一个桥墩只能站一个人,过河的人只能沿着桥向前走而不能向后退。过河...
    Azur_wxj阅读 10,803评论 0 6
  • 本文摘自汤小丹主编《计算机操作系统》(第三版)2.4 经典进程的同步问 在多道程序环境下,进程同步问题十分重要,也...
    刘帅_阅读 10,154评论 1 1
  • 问题描述 一张圆桌上坐着5名哲学家,每两个哲学家之间的桌上摆一根筷子,桌子的中间是一碗米饭。哲学家们倾注毕生精力用...
    saviochen阅读 8,083评论 1 8
  • 生活中总是有些人说话办事不招人待见。 遇到这样的人,能怎么办呢? 我只能做好自己的那50%,然后想办法远离那个让自...
    小牧心阅读 1,118评论 0 0