Linux設(shè)備管理課件_第1頁(yè)
Linux設(shè)備管理課件_第2頁(yè)
Linux設(shè)備管理課件_第3頁(yè)
Linux設(shè)備管理課件_第4頁(yè)
Linux設(shè)備管理課件_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第4講 Linux設(shè)備管理設(shè)備管理的目標(biāo)計(jì)算機(jī)的設(shè)備進(jìn)行管理有兩大目標(biāo):一是提高設(shè)備的利用率;二是方便用戶使用。 課程內(nèi)容:Linux設(shè)備管理分類(lèi)Linux設(shè)備驅(qū)動(dòng)程序的接口Linux磁盤(pán)高速緩存管理Linux的字符設(shè)備緩沖區(qū)管理Linux的設(shè)備驅(qū)動(dòng)Linux系統(tǒng)I/O軟件層次結(jié)構(gòu)一、Linux中設(shè)備的分類(lèi)與表示(1)字符設(shè)備 如鍵盤(pán)、鼠標(biāo)、顯示器、打印機(jī)等。通常用于輸入輸出,作為人和計(jì)算機(jī)之間的接口,信息的存取以字符為單位進(jìn)行。(2)塊設(shè)備 如磁盤(pán)、磁帶等,用于存儲(chǔ)信息,它對(duì)信息的存取控制是以信息塊為單位的。特別文件每個(gè)設(shè)備都有自己的設(shè)備名,用戶通過(guò)設(shè)備名來(lái)訪問(wèn)具體物理設(shè)備,設(shè)備名存放在/d

2、ev目錄下。硬盤(pán):/dev/hda, /dev/sda 軟盤(pán):/dev/fd0 光盤(pán):/dev/cdrom 鼠標(biāo):/dev/psaux(ps/2) /dev/input/mice(USB) 打印機(jī):/dev/lp 控制臺(tái):/dev/console網(wǎng)卡:/dev/eth0但是像塊設(shè)備磁盤(pán)、磁帶上的普通文件和目錄不是特殊文件。 二、Linux設(shè)備驅(qū)動(dòng)程序的接口 1、文件系統(tǒng)與設(shè)備驅(qū)動(dòng)程序的接口Linux系統(tǒng)中,用戶程序通過(guò)文件操作方式如打開(kāi)、關(guān)閉、讀寫(xiě)等來(lái)使用設(shè)備,由文件系統(tǒng)轉(zhuǎn)入設(shè)備驅(qū)動(dòng)程序。在Linux中系統(tǒng)提供塊設(shè)備開(kāi)關(guān)表和字符設(shè)備開(kāi)關(guān)表作為核心與設(shè)備驅(qū)動(dòng)程序之間的接口。每一種設(shè)備類(lèi)型在表中占

3、用一個(gè)表目,包含若干數(shù)據(jù)項(xiàng),其中有一項(xiàng)為該類(lèi)設(shè)備驅(qū)動(dòng)程序入口地址,在系統(tǒng)調(diào)用時(shí)引導(dǎo)核心轉(zhuǎn)向適當(dāng)?shù)尿?qū)動(dòng)程序接口。塊設(shè)備開(kāi)關(guān)表 字符設(shè)備開(kāi)關(guān)表 操作主設(shè)備號(hào)OpenClose Read Write0驅(qū)動(dòng)程序入口地址驅(qū)動(dòng)程序入口地址驅(qū)動(dòng)程序入口地址驅(qū)動(dòng)程序入口地址1驅(qū)動(dòng)程序入口地址驅(qū)動(dòng)程序入口地址驅(qū)動(dòng)程序入口地址驅(qū)動(dòng)程序入口地址 操作主設(shè)備號(hào)OpenClose Strategy(read/write)0驅(qū)動(dòng)程序入口地址驅(qū)動(dòng)程序入口地址驅(qū)動(dòng)程序入口地址1驅(qū)動(dòng)程序入口地址驅(qū)動(dòng)程序入口地址驅(qū)動(dòng)程序入口地址2、文件的系統(tǒng)調(diào)用過(guò)程 對(duì)設(shè)備特殊文件的系統(tǒng)調(diào)用,根據(jù)文件類(lèi)型轉(zhuǎn)入塊設(shè)備開(kāi)關(guān)表或字符開(kāi)關(guān)表進(jìn)行打開(kāi)、關(guān)

