- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 PAGE
第 PAGE 1 页 共 NUMPAGES 1 页
免责声明:图文来源网络征集,版权归原作者所有。若侵犯了您的合法权益,请作者持权属证明与本站联系,我们将及时更正、删除!谢谢!
Linu内核的键盘模拟实现研究论文
关键词:系统调用勾子函数键盘模拟
1引言
当前,由于Linux资源完全公开,使得Linux的发展日益广泛快速。基于Linux的各种应用已逐渐深入日常生活的方方面面,尤其是在嵌入式领域,由于内核可裁减定制,因此可随意地根据用户需求进行整个系统的定制与重构。其中,我们可以通过对各种标准外部设备的驱动进行改造,从而实现用户对标准设备的特定需求,例如可以通过对键盘的模拟来实现操作的自动化,从而可以避免重复的键盘操作。
2Linux内核支持的外部调用接口
由于Linux内核作为系统最深层次的核心,因此外部的开发人员并不能直接对内核进行操作。然而在一些应用程序的开发过程中,又不得不使用内核的某些功能,因此就提供了一些外部接口供开发人员直接与底层内核打交道。
2.1中断
在Linux下,硬件中断叫做IRQ(InterruptRequests)。有两种IRQ,短类型和长类型。短IRQ需要很短的时间,在此期间机器的其他部分被锁定,而且没有其他中断被处理。一个长IRQ需要较长的时间,在此期间可能发生其他中断(但不是发自同一个设备)。如果可能的话,最好把一个中段声明为长类型。如果CPU接到一个中断,它就会停止一切工作(除非它正在处理一个更重要的中断,在这种情况下要等到更重要的中断处理结束后才会处理这个中断),把相关的参数存储到栈里,然后调用中断处理程序。这意味着在中断处理程序本身中有些事情是不允许的,因为这时系统处在一个未知状态。解决这个问题的方法是让中断处理程序做需要马上做的事,通常是从硬件读取信息或给硬件发送信息,然后把对新信息的处理调度到以后去做。
实现的方法是在接到相关的IRQ(在Intel平台上有16个IRQ)时调用中断处理程序。这个函数接到IRQ号码、函数名、标志、一个/proc/interrupts的名字和传给中断处理程序的一个参数。标志中可以包括SA_SHIRQ来表明你希望和其他处理程序共享此IRQ(通常很多设备公用一个IRQ),或者一个SA_INTERRUPT表明这是一个紧急中断。这个函数仅在此IRQ没有其他处理程序或需要共享所有处理程序时才会成功运行。
2.2系统调用
系统调用发生在用户进程,通过一些特殊的函数来请求内核提供服务。这时,用户进程被挂起,内核验证用户请求,尝试执行并把结果反馈给用户进程,接着用户进程重新启动。一般当前系统的系统调用作为一张表sys_call_table进行定义的,是由指向实现各种系统调用的内核函数的函数指针组成的表。具体参数参见Linux内核源代码arch/i386/kernel/entry.S文件中:
ENTRY(sys_call_table)
llongSYMBOL_NAME(sys_ni_syscall)
/*0-old”setup()”systemcall*/
llongSYMBOL_NAME(sys_exit)
…
llongSYMBOL_NAME(sys_ni_syscall)
/*streams2*/
llongSYMBOL_NAME(sys_vfork)
/*190*/
2.3钩子函数
钩子(HOOK)是Linux系统中非常重要的系统接口,用它可以截获并处理送给其他应用程序的消息,来完成普通应用程序难以实现的功能。钩子可以监视系统或进程中的各种事件消息,截获发往目标的消息并进行处理。这样就可以在系统中安装自定义的钩子,监视系统中特定事件的发生,完成特定的功能,比如截获键盘、鼠标的输入,屏幕取词,日志监视等等。可见,利用钩子可以实现许多特殊而有用的功能。
3键盘工作机理
CPU对外部设备的管理是通过中断程序进行的,键盘也是一种外部设备,因此,CPU对键盘的管理也是通过中断进行的。当你击打键盘的时候,键盘控制器会向CPU提出中断申请,CPU响应此中断进行处理,这就完成了一次很简单与人之间通过键盘进行的交互。
首先,当输入一个键盘值的时候,键盘将会发送相应的scancodes给键盘驱动。一个独立的击键可以产生一个六个scancodes的队列。键盘驱动中的handle_scancode()函数解析scancodes流并通过kdb_translate()函数里的转换表(translation-table)将击
我们是专业写作机构,多年写作经验,专业代写撰写文章、演讲稿、文稿、文案、申请书、简历、协议、ppt、汇报、报告、方案、策划、征文、心得、工作总结代写代改写作服务。可行性研究报告,实施方案,商业计划书,社会稳定风险评估报告,社会稳定风险分析报告,成果鉴定,项目建议书,申请报告,技术报告,初步设计评估报告,可行性研究评估报告,资金申请报告,实施方案评估报告
文档评论(0)