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的整个过程如下

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