4、閉塊設(shè)備或字符設(shè)備的操作。 字符設(shè)備特殊文件的系統(tǒng)調(diào)用Read、Write轉(zhuǎn)向字符開(kāi)關(guān)表中指示的設(shè)備驅(qū)動(dòng)程序,而對(duì)普通文件或目錄文件的Read、Write系統(tǒng)調(diào)用則通過(guò)高速緩沖模塊轉(zhuǎn)向設(shè)備驅(qū)動(dòng)模塊中的策略(Strategy)過(guò)程。文件系統(tǒng)對(duì)字符設(shè)備特殊文件的系統(tǒng)調(diào)用open close read write對(duì)塊設(shè)備文件的系統(tǒng)調(diào)用open close對(duì)普通文件的系統(tǒng)調(diào)用read write高速緩沖模塊字符設(shè)備開(kāi)關(guān)表塊設(shè)備開(kāi)關(guān)表字符設(shè)備塊設(shè)備中斷向量表open close read write字符設(shè)備驅(qū)動(dòng)程序設(shè)備中斷處理程序open close strategy 塊設(shè)備驅(qū)動(dòng)程序 設(shè)備中斷處理程序三

5、、Linux磁盤(pán)高速緩存管理1、磁盤(pán)高速緩存策略Linux磁盤(pán)緩沖管理策略試圖把盡可能多的有用數(shù)據(jù)保存在緩沖區(qū)中。 從磁盤(pán)中讀數(shù)據(jù)時(shí),文件系統(tǒng)先從磁盤(pán)高速緩存中讀,如果數(shù)據(jù)已在高速緩存中,則不必啟動(dòng)磁盤(pán)I/O,直接在高速緩存中讀?。蝗绻麛?shù)據(jù)不在高速緩存中,則啟動(dòng)磁盤(pán)時(shí)I/O,從磁盤(pán)讀取數(shù)據(jù)送往高速緩存,進(jìn)程再?gòu)母咚倬彺嬷凶x取數(shù)據(jù)。Linux采取了“延遲寫(xiě)”策略 。 2、磁盤(pán)緩沖區(qū)管理的數(shù)據(jù)結(jié)構(gòu) Linux使用多個(gè)內(nèi)存緩沖區(qū)進(jìn)行磁盤(pán)緩沖,為了合理有效地使用這些緩沖區(qū),設(shè)置了一定的數(shù)據(jù)結(jié)構(gòu)按照一定策略進(jìn)行管理。管理的依據(jù)是緩沖區(qū)的相關(guān)信息,為了能訪問(wèn)這些信息,必須將其按一定的數(shù)據(jù)結(jié)構(gòu)進(jìn)行組織。 每

6、一個(gè)緩沖區(qū)建立“緩沖首部”來(lái)存放該緩沖區(qū)的相關(guān)信息 緩沖首部設(shè)備號(hào)dev設(shè)備緩沖區(qū)隊(duì)列后向指針b-back塊號(hào)blkno空閑緩沖區(qū)隊(duì)列前向指針Av-forw狀態(tài)flag空閑緩沖區(qū)隊(duì)列后向指針Av-back設(shè)備緩沖區(qū)隊(duì)列前向指針b-forw 忙標(biāo)志位BUSY:緩沖區(qū)當(dāng)前是否忙 有效位AVE:緩沖區(qū)包含的數(shù)據(jù)是否有效 延遲寫(xiě)位DELWR:是否延遲寫(xiě) 寫(xiě)標(biāo)志位WRITE:是否正在把緩沖區(qū)的內(nèi)容寫(xiě)到磁盤(pán)上 讀表示位READ:是否從磁盤(pán)往緩沖讀取信息 等待位WAIT:是否有一個(gè)進(jìn)程正在等待該緩沖區(qū)空閑緩沖區(qū)隊(duì)列(BUSY=0)Av-forwAv-backAv-forwAv-backAv-forwAv-b

