找回密码
 注册
搜索
查看: 3247|回复: 23

[讨论] 谁能讲一下手机多任务处理的原理。

[复制链接]
发表于 2006-4-30 10:39:00 | 显示全部楼层 |阅读模式
比如: 正在编辑短信的时候,有来电呼叫。 处理来电呼叫后, 能继续编辑短信。
   原理是不是这样: 编辑短信的进程为A, 有来电呼叫后,A进程收到信号,fork一个子进程B
来处理来电呼叫,而A进程PAUSE.    B进程处理完后, A进程continue.
    这方面的开发设计,应该看哪些文档资料?
   
[此贴子已经被作者于2006-4-30 16:12:54编辑过]
发表于 2006-5-1 08:32:00 | 显示全部楼层
<P>一般来说收机的操作系统都是实时操作系统,不可能象unix那样动态的去创建进程和线程,基本上所有的操作需要在一个任务中完成,由于接电话和编辑短信不是一直在运行,他们都需要等待其他的资源,向电话要等待网络的资源,输入要等待键盘的消息,所以本身就是可以同时进行的,只是需要你安排好冲突就行了.</P>[br]<p align=right><font color=red>+3 RD币</font></p>
点评回复

使用道具 举报

 楼主| 发表于 2006-5-2 13:29:00 | 显示全部楼层
谢谢了。
  哪里有这方面的资料, 怎么入门?我以前在linux下编程。
点评回复

使用道具 举报

发表于 2006-5-4 17:11:00 | 显示全部楼层
我也是刚刚学的
不知道楼主所说的跟spooling技术有什么关系吗?
点评回复

使用道具 举报

发表于 2006-5-5 11:14:00 | 显示全部楼层
<P>楼主所说的并非进程,只是处理相应功能的handler,并不独立拥有资源,实现原理是信号的传递</P><P>比如楼主所举的例子,在短信编辑的edit_handler中收到一个incoming_call_msg_ind信号,edit_handler会对这个信号判断,无法处理则往下传递,直到cc_handler接到处理该信号,刷新出来电界面等,通话结束后再返回到edit_handler进行编辑处理,信号传递会携带信息,handler是通过一个stack来进行管理</P><P>这样说不知有没有说清楚,楼主要先确定在什么平台上进行开发然后阅读该平台的文档资料</P>[br]<p align=right><font color=red>+3 RD币</font></p>
点评回复

使用道具 举报

发表于 2006-5-8 16:33:00 | 显示全部楼层
<P>    正像楼上所说的, 手机的操作系统大都是实时的, 每个进程都有优先级, 优先级高的获得CPU资源, 最先被处理. 编译短信时, 运行的进程比如MMI, EDP,优先级都不高, 来电后会会激活物理链路层, 他们来处理来电信号, 再把消息通过网络服务组件送给上层, 由上层保存上下文, 显示来电, 电话结束后恢复上下文.</P><P>    个人理解如此.</P>
点评回复

使用道具 举报

发表于 2006-5-12 02:02:00 | 显示全部楼层
<P>所谓的多任务,实际上就是对并发事件的处理能力;</P><P>简单的单片机程序都是单任务系统.循环往复在做一件事情;</P><P>而多任务系统,则是能够"同时"处理多件事情,但是,在操作系统里面有一个时间片的概念;在某一时刻,还是只能处理一个事情;其实用到的原理和分时复用差不多;</P><P>系统对多件事情的处理(响应)是有优先级别的(系统设计者预先规划好的.)</P><P>里面涉及到一个任务表和调度问题.每一个待处理的事件到来后,系统程序都会把待处理请求写入任务表.系统程序在运行过程中会去查该任务表,然后依照任务表和调度之间关系去调动执行相应程序.</P><P>"<b>原理是不是这样: 编辑短信的进程为A, 有来电呼叫后,A进程收到信号,fork一个子进程B<FONT color=#ffffff>[52RD.com]</FONT>
来处理来电呼叫,而A进程PAUSE.    B进程处理完后, A进程continue</b>"这个理解还是单任务系统的处理思维方式.对一个任务,他并不是一次运行完,因为系统不可能一直处于等待状态(比如手机按键按号码,系统收号过程)此其间系统还必须处理其他事情.在每次循环过程中,只是处理一小部分.(尤其对于一个任务持续时间比较长而言).这就叫并发处理.</P><P>可以看看LINUX操作系统原理方面的书.应该有帮助的.</P>[em01][em01][em01]
点评回复

使用道具 举报

发表于 2006-5-12 10:49:00 | 显示全部楼层
<P>学习了!不知道看一些WIN32消息实现机制是否会有帮助?</P><P>我也要学习这方面的知识。。。。</P>
点评回复

使用道具 举报

发表于 2006-6-2 09:47:00 | 显示全部楼层
5楼的     顶,,,俺认为5楼的最合适~~~~~
点评回复

使用道具 举报

发表于 2006-6-2 15:35:00 | 显示全部楼层
<P>不太明白lz的意思。</P><P>如果是在智能手机中,短信的处理和电话的处理可以放在两个任务中,也可以在一个任务中,编辑短信本身是一个静态行为,应该不影响接打电话的操作,来电后直接显示电话处理界面就OK了。</P><P>如果在普通手机中,短信的处理和电话的处理在一个任务中,处理可以一样啊。</P>
点评回复

使用道具 举报

