IO與顯示器、鍵盤(哈工大李志軍)

在這裏插入圖片描述

外設的工作:

在這裏插入圖片描述
外設的寄存器的地址、內容格式都不統一,操作系統要給用戶一個簡單的視圖方便管理 ——文件視圖
驅動外設概括起來就是:創建文件視圖,CPU向外設發出指令(out指令),外設執行完畢後發出中斷,再讀數據到內存。

一段操縱外設的程序

在這裏插入圖片描述
在 linux 中一切設備皆文件。

文件視圖

在這裏插入圖片描述

printf()

在這裏插入圖片描述

  • wirte()是系統調用,調用sys_write(),傳入參數爲文件指針fd等於一,爲顯示,以及緩衝區buf
    在這裏插入圖片描述
    系統初始化時init()打開了終端設備,dup()是複製,tty0是終端設備。
    open:
    在這裏插入圖片描述
    open()把設備信息(dev/tty0)的讀進來備用。
    open_namei根據文件名字讀入inodeinode是存放在磁盤上的設備信息。
    flip存儲在進程的PCB中。
    在這裏插入圖片描述
    判斷inode中的信息是字符設備,調用rw_char,顯示器是寫設備傳入WRITE,傳入主設備號4,和從設備號0,找到對應的處理函數(crw_table[]是函數表)。
    在這裏插入圖片描述
    crw_table[]找到並調用rw_ttyx,又調用tty_write(),通過sleep_if_full往隊列(緩衝區)中去寫,如果隊列滿了則 sleep,如果沒滿:
    在這裏插入圖片描述
    從用戶緩衝區中讀取出一個字符(get_fs_byte()),將字符放入隊列中PUTCH(),再調用tty_write()
    在這裏插入圖片描述
    這裏從tty_table[]調用con_write(),從剛剛的緩衝區隊列中取出字符輸出到屏幕,接下來是彙編代碼,如果顯存和內存獨立編址則用out,這裏顯存和內存混合編址則用mov ax, pos
    在這裏插入圖片描述
    在這裏插入圖片描述

鍵盤

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
鍵盤是輸入設備,所以鍵盤中斷處理程序裏面對應着inb
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

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