7、ack設(shè)備緩沖區(qū)隊(duì)列(BUSY=1)b-forw b-backbv-forwbv-backb-forw b-back3、Linux磁盤(pán)緩沖區(qū)管理算法 高速緩沖區(qū)的分配 當(dāng)某進(jìn)程要從一個(gè)磁盤(pán)讀取數(shù)據(jù)時(shí),先檢查要讀取的磁盤(pán)塊是否包含在某個(gè)緩沖區(qū)中,如果不在,則從空閑緩沖區(qū)隊(duì)列中分配給它一個(gè)空閑緩沖區(qū);當(dāng)某進(jìn)程要將數(shù)據(jù)寫(xiě)入磁盤(pán)時(shí),先看一下要寫(xiě)的磁盤(pán)塊是否在某個(gè)緩沖區(qū),如果不在則為這個(gè)磁盤(pán)塊分配一個(gè)空閑緩沖區(qū)。被分配的空閑緩沖區(qū)從空閑緩沖區(qū)隊(duì)列中退出,進(jìn)入相應(yīng)設(shè)備的設(shè)備緩沖區(qū)隊(duì)列,該緩沖區(qū)的BUSY位置1。 當(dāng)緩沖區(qū)的信息讀到相應(yīng)進(jìn)程的內(nèi)存后,便釋放進(jìn)程使用的緩沖區(qū),將Flag中的BUSY位置0,送入

8、空閑緩沖區(qū)隊(duì)尾;同時(shí)也將置為延遲寫(xiě)的緩沖區(qū)也送入空閑緩沖區(qū)隊(duì)列。這樣可以使有效的緩沖區(qū)得到充分利用,滿足多個(gè)并發(fā)進(jìn)程的需要。 當(dāng)一個(gè)緩沖區(qū)被送往空閑緩沖區(qū)隊(duì)尾時(shí),并不退出設(shè)備緩沖區(qū)隊(duì)列,而仍然留在原隊(duì)列中。這樣做的原因是,此次使用完畢送往空閑緩沖區(qū)隊(duì)列的緩沖區(qū),其保留的信息可能被再次訪問(wèn)。如果將其保留在設(shè)備緩沖區(qū)隊(duì)列中,當(dāng)后來(lái)要讀取的磁盤(pán)數(shù)據(jù)塊仍然保留在此緩沖時(shí),可以直接從此緩沖區(qū)讀,而不必啟動(dòng)磁盤(pán)I/O,提高了讀盤(pán)速度,這正是使用磁盤(pán)高速緩存的目的?!把舆t寫(xiě)”緩沖區(qū)的處理 如果要將一個(gè)使用完畢送入空閑緩沖區(qū)隊(duì)列的緩沖區(qū)分配給其他設(shè)備,則可以將該緩沖同時(shí)從空閑緩沖區(qū)隊(duì)列和原設(shè)備緩沖區(qū)隊(duì)列中抽出

9、,送入新的設(shè)備緩沖區(qū)隊(duì)列。 因?yàn)楸皇褂眠^(guò)的緩沖區(qū)在空閑緩沖區(qū)隊(duì)列的末尾,隨著不斷地空閑緩沖區(qū)隊(duì)列上摘下緩沖區(qū),后面的緩沖區(qū)會(huì)不斷向隊(duì)首移動(dòng),如果一個(gè)延遲寫(xiě)標(biāo)志位為1的緩沖區(qū)移到空閑緩沖區(qū)隊(duì)列的頭部,當(dāng)其被重新分配之前,要先把其內(nèi)容寫(xiě)到相應(yīng)設(shè)備的指定的磁盤(pán)塊中。四、Linux字符設(shè)備緩沖區(qū)管理 (1)字符緩沖區(qū)及其隊(duì)列 Linux中為字符設(shè)備的數(shù)據(jù)傳輸設(shè)置了一個(gè)公用的字符緩沖池,該緩沖池內(nèi)含有若干個(gè)緩沖區(qū),但每個(gè)緩沖區(qū)很小,只含幾個(gè)或十幾個(gè)字節(jié)。為合理使用這些緩沖區(qū),將其組織成一定的數(shù)據(jù)結(jié)構(gòu)。同塊設(shè)備緩沖區(qū)的管理類(lèi)似,建立空閑字符緩沖區(qū)隊(duì)列和設(shè)備字符緩沖區(qū)隊(duì)列。 字符緩存區(qū)數(shù)據(jù)結(jié)構(gòu) 首字符位置字

