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

正文內(nèi)容

操作系統(tǒng)課程設(shè)計(jì)indoec流程及代碼分析-資料下載頁

2024-11-03 00:43本頁面

【導(dǎo)讀】2.模塊整體功能介紹及主要目標(biāo)···············································2. 3.頭文件的分析···································································3

  

【正文】 5 get_empty_inode()函數(shù) 流程圖 last_inode指針指向 i節(jié)點(diǎn)表第一項(xiàng) 循環(huán)掃描整個(gè) i 節(jié)點(diǎn)表 找到空閑 i 節(jié)點(diǎn)否? N 打印供調(diào)試用并停機(jī) 等待解鎖 Y inodei_dirt=1? Y write_inode(inode)。wait_on_inode(inode) N inodei_count0? Y N 已找到符合要求的空閑 i 節(jié)點(diǎn)項(xiàng) 該 i 節(jié)點(diǎn)項(xiàng)內(nèi)容清 0,引用計(jì)數(shù)為 1 返回 i 節(jié)點(diǎn)指針并結(jié)束 第 18 頁 5. 13 get_pipe_inode()函數(shù)分析 5. 13. 1 函數(shù)頭: struct m_inode*get_pipe_inode(void)。 5. 13. 2 功能分析:獲取管道節(jié)點(diǎn)。 5. 13. 3 流程圖: (見圖 16) 圖 16 get_pipe_inode()函數(shù) 流程圖 5. 14 create_block()函數(shù)分析 5. 14. 1 函數(shù)頭: int create_block(struct m_inode*inode,int block)。 掃描 i 節(jié)點(diǎn)表,尋找一個(gè)空閑 i 節(jié)點(diǎn)項(xiàng) 引用計(jì)數(shù)置為 2(讀者和寫者) 復(fù)位管道頭和尾指針 Y N 返回 NULL 申請(qǐng)一頁內(nèi)存,并 i_size 指向該頁面 還有空閑內(nèi)存否? N 釋放該 i 節(jié)點(diǎn),并返回 NULL Y 置節(jié)點(diǎn)為管道使用的標(biāo)志 i_pipe=1 返回 inode 并結(jié)束 get_empty_inode()找到否? 第 19 頁 5. 14. 2 功能 分析:取文件數(shù)據(jù)塊 block 在設(shè)備上對(duì)應(yīng)的邏輯塊號(hào);如果對(duì)應(yīng)的邏輯塊不存在就創(chuàng)建一塊;返回設(shè)備上對(duì)應(yīng)的已存在或新建的邏輯塊號(hào)。參數(shù): inode文件的內(nèi)存 i 節(jié)點(diǎn)指針; block文件中的數(shù)據(jù)塊號(hào)。 5. 14. 3 調(diào)用結(jié)構(gòu)圖:(見圖 17) 圖 17 create_block()函數(shù) 調(diào)用結(jié)構(gòu)圖 5. 15 iget()函數(shù)分析 5. 15. 1 函數(shù)頭: struct m_inode*iget(int dev,int nr)。 5. 15. 2 功能分析: 取得一個(gè) i 節(jié)點(diǎn) 。 5. 15. 3 流程圖: (見圖 18) 調(diào)用 Create_block()函數(shù) _bmap()函數(shù) 第 20 頁 判 斷 參 數(shù) 的 有 效 性設(shè) 備 號(hào) 為 0 否 ?NY顯 示 出 錯(cuò) 并 停 機(jī)從 i 節(jié) 點(diǎn) 表 取 空 閑 i 節(jié) 點(diǎn)掃 描 i 節(jié) 點(diǎn) 表 以 尋 找 參 數(shù) 指 定 節(jié) 點(diǎn) 號(hào) n r 的 i 節(jié) 點(diǎn)遞 增 該 節(jié) 點(diǎn) 的 引 用 次 數(shù)I n o d e N R _ I N O D E + i n o d e _ t a b l eY! = 指 定 的 設(shè) 備 號(hào) 或 ! = 指 定 的 節(jié) 點(diǎn) 號(hào) 否 ?YNNW a i t _ o n _ i n o d e ( i n o d e ) 等 待 該 節(jié) 點(diǎn) 解 鎖! = 指 定 的 設(shè) 備 號(hào) 或 ! = 指 定 的 節(jié) 點(diǎn) 號(hào) 否 ?Yi n o d e = i n o d e _ t a b l ei n o d e i _ c o u n t + +N是 另 一 個(gè) 文 件 系 統(tǒng) 的 安 裝 點(diǎn) ?YN尋 找 被 安 裝 文 件 系 統(tǒng) 根 節(jié) 點(diǎn)在 超 級(jí) 塊 表 中 搜 尋 安 裝 在 此 i 節(jié) 點(diǎn) 的 超 級(jí) 塊 , 若 找 到 則 顯 示 出 錯(cuò) 信 息找 到 否 ? ?返 回Yr e t u r n i n o d e 。 i p u t ( i n o d e ) 將 該 節(jié) 點(diǎn) 寫 盤 放 回取 設(shè) 備 號(hào) 并 令 i 節(jié) 點(diǎn) 號(hào) 為 R O O T _ I N O沒 有 找 到 指 定 I 節(jié) 點(diǎn) , i n o d e = e m p t y , 并 取 該 I 節(jié) 點(diǎn) 信 息返 回 i n o d e結(jié) 束N 圖 18 iget()函數(shù) 流程圖 第 21 頁 6. 分析體會(huì)及自己所做亮點(diǎn)工作 經(jīng)過自己幾天的努力, 文件系統(tǒng)源代碼分析之 I 節(jié)點(diǎn)管理源代碼分析 ,終于用自己的思路分析完了,理解透了。 程序總共有 339 行代碼,乍一看,自己都會(huì)心煩,很難看下去,報(bào)告也無從著手來寫,雖然注解非常的詳細(xì),看代碼最忌諱的就是沒有耐心,所以在看代碼之前就必需使自己靜下心來,然后根據(jù)熊老師的要求,報(bào)告的說明,想好自己 的分析計(jì)劃。 先整體看一下程序,看它由哪些函數(shù)構(gòu)成,第一遍看下來,就發(fā)現(xiàn)在 程序中,定義了一些主要函數(shù)(如:read_inode(),write_inode(),iget(),get_pipe_inode(),get_empty_inode(),iput(),bam(),_bamp(),sync_inode(),invalidate_inodes(),unlock_inode(),lock_inode(),wait_inode()) (看第一遍時(shí),只看一下這些函數(shù)頭 ),它在本程序中定義了,那么看懂 這些是必需的,不過同時(shí)我也發(fā)現(xiàn),在這些函數(shù)中,也調(diào)用了其他的一些函數(shù)(如: cli(),sti(),sleep_on(),wake_up(),printk(),panic(),bread() 等等),而這些函數(shù)呢,在本程序中卻沒有定義,只是直接拿來調(diào)用它了,開始是用點(diǎn)糊涂,一下子間反應(yīng)不過來是怎么回事,后來問了熊老師,他的講解,讓我頓間明白過來,也想起自己以前也編寫過的像這種把所有的子程序,綜合起來運(yùn)行,那就是把一些需要共享的函數(shù)的函數(shù)頭放到頭文件中,當(dāng)哪個(gè)子程序需要調(diào)用它們時(shí),只需要加載相應(yīng)的頭文件即可。 最 終這些函數(shù)在頭文件(第 11 章)都能夠找到。(有注解,所以我能看的懂)。 類似的道理,一些在此程序中沒有定義的數(shù)據(jù)結(jié)構(gòu),在頭文件中也都有定義。 第 22 頁 在最初不斷地瀏覽整個(gè)程序的過程中,也遇到了一些問題,雖然有注解,但是注解中的有些詞匯(名詞),卻不知道是什么意思,同時(shí)我注意到, 程序只是文件系統(tǒng)源代碼的一部分,而文件系統(tǒng)中的各個(gè)子程序也有交叉,所以我現(xiàn)在要明白,不能孤立地看這個(gè)程序,而是要是發(fā)現(xiàn)不懂的地方,可以到別的程序中找答案,例如: 超級(jí)塊:超級(jí)塊中主要存放了有關(guān)整個(gè)文件系統(tǒng)的信息,其信息結(jié)構(gòu)參見“總 體功能描述”中的圖 93(電子書 399 頁),并說明各部分的大小。在 系統(tǒng)中,被加載的文件系統(tǒng)超級(jí)塊保存在超級(jí)塊表(數(shù)組) supper_block[]中。 整體思路想好后,接下來的任務(wù)就是單個(gè)的分析每個(gè)數(shù)據(jù)結(jié)構(gòu)、函數(shù),注意有些數(shù)據(jù)結(jié)構(gòu)在本程序中沒有定義,要到頭文件中去尋找。在分析函數(shù)的時(shí)候,有了前提知識(shí),我是直接分析源代碼的結(jié)構(gòu)的,只有自己不懂的時(shí)候,才會(huì)去看注解,然后基本上都是用流程圖或函數(shù)間調(diào)用結(jié)構(gòu)圖來描述的,再加了一些說明性的文字。這樣我就利用電子書上的注解分析,轉(zhuǎn)換為自己的思路,這樣的 思維不那么呆板,而且也很有成就感。 通過分析程序畫出其流程圖,使我必需耐心看完并分析每條語句,分析一點(diǎn),就記錄一點(diǎn)在圖上,最終把整個(gè)程序分析完。冰凍之尺,非一日之寒, 339 行的程序分析下來,也花了我不少時(shí)間,從開始查資料到最后報(bào)告的完成,前后也有 5 天的時(shí)間。 分析此程序,使我了解了,處理 i 節(jié)點(diǎn)的函數(shù) iget()、 iput()、 bmap(),以及其他一些輔助函數(shù)的具體實(shí)現(xiàn)過程。 Iget()是指從設(shè)備上讀取指定節(jié)點(diǎn)號(hào) nr 的 i 節(jié)點(diǎn),而 iput()函數(shù)所完成的功能,正好與 iget()函數(shù)相反,它主要用于把 i 節(jié)點(diǎn)引用 計(jì)數(shù)值遞減 1,并且若是管道 i 節(jié)點(diǎn),則喚醒等待的進(jìn)程。各個(gè)函數(shù)的具體詳細(xì)描述過程見此報(bào)告的正文,在此不再贅余。 以上都是自己在分析 程序中所得出的一點(diǎn)體會(huì)及一些學(xué)習(xí)方法和思考問題的方式。我自己認(rèn)為,可能有一天,我把這個(gè)程序的編寫過第 23 頁 程給忘了,但是這樣思考問題的方法和做事的態(tài)度,卻很實(shí)用,會(huì)伴隨我一生,使我受益匪淺。 7. 參考文獻(xiàn) [1]《 內(nèi)核完全注釋 》趙炯 編著 [2]《 Linux 內(nèi)核 版源代碼分析大全 》 機(jī)械工業(yè)出版社 李善平 [3]《 Linux 操作系統(tǒng)內(nèi)核分析 》陳利君 編著 人民郵電出版社 [4]
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1