2004操作系统

1 中间件:是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。

2 客户/服务器计算:它是指服务器掌握着服务类型,客户只能调用服务器提供的服务,并且客户必须知道这些服务。

3 集群技术:一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理。

4 系统容灾:就是为计算机信息系统提供的一个能应付各种灾难的环境。

5 可信计算域:是在计算和通信系统中广泛使用基于硬件安全模块支持下的可信计算平台,以提高系统整体的安全性。

 

二:设计题:

哲学家就餐问题是一种典型的同步问题,它是由Dijkstra 提出并解决的。该问题描述
:有五个哲学家,他们的生活方式是交替的进行思考和进餐。哲学家们共用一张圆桌,





设五个哲学家分别编号为A,B,C,D,E,桌子上放着五把筷子,筷子分别编号为 0,1,
2,3,4,桌子中央有一盘饭菜。五个哲学家都很有礼貌,都要等同时拿到身旁的两只筷子
才进餐,不然就只是等着继续思考,而且吃了一口之后又马上放下拿起的两根筷子,继续思
考。
用P V原语的方式实现

每个哲学家可用一个线程来模拟,信号量及其PV操作的实现

定义一个semaphore 类 封装 P V原语模拟函数

(不妨设有6个哲学家,6只筷子每只筷子各对应一个信号量且每个信号量初始值应为1)

void Philosopher(int pid)
{
	while (true)
	{
		if (pid%2 == 0)                 //偶数号哲学家
		{
			Thinking(pid);              //等待中
			ChopStick[LEFT(pid)].P();   //先拿起左边的筷子,再拿起右边的筷子
			ChopStick[RIGHT(pid)].P();   
			Eating(pid);                //获得的两个信号量则eating
			ChopStick[LEFT(pid)].V();   //先后释放左右信号量
			ChopStick[RIGHT(pid)].V();
			printf("\n");
		}
		else if(pid%2==1 )             //奇数号哲学家
		{
			Thinking(pid);
			ChopStick[RIGHT(pid)].P();  //先拿起右边的筷子,再拿起左边的筷子
			ChopStick[LEFT(pid)].P();
			Eating(pid);                //左右都得到筷子后则eating
			ChopStick[RIGHT(pid)].V();  //先后释放右左信号量
			ChopStick[LEFT(pid)].V();
			printf("\n");
		}
		Sleeping(pid);                   //吃完睡上一会儿
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值