linux內核源代碼學習(5)內存頁面的換入換出

  linux內核源代碼學習(5)內存頁面的換入換出

---flyli

 

      關於物理頁面的換入換出,其實其主要的目的也就是當物理內存不夠使用的時候,將不常用到的內存頁面交換到硬盤上,以保證程序能夠正常運行。

     

     在計算機理論裏面時間資源和空間資源是一對矛盾的論題,我們經常可以見到以時間換空間,或者以空間換時間的算法,其不可單獨評價那種更好,但是在相應的環境下,總有一種更適合我們。

 

     linux中頁面的交換就是一種典型的時間換空間的做法,當我們的內存不夠用的時候,我將不用的內存移到硬盤上,然後增加我們的內存可用空間確實是一種不錯的辦法,雖然由於硬盤的讀寫速度較慢(這就是爲什麼同空間的內存別硬盤貴那麼多的原因吧),但是慢點總比程序根本打不開要好的多,呵呵

 

    今天讀完了《linux內核源代碼情景分析》關於這個內容的一章,說實話,現在我的內存都是2G,運行linux的時候從來都是將虛擬內存關掉的,因爲我的內存使用量都很少超過1G。。。所以不大想對這一部分的內容進行深入分析,本想爲了保證博客的連續性到網上找篇文章參考下的,最後想想,參考別人的文章複製過來實在沒啥意思,還是自己寫吧,順便記錄下,呵呵。

 

    如同物理內存的管理一樣磁盤交換區的管理也有着相應的數據結構對其進行管理,這就是swap_info_struct,該結構包含了一個交換區域的位置,大小,使用情況等信息,在源代碼中其以數組的形式聲明,通過這個結構體,對所有交換區間進行管理,其具體管理方法還是和內存的管理有一定區別的,比如被多個使用者使用的時候,假如對其進行釋放,只會對其記錄使用者數目的個數進行操作,當使用者減少到0的時候纔會真正空閒,而內存的管理中,假如一個使用者對這段內存進行釋放的,而另外使用者還在只用這段內存的話,那結果就會出現程序員們最頭疼的問題“段錯誤”,也叫“內存溢出”。。。

 

    基本對內存交換的方法就說到這了,多的也沒啥說的了,今天到此爲止,可以睡覺嘍~~~

    今天在公司對一個新的可能的項目進行了評估,效果還不錯,感謝Wubq的幫助,還有zouj的幫助,不過做完的時候別個都下班走了。。。明天叫他們來看,可能的話要是我負責這個項目就好了,畢竟核心部分我已經做出來了嘛,呵呵,好好工作,多掙錢,早買房,不過理想還是要堅持的,呵呵       

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章