共用有兩種,這裡的共用可以理解為複用,分為時間上的複用和空間上的複用,時間上的複用的一個典型的例子就是分時系統分時使用cpu,cpu將所有時間分成若干個段,每個進程使用一段時間,然後讓出cpu,之後調度邏輯會挑選另外一個進程來使用cpu的接下來的時間段;空間上的複用的一個典型的例子就是早期的多道程式設計的記憶體管理機制,那個時候沒有現在MMU的複雜邏輯,僅僅將實體記憶體分成若干等分或者不等分的空間段,然後分給每個進程一個,如果空間段比進程少就要涉及換入換出機制,這裡先不涉及換入換出,如果有換入換出了就說明這個記憶體段在進程生命週期內並不是永久屬於該進程的,這就導致了一定的時間複用,這個一會再說,不考慮交換的話,每個進程就可以在被分到的記憶體空間段中進行僅僅屬於自己的編址邏輯,比如所有進程都將自己記憶體段的開始定位為邏輯地址0,然後順序平坦編址。
更晚的時候的請求調頁機制實際上是空間複用和時間複用的混合,某一個時刻是空間複用,但是在更長的時間段上看,一個記憶體空間段並不是永久的屬於一個進程,這就是時間複用了。實際上請求調頁的複雜性就在於它實現了公平性,在很細的粒度上實現了公平性,如果不是為了這種公平,完全沒有必要這麼複雜,原始的整個進程的換入換出已經很好了,只是那會造成很大的交換延遲,相反如果粒度過於細,還會造成抖動,因此請求調頁機制在公平性和效率之間作了折中,這就是工作集機制,當然這隻是理論,實際的作業系統核心實現中LRU的用法更加普遍些,並且lru鏈表加上兩個閥值而不是一個閥值,有效地防止了抖動。
在現實生活中,時分複用和空分複用使用的也是很廣泛的,畢竟理論就是來源於真實的世界的如果共用的是一個資源,那麼就是空分複用,如果共用的是一個流程,那麼就是時分複用,當然流水線也是一種提高效率的機制,它在一個流程內部分為了好幾個流程,有效地調動了所有的流程,使得任何細微流程不至於空閑,流水線是為了防止組件閒置,是一個細粒度的機制,然而問題是雖然組件不空閑了,但是資料卻不再是一步到位了,而要從流水線的一節流到下一節,肯定影響了單品加工效率,這個怎麼解決呢?這就是緩衝的作用。