程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 8-2-伙伴系統-動態存儲管理-第8章-《數據結構》課本源碼-嚴蔚敏吳偉民版,8-2-《數據結構》

8-2-伙伴系統-動態存儲管理-第8章-《數據結構》課本源碼-嚴蔚敏吳偉民版,8-2-《數據結構》

編輯:關於C語言

8-2-伙伴系統-動態存儲管理-第8章-《數據結構》課本源碼-嚴蔚敏吳偉民版,8-2-《數據結構》


課本源碼部分

第8章  伙伴系統 - 邊界標識法

——《數據結構》-嚴蔚敏.吳偉民版

       源碼使用說明  鏈接☛☛☛ 《數據結構-C語言版》(嚴蔚敏,吳偉民版)課本源碼+習題集解析使用說明

       課本源碼合輯  鏈接☛☛☛ 《數據結構》課本源碼合輯

       習題集全解析  鏈接☛☛☛ 《數據結構題集》習題解析合輯

 

       本源碼引入的文件  鏈接☛ Status.h

       相關測試數據下載  鏈接☛ 數據包

 

      文檔中源碼及測試數據存放目錄:數據結構\▲課本算法實現\▲08 動態存儲管理\02 BuddySystem

 

概述

       Linux內核內存管理的一項重要工作就是如何在頻繁申請釋放內存的情況下,避免碎片的產生。Linux采用伙伴系統解決外部碎片的問題,采用slab解決內部碎片的問題,在這裡我們討論外部碎片問題。

解析

       避免外部碎片的方法有兩種:一種是利用非連續內存的分配;另外一種則是用一種有效的方法來監視內存,保證在內核只要申請一小塊內存的情況下,不會從大塊的連續空閒內存中截取一段過來,從而保證了大塊內存的連續性和完整性。顯然,前者不能成為解決問題的普遍方法,一來用來映射非連續內存線性地址空間有限,二來每次映射都要改寫內核的頁表,進而就要刷新TLB,這使得分配的速度大打折扣,這對於要頻繁申請內存的內核顯然是無法忍受的。因此Linux采用後者來解決外部碎片的問題,也就是著名的伙伴系統。

       伙伴系統的宗旨就是用最小的內存塊來滿足內核的對於內存的請求。 

源碼

       文件一 ☛  BuddySystem.h 

 

       文件二 ☛  BuddySystem.c 

       文件三 ☛  BuddySystem-main.c (測試文檔)

測試結果展示

 

       更多章節持續更新中...微笑

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved