国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務器 > Web服務器 > 正文

詳解Linux系統中的tempfs與/dev/shm

2024-09-01 13:50:43
字體:
來源:轉載
供稿:網友

tmpfs 是 Linux/Unix 系統上的一種基于內存的文件系統,即 tmpfs 使用內存或 swap 分區來存儲文件。

Linux 內核中的 VM 子系統負責在后臺管理虛擬內存資源 Virtual Memory,即 RAM 和 swap 資源,透明地將 RAM 頁移動到交換分區或從交換分區到 RAM 頁,tmpfs 文件系統需要 VM 子系統的頁面來存儲文件。tmpfs 自己并不知道這些頁面是在交換分區還是在 RAM 中;做這種決定是 VM 子系統的工作。tmpfs 文件系統所知道的就是它正在使用某種形式的虛擬內存。

由于 tmpfs 是基于內存的,因此速度是相當快的。另外 tmpfs 使用的 VM 資源是動態的,當刪除 tmpfs 中文件,tmpfs 文件系統驅動程序會動態地減小文件系統并釋放 VM 資源,當然在其中創建文件時也會動態的分配VM資源。另外,tmpfs 不具備持久性,重啟后數據不保留。

/dev/shm 就是一個基于 tmpfs 的設備,在有些 Linux 發行版中 /dev/shm 是 /run/shm/ 目錄的一個軟鏈接。實際上在很多系統上的 /run 是被掛載為 tmpsf 的。用 df -T 可以查看系統中的磁盤掛載情況:

文件系統  1K-塊 已用 可用 已用% 掛載點udev  1859684 4 1859680 1% /devtmpfs  374096 1524 372572 1% /run/dev/sda8 76561456 36029540 36619724 50% /none   4 0 4 0% /sys/fs/cgroupnone  5120 0 5120 0% /run/locknone  1870460 27688 1842772 2% /run/shmnone  102400 56 102344 1% /run/user

那么,我們就先來說說 /run 目錄。現在我們知道,該目錄是基于內存的,實際上它的前身是 /var/run 目錄,后來被 /run 替換。這是因為 /var/run 文件系統并不是在系統一啟動就是就緒的,而在此之前已經啟動的進程就先將自己的運行信息存放在 /dev 中,/dev 同樣是一種 tmpfs,而且是在系統一啟動就可用的。但是 /dev 設計的本意是為了存放設備文件的,而不是為了保存進程運行時信息的,所以為了不引起混淆,/dev 中存放進程信息的文件都以 "." 開始命名,也就是都是隱藏文件夾。但是即便是這樣,隨著文件夾的數量越來越多,/dev 里面也就越來越混亂,于是就引入了替代方案,也就是 /run。實際上在很多系統上 /var/run 目錄仍然存在,但其是 /run 目錄的一個軟鏈接。

/var/run 目錄中主要存放的是自系統啟動以來描述系統信息的文件。比較常見的用途是 daemon 進程將自己的 pid 保存到這個目錄。

/dev/shm/ 是 Linux 下一個非常有用的目錄,它的意思是 Shared memory,也就是共享內存。由于它在內存上,所以所有系統進程都能共享該目錄。默認情況下它的大小是內存的一半。如果希望改變它的大小,可以用 mount 來管理:

mount -o size=4000M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm

如果希望永久生效,可以修改 /etc/fstab 文件:

tmpfs /dev/shm tmpfs defaults,size=4G 0 0

利用 /dev/shm 可以做很多事情,這里說一個 Python 的應用。用 Python 做數據處理時,可能會用到 numpy,通常做數據處理時的數據量都是很大的,如果有多個進程都需要用到同樣的數據,那么 /dev/shm 就派上了用場,也就是用共享內存技術。Python 有一個第三方庫可以用來在多個進程間共享 numpy 數組,即 SharedArray。SharedArray 便是基于 /dev/shm 的,并且采用 POSIX 標準,能夠兼容多個平臺。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 松滋市| 高雄县| 黄陵县| 乐山市| 新化县| 永川市| 武隆县| 巧家县| 富川| 渭源县| 锡林郭勒盟| 德兴市| 莒南县| 盈江县| 眉山市| 鄄城县| 兴化市| 巢湖市| 新化县| 海原县| 冀州市| 本溪市| 法库县| 宣武区| 富民县| 涿鹿县| 灵山县| 浦北县| 富蕴县| 寿光市| 庆阳市| 托克托县| 镇赉县| 长宁区| 平陆县| 柳州市| 乐陵市| 德阳市| 潼关县| 敦煌市| 虎林市|