3.22系统IO与显示器和键盘
date | comments | categories | tags | permalink | title | |||
---|---|---|---|---|---|---|---|---|
2020/3/6 |
true |
|
|
3.22 |
I/O与显示器和键盘 |
操作系统把一切外设都映射为文件,被称作设备文件(相对于我们常见的磁盘文件)
而常见的设备文件又分为三种:
- 字符设备 如键盘,鼠标,串口等(以字节为单位顺序访问)
- 块设备 如磁盘驱动器,磁带驱动器,光驱等(均匀的数据库访问)
- 网络设备 如以太网,无线,蓝牙等(格式化报文交换)
以printf("hello world");为例说明这行代码是如何在控制台输出字符的.
这里的sys_write第一个参数是从父进程(shell)拷贝而来.
从上图可以看出,每个进程(PCB)都有一个自己的file_table,存放inode
如上面图中所示,通过一系列函数的调用,最终在内存的指定位置(显存)写入了我们要打印的字符(包括字符的属性),然后光标移动一个字符(pos+=2);
键盘相对简单,操作系统收到来自键盘的信号,把信号与ascii码表进行对比,从而得到用户的输入内容。当然这个过程一般会回显在显示器上,不再赘述。