曹娥做系统是如何感知事件的???

原创 2015年07月10日 08:28:06

我们知道,java中提供了事件机制,即:每一个动作,都产生一个事件。

那么,操作系统是如何感知事件的呢???

针对于一些问题:


问题:

1.“一般我们在开发窗体程序时,只需对按钮等绑定相应的操作事件监听,之后按钮就可以相应鼠标操作
但我想知道的是,操作系统底层又是如何知道按钮被鼠标点击了呢?

难道是操作系统对窗口中的任何元素都在毫秒级的监控着,比如监控按钮A,当发现按钮A上方有鼠标指针
这时就相当于监控到onmouseover,而当鼠标点击时,系统知道操作的对象是鼠标下方的按钮A,而不是其它按钮

不知正确否,请指点!谢谢 


2.如何看待java中的这一机制:即:  :::   动作-------》触发事件---->监听器:注册和处理事件???

现在理解这句话:点击该按钮是,JButton 对象触发一个ActionEvent,然后将它作为参数传递以调用监听器的actionPerformed()方法来处理这个事件。

其实,这是java自己的抽象。


要是深入的理解:

要点:只有从操作系统和汇编的角度,才能看透一些底层问题:

                    只有从操作系统的角度才能理解:

                 从汇编的角度: 那即是:     发出中断--------中断处理程序



()中断->鼠标驱动->raw input thread->应用程序的线程

()++这个是中断芯片控制的 打个比方你键盘 按下一个键 中断芯片就会发送一个中断信号给CPU 然后在发送一个中断量给CPU 然后CPU根据操作系统底层根据中断量跳转到预先设置的对应的中断任务( 至于怎么跳转这个涉及到段寄存器方面的知识 请自己去查了 三言两语说不清楚 ) 然后中断任务会去调用键盘或者鼠标驱动 ,然后形成一个事件 压入操作系统的事件队列 然后操作系统在分派给相应的应用程序线程


()CSRSS进程的线程RawInputThread 中 调用CreateFile() 

CreateFile 是个系统调用 

通过 sysenter 或者int 2e 进入内核模式  kiFastSystemCall 或(通过IDT) KisystemService 在ssdt索引

找到并调用NtCreateFile …  打开鼠标类驱动的设备\Device\PointerClass0

RawInputThread 执行ReadFile()  同样是个系统调用 …  进入内核模式的NtReadFile 

产生一个IRP_MJ_READ  然后WaitForSingleObject等在这里

IRP进入鼠标端口驱动i8042prt.sys 被挂入未完成队列

按下鼠标 ->设备中断  

进入IDT    中断号x4 获得获得中断门描述符地址

根据中断门里的段选择子 -> 在GDT中索引 ->得到段描述符->得到段地址 + 中断门里的 偏移

进入 KiInterruptTemplate  -> INT_PROLOG   … -> jmp KiInterruptDispatch@0

->call ServiceRoutine (由鼠标小端口驱动提供的中断服务例程)  调用鼠标类驱动提供的函数上交数据
  
鼠标类驱动完成IRP

NtReadFile继续执行 返回用户模式

RawInputThread得到鼠标位信息


按钮是个窗口

窗口的数据结构是 typedef struct _window_object {…}

里面有个MessageQueue  指向所属线程的报文队列结构 USER_MESSAGE_QUEUE  里面有七种用途的七个报文队列

报文队列结构 每线程一个  一个线程可以有多个视窗     一个线程中所有的窗口的窗口结构都 指向同一个报文队列

………………

按下按钮会触发postmessage 或 sendmessage(强制调用目标窗口的处理函数) 

postmessage把报文挂入 目标窗口的线程的报文队列  目标窗口通过getmessage得到  …………





网络态势感知系统

随着网络的普及,互联网上的各种应用得到了飞速发展,而诸多应用也对网络安全提出了更高的要求,网络入侵给全球经济造成的损失也在逐年迅速增长。2016年,网络安全形势愈加严峻,各种数据泄露、黑客入侵事件层出...
  • digihail2016
  • digihail2016
  • 2017年07月25日 09:40
  • 980

空间战场态势感知系统

现代战争强调C4ISR技术,指挥中心在千里万里之外,要通过信息化技术对整个海、陆、空、天、电磁战场进行全面的了解、掌握和指挥控制,那么传统指挥部里的行军地图、模型沙盘就已经不敷使用了。扁平化的战场上,...
  • digihail2016
  • digihail2016
  • 2017年02月23日 09:59
  • 1953

第12节 三个败家子(12)——关于曹睿同志的出身问题

曹睿,字元仲,甄夫人所出,曹丕嫡长子,后来的魏明帝。根据史书推断,他出生在建安十年(公元205年),死于景初三年(公元239年)。但是由于史料的局限性,还有甄妃一女二嫁的客观事实,很多人——尤其是现代...
  • cping1982
  • cping1982
  • 2008年05月29日 20:25
  • 3353

关于深度态势感知问题的思考

【摘要】人工智能研究的难点是对认知的解释与建构,而认知研究的关键问题则是自主和意识现象的破解。本文首先介绍了认知科学及态势感知发展的历程,回顾了人机交互中心理与认知学科的研究状况,指出了认知工程研究的...
  • VucNdnrzk8iwX
  • VucNdnrzk8iwX
  • 2017年11月17日 00:00
  • 263

上下文感知推荐系统

在推荐系统领域,人们往往只关注“用户-项目”之间的关联关系,而较少考虑它们所处的上下文环境(如时间、位置、周围人员、情绪、活动状态、网络条件等等)。但是在许多应用场景下,仅仅依靠"用户-项目"二元关系...
  • qq_17116557
  • qq_17116557
  • 2016年05月09日 21:29
  • 3103

QT的信号和曹详解

信号和槽机制是QT的核心机制,要精通QT编程就必须对信号和槽有所了解。信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方。信号和槽是QT自行定义的一种...
  • gouhexiong1989
  • gouhexiong1989
  • 2017年07月26日 16:25
  • 432

什么是态势感知?

Endsley 既然我们懂得了什么是以用户为中心的设计,我们就要更深入的了解态势感知(SA)这个词的含义。这一章可以比你预想的一本讲系统设计的书更加理论化,为了更好地了解我们所要达到的目标,透彻...
  • VucNdnrzk8iwX
  • VucNdnrzk8iwX
  • 2017年11月16日 00:00
  • 513

zookeeper作用

在Zookeeper的官 网上有这么一句话:ZooKeeper is a centralized service for maintaining configuration information, ...
  • LS44534286
  • LS44534286
  • 2016年08月18日 15:50
  • 184

基于态势感知的网络安全事件预测方法分析

机器学习应用在安全领域,尤其是各种攻击检测(对外的入侵检测与对内的内部威胁检测)中,相信很多人早已习以为常。当前机器学习应用的焦点在于能够及时检测出系统/组织中发生的攻击威胁,从而缩短攻击发生到应急响...
  • xumesang
  • xumesang
  • 2016年05月18日 15:43
  • 2922

人的视觉感知理论

人类信息处理的过程是一个一项重要的心理调节活动。通常,实际场景图像除了包含感兴趣的目标之外,通常还包含着大量干扰信息。认知心理学研究表明,在分析复杂的输入景象时,人类视觉系统采取了一种串行的计算策略,...
  • kexin1212
  • kexin1212
  • 2014年07月07日 16:42
  • 1221
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:曹娥做系统是如何感知事件的???
举报原因:
原因补充:

(最多只允许输入30个字)