发表于 2006-7-19 20:15:00 | 显示全部楼层
不同的平台处理的方式应该不一样吧。我接触的是窗口的优先级来处理,CALL窗口的优先级较高。[em06]
点评回复

使用道具 举报

发表于 2006-7-25 19:18:00 | 显示全部楼层
11楼说得情况和我一样,我们也是call窗口的优先级最高。[em02]
点评回复

使用道具 举报

发表于 2006-7-28 18:07:00 | 显示全部楼层
呵呵
看看操作系统应该明白点。
点评回复

使用道具 举报

发表于 2006-8-3 14:51:00 | 显示全部楼层
你说的这个问题也不一定是多任务的问题,完全可以在一个任务里实现.只需要在来电的时候保存编辑短信的现场,等通话结束后恢复就可以了.当然也可以在多任务里实现.
多任务的原理,可以看看操作系统的书.多任务就是通过任务的优先级的高低轮流的占用CPU,高优先级任务运行过程中,通过任务的挂起释放CPU,使得低优先级的任务得以运行,当低优先级运行中,如果高优先级的任务准备就绪,可以强夺CPU的控制权.这就是任务的调度,调度的过程一般是通过TIMER中断来实现.
点评回复

使用道具 举报

发表于 2006-11-16 15:22:00 | 显示全部楼层
一般情况下, 界面的显示都是在一个任务内(MMI_TASK)
我们把与基站之间的交互抽象成一个任务(PS_TASK)的话, 就是说你在编辑短信时, PS_TASK向MMI_TASK任务发送一个消息,告诉MMI_TASK现在有来电, 那么MMI_TASK处理到这个消息时, 就弹出来电提示窗体, 因为MMI_TASK是顺序执行一条条消息的, 也不存在什么保护现场的要求. 任务间的切换是需要时间的,所以不可能像你想像的那样有那么多的任务.
点评回复

使用道具 举报

发表于 2006-12-14 22:57:00 | 显示全部楼层
<DIV class=quote><B>以下是引用<I>znw</I>在2006-11-16 15:22:00的发言:</B>
一般情况下, 界面的显示都是在一个任务内(MMI_TASK)
我们把与基站之间的交互抽象成一个任务(PS_TASK)的话, 就是说你在编辑短信时, PS_TASK向MMI_TASK任务发送一个消息,告诉MMI_TASK现在有来电, 那么MMI_TASK处理到这个消息时, 就弹出来电提示窗体, 因为MMI_TASK是顺序执行一条条消息的, 也不存在什么保护现场的要求. 任务间的切换是需要时间的,所以不可能像你想像的那样有那么多的任务.</DIV>

正解。你在编辑短信的时候,并不是MMI_TASK一直在独占CPU(这个名词可能不太贴切,暂且用它),具体说来:对于你每一次按键,都会产生一个中断,中断处理程序做简单处理(一般是激活KPD_TASK或者对于使用NUCLEUS的情况来说是HISR),然后KPD_TASK会向MMI_TASK发送消息通知其处理按键,MMI_TASK得到执行权后通常通过callback的机制一层层上来转到上层代码来处理,做完具体处理之后通常会调用display相关函数将要显示的东东转化成具体的像素数据写入display的screen buffer,然后就将执行权释放出来了,这个时候OS重新调度,负责display的TASK得到执行权后会根据screen buffer里的数据刷屏。当有电话呼入的时候,经过中断处理和相关TASK的数据处理以及消息传递等烦杂的过程之后MMI_TASK重新获得执行权,这个时候又是通过callback的机制一层层上来,通常会判断当前窗口的类型来做具体处理。总之,MMI通常只用一个TASK,当然不同平台会有不同的具体处理机制。
点评回复

使用道具 举报

发表于 2006-12-16 00:55:00 | 显示全部楼层
推荐各位看一看介绍uCOSII原理的书,上面对多任务实时操作系统的讲解十分透彻。
1. 多个任务一直在等待信号触发
2. 当前任务是所有已经被触发的任务中优先级最高的
3. 当前任务处理完一个信号事件后继续等待下一次信号的带来,在等待期间将CPU控制权交给下一个已经被处罚的任务(此任务在剩下的被触发任务中优先级最高)。
4. 每一个任务都可以看成一个无限循环,他们始终在等待触发信号的到来。
点评回复

使用道具 举报

发表于 2006-12-16 12:21:00 | 显示全部楼层
加分之聚议帖.
点评回复

使用道具 举报

发表于 2006-12-16 16:10:00 | 显示全部楼层
uCOS-II确实很适合入门。
不过对于手机这种比较复杂的嵌入式系统来说,uCOS-II太简单了。
看完uCOS-II之后还要结合自己所接触到的手机平台来深入了解。
点评回复

使用道具 举报

发表于 2007-1-17 15:54:00 | 显示全部楼层
erichain 说的比较清楚了, 上次一般只分配一个TASK,下面的可能依据平台而不同,一般call和SMS 都有相应的TASK. 至于在编辑短信时候来电话,然后还可以回去,怎么说呢, 本身这件事情和操作系统是没有关系的, 但是他们也需要操作系统来完成, 呵呵,现在的手机哪个没有OS. 编辑短信的时候来电话一般是上层处理, 如果平台的上层模块化比较好的话, 实现起来比较简单, 可以实现模块的动态运行. 撤远了......不是楼主说的,多任务呀,进程呀.大多手机上都是模拟PC的处理方法.
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-12-24 03:41 , Processed in 0.081871 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表