劇多
首頁
資訊
體育
娛樂
汽車
投資
財經
軍事
科技
數碼
科學
遊戲
歷史
健康
政治
影視
旅遊
育兒
美食
時尚
房產
農業
社會
文化
教育
技術
美文
情感
故事
家居
職場
自然
闢謠
心理
攝影
漫畫
生活
其它
Club
Tips
熱門話題
搜尋
註冊
登入
首頁
>
Club
>
2021-02-08 19:41
儲存讀取資料的緩衝區是什麼意思?
22
回覆列表
1 # 使用者7187350822507
一般開啟並讀取一個檔案,傳統方法就是兩個系統呼叫,對吧:
這裡 read 有一個 buf 緩衝區,這個是由你的應用程式控制的,在你的應用程式虛擬記憶體地址空間中,究竟是 堆,還是棧,這個看你宣告 buf 時候是怎麼做的。不過,核心中,也會有一個緩衝區,這個你的應用程式是看不見的,當你讀取時,核心會將資料放入自己的緩衝區,然後 copy 到使用者態你程式的緩衝區中。這個東西,在核心叫做 buffer cache,由IO 子系統管理,對於 Unix 系統來說,一般會預留最多 10% 作為 buffer cache 使用。如果你使用的是 mmap 方法,則會有:這一套過程與上面的 open/read 不同,是由核心分頁子系統管理的,說白了,就是用虛擬記憶體調頁的方式,將檔案直接 map 到程式的地址空間中,這個 map 也是靠核心實現的,這東西叫做 page cache,你也知道虛擬記憶體限制少很多,可以 map 直到佔用全部記憶體。傳統 read/write buffer cache 有個問題,就是一旦固定後,大小沒法調節,這樣分配多了就是浪費,分配少了就會造成很多的上下文切換做 copy 而且這個東西與分頁系統割裂。所以後來就出現了 Unified Buffer Cache,統一用 Page Cache 解決以上問題。所以你指的緩衝區,那是在核心裡的,不是棧,也不是堆,而是使用如 SLOB/SLAB/SLUB 分配器分配的 VMObjects
發表回復
相關內容
word無法讀取連線資料?
雲網盤儲存資料安全嗎?
倉庫管理資料儲存時間為多久?
∧
中秋節和大豐收的關聯?
∨
這個“穗”字讀做什麼是shui還是hui。多謝?
熱門排行
pubgwow模式是什麼?
等女孩子出門等了很久的文案?
張學友澳門演唱會坐多少人?
如何治白蟻?
洗臉盆溢水孔反味怎麼辦?
羊肉一週吃幾次?
光紀之約通行證一週可以全領嗎?
0.025乘以16等於多少怎麼驗算?
怎麼給小芭比做衣服和裙子?
服裝壓膠注意事項?
一般開啟並讀取一個檔案,傳統方法就是兩個系統呼叫,對吧:
這裡 read 有一個 buf 緩衝區,這個是由你的應用程式控制的,在你的應用程式虛擬記憶體地址空間中,究竟是 堆,還是棧,這個看你宣告 buf 時候是怎麼做的。不過,核心中,也會有一個緩衝區,這個你的應用程式是看不見的,當你讀取時,核心會將資料放入自己的緩衝區,然後 copy 到使用者態你程式的緩衝區中。這個東西,在核心叫做 buffer cache,由IO 子系統管理,對於 Unix 系統來說,一般會預留最多 10% 作為 buffer cache 使用。如果你使用的是 mmap 方法,則會有:這一套過程與上面的 open/read 不同,是由核心分頁子系統管理的,說白了,就是用虛擬記憶體調頁的方式,將檔案直接 map 到程式的地址空間中,這個 map 也是靠核心實現的,這東西叫做 page cache,你也知道虛擬記憶體限制少很多,可以 map 直到佔用全部記憶體。傳統 read/write buffer cache 有個問題,就是一旦固定後,大小沒法調節,這樣分配多了就是浪費,分配少了就會造成很多的上下文切換做 copy 而且這個東西與分頁系統割裂。所以後來就出現了 Unified Buffer Cache,統一用 Page Cache 解決以上問題。所以你指的緩衝區,那是在核心裡的,不是棧,也不是堆,而是使用如 SLOB/SLAB/SLUB 分配器分配的 VMObjects