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

正文內(nèi)容

linux下的內(nèi)存管理一-資料下載頁

2025-07-21 16:55本頁面
  

【正文】 119 pg_table=(unsigned long*)(0xfffff000amp。*dir); //計算頁表起始地址。 120 for(nr=0; nr include include void main(){ int =100; childpid=fork(); if(childpid==0){ printf(I39。m child! /n); printf(My father have adata,it39。s%d! /n,data); exit(0); } printf(I39。m father! I have achild%d/n,childpid); exit(0); } 創(chuàng)建一個進程后,父進程和子進程使用同樣的代碼。但是他們中 childpid的值不同,如果是子進 程, childpid 的值是 0;如果是父進程, childpid 的值是子進程的進程號。在這以后,子進程可能會使用父 進程中的一些數(shù)據(jù)。如果子進程不調(diào)用另一個可執(zhí)行文件作為其執(zhí)行代碼,子進程將一直使用父進程的 代碼。 Six: 共享空間 有了 386 對頁面共享的支持,共享空間的方法就很容易想到了。將被共享的空間的頁目錄表和頁表復(fù) 制一份,并且將所有頁表項的訪問屬性設(shè)為只讀,并修改頁面映射表中的頁面引用信息即可。具體算法 如下: 算法: copy_page_tables 輸入:共享源頁面起始地址 from 共享目的 空間頁面起始地址 to 被共享空間的大小 size 輸出:如果成功,返回 0 { if(from 或者 to不是以 4M 為邊界 ) 顯示出錯信息,使調(diào)用對象進入死循環(huán); for(共享源空間的每一個頁目錄項 ){ if(對應(yīng)共享目的空間的頁表已經(jīng)存在 ) 顯示出錯信息,死循環(huán); if(共享源空間的頁目錄項不存在 ) continue; 為對應(yīng)共享目的空間分配空閑頁作為頁表; 設(shè)置該空閑頁屬性 (可寫、用戶、有效 ) if(共享源空間本次復(fù)制的是前 4M的內(nèi)核空間 ) 本次共享空間只是前 640K; for(每個要共享空間的頁表項 ){ 復(fù)制頁表項; if(對應(yīng)頁不存在 ) continue; if(被共享頁在主內(nèi)存塊映射表映射范圍內(nèi) ){ 將兩個頁表項都置為只讀; 對應(yīng)頁面映射項內(nèi)容加 1; } else 只將復(fù)制的頁表項置為只讀; } } 刷新頁變換高速緩沖; } 對于帶有頁表復(fù)制,和帶有頁表的釋放一樣,必須保證被共享的空間和被共享到的空間起始地址是 以 4M 為邊界的;每次共享 4M的空間,像以前一樣,對于內(nèi)核空間必須作特殊處理。 640K 到 1M 的空 間本來是高速緩沖塊的空間,但是被顯存和 BIOS 占用了,所以這部分空間是不共享的;因為 linus 當初 使用的計算機有 16M 的內(nèi)存,高速緩沖空間結(jié)束位置是 4M(見啟動后內(nèi)存分配 ),所以可能是由于這個 原因, 1M 到 3,071K 這個空間也是不共享的,對高速緩沖共享是沒有意義的,這樣內(nèi)核的前 4M空間就 只共享 640K。如果被共享頁不在主內(nèi)存塊映射表范圍內(nèi),共享的就是這640K 的空間,是內(nèi)核使用的, 在共享時,源頁表項不被置為只讀。 /mm/ 132 133 150 int copy_page_tables(unsigned long from,unsigned long to,long size) 151{ 152 unsigned long*from_page_table; 153 unsigned long*to_page_table; 154 unsigned long this_page; 155 unsigned long*from_dir,*to_dir; 156 unsigned long nr; 157 158 if((fromamp。0x3fffff)||(toamp。0x3fffff))//判斷是否以 4M 為邊界 159 panic(copy_page_tables called with wrong alignment); 160 from_dir=(unsigned long*)((from 20)amp。0xffc);計 //算起始頁目錄項 161 to_dir=(unsigned long*)((to 20)amp。0xffc); 162 size=((unsigned)(size+0x3fffff))22; //計算要共享的頁表數(shù) 163 for(; size0; from_dir++,to_dir++){ 164 if(1amp。*to_dir)//被共享到的頁表已經(jīng)存在 165 panic(copy_page_tables: already exist); 166 if(! (1amp。*from_dir))//被共享的頁表不存在 167 continue; 168 from_page_table=(unsigned long*)(0xfffff000amp。*from_dir); //取源頁表地址 169 if(! (to_page_table=(unsigned long*)get_free_page())) 170 return1; 171*to_dir=((unsigned long)to_page_table)|7; //設(shè)置該頁屬性 (可寫、用戶、有效 ) 172 nr=(from==0)?0xA0: 1024; //如果是前 4M 空間,只共享 640K(160 頁 ) 173 for(; nr0; from_page_table++,to_page_table++){ 174 this_page=*from_page_table; 175 if(! (1amp。this_page))//如果當前源頁表項沒有使用,則不用復(fù)制 176 continue; 177 this_pageamp。=~2; //將目的頁表項設(shè)為只讀 178*to_page_table=this_page; 179 if(this_page LOW_MEM){//如果被共享頁在主內(nèi)存塊映射表映射范圍內(nèi) 180*from_page_table=this_page; //源頁表項設(shè)為只讀 181 this_page=LOW_MEM; 182 this_page=12; 183 mem_map[this_page]++; //共享數(shù)加一 184} 185} 186} 187 invalidate(); //刷新頁變換高速緩沖。 188 return 0; 189} 190 MSN 空間完美搬家到新浪博客! 特別聲明: 1:資料來源于互聯(lián)網(wǎng),版權(quán)歸屬原作者 2:資料內(nèi)容屬于網(wǎng)絡(luò)意見,與本賬號立場無關(guān) 3:如有侵權(quán),請告知,立即刪除。
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1