訊號量習題

2021-10-24 05:45:32 字數 2560 閱讀 6250

題目:三個程序分別列印a,b,c,要求輸出的結果必須是「abcabc」順序執行

設定三個訊號量:

sem1:初始值設定為1,保證程序可以執行,對sem1執行p操作,程序3輸出c後,對sem1進行v操作

sem2:初始值設為0,程序2執行後對sem2進行p操作,程序1輸出a後對sem2進行v操作

sem3:初始值設為0,程序3執行後對sem3執行p操作,程序2輸出b後對sem3執行v操作

sem.h

#pragma once

typedef

union semun

semun;

intgetsem

(int key,

int initval,

int n)

;int

delsem

(int semid)

;int

semp

(int semid,

int index)

;int

semv

(int semid,

int index)

;

sem.c

#include

"sem.h"

#include

#include

#include

#include

intgetsem

(int key,

int initval,

int n)

int i =0;

for(

; i < n;

++i)}}

return semid;

}int

semp

(int semid,

int index)

return0;

}int

semv

(int semid,

int index)

return0;

}int

delsem

(int semid)

return0;

}

1.c

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

"sem.h"

intmain()

;int semid =

getsem

(1234

, initval,

sizeof

(initval)

/sizeof

(initval[0]

));assert

(semid !=-1

);int count =0;

while

(count <5)

exit(0);}

2.c

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

"sem.h"

intmain()

;int semid =

getsem

(1234

, initval,

sizeof

(initval)

/sizeof

(initval[0]

));assert

(semid !=-1

);int count =0;

while

(count <5)

exit(0);}

3.c

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

"sem.h"

intmain()

;int semid =

getsem

(1234

, initval,

sizeof

(initval)

/sizeof

(initval[0]

));assert

(semid !=-1

);int count =0;

while

(count <5)

exit(0);}

執行結果:

訊號量習題

1.設有n個程序共享乙個互斥段,對於如下兩種情況使用訊號量,訊號量的值應該怎樣變化 1 如果每次只允許乙個程序進入互斥段 2 如果每次最多允許m個程序 m 1 訊號量的初值是1,變化量範圍是1,0,1,2,1 n 2 訊號量的初值是m,變化量範圍是m,m 1,m 2,m n 2.桌子上有乙個盤子,每...

訊號量 二值訊號量

訊號量 二值訊號量 訊號量是作業系統的重要部分,訊號量一般用來進行資源管理和任務同步。freertos中訊號量分為二值訊號量 互斥訊號量 計數訊號量和遞迴互斥訊號量,應用場景各不同。二值訊號量通常用於互斥訪問或同步,二值訊號量和互斥訊號量非常相似,但互斥訊號量有優先順序,二值訊號量沒有。因此二值訊號...

python訊號量 Python訊號量

python訊號量教程 訊號量是由作業系統管理的一種抽象資料型別,用於在多執行緒中同步對共享資源的使用。本質上說,訊號量是乙個內部資料,用於標明當前的共享資源可以有多少併發讀取。也可以簡單的理解為,訊號量是多把鎖,同時允許多個執行緒來更改資料,而 python訊號量與互斥鎖的關係 訊號量的乙個特殊用...