您现在的位置是:首页 > 服务器相关

操作系统设计之终端模块理论

batsom2021-11-07服务器相关

简介操作系统设计之终端模块理论

                                        输入部分
键盘的敲击过程:
在键盘中存在一枚叫键盘编码器的芯片,它通常是Intel 8048以及兼容芯片,作用是监视键盘的输入,并把适当的数据传送给计算机。另外,计算机主板上还有一个键盘控制器用来接收和解码来自键盘的数据,并与8259A及软件等进行通信!

敲击键盘有两个方面的含义:动作和内容。

其中动作可以分解为三类:按下,保持按住的状态,放开
内容则是键盘上的不同的健:字母键,数字键,回车键还是箭头键。所以根据敲击的动作产生的编码,8048既要反映"哪个"按键产生了动作,还要反映产生了"什么动作"

敲击键盘产生的编码叫做扫描码(scan code),它分为Make Code和Break Code两类,当一个按键被按下或保持住按下时,会产生Make Code,当按键弹起时,产生Break Code。除了Pause键之外,每一个按键都对应一个Make Code和Break Code。

当8048检测到一个按键的动作时,会把相应的扫描码发给8042,8042会把它转换成相应的Scan code set 1扫描码,并将其放置在输入缓存区中,然后8042告诉8259A产生中断(IRQ1)。如果此时键盘又有新的键盘被按下,8042将不会处理,一直到缓冲区被清空,8042才会收到更多的扫描码!




                                        输出部分
TTY(终端)部分:
暂时只研究80*25文本模式(电脑开机默认模式)
在这种模式下显存大小为32K,占用范围为0xB8000-0xBFFFF,每两个字节代表一个字符!其中低字节表示字符的ASCII,高字节表示字节的属性(颜色).一个屏幕总共可以显示25行,每行80字符!

寄存器:
VGA系统有6组寄存器,这些寄存器只有一个端口0x3D5
使用:由于只有一个端口,需要用到Address Register了,我们需要先向Address Register写入索引,然后在通过端口0x3D5进行操作,如果我们把Data Register比作数组,那么Address Register就相当于数组下标!
举例:如果我们想吧idx寄存器改为value:
out_type(0x3D4,idx)
out_type(0x3d5,value)

终端任务(多个TTY):
循环程序轮询每一个终端,处理该终端的事件,包括:从键盘缓冲区读取数据,显示字符串等!


论询程序也就做了两件事:
处理输入:查看是不是当前终端,如果是则从键盘缓冲区去读数据!
处理输出:查看有无显示的内容!

郑重声明:

本站所有活动均为互联网所得,如有侵权请联系本站删除处理

随便看看

文章排行

本栏推荐

栏目更新