日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

管道过滤器

發布時間:2024/3/12 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 管道过滤器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

管道-過濾器體系結構模式為處理數據流的系統提供了一種結構

工業中的流處理系統-水處理系統

?

整個系統分為多個處理單元,由管道將多個處理單元連接起來;管道用來輸送流,處理單元用于流的加工和處理;流從一個處理單元出口輸出, 經過管道輸送到下一個處理單元的入口,經過每個處理單元的加工處理,最后由輸出管道輸出到使用地。 ?軟件系統中管道-過濾器結構的應用操作系統UNIX系統中,可以將某個命令的標準輸出與另一命令的標準輸入相連。 ?語法:命令1 | 命令2 | 命令3 | … | 命令N ?例如:ls –l | moreWindows ?Dir? *.exe |?sort > exe.txt –軟件系統中管道-過濾器結構的應用傳統的語言編譯器 ?結構描述數據流的處理過程分成幾個順序執行的處理步驟,每個處理步驟由一個過濾器組件實現。每個過濾器組件有一組輸入和一組輸出。每個過濾器組件都會對輸入的數據采用漸進方式進行局部處理,一個過濾器組件的輸出是下一個過濾器的輸入。系統的初始數據流由數據源(DataSource)輸入,系統的處理結果數據流輸出到數據池(Data Sink)。數據源、過濾器和數據池由管道pipe順序連接起來,每個管道承擔相鄰過濾器之間的數據傳輸。 ?主要組成:過濾器Filter數據源Source數據池Sink管道Pipe ?過濾器Filter封裝數據處理功能的功能單元,是管道-過濾器結構中的主要處理單元。每個過濾器組件有一組輸入和一組輸出,從連接它的輸入管道中讀取數據,數據經過加工處理,輸出到連接它的輸出管道 ?過濾器Filter3種激活方式 ?pull拉出式后續組件從當前過濾器中拉出數據。 ?push推入式前鄰組件向當前過濾器推入數據。 ?主動過濾器ActiveFilter激活狀態下,以循環方式不斷從前鄰組件中拉出數據,并向后續組件推入數據。 ?管道Pipe管道是相鄰過濾器之間的連接。連接兩個主動過濾器的管道是一個先進先出的緩沖器,用以完成同步。連接被動過濾器的管道可以通過對被動過濾器的調用來實現。 ?數據源DataSource數據源是系統的輸入。向系統提供相同結構或類型的數據序列。如標準輸入流、文本文件或傳感器采集的數據等。數據源可以主動把數據推入過濾器,也可以在過濾器需要數據時被動地提供數據。 ?數據池DataSink匯集系統處理的結果數據。如文本文件、數據庫、標準輸出等。主動數據池把過濾器的結果拉出來,而被動數據池等待過濾器把結果推入進來。 ?實現的主要步驟 1.把系統任務分成幾個獨立的處理階段。 2.定義沿著每個管道傳輸的數據格式。 3.決定管道的連接。 4.設計和實現過濾器。 5.設計出錯處理。 6.建立、處理流水線。 ?步驟1:把系統任務分成幾個獨立的處理階段。每個處理階段完成一個獨立的處理功能。每個處理階段必須只依賴其前一階段的輸出。 ?步驟2:定義沿著每個管道傳輸的數據格式。如果整個系統定義統一的數據格式,則使得過濾器組件的重組變得容易,系統可以獲取極大的靈活性。但是,單一的數據格式在某些情況下,在不同的過濾器組件擇偶觀需要頻繁進行格式轉換,大大降低了系統的數據處理效率。如果需要選擇不同的數據格式,又需要一定的靈活性,則需要在系統中建立專門的格式轉換過濾器組件。 ?步驟3:決定管道的連接。首先,需要確定把過濾器作為被動過濾器還是主動過濾器來實現。被動過濾器的連接簡單,一般直接使用調用來拉出或推入數據即可。需要注意的是,重組和替換過濾器組件時必須設計代碼修改,另外這種過濾器難以獨立開發和測試。使用主動過濾器,可以借助管道的同步化分離機制提高系統的靈活性。如果所有的管道都使用這種方式,系統的過濾器可以做到隨意重組。 ?步驟4:設計和實現過濾器。過濾器的設計必須同時考慮需要完成的任務,和與它相鄰的管道 ?如果是被動過濾器,拉入數據可以通過函數(function)實現,推出數據可以通過過程(process)實現。如果是主動過濾器,可以實現為線程(Thread)。 ?過程1之間和在地址空間之間的數據復制的需要,會影響到系統的性能;因此,管道緩沖區的大小是一個值得考慮的附加參數。在多個關聯轉換和數據復制總開銷一定情況下,使用小的主動過濾器組件,可以獲得較高的靈活性。 ?為了方便重用過濾器組件,需要控制過濾器組件行為時,可以通過下列常用方式將參數傳遞給相應的過濾器組件:在命令行傳遞參數。在啟動過濾器組件時,讓過濾器使用可以訪問得到的全局環境或者倉庫2,這些可以通過操作系統、配置文件或者shell程序來支持實現。 ?設計和實現過濾器時,要注意靈活性和易用性的均衡,一般一個過濾器只需做好一件事即可。 ?步驟5:設計出錯處理。管線(pipeline)上的組件不能共享全局狀態,但錯誤可以探測到。 ?例如,在unix系統中,為錯誤消息定義了一個特殊的輸出通道stderr1;但是,當多個過濾器組件并行運行時,stderr會以不可預測的方式混合來自不同過濾器組件的錯誤信息。錯誤處理實現比較困難。 ?如果一個過濾器組件在輸入數據中探測到錯誤,它可以忽略后面輸入的數據,直到明確的分隔符出現為止。因此,當可能會有不可預料的輸入數據時,如果允許容忍不精確的結果,這種錯誤處理的方法還是很有效的。 ?重啟系統,希望繼續運行 à再同步問題 à 添加固定標識。 ?步驟6:建立處理流水線如果系統只需處理單一任務,可以用一個主程序來創建管道流水線,由主程序調用主動過濾器啟動處理過程。增加靈活性: ?通過提供shell程序或用戶終端工具,使用它們從你的過濾器組件集中裝配出不同的流水線。 ?如果允許中間處理結果存放到文件中,并支持把文件作為后續組件的輸入,這樣可以支持流水線的增量式開發。 ?如果系統中的過濾器嚴格限制為單輸入、單輸出,則這種結構的系統被稱為管線或流水線(pipeline ?如果允許過濾器的輸入或輸出多于一個,這種系統的結構可以用一個有向圖表示。這種系統的結構需要經過嚴格的理論分析,以保證系統可以終止和輸出正確結果。 ?在過濾器之間使用命名的管道(如文件)傳送數據,這種系統稱為有名管道。有名管道限制過濾器之間數據傳送只能在命名的管道中,給系統的維護和重組帶來了困難。 ?優點系統易于重組,增加了系統的靈活性。系統易于更新、升級和維護。過濾器組件易于重用。并行處理提高了系統的效率。支持快速原型系統的設計和實現。系統具有清晰的拓撲結構,方便進行某些系統性能的分析。 ?缺點管道-過濾器結構會經常導致數據的批處理方式。管道-過濾器結構不適合處理交互式應用要求。數據轉換增加了系統的開銷和復雜性。共享狀態信息代價高且不靈活。用并行方式獲得高效率往往不可行。難于進行錯誤處理。

?

?

總結

以上是生活随笔為你收集整理的管道过滤器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。