Linux源碼分析報(bào)告——字符終端設(shè)備

上傳人:靚*** 文檔編號(hào):40950686 上傳時(shí)間:2021-11-18 格式:DOCX 頁(yè)數(shù):6 大?。?8.21KB
收藏 版權(quán)申訴 舉報(bào) 下載
Linux源碼分析報(bào)告——字符終端設(shè)備_第1頁(yè)
第1頁(yè) / 共6頁(yè)
Linux源碼分析報(bào)告——字符終端設(shè)備_第2頁(yè)
第2頁(yè) / 共6頁(yè)
Linux源碼分析報(bào)告——字符終端設(shè)備_第3頁(yè)
第3頁(yè) / 共6頁(yè)

下載文檔到電腦,查找使用更方便

0 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《Linux源碼分析報(bào)告——字符終端設(shè)備》由會(huì)員分享,可在線閱讀,更多相關(guān)《Linux源碼分析報(bào)告——字符終端設(shè)備(6頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 源碼分析報(bào)告——字符終端設(shè)備 字符終端設(shè)備的打開(kāi)操作 當(dāng)我們需要使用一個(gè)字符終端設(shè)備的時(shí)候,首先需要打開(kāi)它。而打開(kāi)這一動(dòng)作,在下面通常是由一些守護(hù)進(jìn)程所發(fā)起的,比如當(dāng)我們?cè)诘卿浀揭粋€(gè)虛終端的時(shí)候,通常是由一個(gè)進(jìn) 程來(lái)打開(kāi)這個(gè)虛終端(從 的的版本開(kāi)始,開(kāi)始改用另一個(gè)較小的程序來(lái)實(shí)現(xiàn)相同的功能) ,是被進(jìn)程所發(fā)起的進(jìn)程,它完成以下的操作: . 打開(kāi)行設(shè)備并設(shè)置它們的模式; .打印出的提示符,并得到用戶(hù)名; .為用戶(hù)發(fā)起一個(gè)進(jìn)程為用戶(hù)進(jìn)行登錄 ()流程: 我們從程序調(diào)用函數(shù)

2、打開(kāi)一個(gè)終端設(shè)備開(kāi)始。 () (""); () () 很簡(jiǎn)單,得到一個(gè)空閑 ,設(shè)置一些參數(shù),然后調(diào)用 (): (, ) () () ; 先獲得一個(gè)空閑結(jié)構(gòu); 填充這個(gè)結(jié)構(gòu); 調(diào)用獲得設(shè)備文件的; 繼續(xù)填充結(jié)構(gòu); 這之中調(diào)用了 >>() 來(lái)執(zhí)行下層的打開(kāi)操作,下面才真正涉及到終端的 () () ( * , * ) 、首先通過(guò)取得 ; >; 注:即先取得所指向的設(shè)備的設(shè)備號(hào);再根據(jù)當(dāng)前的終端類(lèi)型生成新的主、從設(shè)備號(hào); 、調(diào)用 ()函數(shù)得到結(jié)構(gòu)。把它賦給 > (, ); (

3、) 1 / 6 ; > ; 、調(diào)用檢查 >是否真正表示了內(nèi)存中打開(kāi)該的。大概是出于完整性的考慮。 、調(diào)用 >的 ()函數(shù)。 >(, ); 具體說(shuō)來(lái),每一個(gè)不同的,有不同的執(zhí)行相應(yīng)操作的函數(shù),詳見(jiàn)附錄。 、將賦給結(jié)構(gòu)。 > ; > ; > >; > >; () ( , **) 本函數(shù)包括主要的的操作。 本函數(shù)使用了一個(gè)來(lái)互斥操作。 ; 在函數(shù)的開(kāi)始調(diào)用 () 進(jìn)入臨界區(qū)在函數(shù)的結(jié)尾調(diào)用 () 退出臨界區(qū)。 為了實(shí)現(xiàn)干凈操作,本函數(shù)先分配內(nèi)存,再進(jìn)行關(guān)鍵操作,若出現(xiàn)錯(cuò)

4、誤,則先到 : 區(qū),釋放出 所有分配的內(nèi)存,再退出。 現(xiàn)在講述程序的操作流程。 、根據(jù)設(shè)備號(hào)得到設(shè)備的結(jié)構(gòu)。 (); 、進(jìn)入臨界區(qū) (); 、若該不是第一次打開(kāi),轉(zhuǎn)到 ( ). 否則,繼續(xù)。 >[]; () ; 、第一次打開(kāi)的操作比較復(fù)雜。 主要為申請(qǐng)?jiān)O(shè)置結(jié)構(gòu),值得注意的是 > []; 表明所有的開(kāi)始都用相同的結(jié)構(gòu)。而最終都調(diào)用的讀寫(xiě)函數(shù),體現(xiàn)了只是一個(gè)虛擬終端的思想。 5 、調(diào)用 >中的 ()函數(shù)。 6 、 >,計(jì)數(shù)。 7 、退出臨界區(qū) (); ; 8 、返回。 () 這個(gè)函數(shù)

