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

正文內容

操作系統(tǒng)課程設計緩沖區(qū)管理(編輯修改稿)

2024-12-22 16:18 本頁面
 

【文章內容簡介】 uffer_head * bh。 48 49 sync_inodes()。 /* write out inodes into buffers */ /*將 i 節(jié)點寫入高速緩沖 */ // 掃描所有高速緩沖區(qū),對于已被修改的緩沖塊產生寫盤請求,將緩沖中數(shù)據(jù)與設備中同步。 50 bh = start_buffer。 51 for (i=0 。 iNR_BUFFERS 。 i++,bh++) { 52 wait_on_buffer(bh)。 // 等待緩沖區(qū)解鎖(如果已上鎖的話)。 53 if (bhb_dirt) 54 ll_rw_block(WRITE,bh)。 // 產生寫設備塊請求。 55 } 11 56 return 0。 57 } 58 //// 對指定設備進行高速緩沖數(shù)據(jù)與設備上數(shù)據(jù)的同步操作。 59 int sync_dev(int dev) 60 { 61 int i。 62 struct buffer_head * bh。 63 64 bh = start_buffer。 65 for (i=0 。 iNR_BUFFERS 。 i++,bh++) { 66 if (bhb_dev != dev) 67 continue。 68 wait_on_buffer(bh)。 69 if (bhb_dev == dev amp。amp。 bhb_dirt) 70 ll_rw_block(WRITE,bh)。 71 } 72 sync_inodes()。 // 將 i 節(jié)點數(shù)據(jù)寫入高速緩沖。 73 bh = start_buffer。 74 for (i=0 。 iNR_BUFFERS 。 i++,bh++) { 75 if (bhb_dev != dev) 76 continue。 77 wait_on_buffer(bh)。 78 if (bhb_dev == dev amp。amp。 bhb_dirt) 79 ll_rw_block(WRITE,bh)。 80 } 81 return 0。 82 } 83 //// 使指定設備在高速緩沖區(qū)中的數(shù)據(jù)無效。 // 掃描高速緩沖中的所有緩沖塊,對于指定設備的緩沖區(qū),復位其有效 (更新 )標志和已修改標志。 84 void inline invalidate_buffers(int dev) 85 { 86 int i。 87 struct buffer_head * bh。 88 89 bh = start_buffer。 90 for (i=0 。 iNR_BUFFERS 。 i++,bh++) { 91 if (bhb_dev != dev) // 如果不是指定設備的緩沖塊,則 92 continue。 // 繼續(xù)掃描下一塊。 93 wait_on_buffer(bh)。 // 等待該緩沖區(qū)解鎖(如果已被上鎖)。 // 由于進程執(zhí)行過睡眠等待,所以需要再判斷一下緩沖區(qū)是否是指定設備的。 94 if (bhb_dev == dev) 95 bhb_uptodate = bhb_dirt = 0。 96 } 97 } 98 99 /* 12 * 該子程序檢查一個軟盤是否已經被更換,如果已經更換就使高速緩沖中與該軟驅 * 對應的所有緩沖區(qū)無效。該子程序相對來說較慢,所以我們要盡量少使用它。 * 所以僅在執(zhí)行 39。mount39。或 39。open39。時才調用它。我想這是將速度和實用性相結合的 * 最好方法。若在操作過程當中更換軟盤,會導致數(shù)據(jù)的丟失,這是咎由自取 ? 。 * * 注意!盡管目前該子程序僅用于軟盤,以后任何可移動介質的塊設備都將使用該 * 程序, mount/open 操作是不需要知道是否是 軟盤或其它什么特殊介質的。 */ //// 檢查磁盤是否更換,如果已更換就使對應高速緩沖區(qū)無效。 113 void check_disk_change(int dev) 114 { 115 int i。 116 // 是軟盤設備嗎?如果不是則退出。 117 if (MAJOR(dev) != 2) 118 return。 // 測試對應軟盤是否已更換,如果沒有則退出。 119 if (!floppy_change(dev amp。 0x03)) 120 return。 // 軟盤已經更換,所以釋放對應設備的 i 節(jié) 點位圖和邏輯塊位圖所占的高速緩沖區(qū);并使該設備的 // i 節(jié)點和數(shù)據(jù)塊信息所占的高速緩沖區(qū)無效。 121 for (i=0 。 iNR_SUPER 。 i++) 122 if (super_block[i].s_dev == dev) 123 put_super(super_block[i].s_dev)。 124 invalidate_inodes(dev)。 125 invalidate_buffers(dev)。 126 } 127 // hash 函數(shù)和 hash 表項的計算宏定義。 128 define _hashfn(dev,block) (((unsigned)(dev^block))%NR_HASH) 129 define hash(dev,block) hash_table[_hashfn(dev,block)] 130 //// 從 hash 隊列和空閑緩沖隊列中移走指定的緩沖塊。 131 static inline void remove_from_queues(struct buffer_head * bh) 132 { 133 /* remove from hashqueue */ /* 從 hash 隊列中移除緩沖塊 */ 134 if (bhb_next) 135 bhb_nextb_prev = bhb_prev。 136 if (bhb_prev) 137 bhb_prevb_next = bhb_next。 // 如果該緩沖區(qū)是該隊列的頭一個塊,則讓 hash 表的對應項指向本隊列中的下一個緩沖區(qū)。 138 if (hash(bhb_dev,bhb_blocknr) == bh) 139 hash(bhb_dev,bhb_blocknr) = bhb_next。 140 /* remove from free list */ /* 從空閑緩沖區(qū)表中移除緩沖塊 */ 141 if (!(bhb_prev_free) || !(bhb_next_free)) 13 142 panic(Free block list corrupted)。 143 bhb_prev_freeb_next_free = bhb_next_free。 144 bhb_next_freeb_prev_free = bhb_prev_free。 // 如果空閑鏈表頭指向本緩沖區(qū),則讓其指向下一緩沖區(qū)。 145 if (free_list == bh) 146 free_list = bhb_next_free。 147 } 148 //// 將指定緩沖區(qū)插入空閑鏈表尾并放入 hash 隊列中。 149 static inline void insert_into_queues(struct buffer_head * bh) 150 { 151 /* put at end of free list */ /* 放在空閑鏈表末 尾處 */ 152 bhb_next_free = free_list。 153 bhb_prev_free = free_listb_prev_free。 154 free_listb_prev_freeb_next_free = bh。 155 free_listb_prev_free = bh。 156 /* put the buffer in new hashqueue if it has a device */ /* 如果該緩沖塊對應一個設備,則將其插入新 hash 隊列中 */ 157 bhb_prev = NULL。 158 bhb_next = NULL。 159 if (!bhb_dev) 160 return。 161 bhb_next = hash(bhb_dev,bhb_blocknr)。 162 hash(bhb_dev,bhb_blocknr) = bh。 163 bhb_nextb_prev = bh。 164 } 165 //// 在高速緩沖中尋找給定設備和指定塊的緩沖區(qū)塊。 // 如果找到則返回緩沖區(qū)塊的指針,否 則返回 NULL。 166 static struct buffer_head * find_buffer(int dev, int block) 167 { 168 struct buffer_head * tmp。 169 170 for (tmp = hash(dev,block) 。 tmp != NULL 。 tmp = tmpb_next) 171 if (tmpb_dev==dev amp。amp。 tmpb_blocknr==block) 172 re
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1