所有栏目

有谁知道键盘缓冲区的作用

已输入 0 字
优质回答
  • 首先从原理上解释一下键盘驱动工作原理,当我们GETCHAR的时候,实际上是用户态程序要求读键盘的内核态的缓冲区(在LINUX系统里其实是个队列),然而这时候该缓冲区内为空(那么该进程SLEEP,也就是您说的屏幕等待状态),这时如果你按下键盘,通过键盘中断驱动程序,把你输入的字符载入内核态的键盘缓冲区(入队列),同时唤醒因为读该缓冲区而SLEEP的进程.读取该字符后,因为是在内核态,而我们GETCHAR()函数就是把内核态内的数据,转移到用户态,内核台缓冲区因字符被读取而出队列(如果无其它情况,键盘的内核缓冲区队列为空),GETCHAR()函数是通过系统调用来实现的,该函数最终肯定是以RETURN来返回结果,而在我们调用GETCHAR()函数后,RETURN的结果以被放入寄存器中.

    2023-10-24 20:44:46
最新问题 全部问题