当前位置:  技术问答>linux和unix

操作系统:哲学家吃饭问题.关于Linux/Unix.

    来源: 互联网  发布时间:2016-02-28

    本文导语:  问题描述:   一个房间内有5个哲学家,他们的生活就是思考和进食。哲学家思考后,过一定的时间就会饥饿,饥饿之后就想吃饭,吃饭后再思考。房间里有一张圆桌,桌子周围放有五把椅子,分别属于五位哲学家每...

问题描述:
  一个房间内有5个哲学家,他们的生活就是思考和进食。哲学家思考后,过一定的时间就会饥饿,饥饿之后就想吃饭,吃饭后再思考。房间里有一张圆桌,桌子周围放有五把椅子,分别属于五位哲学家每两位哲学家之间有一把叉子,哲学家进食时必须同时使用左右两把叉子。

问题:
1、 写出哲学家进餐的伪码。
2、 用C程序实现哲学家进餐。(注:可以使用共享变量的方式,也可以使用信号量的方式来实现)

请问怎么做啊 谢谢
























|
#define N 5
#define Left (i+N-1)%N
#define Right (i+1)%N
#define THINKING 0
#define HUNGRY 1
#define EATING 2
typedef int semaphore;
int state(N);
semapore mutex =1;
semaphore s(N);

void philosopher(int i){
while(TRUE){
  think();
  take_forks(i);
  eat();
  put_forks(i);
}
}
void tak_forks(int i){
down(&mutex);
state(i)=HUNGRY;
test(i);
up(&mutex);
down(&s[i]);
}
void put_forks(int i){
down(&mutex);
state(i)=THINK;
test(LEFT);
test(RIGHT);
up(&mutex);
}
void test(i){
if(state(i)==HUNGRY && state(LEFT)!=EATING && state(RIGHT)!=EATING){
  state(i)=EATING;
  up(&s[i])
}
}


|
这个问题在《windows核心编程》里有详细描述,主要是用来描述死锁的产生,和WaitForMultiObject函数的应用。OS不同,原理一样。

|
就是互斥锁的问题

|
一个互斥环的问题

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Stacks(堆栈) 成员 操作:比较和分配堆栈
  • 谁有操作系统PV操作的例子???谁有操作系统PV操作的例子???谢谢!!
  • C++ Strings(字符串) 成员 Operators:操作符,用于字符串比较和赋值
  • 已安装了Windows操作系统,还想安装Linux。却还想在开机选择操作系统时由Windows引导,请问如何操作。在线等待
  • C++ I/O 成员 flags():操作flags
  • 请问LINUX操作系统是怎样对外围设备进行操作的
  • C++ I/O 成员 width():操作域宽度
  • 什么样的操作最耗费服务器的IO操作?
  • c#对象中两种copy操作:深拷贝(Deep Copy)与浅拷贝(Shallow Copy)
  • 无操作系统下对U盘的操作
  • Xcode介绍及创建工程和工程依赖操作步骤
  • 请问命令行操作下怎么改Linux操作系统的日期和时间?
  • MyEclipse如何查看和设置文件编码格式相关操作
  • 正在学操作系统原理,做操作系统方面的实验用那种工具较好?
  • Html checkbox标签如何设置默认选中以及用js操作checkbox代码示例
  • 请问16位操作系统和32位操作系统的区别?
  • c/c++ 操作符优先级参考
  • 基于linux操作系统之上操作LCD问题,急???
  • javascript操作html复选框checkbox:如何判断复选框是否被选中
  • 哪位大侠知道Linux里的有名管道传送数据快不快?有名管道操作的过程是否有读写硬盘的操作?
  • Plesk 中操作和设置 Docker 容器
  • 如何在一个用户对application操作时防止别的用户对它操作?(好难啊)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3