5、在 >中被調(diào)用。 ( *) 設(shè)置的底層讀寫(xiě)參數(shù)(大多與讀寫(xiě)有關(guān)) 。如:讀寫(xiě)緩沖,結(jié)構(gòu)的參數(shù)。 >() 2 / 6 如前文所示: ( )在第四步會(huì)調(diào)用 >( ),對(duì)于不同類(lèi)型的來(lái)說(shuō),這里相應(yīng)的 >( )當(dāng)然也會(huì)有所不 同,下面列舉了一些對(duì)應(yīng)于不同 類(lèi)型的不同操作,同時(shí)我們也看到在 ()中會(huì)調(diào)用 >() ;下面 是面向不同行設(shè)備的相應(yīng)操作。 對(duì)應(yīng)于不同的類(lèi)型的 >(): ; ; ; ; ; ; ; ; 對(duì)應(yīng)于不同類(lèi)型的 >(); 如果是

6、,則有 ; ; 若為則為:的初始化詳見(jiàn)后面的說(shuō)明。 ; ; 如果是串行的設(shè)備則為: ; ; 在里面: ; ; 字符終端設(shè)備的寫(xiě)操作 程序中的兩個(gè)重要數(shù)據(jù)結(jié)構(gòu) { *(*)(); (*)( *, ); (*)( *); (*)( *, , , , ); (*)( *, , , ); (*)( *, *, , , ); (*)( *, ); (*)( *, , , , ); (*)( *, , , , , , );

7、 (*)( *); 3 / 6 (*)( *, ); (*)( *, *); (*)( *, *); (*)( *, ); (*)( *); (*)( *); (*)( *, , , , , ); (*)( *, *, ); }; { ; * * ; * , ... * ; ; ; *; } *[]; ()的流程 我們從程序調(diào)用 ()開(kāi)始。 調(diào)用 ()函數(shù)。 () ()

8、此函數(shù)中調(diào)用具體的 () 函數(shù)。 (>); >>(); (>); () ( * , * , * , ) 首先從 >里面取出一個(gè)結(jié)構(gòu),得到相關(guān)的的信息, 此函數(shù)中調(diào)用 () (>, , , , ( *), ( )); (>, , 最后調(diào)用 () 注:大概考慮到一次不能寫(xiě)太多字符中將字符分批輸出。 反復(fù)調(diào)用傳來(lái)的函數(shù): (, , , ); 4 / 6 這個(gè)函數(shù)其實(shí)就是 >,即 () () ( * , * , * , ) 注:此函數(shù)先在的寫(xiě)等

9、待隊(duì)列上等待,等它被喚醒后,然后再進(jìn)行寫(xiě)操作。而這一函數(shù), 最后實(shí)際上是會(huì)調(diào)用 >(, , , ); 而在此處在對(duì)應(yīng)的控制臺(tái)是時(shí), >()對(duì)應(yīng)的就是里的: ( * , , *, ) 而如果對(duì)應(yīng)的是的話,那么 >() 對(duì)應(yīng)的應(yīng)該是: () ( * , , *, ) 如果對(duì)應(yīng)的是串行設(shè)備的話,那么 >()對(duì)應(yīng)的應(yīng)該是: () ( * , *, ) 或者里面的 () ; 在此處,我們以到的輸出的分析為重點(diǎn): () 里面直接調(diào)用: (, , , ); (); 抽象的終端驅(qū)動(dòng)程序?yàn)樽址K端提供了一個(gè)一般性的接口,它通過(guò)一個(gè)特別

10、的數(shù)據(jù)結(jié)構(gòu) ,里面有一些指針指向了相應(yīng)的函數(shù)來(lái)進(jìn)行進(jìn)一步操作。 * ( *)>; 定義在里面,而在里面有一個(gè)全局變量: *[]; () 首先該過(guò)程會(huì)得到當(dāng)前的的 >; 進(jìn)入臨界區(qū) (); 開(kāi)始寫(xiě)屏 如果是轉(zhuǎn)義序列則進(jìn)入一個(gè)自動(dòng)機(jī),進(jìn)行翻譯 , 并根據(jù)轉(zhuǎn)義序列的進(jìn)行實(shí)際的動(dòng)作。 最后寫(xiě)屏 退出臨界區(qū) (); 值得注意的是其中為了識(shí)別轉(zhuǎn)義序列,使用了一個(gè)有限狀態(tài)自動(dòng)機(jī): 如下圖所示: 分析轉(zhuǎn)義序列的自動(dòng)機(jī) 5 / 6

11、 非 ”[“ “[“ 數(shù)字或 ”[“ ( ) ( ) 非數(shù)字 ”;” 中用于各種顯示功能的函數(shù): ( *, *); ( , , , ); (); ( , , ); ( ); ( , ); ( *); ( ); ( ); ( ); 以下略。 6 / 6

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!