共享有兩種,這裡的共享可以理解為復用,分為時間上的復用和空間上的復用,時間上的復用的乙個典型的例子就是分時系統分時使用cpu,cpu將所有時間分成若干個段,每個程序使用一段時間,然後讓出cpu,之後排程邏輯會挑選另外乙個程序來使用cpu的接下來的時間段;空間上的復用的乙個典型的例子就是早期的多道程式設計的記憶體管理機制,那個時候沒有現在mmu的複雜邏輯,僅僅將物理記憶體分成若干等分或者不等分的空間段,然後分給每個程序乙個,如果空間段比程序少就要涉及換入換出機制,這裡先不涉及換入換出,如果有換入換出了就說明這個記憶體段在程序生命週期內並不是永久屬於該程序的,這就導致了一定的時間復用,這個一會再說,不考慮交換的話,每個程序就可以在被分到的記憶體空間段中進行僅僅屬於自己的編址邏輯,比如所有程序都將自己記憶體段的開始定位為邏輯位址0,然後順序平坦編址。
更晚的時候的請求調頁機制實際上是空間復用和時間復用的混合,某乙個時刻是空間復用,但是在更長的時間段上看,乙個記憶體空間段並不是永久的屬於乙個程序,這就是時間復用了。實際上請求調頁的複雜性就在於它實現了公平性,在很細的粒度上實現了公平性,如果不是為了這種公平,完全沒有必要這麼複雜,原始的整個程序的換入換出已經很好了,只是那會造成很大的交換延遲,相反如果粒度過於細,還會造成抖動,因此請求調頁機制在公平性和效率之間作了折中,這就是工作集機制,當然這只是理論,實際的作業系統核心實現中lru的用法更加普遍些,並且lru鍊錶加上兩個閥值而不是乙個閥值,有效地防止了抖動。
在現實生活中,時分復用和空分復用使用的也是很廣泛的,畢竟理論就是**於真實的世界的如果共享的是乙個資源,那麼就是空分復用,如果共享的是乙個流程,那麼就是時分復用,當然流水線也是一種提高效率的機制,它在乙個流程內部分為了好幾個流程,有效地調動了所有的流程,使得任何細微流程不至於空閒,流水線是為了防止部件空閒的,是乙個細粒度的機制,然而問題是雖然部件不空閒了,但是資料卻不再是一步到位了,而要從流水線的一節流到下一節,肯定影響了單品加工效率,這個怎麼解決呢?這就是快取的作用。
C DLL匯出的兩種方式和鏈結的兩種方式
第一種 匯出方式 extern c declspec dllexport int plus int x,int y extern c declspec dllexport int sub int x,int y extern c declspec dllexport int mul int x,in...
兩種過載方式
過載的方式 用某次作業題中的實現complex類做例子 1 實現加法 1 complex complex operator const complex c 2 友元函式 complex operator const complex l,const complex r 2 實現 1 complex c...
HTTP FLV的兩種方式
目前,有兩種http flv的實現方式,一種是基於檔案的方式,一種是基於包的方式 兩種http flv的相同之處在於,都是http方式輸出,都是flv 格式 兩種http flv的不同之處在於 1 架構上,乙個 基於包的架構更偏實時,基於包,基於收到包,包。基於檔案的架構,邊寫檔案,邊output給...