作業系統概念 一書中4 6題程序同步演算法的解答

2021-05-02 07:36:32 字數 1165 閱讀 7541

先理解下緩衝區中最多同時有buffer_size-1個項的方案:感覺這個方案的演算法挺經典的!!

#define buffer_size 10

typedf structitem;

item buffer[buffer_size];

int  in=0;

int  out=0;

生產者程序**:

while(1)

/*produce an item in nextproduced*/

while((in+1)%buffer_size)==out);

buffer[in]=nextprodeced;

in=(in+1)%buffer_size;

消費者程序**:

while(1)

while(in==out);

nextconsumed=buffer[out];

out=(out+1)%buffer_size;

/* consume the item in nextconsumed*/

理解:對緩衝區的共享是通過迴圈陣列buffer和兩個邏輯指標in out來實現的。

in和out是從0到buffer_size-1,再從0到buffer_size-1這樣一遍一遍的迴圈的 通過語句in=(in+1)%buffer_size;

當in==out時,表示緩衝區為空(注意,其實不是真的緩衝區中沒有資料,只是緩衝區中的資料都被消費過了,沒有最新的)

這是消費者要考慮的

當(in+1)%buffer_size==out表示緩衝為滿(這兒表示緩衝區中的有buffer_size-1個資料是新的,沒有被消費過的)

這是生產者要考慮的

關於緩衝區中同時能儲存buffer_size個項的解決方案:

in flag=0;

修改生產者程序**為:

while(1)

/*produce an item in nextproduced*/

while((in+1)%buffer_size)==out)

if(!flag)

flag=1;

buffer[in]=nextproduced;

if(!flag)

buffer[in]=nextprodeced;

in=(in+1)%buffer_size;

flag=0;

作業系統 程序概念

程序是具有獨立功能的程式關於某個資料集合上的一次執行活動,是系統進行資源分配和排程的獨立單位 1 程序是程式的一次執行過程,是對cpu的抽象,是正在執行的程式的抽象 2 每個程序具有獨立的位址空間 3 作業系統通過排程將cpu的控制權交給某個程序 又稱程序描述符,程序屬性,是作業系統用於管理控制程序...

作業系統 程序概念

三 pcb包含哪些資訊 四 程序狀態及狀態轉換 五 程序的特性 六 程序佇列 七 上下文切換 程序是具有獨立功能的程式關於某個資料集合上的一次執行活動,是系統進行資源分配和排程的獨立單位 動態性 獨立性 併發性是程序的三大特性。在程式執行的過程中,它的狀態是在不斷變化的。例如乙個程式在執行過程中,它...

作業系統 程序管理 概念 死鎖

死鎖 死鎖的原因 1 因為系統資源不足。2 程序執行推進的順序不合適,保證有先後順序。3 資源分配不當等。死鎖的必要條件.產生死鎖的四個必要條件 1 互斥條件 乙個資源每次只能被乙個程序使用。2 請求與保持條件 乙個程序因請求資源而阻塞時,對已獲得的資源保持不放。3 不剝奪條件 程序已獲得的資源,在...