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

正文內(nèi)容

操作系統(tǒng)課程設(shè)計(jì)緩沖區(qū)管理-資料下載頁(yè)

2025-11-07 16:18本頁(yè)面

【導(dǎo)讀】高速緩沖區(qū)是文件系統(tǒng)訪問(wèn)塊設(shè)備中數(shù)據(jù)的必經(jīng)要道。但是每次I/O操作的時(shí)間與內(nèi)存和CPU的處理速度相比是非常慢的。使用和管理,以期減少訪問(wèn)塊設(shè)備的次數(shù)。沖中存放著最近被使用過(guò)的各個(gè)塊設(shè)備中的數(shù)據(jù)塊。如果相應(yīng)數(shù)據(jù)已經(jīng)。在緩沖中,就無(wú)需再?gòu)膲K設(shè)備上讀。Linux內(nèi)核實(shí)現(xiàn)高速緩沖區(qū)的程序是。于內(nèi)核代碼塊和主內(nèi)存區(qū)之間。之間起著橋梁作用,用于緩沖讀寫塊設(shè)備時(shí)的數(shù)據(jù)。高速緩沖區(qū)被劃分為兩部分:低端為緩。沖頭,高端為緩沖塊。緩沖塊具有固定的長(zhǎng)度1024字節(jié),用來(lái)緩存從塊設(shè)。性和把所有緩沖頭連接成鏈表。一對(duì)應(yīng),其個(gè)數(shù)保存在NR_BUFFERS中。該函數(shù)主要用于對(duì)全局變量進(jìn)行引用賦值,并且計(jì)算每個(gè)被。用hash表和空閑緩沖塊隊(duì)列進(jìn)行操作管理。b_next用于hash表中散列在同一項(xiàng)上多個(gè)緩沖塊之間的雙向鏈接。向等待該緩沖區(qū)解鎖的任務(wù)。類型的請(qǐng)求處理函數(shù)向塊設(shè)備控制器寫入控制指令。該情況存在于,但是從,統(tǒng)一了這兩種緩存,現(xiàn)在Linux只有惟一的磁盤緩存—頁(yè)高速緩存。

  

