用於動態分區的位圖

動態分區的主要關注點是跟蹤所有空閒和分配的分區。 但是,操作系統為此任務使用以下數據結構。

  • 位圖
  • 鏈表

位圖是存儲細節最少見的數據結構。 在這個方案中,主記憶體被分成分配單元的集合。 根據該過程的需要,可以將一個或多個分配單元分配給過程。 但是,分配單元的大小是由操作系統定義的,並且從不更改。 雖然分區大小可能會有所不同,但分配大小是固定的。

操作系統的主要任務是跟蹤分區是空閒的還是空閒的。 為此,操作系統還管理另一個稱為位圖的數據結構。

分配單元中的進程或空洞由位圖的標誌位表示。 在下面顯示的圖像中,為分配單元的每一位定義了一個標誌位。 但是,這並不是一般情況,它取決於操作系統,對於多少位分配單元,它想要存儲標誌位。

如果在分配單元中的相鄰位上存在連續存在的過程,則將標誌位設置為1,否則將其設置為0

位圖中的一串0表示相對分配單元中有一個孔,而1的字串表示相對分配單元中的過程。

使用位圖的缺點

  1. OS必須為位圖分配一些記憶體,因為它存儲了有關分配單元的詳細資訊。 大量的記憶體不能用於加載任何進程,因此降低了多進程的程度以及吞吐量。在上圖中,分配單位是4位,即0.5位。 這裏,位圖的1位表示1位的分配單位。

    1個分配單元的大小= 4位
    
    位圖大小= 1 /(4 + 1)=總記憶體的1/5。
    
    

    因此,在這個位圖配置中,總記憶體的1/5被浪費了。

  2. 要識別記憶體中的任何空洞,操作系統需要在位圖中搜索0字串。 這種搜索花費了大量的時間,這使得系統在一定程度上效率低下。


上一篇: 壓縮(碎片整理) 下一篇: 鏈表動態分區