第二章 进程的描述与控制(二)

2.5 经典进程的同步问题

  1. 哲学家进餐问题
    至多只允许有四位哲学家同时去拿左边的筷子
eat = 4;//信号量初值为4
Pro {
	wait(eat);
	wait(c[i]);
	wait(c[i+1]);
	使用R;
	signal(c[i]);
	signal(c[i+1]);
	signal(eat);
	}

2.问题描述
两个人下棋,一方执黑棋,一方执白棋。要求双方轮流下子。给出两种情况的解决办法:
1)执黑子一方先下;
2)双方都可以先下,谁先抢到棋盘谁先下。然后开始轮流下子。
解:1)

s1 = 1,s2 = 0;
P1{
	while(1)
	{
		wait(s1);
		放黑子;
		signal(s2);
	}
}
P2{
	while(1)
	{
		wait(s2);
		放白子;
		signal(s1);
	}
}
m = 1;s1,s2;
P1{
	wait(m);
	s1 = 1,s2 = 0;
	signal(m);
	while(1)
	{
		wait(s1);
		放黑子;
		signal(s2);
	}
}
P2{
	wait(m);
	s2 = 1,s1 = 0;
	signal(m);
	while(1)
	{
		wait(s2);
		放白子;
		signal(s1);
	}
}

3.嗜睡的理发师问题
问题描述:一个理发店有N个沙发,1个理发椅;
理发师:
持续睡觉,理发,收钱的动作
顾客:
若有沙发,进入等待;否则离开。
理发椅空,一顾客放弃沙发,去唤醒它理发;
理发后付费,付费完毕离开理发椅,离店。
在这里插入图片描述
顾客之间对于椅子和沙发的关系
在这里插入图片描述

2.6 进程通信

1.消息传递系统(发–收方式)

  • 最广泛使用的一种,进程间的数据交换,以格式化的消息为单位。屏蔽底层复杂操作。
  • 单机:操作系统底层编程中的消息传递系统调用;
  • 计算机网络:消息称为报文。程序员直接利用系统提供的一组通信命令(原语)进行通信。(④客户机-服务器系统)
    2.单机和网络环境下的高级进程通信广泛采用“消息传递”方式,需考虑的问题:
  • 通信链路的建立
  • 消息格式
  • 同步方式
    3.通信链路的建立
  • 计算机网络的环境下,用原语显式建立/拆除链路;
  • 单机系统只须利用系统原语,进程间链路由系统自动管理。
    4.消息的格式
    网络环境下,“大头+正文”,消息格式复杂。

2.7 线程(Threads)的基本概念

2.8 线程的实现

2.7和2.8节非重点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值