您好,登錄后才能下訂單哦!
這篇文章主要介紹“linux和windows的內存有哪些區別”,在日常操作中,相信很多人在linux和windows的內存有哪些區別問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”linux和windows的內存有哪些區別”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
linux內存和windows內存的區別:1、linux優先使用物理內存,內存不夠時才放在交換分區上,而windows則是內存和虛擬內存一起使用;2、windows總會給內存留下一定的空閑空間,啟動新的程序比較快,而linux內存常處于全部被使用的狀態,需要先清理出一塊內存再分配給新的程序,啟動新程序比較慢。
Linux 優先使用物理內存,當物理內存還有空閑時,linux是不會釋放內存的,即時占用內存的程序已經被關閉了(這部分內存就用來做緩存了)。也就是說,即時你 有很大的內存,用過一段時間后,也會被占滿。這樣做的好處是,啟動那些剛開啟過的程序、或是讀取剛存取過得數據會比較快,對于服務器很有好處。
區別
windows則總是給內存留下一定的空閑空間,即時內存有空閑也會讓程序使用一些虛擬內存,這樣做的好處是,啟動新的程序比較快,直接分給它些空閑 內存就可以了,
而linux下呢?由于內存經常處于全部被使用的狀態,則要先清理出一塊內存,再分配給新的程序使用,因此,新程序的啟動會慢一些。
linux內核基本是先把數據都放在內存上的,內存不夠才放到交換分區(虛擬內存)上,細節是,只有頻繁使用的數據才會放到內存上,不頻繁操作的數據會漸漸放到交換分區上,適當時寫回硬盤里。
而windows的處理方式是?內存和虛擬內存一起使用,不是以內存操作為主,這樣的結果是IO的負擔比較大,有時會拖慢處理速度。linux的哲學是,盡可能使用內存,因為內存的速度比硬盤速度快100多倍。
擴展知識
Linux把物理內存劃分為三個層次來管理
系統的物理內存被劃分成幾個節點(node),一個node對應一個內存簇bank,即每個內存簇被認為是一個節點。(可以使用NODE_DATA(node_id)來查找系統中編號為node_id的節點)
內存被劃分成節點,每個節點關聯到系統的一個處理器,內核中用pg_data_t來實例,系統中每個節點被鏈接到一個以NULL為結尾的pgdat_list鏈表中,其中每個節點使用pg_data_tnode_next字段鏈接到下一個節點。對于UMA結構,只使用contig_page_data的靜態pg_data結構,此時NODE_DATA直接指向全局的contig_page_data.
節點被劃分成內存管理區。一個內存管理區使用struct zone_struct描述,zone_t,用以表示內存的某個范圍,低端范圍的16MB被描述為ZONE_DMA,然后是可直接映射到內核的普通內存域ZONE_NORMAL,最后是超出內核段的物理地址域ZONE_HIGHMEM(0xF8000000~0xFFFFFFFF),高端內存,是系統中預留的可用內存空間,不能被內核直接映射。(為了兼容熱插拔以及內存碎片化的處理,內核引入一些邏輯上的內存區:
1、內核定義一個偽內存區ZONE_MOVEABLE,在防止物理內存碎片的機制mmeory mirgation中需要使用該內存區域以供內存碎片的極致使用
2、ZONE_DEVICE:為支持熱插拔設備而分配的Non Volatile Memory,非易失性內存)。
頁幀(page frame):代表內存的最小單元,堆內存中每個頁都會創建一個struct page的實例。傳統上,把內存視為連續的字節,即內存為字節數組,內存單元的編號(地址)可作為字節數組的索引。分頁管理時,將若干字節試為一頁,比如4K byte,此時內存變成連續頁,即內存為頁數組,每一頁物理內存為頁幀,以頁為單位對內存進行編號,該編號可作為頁數組的索引,稱為頁幀號。 (頁的數據結構對象都保存在mem_map全局數組中,該數組通常被存放在ZONE_NORMAL的首部,或者就在小內存系統中裝入內核映像而預留的區域之后,在載入內核的低地址至內存區域的后面內存區域,也就是ZONE_NORMAL開始的地方的內存的頁的數據結構的對象,都保存在這個全局數組中)。
分頁單元可以實現把線性地址轉換成物理地址,線性地址被劃分成固定長度大小的組,稱為頁,頁內部的線性地址被映射到連續的物理地址。這樣內核可以指定一個頁的物理地址和其存儲權限,而不用指定頁的全部線性地址的存儲權限。
分頁單元把所有RAM分成固定長度的頁幀(也叫頁框,page frame),每一個頁幀包含一個頁,也就是說頁幀和頁的長度是一樣的。頁框屬于內存的一部分,因此也是一個存儲區域。 ----mm_types.h struct page結構體中的mapping,不只保存一個指針,還保存一些額外的信息,用于判斷頁是否屬于未關聯地址空間的某個匿名內存區。 通過mapping恢復anon_vma的方法:anon_vma=(struct anon_vma *)(mapping-PAGE_MAPPING_ANON)。
到此,關于“linux和windows的內存有哪些區別”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。