安卓操作系统和苹果操作系统的比较研究1两个系统的描述1.1安卓1.1.1发展历史2003年6月,安迪鲁宾创办了安卓公司。
(Elgin,2005)他的目标“为所有软件设计者设计一款移动手持开放平台”。
(Markoff,2007)2005年7月,谷歌以不明价格购买安卓公司。
(Olsen,2005)在谷歌安迪鲁宾被称为“移动平台先驱”。
(Markoff,2007)随着开源的安卓平台的不断发展,这样一个软件栈将对实现低成本开发和分发的移动设备和服务具有重要意义,2007年11月5日,开放手机联盟宣告成立。
(Open Handset Alliance,2007)显然,该联盟是被谷歌所领导的。
2008年10月21日,谷歌和开放手机联盟发布了Apache许可下的整个安卓平台源代码。
根据谷歌安卓产品经理Erick Tseng的介绍,这个发布时间是被专门设计好的,就在第二天,第一款“谷歌手机”G1由T-Mobile发布了。
(Boulton,2008)从10月21日公布安卓平台代码以来,一共有三次重大更新,到今年一月份,版本已经更新到了2.1(Android Developers,2010a)这三次重大更新增加了许多了特性,包括:屏幕键盘,视频录像,立体声蓝牙(Android Developers,April),虚拟私人网络,可接入性(Android Developers,2009),互动支持,HTML5支持(Android Developers,2010b)等等。
谷歌相信在全世界范围内至少还有8至9家手机生产商的18款手机在使用安卓操作系统。
(Richtel,2009)1.1.2硬件执笔之时,Nexus One已经成为了运行安卓操作系统最新版本的手机。
Nexus One配置着主频1GHZ的高通骁龙处理器和600MHZ的数据信号微处理机,并且在发射版上拥有4个频段GSM/GPRS/Edge, UMTS, HSPA.内置4GB DDR内存和4GB闪存的存储空间,它还配备了一个用户可更换的4GB SDCard.除了是一个四频手机Nexus One还带有一个调频发射机/接收机,Wi-Fi(A, B, G & N)和2.1+增强速率蓝牙,屏幕是3.7英寸,运行在480x800的分辨率和多点触控,它内置一个配备LED补光灯的5百万像素的摄像头,加速度计,指南针,全球定位系统,双麦克风降噪,外部扬声器,防震,1400毫安电池(iSuppli, 2010)(加兰)(高通)。
它只在两个地方公布了拆卸后的信息,而且没有这些规格包含任何信息的总线速度的处理器,我怀疑这仅仅因为骁龙只是单片机,所以尚未公布这些规格。
1.1.3线程管理,中断,进程间通信,系统调用安卓操作系统有一套相当精细的线程系统,为建立一个线程安全的应用,开发人员需要承担许多职责。
通常情况下,包括UI在内的应用程序都是单线程的。
这意味着一个应用中所有“长时间运行”的任务必须分离出后台进程。
(Android Developers(a))然而,这比刚才更复杂。
该系统的应用被认为由四个模块组成。
这些模块为活动窗体,或应用程序的所有用户界面元素,服务(即执行所有后台工作的线程)、,广播接收器(即基本的监听器,它允许一个应用程序响应系统或应用程序的事件),和内容提供者(即数据集,这是应用程序可以提供给其他应用程序的数据。
进行分享的一个主要原因,是安卓操作系统鼓励应用程序重用被其它应用程序提供的组件,从而减少重复的编码(Android Developers(b)).在大多数情况下,应用程序被认为是基于在活动窗体上目前正在显示和基础设施在后台完成绑定的任务。
然而,对于这种内部模型也是有一些危险的,其中最突出的是,改变屏幕的定向销毁和在线的活动窗体,是当前最先显示的。
如果开发人员不小心,这个过程会将背景从用户界面线程中分离。
(Bruke,2009).安卓操作系统广泛使用事件处理中断,进程间通信和系统调用需要一个前沿应用。
详细说明可以在(Android Developers(c)) 找到它是如何工作。
然而,简要概述如下:一个应用程序初始时激活onCreate,onStart和onResume方法,如果在任意一点,另一个窗体覆盖到这个应用程序的任一部分,将会触发onPause方法。
安卓操作系统强烈推荐应用程序在没被杀死以前保存当时状态,不然就再也没有机会了。
如果onPause方法调用后,如果整个应用程序不可再见onStop其次调用,onDestroy方法作为应用程序完全关闭。
然而,onStop和onDestroy可能会在系统资源低的时候自动调用。
操作系统此时会单纯的结束应用程序。
这一基本概念创建事件和它们在适当的时候才用的方法是由操作系统之间传递数据的线程在一个单一个应用。
如果有必要通过应用程序之间的信息就要通过内容提供者来传递。
系统调用有一点复杂。
其中一些是通过相同的接口,提供给应用程序。
其他都是通过查询内置类的,比如android.location.location类提供了访问当前坐标。
1.1.4存储管理安卓操作系统时建立在Java垃圾回收机制上防止内存泄露的。
然而,这是真正的和所有语言包括垃圾回收机制是没有装甲保护内存泄露。
因此,操作系统的文件提供了一些帮助,如何避免这些情况,将泄露的内存甚至和垃圾收集器(Android Developers (e)).然而,由于低等级,内存管理是由内核本身控制的。
(version 2.6) (Android Developers (f))1.1.5网络支持/电源管理系统正如内存管理的低层次的细节处理那样也是由Linux系统内核。
(Android Developers (f))在目前发布的手机有WiFi A/B/G/N和蓝牙作为主要的网络功能。
对于电源管理,用的是内核功能,有了一些优化,增加了电池的使用寿命。
在特定的操作系统将试图减少功率消耗的每一个机会,但它也提供了一些API开发,允许他们重写此行为如果绝对必要时。
(Android Developers, 2010c)1.1.6软件开发包(包)该软件的操作系统是现成的开发者的网站,以及广泛的文档说明如何安装和使用它。
插件也由主流的IDE Eclipse提供(Android Developers, 2010d).将应用程序放入安卓应用超市需要设立一个账户,并且支付25美元给谷歌,并上传您的应用。
进一步的步骤可能需要当你想卖你的应用(Android Market).1.2苹果IPhone1.2.1发展历史苹果闻名的秘密使得任何企图得到发展历史相当困难,而且保证了它将是不完整的。
然而,什么是知道的是,在二月的2005史蒂夫·乔布斯开始秘密否定的,(now AT&T),最终导致A T&T公司有美国独家合同的关系。
2006年初,苹果开始修改OSX进程成为IPhone 操作系统平台。
根据了解,他们将不得不从目前的OSX减少大小几百兆字节数千兆字节。
在接下来的一年半的苹果公司花费数百万建立测试环境,建筑的硬件和软件将要制造IPhone。
苹果是如此痴迷保密,他们不允许硬件和软件团队互动。
2007年1月史蒂夫·乔布斯宣布拥有苹果。
(V ogelstein, 2009)2007年5月17日苹果公司收到的FCC批准出售手机。
(AppleInsider Staff, 2007)2007年6月29日,苹果开始在美国销售。
(Block, 2007)当时苹果发布的IPhone只有网络应用软件的支持,一个目录超过200网络应用程序可用,(Gonsalves, 2007)2007年10月17日,迫于公众压力,史蒂夫·乔布斯宣布苹果打算公布一个软件开发工具包,允许本地应用程序的软件。
(Kim, 2007)三月首次发布以来已经发生了一些重大的里程碑式的操作系统。
2.0版本的软件允许应用程序通过软件开发工具包来创建,一个应用程序商店,和交换支持。
(Keizer, 2009)3.0版本增加了复制和粘贴,手机搜索,立体声蓝牙,摇一摇,语音备忘录,彩信,(Moren, 2009)等。
1.2.2硬件在写这篇文章之时,IPhone 3GS是最新的IPhone。
该处理器在它是一个600MHZ的ARM Cortex A8,与256层缓存和多方案/汇流排。
它有一个令人印象深刻的射频能力建。
它具有通用移动通信系统/ HSD PA在850,1900和2100兆赫波段,GSM/EDGE的850,900,1800和1900兆赫波段;它有Wi –Fi B&G,和蓝牙2.1+工作。
它有一个3.5英寸480X320多触摸屏,平均每英寸有163点。
它有一个300万像素的摄像头,内置指南针和全球定位系统,256 MBRAM,要么16G或32G的内部存储(没有外部存储)(RapidRepair)也有1219毫安电池,内置麦克风,扬声器,耳机和防震。
(Dr.Wreck, 2009)1.2.3线程管理,中断,进程间通信,系统调用IPhone 操作系统有着所有操作系统视为标准的线程管理技术。
你可以繁衍大量子线程和同步使用所有的常用技术,如:互斥,读写锁,分布式锁等。
(Apple, 2009b) (Apple, 2009a) 然而苹果公司强烈建议使用线程这种方式。
他们认为,直接对线程进行编程太难,而可以作出更有效的让操作系统处理线程的管理。
所以推荐使用操作队列。
这些队列你分派任务和操作系统所需的线程的工作让它启动,这使得操作系统更有效地处理线程负载和任务处理。
(Apple, 2009c)IPhone操作系统允许两种不同方式处理中断。
首先是UIApplicationDelegate协议,允许应用程序通知一系列活动窗体并采取适当的行动。
一些行动响应可以完全加载,低内存警告,方向改变,即将被停用等。
(Apple, 2009d)另一种方式是低等级建设,可以更复杂的使用。
它是NSNotification类,这个类允许你通知任何中断,或其他自定义发生在操作系统的活动窗体。
然而,你要想了解的活动窗体正是你特此寻找和捕捉的。
(Apple, 2007)IPhone操作系统的进程间通信的处理使用用户自定义的处理程序。
主要原因是操作系统只允许一个用户的应用程序被激活一次,所以用户应用程序必须互相沟通使用自定义网址,然后专门找他们通过UIApplicationDelegate协议。
(Grigsby, 2009)IPhone操作系统否决系统调用。
在某些情况下,他们允许通过libSystem库控制系统调用,但大部分系统调用时不允许的。
(Gerbarg, 2009)1.2.4内存管理该操作系统没有内置的垃圾收集机制。