緩衝區傳送訊息PV操作題目詳細分析

2021-09-02 13:28:27 字數 620 閱讀 6913

程序a1、a2、…anl通過m個緩衝區向程序b1、b2、…bn2不斷地傳送訊息。傳送和接收工作遵循如下規則:

(1)每個傳送程序一次傳送乙個訊息,寫入乙個緩衝區,緩衝區大小與訊息長度一樣。

(2)對於每乙個訊息,b1、b2、…bn2都需各接收一次,讀入自己的資料區內。

(3)m個緩衝區都滿時,傳送程序等待;沒有可讀的訊息時,接收程序等待。 試用wait、signal操作描述它們的同步關係。

這個題目有n1個寫程序,m個緩衝區,n2個讀程序。寫程序傳送一次訊息占用乙個緩衝區,同時這些訊息向每個讀程序傳送。

訊號量分析:

(1)對於緩衝區的讀寫互斥訪問需要乙個訊號量:mutex = 1。

(2)每個讀程序需要乙個表示剩餘多少可讀的訊號量full[i] = 0,乙個表示空緩衝區數量的訊號empty[i] = m(最多空出m個)。

empty[s2] = m;

full[s2] = 0;

while(1)//寫程序

p(mutex);

訊息放入緩衝區;

v(mutex);

for(i = 0; i< s2; i++)

}while(1)//讀程序

傳送緩衝區sk wmem queued

sk wmem queued是目前傳送緩衝區的量 tcp trim head 把這快記憶體給去掉,什麼時候會加入到記憶體裡呢?tcp add write queue tail,skb裡的記憶體是啥?是如何確認傳送緩衝區的,傳送緩衝區 sk wmem free skb 當接收到了ack之後,整個skb...

套接字的接受緩衝區及傳送緩衝區

1.套接字的接受緩衝區及傳送緩衝區 net.ipv4.tcp rmem 這個引數定義了tcp接收緩衝 用於tcp接收滑動視窗 的最小值 預設值 最大值 net.ipv4.tcp wmem 這個引數定義了tcp傳送緩衝 用於tcp傳送滑動視窗 的最小值 預設值 最大值 netdev max backl...

UDP寫緩衝區(傳送緩衝區)分析

最近,碰到udp是否有寫緩衝區的疑問,對於應用,如下圖linux手冊中有設定udp傳送緩衝區相關屬性,也明確提到了send buffer的概念 那這是否意味著udp是有傳送緩衝區的嗎?我們再看一下 unix network programming 書中所述,這本書的作者權威性我就不多說了吧,在國內高...