日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux 内存管理与系统架构设计

發布時間:2023/11/30 linux 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux 内存管理与系统架构设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • Linux 提供各種模式(比如,消息隊列),但是最著名的是 POSIX 共享內存(shmem,shared memory)。
    • Linux provides a variety of schemes (such as message queues), but most notable is POSIX shared memory (shmem).

1. memory overcommit 與內存管理

理解Linux的memory overcommit

  • Linux 下的內存管理會影響 Linux 下的 C 代碼在內存分配(malloc)時的執行情況:
  • Memory Overcommit的意思是操作系統承諾給進程的內存大小超過了實際可用的內存。一個保守的操作系統不會允許memory overcommit,有多少就分配多少,再申請就沒有了,這其實有些浪費內存,因為進程實際使用到的內存往往比申請的內存要少,比如某個進程malloc()了200MB內存,但實際上只用到了100MB,按照UNIX/Linux的算法,物理內存頁的分配發生在使用的瞬間,而不是在申請的瞬間,也就是說未用到的100MB內存根本就沒有分配,這100MB內存就閑置了。
    • commit(或overcommit)針對的是內存申請,內存申請不等于內存分配,內存只在實際用到的時候才分配。
    • 也即有了 overcommit,內存的分配即是一種 lazy memory allocation;
    • 如果在使用過程中,真的超出可用的內存大小,Linux設計了一個OOM killer機制(OOM = out-of-memory)來處理這種危機:挑選一個進程出來殺死,以騰出部分內存,如果還不夠就繼續殺…也可通過設置內核參數 vm.panic_on_oom 使得發生OOM時自動重啟系統。
  • overcommit 參數配置:
    • Linux 2.6之后允許通過內核參數 vm.overcommit_memory 禁止memory overcommit(也可通過 /proc/sys/vm/overcommit_memory)。內核參數 vm.overcommit_memory 接受三種取值:
      • 0 – Heuristic overcommit handling. 這是缺省值,它允許overcommit,但過于明目張膽的overcommit會被拒絕,比如malloc一次性申請的內存大小就超過了系統總內存。Heuristic的意思是“試探式的”,內核利用某種算法(對該算法的詳細解釋請看文末)猜測你的內存申請是否合理,它認為不合理就會拒絕overcommit。
      • 1 – Always overcommit. 允許overcommit,對內存申請來者不拒。
      • 2 – Don’t overcommit. 禁止overcommit。

轉載于:https://www.cnblogs.com/mtcnn/p/9421469.html

總結

以上是生活随笔為你收集整理的Linux 内存管理与系统架构设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。