freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

ucosii原理ppt課件-資料下載頁

2025-01-14 04:42本頁面
  

【正文】 為置“ 0”操作)。 第 6章 內(nèi)存的 動(dòng)態(tài)分配 應(yīng)用程序在運(yùn)行中為了某種特殊需要 , 經(jīng)常需要臨時(shí)獲得一些內(nèi)存空間 , 因此作為一個(gè)比較完善的操作系統(tǒng)必須具有動(dòng)態(tài)分配內(nèi)存的能力 。 能否合理、有效地對內(nèi)存儲器進(jìn)行分配和管理,是衡量一個(gè)操作系統(tǒng)品質(zhì)的指標(biāo)之一。特別地對于實(shí)時(shí)操作系統(tǒng)來說,還應(yīng)該保證系統(tǒng)在動(dòng)態(tài)分配內(nèi)存時(shí),它的執(zhí)行時(shí)間必須是可確定的。 μC/OSII改進(jìn)了 ANSI C用來動(dòng)態(tài)分配和釋放內(nèi)存的 malloc( )和 free( )函數(shù),使它們可以對大小固定的內(nèi)存塊進(jìn)行操作,從而使 malloc( )和 free( )函數(shù)的執(zhí)行時(shí)間成為可確定的,滿足了實(shí)時(shí)操作系統(tǒng)的要求。 內(nèi)存控制塊 μC/OSII對內(nèi)存進(jìn)行兩級管理 , 即把一個(gè)大片連續(xù)的內(nèi)存空間分成了若干個(gè)分區(qū) , 每個(gè)分區(qū)又分成了若干個(gè)大小相等的內(nèi)存塊來進(jìn)行管理 。 操作系統(tǒng)以分區(qū)為單位來管理動(dòng)態(tài)內(nèi)存 , 而任務(wù)以內(nèi)存塊為單位來獲得和釋放動(dòng)態(tài)內(nèi)存 。 內(nèi)存分區(qū)及內(nèi)存塊的使用情況則由表 —— 內(nèi)存控制塊 來記錄 。 本節(jié)首先介紹內(nèi)存分區(qū)和分區(qū)中的內(nèi)存塊,然后再介紹內(nèi)存控制塊。 可動(dòng)態(tài)分配內(nèi)存的劃分 應(yīng)用程序如果要使用動(dòng)態(tài)內(nèi)存的話 , 則要首先在內(nèi)存中劃分出可以進(jìn)行動(dòng)態(tài)分配的區(qū)域 , 這個(gè)劃分出來區(qū)域叫做內(nèi)存分區(qū) , 每個(gè)分區(qū)要包含若干個(gè)內(nèi)存塊 。 μC/OSII要求同一個(gè)分區(qū)中的內(nèi)存塊的字節(jié)數(shù)必須相等 , 而且每個(gè)分區(qū)與該分區(qū)的內(nèi)存塊的數(shù)據(jù)類型必須相同 。 在內(nèi)存中劃分一個(gè)內(nèi)存分區(qū)與內(nèi)存塊的方法非常簡單,只要定義一個(gè)二維數(shù)組就可以了,其中的每個(gè)一維數(shù)組就是一個(gè)內(nèi)存塊。例如,定義一個(gè)用來存儲 INT16U類型數(shù)據(jù),有 10個(gè)內(nèi)存塊,每個(gè)內(nèi)存塊長度為 10的內(nèi)存分區(qū)的代碼如下: INT16U IntMemBuf[10][10]。 需要注意的是,上面這個(gè)定義只是在內(nèi)存中劃分出了分區(qū)及內(nèi)存塊的區(qū)域,還不是一個(gè)真正的可以動(dòng)態(tài)分配的內(nèi)存區(qū),如圖 61(a)所示。只有當(dāng)把內(nèi)存控制塊與分區(qū)關(guān)聯(lián)起來之后,系統(tǒng)才能對其進(jìn)行相應(yīng)的管理和控制,它才能是一個(gè)真正的動(dòng)態(tài)內(nèi)存區(qū) 為了使系統(tǒng)能夠感知和有效地管理內(nèi)存分區(qū) , μC/OSII給每個(gè)內(nèi)存分區(qū)定義了一個(gè)叫做內(nèi)存控制塊 ( OS_MEM) 的數(shù)據(jù)結(jié)構(gòu) 。 系統(tǒng)就用這個(gè)內(nèi)存控制塊來記錄和跟蹤每一個(gè)內(nèi)存分區(qū)的狀態(tài) 。 內(nèi)存控制塊的結(jié)構(gòu)如下: typedef struct { void *OSMemAddr。 //內(nèi)存分區(qū)的指針 void *OSMemFreeList。 //內(nèi)存控制塊鏈表的指針 INT32U OSMemBlkSize。 //內(nèi)存塊的長度 INT32U OSMemNBlks。 //分區(qū)內(nèi)內(nèi)存塊的數(shù)目 INT32U OSMemNFree。 //分區(qū)內(nèi)當(dāng)前可分配的內(nèi)存塊的數(shù)目 } OS_MEM。 當(dāng)應(yīng)用程序調(diào)用函數(shù) OSMemCreate( )建立了一個(gè)內(nèi)存分區(qū)之后,內(nèi)存控制塊與內(nèi)存分區(qū)和內(nèi)存塊之間的關(guān)系如圖 動(dòng)態(tài)內(nèi)存的管理 劃分了欲使用的分區(qū)和內(nèi)存塊之后 , 應(yīng)用程序可以通過調(diào) 用 函 數(shù) OSMemCreate( ) 來 建 立 一 個(gè) 內(nèi) 存 分 區(qū) , OSMemCreate( ) 函數(shù)的原型為: OS_MEM *OSMemCreate( void*addr, //內(nèi)存分區(qū)的起始地址 INT32U nblks, //分區(qū)中內(nèi)存塊的數(shù)目 INT32U blksize, //每個(gè)內(nèi)存塊的字節(jié)數(shù) INT8U *err //錯(cuò)誤信息 )。 在應(yīng)用程序需要一個(gè)內(nèi)存塊時(shí) , 應(yīng)用程序可以通過調(diào)用函數(shù) OSMemGet( ) 向某內(nèi)存分區(qū)請求獲得一個(gè)內(nèi)存塊 ,OSMemGet( )函數(shù)的原型為: void *OSMemGet ( OS_MEM *pmem, //內(nèi)存分區(qū)的指針 INT8U *err //錯(cuò)誤信息 ); 當(dāng)應(yīng)用程序不再使用一個(gè)內(nèi)存塊時(shí) , 必須要及時(shí)地將它釋放 。 應(yīng)用程序通過調(diào)用函數(shù) OSMemPut( )來釋放一個(gè)內(nèi)存塊 , OSMemPut( )函數(shù)的原型為: INT8U OSMemPut ( OS_MEM *pmem, //內(nèi)存塊所屬內(nèi)存分區(qū)的指針 void *pblk //待釋放內(nèi)存塊的指針 ); 應(yīng)用程序可以通過調(diào)用函數(shù) OSMemQuery( )來查詢一個(gè)分區(qū)目前的狀態(tài)信息 , 函數(shù)函數(shù) OSMemQuery( )的原型為: INT8U OSMemQuery ( OS_MEM *pmem, //待查詢的內(nèi)存控制塊的指針 OS_MEM_DATA *pdata//存放分區(qū)狀態(tài)信息的結(jié)構(gòu)的指針 ) 其中參數(shù) pdata是一個(gè) OS_MEM_DATA類型的結(jié)構(gòu) , 該結(jié)構(gòu)的定義如下: typedef struct { void *OSAddr。 //內(nèi)存分區(qū)的指針 void *OSFreeList。 //分區(qū)內(nèi)內(nèi)存塊鏈表的頭指針 INT32U OSBlkSize。 //內(nèi)存塊的長度 INT32U OSNBlks。 //分區(qū)內(nèi)內(nèi)存塊的數(shù)目 INT32U OSNFree。 //分區(qū)內(nèi)空閑內(nèi)存塊的數(shù)目 INT32U OSNUsed。 //已被分配的內(nèi)存塊數(shù)目 } OS_MEM_DATA。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1