10、符緩沖區(qū)末字符位置指向下一字符緩沖區(qū)(2)空閑字符緩沖區(qū)的分配和回收 在一進(jìn)程用字符設(shè)備進(jìn)行I/O操作時(shí),文件系統(tǒng)為該字符設(shè)備分配一個(gè)空閑緩沖區(qū)。分配時(shí)要檢測(cè)空閑緩沖區(qū)隊(duì)列,當(dāng)隊(duì)列非空時(shí),從隊(duì)首取下一個(gè)空閑緩沖區(qū)分配該字符設(shè)備,送入該字符設(shè)備的字符緩沖區(qū)隊(duì)列,并把指向該緩沖區(qū)的指針?lè)祷亟o調(diào)用進(jìn)程;當(dāng)隊(duì)列為空時(shí),表明已經(jīng)沒(méi)有緩沖區(qū)可分配,則請(qǐng)求I/O操作的進(jìn)程被阻塞。當(dāng)字符緩沖區(qū)中的數(shù)據(jù)被提取完后,便釋放該緩沖區(qū),將該緩沖區(qū)送入空閑字符緩沖區(qū)隊(duì)列的首部。(空閑字符緩存區(qū)隊(duì)列其實(shí)是一個(gè)棧)若此時(shí)有因申請(qǐng)空緩沖區(qū)而阻塞的進(jìn)程,則將其喚醒。五、Linux的設(shè)備驅(qū)動(dòng) 設(shè)備驅(qū)動(dòng)是指控制具體的物理設(shè)備完成I

11、/O操作,與硬件的物理特性和數(shù)據(jù)傳輸控制方式密切相關(guān),不同類(lèi)型的設(shè)備、不同數(shù)據(jù)傳輸控制方式要采用不同設(shè)備的驅(qū)動(dòng)方式。1、塊設(shè)備驅(qū)動(dòng)(1)數(shù)據(jù)結(jié)構(gòu) 塊設(shè)備表 I/O請(qǐng)求隊(duì)列(2)磁盤(pán)設(shè)備驅(qū)動(dòng)程序 打開(kāi)硬盤(pán) 讀寫(xiě)硬盤(pán)(1)塊設(shè)備驅(qū)動(dòng)的數(shù)據(jù)結(jié)構(gòu)塊設(shè)備表 對(duì)每一類(lèi)塊設(shè)備,分別設(shè)置塊設(shè)備表,記錄該類(lèi)設(shè)備的相關(guān)信息。其內(nèi)容包括:忙標(biāo)志:標(biāo)志設(shè)備的忙閑狀態(tài),0表示空閑,1表示正忙錯(cuò)誤次數(shù):指設(shè)備I/O出錯(cuò)次數(shù)設(shè)備緩沖區(qū)隊(duì)列頭指針:分配給設(shè)備的緩沖區(qū)隊(duì)列的頭指針設(shè)備緩沖區(qū)隊(duì)列尾指針:分配給設(shè)備的緩沖區(qū)隊(duì)列的尾指針I(yè)/O請(qǐng)求隊(duì)列頭指針:請(qǐng)求該類(lèi)設(shè)備I/O操作的請(qǐng)求塊組成的隊(duì)列的頭指針I(yè)/O請(qǐng)求隊(duì)列尾指針:請(qǐng)求該

12、類(lèi)設(shè)備I/O操作的請(qǐng)求塊組成的隊(duì)列的尾指針I(yè)/O請(qǐng)求隊(duì)列 用戶進(jìn)程的I/O請(qǐng)求包括要求完成I/O操作的邏輯設(shè)備名、要求的操作、輸送數(shù)據(jù)在內(nèi)存中的起始地址、傳送數(shù)據(jù)的長(zhǎng)度,將這些信息組織成I/O請(qǐng)求塊iorb。邏輯設(shè)備名相同(同一類(lèi)設(shè)備)的I/O請(qǐng)求塊構(gòu)成一個(gè)隊(duì)列,稱為I/O請(qǐng)求隊(duì)列。每類(lèi)設(shè)備分別有一個(gè)I/O請(qǐng)求隊(duì)列。 (2)磁盤(pán)驅(qū)動(dòng)程序 驅(qū)動(dòng)程序控制設(shè)備具體實(shí)現(xiàn)進(jìn)程的高級(jí)I/O請(qǐng)求包括打開(kāi)、關(guān)閉、讀、寫(xiě)等。打開(kāi)。硬盤(pán)在使用之前必須進(jìn)行打開(kāi)操作,其目的是在使用硬盤(pán)之前進(jìn)行必要的初始化設(shè)置硬盤(pán)的工作參數(shù)。硬盤(pán)的工作參數(shù)存放在主存中操作系統(tǒng)數(shù)據(jù)結(jié)構(gòu)硬盤(pán)控制塊中,它是驅(qū)動(dòng)程序?qū)τ脖P(pán)進(jìn)行控制的依據(jù)。硬盤(pán)