【正文】 \ 286 movsl\n\t \ 287 ::c (BLOCK_SIZE/4),S (from),D (to) \ 288 :cx,di,si) //* bread_page 一次讀四個(gè)緩 沖塊內(nèi)容讀到內(nèi)存指定的地址。它是一個(gè)完整的函數(shù), * 因?yàn)橥瑫r(shí)讀取四塊可以獲得速度上的好處,不用等著讀一塊,再讀一塊了。 */ //// 讀設(shè)備上一個(gè)頁(yè)面( 4 個(gè)緩沖塊)的內(nèi)容到內(nèi)存指定的地址。 296 void bread_page(unsigned long address,int dev,int b[4]) 297 { 298 struct buffer_head * bh[4]。 299 int i。 300 // 循環(huán)執(zhí)行 4 次,讀一頁(yè)內(nèi)容。 301 for (i=0 。 i4 。 i++) 302 if (b[i]) { // 取高速緩沖中指定設(shè)備和塊號(hào)的緩沖區(qū),如果該緩沖區(qū)數(shù)據(jù)無(wú)效則產(chǎn)生讀設(shè)備請(qǐng)求。 303 if (bh[i] = getblk(dev,b[i])) 304 if (!bh[i]b_uptodate) 305 ll_rw_block(READ,bh[i])。 306 } else 307 bh[i] = NULL。 // 將 4 塊緩沖區(qū)上的內(nèi)容順序復(fù)制到指定地址處。 308 for (i=0 。 i4 。 i++,address += BLOCK_SIZE) 309 if (bh[i]) { 310 wait_on_buffer(bh[i])。 // 等待緩沖區(qū)解鎖 (如果已被上鎖的話 )。 311 if (bh[i]b_uptodate) // 如果該緩沖區(qū)中數(shù)據(jù)有效的話,則復(fù)制。 312 COPYBLK((unsigned long) bh[i]b_data,address)。 313 brelse(bh[i])。 // 釋放該緩沖區(qū)。 314 } 315 } //* breada 可以象 bread 一樣使用,但會(huì)另外預(yù)讀一些塊。該函數(shù)參數(shù)列表 * 需要使用一個(gè)負(fù)數(shù) 來(lái)表明參數(shù)列表的結(jié)束。 */ //// 從指定設(shè)備讀取指定的一些塊。 // 成功時(shí)返回第 1 塊的緩沖區(qū)頭指針,否則返回 NULL。 322 struct buffer_head * breada(int dev,int first, ...) 323 { 324 va_list args。 325 struct buffer_head * bh, *tmp。 326 // 取可變參數(shù)表中第 1 個(gè)參數(shù)(塊號(hào))。 327 va_start(args,first)。 // 取高速緩沖中指定設(shè)備和塊號(hào)的緩沖區(qū)。如果該 緩沖區(qū)數(shù)據(jù)無(wú)效,則發(fā)出讀設(shè)備數(shù)據(jù)塊請(qǐng)求。 328 if (!(bh=getblk(dev,first))) 18 329 panic(bread: getblk returned NULL\n)。 330 if (!bhb_uptodate) 331 ll_rw_block(READ,bh)。 // 然后順序取可變參數(shù)表中其它預(yù)讀塊號(hào),并作與上面同樣處理,但不引用。注意,336 行上有一個(gè) bug。 其中的 bh 應(yīng)該是 tmp。這個(gè) bug 直到在 版的內(nèi)核代碼中才被糾正過(guò)來(lái)。 332 while ((first=va_arg(args,int))=0) { 333 tmp=getblk(dev,first)。 334 if (tmp) { 335 if (!tmpb_uptodate) 336 ll_rw_block(READA,bh)。 337 tmpb_count。 338 } 339 } // 可變參數(shù)表中所有參數(shù)處理完畢。等待第 1 個(gè)緩沖區(qū)解鎖(如果已被上鎖)。 340 va_end(args)。 341 wait_on_buffer(bh)。 // 如果緩沖區(qū)中數(shù)據(jù)有效,則返回緩 沖區(qū)頭指針,退出。否則釋放該緩沖區(qū),返回 NULL,退出。 342 if (bhb_uptodate) 343 return bh。 344 brelse(bh)。 345 return (NULL)。 346 } 347 //// 緩沖區(qū)初始化函數(shù)。 // 參數(shù) buffer_end 是指定的緩沖區(qū)內(nèi)存的末端。對(duì)于系統(tǒng)有 16MB 內(nèi)存,則緩沖區(qū)末端設(shè)置為 4MB。 // 對(duì)于系統(tǒng)有 8MB 內(nèi)存,緩沖區(qū)末端設(shè)置為 2MB。 348 void buffer_init(long buffer_end) 349 { 350 struct buffer_head * h = start_buffer。 351 void * b。 352 int i。 353 // 如果緩沖區(qū)高端等于 1Mb,則由于從 640KB1MB 被顯示內(nèi)存和 BIOS 占用,因此實(shí)際可用緩沖區(qū)內(nèi)存 // 高端應(yīng)該是 640KB。否則內(nèi)存高端一定大于 1MB。 354 if (buffer_end == 120) 355 b = (void *) (640*1024)。 356 else 357 b = (void *) buffer_end。 // 這段代碼用于初始化緩沖區(qū),建立空閑緩沖區(qū)環(huán)鏈表,并獲取系統(tǒng)中緩沖塊的數(shù)目。 // 操作的過(guò)程是從緩沖區(qū)高端開(kāi)始劃分 1K 大小的緩沖塊,與此同時(shí)在緩沖區(qū)低端建立描述該緩沖塊 // 的結(jié)構(gòu) buffer_head,并將這些 buffer_head 組成雙向鏈表。 // h 是指向緩沖頭結(jié)構(gòu)的指針,而 h+1 是指向內(nèi)存地址連續(xù)的下一個(gè)緩沖頭地址,也可以說(shuō)是指向 h // 緩沖頭的末端外。為了保證有足夠長(zhǎng)度的內(nèi)存來(lái)存儲(chǔ)一個(gè)緩沖頭結(jié)構(gòu),需要 b 所指 19 向的內(nèi)存塊 // 地址 = h 緩沖頭的末端,也即要 =h+1。 五、分析 體會(huì) 本次操作系統(tǒng)課程設(shè)計(jì)的題目 是 分析 LINUX 文件系統(tǒng)下 的高速緩沖區(qū)源代碼 , 利用所學(xué)操作系統(tǒng) 的理論知識(shí)進(jìn)行 有關(guān)函數(shù)分析理解,從實(shí)際代碼 分析 環(huán)境中 鍛煉了我們 分析、解決問(wèn)題的能力, 以及 理論聯(lián)系實(shí)際、綜合應(yīng)用的能力。 還有 我們發(fā)揮自主學(xué)習(xí)的能力,學(xué)會(huì)充分利用時(shí)間,安排好課設(shè)的時(shí)間計(jì)劃。 在一 周的時(shí)間中,通過(guò)自己發(fā)現(xiàn)問(wèn)題解決問(wèn)題, 理解分析 了很多 函數(shù)的功能。遇到不明白的地方 ,不應(yīng)該太急,應(yīng)該冷靜的思考,細(xì)致的分析,這樣才更加有利于解決問(wèn)題 對(duì) C語(yǔ)言的學(xué)習(xí), 如果說(shuō)只在于表面上的函數(shù)或語(yǔ)法的學(xué)習(xí),那永遠(yuǎn)也達(dá)不到像學(xué)習(xí) LINUX 這樣有實(shí)際的功能操作的復(fù)雜程度不論是從程序結(jié)構(gòu),還是從算法,都是對(duì)數(shù)據(jù)最有效最快速的操作,其中的數(shù)據(jù)塊刪除和替代算法得使整個(gè)系統(tǒng)更省空間,在數(shù)據(jù)塊的命中率始終保持在相對(duì)較高的狀態(tài),也就提高了 CPU對(duì)數(shù)據(jù)的讀寫速率。 使用到哈希表的搜索算法使得查找數(shù)據(jù)更快,特別是在緩沖區(qū)中,結(jié)合了這一算法數(shù)據(jù)不再雜亂無(wú)序。整個(gè)管理過(guò)程顯得十分規(guī)范清晰。 由此,我深刻的認(rèn)識(shí)到,讀代碼,理解代碼,還要更結(jié)合實(shí)際算法,結(jié)合具體功能選用最合適的數(shù)據(jù)結(jié)構(gòu),這樣才能大大提高算法的效率,更科學(xué) 更準(zhǔn)確 的實(shí)現(xiàn)其功能。 在分析代碼的過(guò)程中, 盡量使用圖表分析,可以更直觀的理清思路,一般多使用流程圖, 程序的結(jié)構(gòu)便可以快而清晰的展現(xiàn)出來(lái),再?gòu)?fù)雜的程序,也可以相對(duì)簡(jiǎn)易的做出修改,或是改進(jìn)設(shè)計(jì),邏輯錯(cuò)誤可以大量減少。 相對(duì)來(lái)說(shuō),充分 使用網(wǎng)絡(luò)資源 是 最快的學(xué)習(xí)方法。 對(duì)于自己不理解的函數(shù),通過(guò)查閱一些相關(guān)工具,如可以下載到的 C 語(yǔ)言查詢工具,或是 MSDN 等都 可以進(jìn)行查詢 ,這樣可以更省時(shí)省效。 這一 周 的努力,無(wú)論從自學(xué)能力上還是從學(xué)習(xí)熱情角度,我自認(rèn)都提高的非常迅速,發(fā)現(xiàn)解決問(wèn)題要不斷換角度思考,認(rèn)識(shí)了自身的堅(jiān)強(qiáng)與韌力,總結(jié)出只有在持之以恒與周密思考中才會(huì)有意想 不到的收獲和進(jìn)步,今后做任何事情都必須更加耐心,細(xì)致。 總的來(lái)說(shuō),這次課程設(shè)計(jì)為我們提供了與眾不同的自學(xué)方法和學(xué)習(xí)機(jī)會(huì),讓我從傳統(tǒng)的理論學(xué)習(xí)轉(zhuǎn)變?yōu)橹鲃?dòng)在實(shí)踐中自學(xué); 20 從死記硬背的模式中脫離出來(lái),轉(zhuǎn)變?yōu)?在自主動(dòng)手中學(xué)習(xí),增強(qiáng)了領(lǐng)悟、創(chuàng)新和推斷的能力。掌握自學(xué)的方法, 思考方式進(jìn)一步成熟,邏輯性更進(jìn)一步規(guī)范、明確。這些方法的提高是終身受益的,我認(rèn)為這是難得的一周,讓我真正懂得了自學(xué)和實(shí)踐的益處。 另外, 十分感謝教導(dǎo)我的 熊海泉老師 的指導(dǎo)。 六、自我評(píng)價(jià) 本周的操作系統(tǒng)課程設(shè)計(jì),自我感覺(jué)頗有 收獲,在不斷改進(jìn)學(xué)習(xí)的方法基礎(chǔ)上,理解新知識(shí)的能力更強(qiáng)了,學(xué)習(xí)熱情提高得很快,除了對(duì)源代碼的理解,思考問(wèn)題更 深入 些, 還 能通過(guò)類比的方法自行設(shè)計(jì)相似的程序結(jié)構(gòu),并結(jié)合到實(shí)際應(yīng)用中去。 七、參考書(shū)目 (1) Programming Windows 程式開(kāi)發(fā)設(shè)計(jì)指南 原作者: Charles Petzold 翻 譯 :余孟學(xué) (2) 馮銳等譯 . Linux內(nèi)核源代碼分析 . 北京 : 機(jī)械工業(yè)出版社 (3) Linux 內(nèi)核 分析注解 (4) Linux 內(nèi)核 ()完全注釋 作者:趙炯 (5) 楊曉云等譯 .Linux 程序設(shè)計(jì) . 北京 : 機(jī)械工業(yè)出版社 ,2020
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1