操作系统进程同步例题(三)汽车过桥2
生活随笔
收集整理的這篇文章主要介紹了
操作系统进程同步例题(三)汽车过桥2
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
操作系統進程同步例題(三)汽車過橋2
題目1: 在一個只允許單向行駛的十字路口,分別有若干由東向西,由南向北的車輛在等待通過十字路口。為了安全,每次只允許一輛車通過(比如:東到西或南到北)。當有車輛通過時其它車輛必須等待,當無車輛在路口行駛時則允許一輛車(東到西或南到北) 進入。請畫出能保證安全行駛自動管理系統的邏輯框圖,或者用P、V操作實現正確安全駕駛自動管理系統的偽代碼。
PV操作題目分析步驟:
1、分析
允許單向行駛的十字路口,有由東向西和由南向北的車輛,每次只允許一輛車通過,分為兩個進程,為互斥關系,需要互斥信號量mutex
2、偽代碼
seamphore mutex = 1; //十字路口的互斥信號量 //從東到西 EastToWest() {while(1) {P(mutex); //申請通過由東向西通過;V(mutex); //釋放} } //從南到北 SouthToNorth() {while(1) {P(mutex); //申請通過由南向b通過;V(mutex); //釋放} }題目2:一條小河上有一座獨木橋(如圖),規定每次只允許一個人過橋。現河東和河西都有相等的人數在等待過橋,為了使兩邊的人都有同樣的過橋機會,規定某邊的一個人過橋后要讓另一邊的一個人過橋,即兩邊的人交替過橋。如果把每個過橋者看做一個進程,為保證安全,可用PV操作來管理。
(1)寫出應定義的信號量及其初值。
(2)假定開始時讓河東的一一個人先過橋,然后交替過橋。請用適當的PV操作,達到上述管理要求。
1、分析
一條小河上有一座獨木橋,河東和河西等待過橋,每次只允許一個人過橋,分為兩個進程,為互斥關系,兩邊的人交替過橋,需要兩個互斥信號量mutex1和mutex2,分別表示河東和河西兩邊,開始時先讓河東一人先過橋,故mutex1 = 1,mutex2 = 0;
2、偽代碼
seamphore mutex1 = 1; //河東信號量,開始先讓河東一人先過 seamphore mutex2 = 0; //河西信號量 //從東到西 EastToWest() {while(1) {P(mutex1); //河東申請通過由東向西通過;V(mutex2); //釋放河西信號量} }//從西到東 WestToEast() {while(1) {P(mutex2); //河東申請通過由南向b通過;V(mutex1); //釋放河西信號量} }總結
以上是生活随笔為你收集整理的操作系统进程同步例题(三)汽车过桥2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ble mesh学习笔记(10)mesh
- 下一篇: java信息管理系统总结_java实现科