13、工作參數(shù)存放在硬盤(pán)的引導(dǎo)區(qū)中,因此要將引導(dǎo)區(qū)內(nèi)容讀到硬盤(pán)控制塊中。 為了讀寫(xiě)硬盤(pán)引導(dǎo)區(qū),必須初啟硬盤(pán),首先測(cè)試該設(shè)備是否就緒(通過(guò)測(cè)試設(shè)備控制器的設(shè)備狀態(tài)寄存器的ready位判斷),如果已就緒再測(cè)試該硬盤(pán)是否可用。設(shè)備不能使用的原因可能是沒(méi)有格式化或其它一些硬件故障,測(cè)試的方法是讀取該硬盤(pán)的首標(biāo),如果不能被正確讀出,說(shuō)明硬盤(pán)不能使用,否則是可以使用的。如果是限定時(shí)間內(nèi)設(shè)備未就緒或經(jīng)測(cè)試不能使用,則設(shè)備初啟失敗。若初啟成功,便讀取硬盤(pán)引導(dǎo)區(qū),初始化硬盤(pán)控制塊。讀寫(xiě)硬盤(pán) 由策略接口程序strategy完成,每次只讀寫(xiě)一個(gè)扇區(qū)。Linux中對(duì)硬盤(pán)有兩種讀方式和三種寫(xiě)方式。 一般讀:把當(dāng)前所需盤(pán)塊中的

14、內(nèi)容讀入緩沖區(qū)。 預(yù)先讀:進(jìn)程讀順序文件的盤(pán)塊時(shí),會(huì)預(yù)見(jiàn)到要讀的下一個(gè)盤(pán)塊,因此讀出當(dāng)前塊后可提前讀下一盤(pán)塊。 一般寫(xiě):把緩沖區(qū)數(shù)據(jù)寫(xiě)到盤(pán)塊,且進(jìn)程必須等待寫(xiě)操作完成。 異步寫(xiě):把緩沖區(qū)數(shù)據(jù)寫(xiě)到盤(pán)塊,但進(jìn)程不必等待寫(xiě)操作完成。 延遲寫(xiě):當(dāng)進(jìn)程要把數(shù)據(jù)寫(xiě)到盤(pán)上時(shí),先寫(xiě)到緩沖區(qū),然后將該緩沖區(qū)標(biāo)記為延遲寫(xiě),掛到空閑緩沖區(qū)隊(duì)列的末尾,但并不立即將該緩沖區(qū)的內(nèi)容寫(xiě)到磁盤(pán)。硬盤(pán)讀寫(xiě)驅(qū)動(dòng)過(guò)程將邏輯塊號(hào)轉(zhuǎn)換為物理塊號(hào);申請(qǐng)DMA;將物理塊號(hào)轉(zhuǎn)換為盤(pán)面號(hào)/柱面號(hào)/扇區(qū)號(hào);移動(dòng)磁頭到指定柱面;向硬盤(pán)控制器發(fā)送讀寫(xiě)命令。 CPU發(fā)出讀寫(xiě)命令后不必等待,而繼續(xù)執(zhí)行其他進(jìn)程。但傳輸結(jié)束后,硬盤(pán)控制器向CPU發(fā)送中斷信

15、號(hào),CPU響應(yīng)后轉(zhuǎn)入硬盤(pán)中斷處理程序。 硬盤(pán)中斷處理過(guò)程 檢測(cè)此次數(shù)據(jù)傳輸是否出錯(cuò),傳輸錯(cuò)誤記錄在硬盤(pán)控制器的狀態(tài)寄存器中,如果出錯(cuò),進(jìn)行錯(cuò)誤處理;由于磁盤(pán)讀寫(xiě)一次只能傳輸一個(gè)扇區(qū),每傳輸一個(gè)扇區(qū)就中斷一次,而I/O讀寫(xiě)請(qǐng)求緩沖區(qū)可能有大于一個(gè)扇區(qū)的數(shù)據(jù)要傳輸,因此每次傳輸結(jié)束,中斷處理程序要檢查I/O讀寫(xiě)請(qǐng)求緩沖區(qū)內(nèi)是否還有數(shù)據(jù)傳輸,若有,則繼續(xù)傳輸余下的數(shù)據(jù),若沒(méi)有,說(shuō)明一個(gè)緩沖區(qū)已經(jīng)傳輸完畢。若I/O讀寫(xiě)請(qǐng)求緩沖區(qū)內(nèi)的數(shù)據(jù)全部傳輸完畢,則喚醒等待傳輸完成的進(jìn)程。 2、字符設(shè)備驅(qū)動(dòng) 字符設(shè)備的傳送用一組專用的寄存器來(lái)實(shí)現(xiàn)。每種字符設(shè)備的控制器一般都有3個(gè)寄存器:控制寄存器接收CPU發(fā)送來(lái)的

