移动多任务处理

Daniel Eran Dilger在Apple Insider

Other platforms have enabled multitasking by simply allowing any number of apps to runThis results in a mess for users because it’s up to them to manage which apps are running out of control or needlessly chewing up resources in the backgroundAndroid and Windows Mobile are both notorious for needing TasKiller or some other sort of manual process manager to keep battery life and performance in check.

I believe he’s right about Windows Mobile, but that’s no matter because Microsoft has abandoned Windows Mobile, and Windows Phone 7 will apparently ship with no multitasking, and, whenever multitasking eventually does appear in Windows Phone, it won’t be like that但是迪尔格对于Android来说是完全错误的我知道,在桶里射鱼,但我认为值得澄清一下如果你想了解当前的移动领域,从广义上讲,苹果为iPhone OS 4推出的产品与Android的多任务处理模式非常相似是至关重要的。在iPhone OS 4和Android中,用户永远不需要手动退出应用程序 - 当系统内存不足时,它会自动退出最近最少使用的后台应用程序以释放更多内容。

现在,确实存在 Android电子市场中的任务管理器应用但他们没有必要Android系统不附带一个,不需要一个我强烈怀疑谷歌的Android团队对这些任务管理器应用程序在市场上感到恼火,因为它们的存在给人的印象是它们是必要的或有用的我在Nexus One上花了几周时间,后台应用程序不会降低系统速度,也不需要手动退出。

There are a lot of things I like better about the iPhone than Android然而,多任务架构一直是Android的优势,我认为iPhone OS 4在这方面几乎可以使它们处于平等地位。那里技术差异,但他们的差异很小而不是大的。

在Android和iPhone OS 4上,非最前端的应用程序可以在后台运行,但时装有限它不像在Mac OS X或Windows上,后台应用程序继续运行,就像它们在前台一样在iPhone OS 4上,后台的应用程序 - 那些支持苹果公司用语“快速应用程序切换”的应用程序是有效的暂停它们仍然在RAM中,但它们无法获得大量的CPU时间但他们可以做的是使用系统中有限数量的API来执行某些任务 - 到目前为止,这两个例子是播放音频(Pandora)和接收/维护VOIP呼叫(Skype)。

人们可以争论哪个平台,Android或iPhone OS 4具有更好的多任务系统Maybe Android’s system is still better; my hunch is that Android allows background apps more freedomMaybe the iPhone’s system is better; there are some fascinating technical details, like how街区和Grand Central Dispatch现在可用于并发和后台任务(无论您如何看待iPhone OS 4的多任务模型,都不要误以为它很简单;这是最先进的计算机科学。)1In the end, I suspect opinion on the differences between Android and iPhone multitasking will fall along the same lines of the general question of Android-vs.-iPhone — Android offers a bit more freedom to developers, iPhone is more controlled and orderly, and tries to guarantee a more responsive system for the user.

But the differences in multitasking between the two are arguments about fine details, not the big picture.

新的优先事项

最大的不同是传统操作系统的跳跃在Mac OS X和Windows等传统系统上,流程背后的基本思想是,一旦运行,它将一直运行,直到流程本身退出在像Mac和Windows这样的桌面系统上,这通常意味着用户告诉应用程序退出(或者,在Windows白话中,“退出” - 同样的事情)用户可以执行诸如调用系统范围的“关闭”或“注销”命令之类的操作,然后系统将向所有正在运行的应用程序发送退出事件 - 但这仍然由用户管理这是用户告诉所有应用程序立即退出的一种方式即便如此,每个应用程序仍然可以在退出途中做任何想做的事情它是建议退出所有的Mac用户都熟悉“嘿,这个应用程序不能立即退出,你有未保存的更改打开文档”对话框。

在这个传统模型中,如果应用程序尚未准备好退出,它可以拒绝或者,如果它在退出时需要经过漫长的一分钟长时间的保存操作,它就可以这样做是的,您可以强制退出任何此类操作系统中的应用程序,但是当您这样做时,它更像是强制应用程序崩溃当您强制退出Mac上的应用程序时,它是异常的。

