14 I/O與顯示器

I/O設備就是指計算機的外設,比如鍵盤、顯示器、磁盤(抽象出文件)、打印機等

讓外設工作起來,CPU發出指令給驅動的一個寄存器,比如磁盤控制器的寄存器、顯示器就是顯卡上的寄存器(顯存)。以顯示器爲例,顯示器根據顯卡中的信息來讓顯示器工作。所以讓外設工作,只需要向對應的寄存器發送指令,完成操作。外設去做對應的工作,外設服務程序執行結束後向CPU發送一箇中斷通知外設讀寫完成了,CPU進行中斷處理進行後續處理,。

類似於out XXX,al這樣的指令就是發指令給外設的寄存器,讓外設工作,然後等外設完事後寫中斷處理程序。如下圖所示

由於向設備控制器的寄存器發指令需要查寄存器地址、內容的格式和語義等,對於用戶來說非常麻煩,所以操作系統要給用戶提供一個簡單視圖-文件視圖,這樣方便

文件視圖:
看一段操作外設的代碼

int fd=open("/dev/xxx");
for(int i=0;i<10;i++)
{

      write(fd,i,sizeof(int));
}
  close(fd);

首先需要打開外設的文件——/dev/xx。不同的文件對應不同的設備文件。根據設備文件找到控制器的地址、內容格式等
操作顯示器就是向顯存write內容,鍵盤是reed。不論什麼設備都是open、read、write、close操作。這就是操作系統爲用戶提供的統一接口。

統一的文件視圖如下所示

顯示器的輸出從printf開始:

先創建緩存buf將格式化輸出都寫到那裏,然後再write(1,buf).1就是顯示器的設備標誌
open是建立了一個文件指令與目標設備的鏈接

printf的整個過程如下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章