16、命令,控制設(shè)備的操作;狀態(tài)寄存器保存設(shè)備的狀態(tài);數(shù)據(jù)寄存器暫存要傳送的數(shù)據(jù)。(1)數(shù)據(jù)結(jié)構(gòu) 對(duì)每類(lèi)字符設(shè)備分別建立字符設(shè)備表,記錄使用該類(lèi)字符設(shè)備所需的各種信息。(2)終端驅(qū)動(dòng)程序 字符設(shè)備種類(lèi)繁多,其驅(qū)動(dòng)程序各不相同,在這里以終端驅(qū)動(dòng)程序?yàn)槔齺?lái)講述Linux中字符設(shè)備驅(qū)動(dòng)程序的工作原理。 終端主要由鍵盤(pán)和顯示器構(gòu)成,終端驅(qū)動(dòng)程序控制終端設(shè)備和進(jìn)程之間的字符數(shù)據(jù)傳輸,包括以下5個(gè)操作: ttopen:打開(kāi)終端機(jī),建立終端機(jī)和終端進(jìn)程之間的對(duì)應(yīng)關(guān)系。 ttclose:切斷終端機(jī)和終端進(jìn)程的聯(lián)系。 ioctl:用于對(duì)終端機(jī)的控制,例如狀態(tài)設(shè)置、測(cè)試、終端機(jī)屬性 值的更改等。 ttread:從終端鍵

17、盤(pán)讀入數(shù)據(jù)。 ttwrite:向終端顯示器寫(xiě)數(shù)據(jù)。ttread過(guò)程 當(dāng)從鍵盤(pán)鍵入數(shù)據(jù)時(shí),終端中斷處理程序把鍵盤(pán)數(shù)據(jù)放入原始輸入緩沖隊(duì)列,同時(shí)送往輸出緩沖隊(duì)列,以便送到顯示器輸出,當(dāng)鍵入回車(chē)鍵時(shí),終端中斷處理程序,喚醒所有處于睡眠狀態(tài)的等待讀終端的進(jìn)程。當(dāng)一個(gè)讀終端的進(jìn)程執(zhí)行時(shí),由ttread調(diào)用行規(guī)則程序,從原始輸入緩沖隊(duì)列中依次取出字符,進(jìn)行必要的格式轉(zhuǎn)換后,放入標(biāo)準(zhǔn)輸入緩沖隊(duì)列,同時(shí),將輸出緩沖隊(duì)列中的字符送往顯示器顯示,然后把標(biāo)準(zhǔn)輸入緩沖隊(duì)列中的字符復(fù)制到應(yīng)用程序數(shù)據(jù)存儲(chǔ)區(qū)。如果當(dāng)前各原始輸入緩沖隊(duì)列中都沒(méi)有數(shù)據(jù),則ttread睡眠。ttwrite過(guò)程 對(duì)于ttwrite,它首先調(diào)用行規(guī)則程序,從應(yīng)用程序數(shù)據(jù)存儲(chǔ)區(qū)把輸出的數(shù)據(jù)送入輸出緩沖隊(duì)列,并對(duì)每個(gè)輸出字符進(jìn)行行規(guī)則處理。當(dāng)輸出緩沖隊(duì)列中的字符量大于某個(gè)上限時(shí),啟動(dòng)終端輸出數(shù)據(jù)并使寫(xiě)進(jìn)程睡眠。輸出使得輸出緩沖隊(duì)列中的字符存量減少,當(dāng)輸出緩沖隊(duì)列中的字符量小于某個(gè)下限時(shí),喚醒有關(guān)睡眠進(jìn)程執(zhí)行寫(xiě)操作。 行規(guī)則程序 行規(guī)則程序把數(shù)據(jù)按行(以回車(chē)為結(jié)束標(biāo)志)緩存起來(lái),并按標(biāo)準(zhǔn)格式或原始格式傳送數(shù)據(jù)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論