Mac OS X,Windows和桌面Linux等操作系统也使用这种情况交换- 当物理RAM运行不足时,操作系统将开始分页内存块以存储在磁盘上Relative to each other, RAM is fast and expensive; storage is slow but cheap与交换的权衡是你假装你的机器有比实际更多的RAM,但它比仅使用真正的RAM慢得多。

在实际使用中,Mac OS X永远不会“耗尽内存”如果您继续打开越来越多的应用程序和文档,它将会变慢,使用越来越多的交换最终它会放慢到无法使用的程度但它不会报告内存不足这笔交易是:你启动一个应用程序,它会运行,它会一直运行,直到它(应用程序)准备好退出,内存(和响应能力)被诅咒。

以iPhone和Android等移动系统为例的新型号是用户不会手动退出应用程序您,用户,只需打开它们,然后系统就会负责管理它们你甚至不必理解退出应用程序的概念 - 事实上,你最好不要担心它没有交换,所以当内存不足时,必须给出一些东西如果应用程序位于最前端,则它正在运行如果它不是最前面的,它可能会继续以有限的方式运行,但系统可能随时拔掉它以回收它的内存。

最初的Mac OS - 从20世纪80年代开始 - 也缺乏交换当内存不足时,它只会拒绝启动更多应用程序您将看到一个对话框,告诉您没有足够的可用内存来启动应用程序,并且您(用户)需要退出其他正在运行的应用程序以释放额外的内存。

新方法是重新考虑流程的基本交易在旧模型中,已经启动的进程优先 - 一旦运行,它们就会保持运行在新模型中,用户的意图得到优先考虑您按下主页按钮,您将立即看到主屏幕,是否已准备好关闭正在运行的应用程序如果你想打开另一个应用程序,它会立即打开,即使系统必须在后台拔出应用程序上的插件以释放足够的RAM。

在iPhone和Android上,应用程序不会决定何时退出他们必须随时准备在短时间内退出在当前版本的iPhone OS中,当用户点击主页按钮时,第三方应用程序将退出用户可以随时点击主页按钮该系统有效地告诉最前面的应用程序,“好的,你已经完成”,应用程序有一些时刻来保存状态或清理但是在那些时刻之后,如果应用程序仍然很忙,那么太糟糕了 - 系统将其杀死。

即使使用iPhone OS 4的“多任务处理”,应用程序也必须随时可以随时退出当系统在可用RAM上运行不足时,它将开始退出在后台打开的应用程序,当它这样做时,它不会等待它们“做某事”。2Android也是如此这是多任务系统工作方式的根本变化它的工作原理是因为这些系统的应用程序是从头开始编写的,以包含这个模型。

很可能这个模型是暂时的 - 这是这些设备中相对限制的RAM量的一个因素在不太多年的某些时候,我们将拥有iPhone和iPad以及具有千兆字节RAM而不是兆字节的Android设备,此时,我们可能会回归到更持久的多任务处理模式但从短期来看,这不会改变并且无论未来设备包含多少RAM,在启动或切换上下文之前让用户等待再也不会被接受。

在传统模型中,首要任务是保持一切开放在这个新模型中,主要优先级是系统必须始终响应用户没有等待交换使用大量CPU时间的后台进程不会导致速度减慢。

您知道Mac OS X有哪些iPhone OS缺失?SPOD


  1. 当Apple引入块和Grand Central Dispatch时,他们主要是为了解决如何通过添加更多并发核心来处理计算机变得“更快”的世界的问题,而不是每18个月简单地加倍速度GCD对于单核系统(例如所有当前的iPhone OS设备)上的并发编程很有用,但是将GCD添加到iPhone OS 4让我想到了一个多核版本的A4处理器(And I suspect the iPhone OS 4 kernel is pretty similar to the Snow Leopard kernel.) ↩︎

  2. 事实上,在iPhone OS 4上,我相信后台应用程序甚至在它们被杀之前都没有得到片刻的警告如果应用程序想要保存状态,则必须在系统通知它进入后台后立即执行此操作一旦它the background, it won’t get a warning before it’s killed. ↩︎