什麼是程式I/O?
它是I/O最簡單的形式之一,其中CPU必須完成所有工作。這種技術稱為程式I/O。
假設一個使用者程序想要使用序列介面在印表機上列印九個字元的字串“TUTORIALS”。
軟體首先在使用者空間的緩衝區中組裝字串,如下圖所示:

解釋
步驟1 - 使用者程序透過使用系統呼叫開啟印表機來獲取印表機進行寫入。
步驟2 - 如果印表機當前正被另一個程序使用,則此係統呼叫將失敗並返回錯誤程式碼,或者根據作業系統和呼叫的引數阻塞,直到印表機可用。
步驟3 - 一旦印表機可用,使用者程序就會發出系統呼叫,告訴作業系統在印表機上列印字串。
步驟4 - 作業系統通常將包含字串的緩衝區複製到一個數組中。
步驟5 - 然後它檢查印表機當前是否可用。如果不是,則等待直到可用。每當印表機可用時,作業系統就會將第一個字元複製到印表機的數 據暫存器中,在上例中使用記憶體對映I/O。此操作會啟用印表機。字元仍然不會顯示,因為某些印表機會在列印任何內容之前緩衝一行或一頁。
步驟6 - 在下圖中,我們看到第一個字元已列印,並且系統已將“U”標記為要列印的下一個字元。
步驟7 - 每當它將第一個字元複製到印表機時,作業系統就會檢查印表機是否已準備好接收另一個字元。
步驟8 - 通常,印表機有一個第二個暫存器,它提供其狀態。寫入資料暫存器的操作會導致狀態變為未就緒。
步驟9 - 當印表機控制器處理完當前字元後,它會透過設定其狀態暫存器中的某些位或在其中放置某些值來指示其可用性。
步驟10 - 此時,作業系統等待印表機再次變為就緒狀態。
步驟11 - 它列印下一個字元,如第三個圖所示。
步驟12 - 此迴圈持續,直到整個字串列印完成。
步驟13 - 然後控制權返回到使用者程序。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP