《程序員的自我修養》讀書筆記

                                        《程序員的自我修養》讀書筆記程序員

進程的整體目的是但願每一個進程從邏輯上都是能夠獨佔計算機的資源,操做系統所支持的多任務功能保證了各個進程能夠很好地共享CPU資源,而操做系統的IO抽象模型實現了設備的共享,全部剩下的惟一問題就是內存的分配問題。在咱們編寫小程序的時候就已經體驗過程序所申請的內存空間過大致使程序崩潰甚至電腦死機這樣的問題,好比在使用高維數組時,當維數太高而且每一維長度過大時就會致使程序崩潰。在早期的計算機中,程序是直接運行在物理內存上的,也就是說程序在運行時訪問的地址都是物理地址,而面臨多道程序,分時系統和多任務是,CPU的利用率會比較高,很明顯的一個問題就是如何將有限的物理地址分配給多個程序使用。小程序

直接分配有不少問題,若是地址空間不隔離的話,一些程序可能會篡改其餘程序的內存,就會使其餘的程序也發生崩潰,這對於須要安全穩定的計算環境的用戶來講是不能容忍的,咱們但願在使用的時候,若是某一個程序發生了崩潰,不要影響其餘任務。並且這樣會致使內存的使用效率很低,因爲沒有內存管理機制,監控程序就將整個程序裝入內存中而後執行,這樣是十分浪費的。並且在程序的編寫時,內存的空閒區域是不固定的,而程序有不少地址跳轉是固定的,這就產生了矛盾。數組

解決這些問題有不少方法,其中比較有效的就是設置中間層,也就是使用間接地址訪問的方法,經過某種對應關係,把程序給出的地址看做是虛擬地址,而後咱們只須要管理這寫虛擬地址和物理地址的對應過程就能夠實現有效的管理內存了。安全

相關文章
相關標籤/搜索