什麼是使用生產者消費者問題的共享記憶體概念?


程序間通訊需要通訊來建立一個共享記憶體區域。共享記憶體區域存在於建立共享記憶體段的程序的地址空間中。其他程序使用附加到其地址空間的共享記憶體段進行通訊。

作業系統防止一個程序訪問另一個程序的記憶體。

在共享記憶體中,兩個或多個程序可以透過讀取和寫入共享記憶體區域中的資料來交換資訊。程序還負責確保它們沒有寫入相同的記憶體位置。

生產者-消費者問題

現在,讓我們討論生產者-消費者程序問題。

步驟 1 - 生產者程序產生由消費者程序消費的資訊。例如,一個編譯器產生彙編程式碼,該程式碼由彙編器消費。彙編器可以生成由載入器消費的目標模組。

步驟 2 - 它使用共享記憶體的概念。

步驟 3 - 如果我們希望允許生產者和消費者程序併發執行,我們必須提供一個專案緩衝區,生產者可以填充該緩衝區,而消費者可以清空該緩衝區。

步驟 4 - 該緩衝區將駐留在生產者和消費者程序共享的記憶體區域中。

步驟 5 - 生產者可以在消費者消費另一個專案的同時生成一個專案。

步驟 6 - 生產者和消費者必須同步,以便消費者不會嘗試消費尚未生成的專案。

緩衝區型別

緩衝區有兩種型別,如下所示:

  • 無界緩衝區 - 它對緩衝區的大小沒有限制。消費者可能需要等待新專案,但生產者始終可以生成新專案。

  • 有界緩衝區 - 它假設一個固定的緩衝區大小。

如果緩衝區為空,消費者必須等待;如果緩衝區已滿,生產者必須等待。

以下是共享記憶體系統的結構

更新於: 2021年11月30日

3K+ 瀏覽量

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.