关闭

2004操作系统

166人阅读 评论(0) 收藏 举报

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:26538次
    • 积分:279
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:8篇
    • 译文:0篇
    • 评论:6条
    最新评论
    C#与ASP.NET