墓碑机制与中断处理机制(徐林峰)
2012-03-14 19:10
232 查看
上节课老师给我们介绍到了winphone的墓碑机制。听了一下winphone的墓碑机制的工作原理之后,我觉得其处理流程、工作原理、意图等都和我们曾经学过的操作系统课程中的“中断处理”很像。整个中断处理的过程如下:当CPU执行完一条现行指令时,如果外设向CPU发出中断请求,那么CPU在满足响应的情况下,将发出中断响应信号,与此同时关闭中断,表示CPU不在受理另外一个设备的中断。这时,CPU将寻找中断请求源是哪一个设备,并保存CPU自己的程序计数器(PC)的内容。然后,他将转移到处理该中断源的中断服务程序。CPU在保存现场信息,设备服务(如交换数据)以后,将恢复现场信息。在这些动作完成以后,开放中断,并返回到原来被中断的主程序的下一条指令。墓碑是微软为WP7切换应用程序状态的一种处理机制,以使用过程为例,当用户正在使用一个应用程序,比如游戏或者新闻阅读,这时有电话打进来,来电提示和通话页面将会在前台显示,正在运行的游戏就会消失,但是WP7不允许后台运行应用,这时候墓碑机制就会触发,游戏的运行状态包括画面、进度等等数据会冻结保存,相当于暂停,但是游戏确实没有运行,这也是墓碑名字的含义:应用程序已经死了,但是墓碑上记录有临终前的所有状态。当通话结束后,游戏操作系统会将应用程序进程重新启动,并将状态数据传递为应用进行恢复,这也相当于应用从墓地里面爬出来,并按照墓碑上记录的状态进行还原。在程序代码示例中,微软给出了单个应用程序的运行状态代码,共有四个App.xaml.cs文件,这些直接关系到执行模式的代码分别是Application_ Launching、Application_ Activated、Application_ Deactivated、Application_ Closing,分别是启动、复活(激活程序恢复状态)、停用(记录墓碑数据)、关闭(彻底关闭)。开发者们需要注意的是,在开发过程中需要使用微软给出的工具和相关代码才能让自己的应用支持墓碑机制,否则当用户正在使用的时候突然一个电话过来之后就得再次手动打开程序重头再来,这会让用户非常不爽。在早期的WP7系统中,微软并没有在程序不运行的时候将进程彻底杀死,而是将其暂停,但是这种情况导致了后台运行堆栈的混乱,API和事件触发经常会出现问题,所以微软才决定使用墓碑机制。不过完全实行墓碑机制将会影响到电话的某些功能,比如短信、即时通信、天气等需要时刻保持运行和更新的应用,微软同样给出了推送通知服务(Push Notification Services)的API,允许应用程序调用该接口保持实时更新。总得来说,我个人认为墓碑机制是放大了的中断处理机制。
相关文章推荐
- 中断处理的tasklet(小任务)机制-不过如此
- Linux内核中断处理的irq_thread机制
- 中断处理的tasklet(小任务)机制和workqueue(工作队列)机制
- 网络处理的软中断机制分析
- IA64 Linux 外部中断处理机制(转)
- 中断处理的tasklet(小任务)机制
- (原创)网络处理的软中断机制分析
- 中断处理机制与工作队列
- 网络处理的软中断机制分析
- Linux中断机制之一:硬件处理
- QNX驱动开发—中断处理,中断响应机制
- LINUX 中断处理机制的学习
- linux 中断机制的处理过程
- 一起来学嵌入式之ARM9中断机制-中断信号处理过程及实例
- linux 中断机制的处理过程
- Linux内核学习笔记五——中断推后处理机制
- linux 中断机制的处理过程
- windows mobile 的同步机制以及中断处理机制
- 深入剖析Linux中断机制之三---Linux对异常和中断的处理
- 中断处理--上下半部机制