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
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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