第二节 智能终端操作系统
一、Android
(一)Android发展
Android操作系统发展历程如下:
2003年10月,Android公司及Android团队正式创建,于两年后被Google公司低调收购。
2007年11月5日,Google公司以Apache免费开源许可证的授权方式,发布了Android的源代码,开放手持设备联盟来共同研发改良Android系统。
2008年9月,Google公司正式发布了Android 1.0系统,这也是Android系统最早的版本。一年后发布了Android 1.6的正式版,并且推出了搭载Android 1.6正式版的手机。
2010年10月,Google公司宣布Android系统达到了第一个里程碑,即电子市场上获得官方数字认证的Android应用数量已经达到了10万个,Android系统的应用增长非常迅速。
2011年1月,Google公司称每日的Android设备新用户数量达到了30万部,到2011年7月,这个数字增长到55万部,而Android系统设备的用户总数达到了1.35亿,Android系统已经成为智能手机领域占有量最高的系统。
2011年8月2日,Android手机已占据全球智能机市场48%的份额,并在亚太地区市场占据统治地位,终结了Symbian系统的霸主地位,跃居全球第一。
2011年9月份,Android系统的应用数目已经达到了48万,而在智能手机市场,Android系统的占有率已经达到了43%。
2013年11月1日,Android4.4正式发布,从具体功能上讲,Android4.4提供了各种实用小功能,新的Android系统更智能,添加了更多的Emoji表情图案,UI的改进也更现代,如全新的HelloiOS7半透明效果。
2014年10月,Android5.0正式发布,代号Lollipop,是继Android 4.0以来的一次重大更新。
2015年在I/O大会上发布了全新的移动端平台Android6.0 Marshmallow。一年后Google公司正式推送Android 7.0 Nougat正式版,该版本建立了先进的图形处理Vulkan系统。在安全性上,Android N加入了全新的安全性能,其中包括基于文件的数据加密。
2017年5月18日,推出了新的Android O(android 8.0)系统,并于一年后的I/O大会发布了发布新一代的Android P(android 9.0)系统,其除了加入AI元素外,还会提供全新交互逻辑和针对生活场景的自我调整。
(二)Android架构
1.Android结构
Android平台是一组面向移动设备的软件包,它由一个操作系统、中间件和一些关键应用程序组成,Google公司提供了一套软件开发工具包给开发人员使用,为这个平台创造应用程序。开发语言采用的是Java,应用程序运行在Dalvik虚拟机上。Dalvik是由Google专为Android平台定制的Java虚拟机,运行在Linux内核的上层,由Google公司和开放手机联盟领导及开发。
Android的系统架构和其操作系统一样,采用了分层的架构,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层(图4-1),显示了Android系统的体系结构与主要组成部分。Android系统主要由四层五部分组成,从上到下分别为:
图4-1 Android系统体系结构
(1)应用程序层:
Android平台不仅是操作系统,也包含很多核心应用程序,如电子邮件客户端、SMS短信客户端程序、日历、电话拨号程序、Web浏览器等。这些应用程序都是用Java语言编写的。
(2)应用程序框架层:
是Android开发的基础,很多核心应用程序也是通过这一层来实现其功能的。此层为组件重用提供了重要手段,开发人员可以直接使用其提供的组件进行快速的应用开发,也可以通过继承来实现个性化的拓展。
(3)函数库:
是应用程序框架的支撑,它是连接应用程序框架层与Linux内核层的重要桥梁。Android系统提供的核心库如:①多媒体库(Media Framework):基于Packet Video Open CORE,支持多种常见格式的音频、视频录制和回放,以及查看静态图片;②Bionic系统C库:从BSD系统派生的标准C系统函数库,专门基于embedded Linux设备指定;③SGL:底层的二维图形引擎库;④SSL:在Android通信过程中实现握手;⑤OpenGL:三维效果的支持;⑥SQLite:功能强大的小型关系型数据库引擎;⑦Webkit:一套Web浏览器的软件引擎;⑧Free Type:提供位图和向量字体的描绘与显示。
(4)Android运行时:
程序在Android运行中执行,其运行时分为核心库和Dalvik虚拟机两部分。其中虚拟机负责运行Android应用程序,每一个Android程序都有一个Dalvik虚拟机的实例,并在该实例中执行。核心库提供了Java语言API中的绝大部分功能,同时也包含了Android的一些核心API。
(5)Linux内核层:
Android基于Linux2.6内核,安全性、内存管理、进程管理、网络协议栈和驱动模型等核心系统服务都依赖于这个内核。与智能设备相关的驱动有:①显示驱动:基于Linux的帧缓冲驱动;②键盘驱动:作为输入设备的键盘驱动;③Flash内存驱动:基于MTD的Flash驱动程序;④照相机驱动:常用的基于Linux的V42驱动;⑤音频驱动:常用的基于ALSA的高级Linux声音体系驱动;⑥WiFi驱动:基于IEEE802.11标准的驱动程序;⑦蓝牙驱动:基于IEEE802.15.1标准的驱动程序;⑧Binder IPC驱动:提供进程间通信的功能;⑨Power Management:电源管理驱动。
2.Android环境
由于Android OS基于Linux内核,因此具有传统的Linux安全机制,再加上Dalvik虚拟机的相关安全机制,Google公司为其设计的特有安全机制(应用程序权限控制、组件包装、数字证书),使得Android OS的安全性能有了比较大的提高,安全机制如图4-2所示。
图4-2 安全机制
(1)应用程序权限控制:
权限控制的主要作用是对应用程序的访问等操作加以限制,是应用程序安全的核心。通过应用程序权限控制,可有效防止程序恶意操作、非法控制、窃取关键数等安全问题。应用程序必须在权限允许的范围内运行,不得未经授权访问其他资源。在写程序时可定制程序权限,通过manifest文件,程序在安装时将会申明所需要的权限,用户选择是否授予其所请求权限。其他应用程序如果要访问应用程序的受保护资源,需要通过它们自己的manifest文件请求适当的权限。
(2)组件包装:
是指Android应用程序把其组件包装在程序内容内,通过定义组件的“exported”属性来限制或允许其他应用程序访问,保证应用程序的运行。如果“exported”属性被设置为否,则组件只能被程序本身和共用同一个用户ID的应用程序访问;如果“exported”属性被设置为是,该组件则可以被其他外部程序访问和调用。
(3)数字证书:
数字证书用来标识应用程序的作者和应用程序之间建立信任关系,所有应用程序都被要求数字签名认证,Android OS不会安装没有数字证书的应用程序。Android程序包使用的数字证书可以是自签名的,不需要权威的数字证书机构签名认证,如要正式发布Android应用程序,必须使用合适的私钥生成的数字证书来给程序签名。
3.Android活动
Activity、Service、Content Provider、Broadcast Receiver是Android四大核心组件,负责控制整个应用程序的宏观框架,它们都必须在清单AndroidManifest.xml文件中进行配置后才能使用,这个清单文件是Android系统重要的权限申请和定义配置文件。
(1)Activity:
是Android中最核心、最多见的应用组件。Activity可以为用户提供一个可视界面,方便用户操作。应用程序可以由一个或多个Activity组成,平台通过栈的形式管理多个Activity,当前激活的Activity位于栈顶。每一个Activity都会被分配到一个用于绘制的窗体,窗体上的内容是由一组视图控件组成的,这些视图控件都继承于View类。不同应用在运行的时候,每个Activity都可能在活动状态和非活动状态之间转换。Activity的整个生命周期大致会经过四个状态:Actived状态、Paused状态、Stoped状态和Killed状态。图4-3显示了Activity的活动状态图。
图4-3 活动状态图
(2)Service:
Service与Activity在Android中的地位是等同的,它代表了Android系统中的服务组件。Service通常在后台运行,用于为其他组件提供后台服务或监控其他组件的运行状态,它不提供可交互的用户界面。Service组件是可执行的程序,拥有自己独立的生命周期。Android中的Service按运行地点可以分为两类:本地Service和远程Service。本地Service是依附在主进程上运行的,不是独立的线程,当主进程被销毁后,此服务就会终止。远程Service是独立的进程,当Activity所在的进程被销毁的时候,此服务还在运行,并且不受其他进程影响,有利于为多个进程提供服务。不过既然远程Service是独立的线程,肯定会占用一定的资源。
(3)Broadcast Receiver:
用于接收来自Android系统和应用中的广播。其本质是一个系统级别的监听器,用于监听系统全局的广播消息。广播是一种广泛运用在程序之间的传输信息机制,而Broadcast Receiver是对发送出来的广播进行过滤接收并响应的一类组件。Broadcast Receiver不需要实现用户界面,当它接收到广播后,可以启动Activity来响应它们接收到的信息,或者通过Notification Manager来通知用户,或者启动Service等。Broadcast Receiver是Android应用程序中用处很大的异步消息机制。
(4)Content Provider:
Android中的Content Provider机制可以支持在多个应用中存储和读取数据,是唯一能够跨应用的数据共享方式,是一套数据交换的标准API。Content Provider以某种Uri的形式对外提供数据,它提供接口允许其他应用程序对数据进行访问或者添删改查,其他应用程序则使用Content Resolver根据Uri去访问指定的数据。利用Content Provider的数据共享方式的益处是统一了数据的访问方法。
Android系统的底层是建立在Linux系统之上,该平台结构分为四层:操作系统、中间件、应用软件及用户界面,它采用软件堆栈的方式进行构建,这种堆栈结构使得层与层之间相互分离,分工明确。这种分工模式可以确保层与层之间的低耦合,当下层发生变化时,上层应用无须改变。
Android应用程序是由不同组件搭建组合起来的,采取了基于组件的开发模式,组件之间的实现是低耦合模式。Android中的三个核心组件Activity、Service、Broadcast Receiver是通过Intent彼此联系、触发的。Intent对象是同一个或不同应用中组件之间的消息传递的媒介。四大核心组件与Intent之间的关系如图4-4所示。
图4-4 四大组件与Intent之间的关系
二、iOS
(一)iOS发展
iOS是由苹果公司开发的服务于旗下iPhone、iTouch、iPad、iPod等的产品,它基于Mac OSX操作系统衍生而来,历史发布版本如图4-5所示。iOS系统的优点十分明显:流畅的操作体验、丰富的应用程序、精美的系统界面以及较高的安全性。iOS产品创新地将应用程序整合在一起,保护了程序开发者的利益,也方便了系统使用者对应用程序的搜索。
图4-5 iOS版本图
(二)iOS架构
iOS的系统架构分为四个层次:
1.核心操作系统层(core OS layer)
本层是系统架构中的最底层,可以直接和硬件设备进行交互,但作为App开发者不需要与这一层是位于iOS系统架构最下面的一层是核心操作系统层,提供的这些功能都会通过C语言的API来实现,它包括内存管理、文件系统、硬件驱动、线程管理、网络管理等与操作系统打交道的服务。
2.核心服务层(core services layer)
在核心操作系统层的基础上,应用程序可以通过本层访问iOS系统的服务。本层提供了访问iOS在核心服务层框架基本服务。通过核心服务层框架基本服务,开发人员可以访问文件、低级别数据类型等。
3.媒体层(media layer)
媒体层提供的技术包括图像处理技术、音频处理技术、视频处理技术。通过本层中提供的技术,录制音频文件或者视频文件、绘制图形、制作动画效果等这些工作涉及的媒体工具可以方便地被开发人员应用于程序中。
4.可触摸层(cocoa touch layer)
为应用程序开发提供了各种有用的框架,并且大部分与用户界面有关;与应用开发关系最密切,在iOS应用开发过程中使用到的各种框架由可轻触层提供。用户可以点击苹果移动设备终端的屏幕,通过触摸层技术进行人机交互。
iOS系统推出之初也并不是很完善,但截至目前已发展到iOS12版本,功能越来越丰富,越来越智能化。iOS系统的安全性很高,引进的重要安全机制包括:
1.代码签名机制 该机制保证了所有在iOS上运行的二进制执行文件与运行库都必须经过苹果公司或者苹果公司授权的第三方可信机构的签名才能运行。实际上,内核将对将要送去执行的内存中的页面进行签名检查,如果发现错误的签名或者没有签名,内核将会拒绝执行。
2.数据执行保护 利用数据执行保护的机制处理器能够识别内存中哪些区域是执行代码、哪些是普通数据。数据执行保护能保证处理器只去执行代码而不会去执行数据。
3.地址空间布局随机化 对于很多开启了数据执行保护的操作系统来说,攻击者经常会巧妙地重用内存中现有的代码片段达到某种目的,但是这需要准确地推断出需要利用代码的准确内存地址。在引入了地址空间布局随机化机制后,内存中所有的动态库、动态链接器、堆栈等地址均做了随机化处理,这使得攻击者对于内存中对象地址的定位变得十分困难,从而更好地保护了系统免遭攻击。
4.沙箱技术 沙箱技术把应用程序进程限制在一个独立的环境中运行,该进程没有访问沙箱以外资源的能力,同时也感知不到任何沙箱外的环境。沙箱技术主要有两个作用:①极大地限制了恶意程序对系统的破坏;②使得针对系统的黑客攻击变得更加困难。
5.文件系统加密 iOS对整个文件系统都进行了加密。整个文件系统,包括文件,都使用了一个特定的密匙进行加密,对于特殊需求的文件还可以特别指定其他的密匙对文件进行加密。经过加密的系统使文件系统更加安全,即使黑客通过某种手段把整个iPhone的文件系统拷贝出来,在没有密匙的情况下也无法解密。这样的全盘加密方式使iOS设备在一些紧急情况下,如丢失、被盗时可以自动触发或者远程控制迅速抹除全盘数据或者特定文件。
三、Windows CE
(一)Windows CE发展
Windows CE操作系统是微软公司为各种信息设备、消费类电子产品以及嵌入式应用全新设计的战略性操作系统。它小巧精致,占用空间最小为300KB;系统核心由C语言开发。Windows CE基于Windows桌面版本,采用全新内核设计;Windows CE拥有精简的运行库,运行更高效、简洁。
Windows CE操作系统是Windows家族中的成员,是为掌上电脑以及嵌入式设备专门设计的系统环境。Windows CE操作系统将条形码扫描装置与数据终端一体化,带有电池可离线操作的终端电脑设备,具备实时采集、自动存储、即时显示、即时反馈、自动处理、自动传输等功能,为现场数据的真实性、有效性、实时性、可用性提供了保证。Windows CE操作系统具有一体性、机动性、体积小、重量轻、高性能并适于手持等特点,它主要应用于工业数据采集中。
(二)Windows CE架构
1.Windows CE体系结构
Windows CE是一个抢先式多任务并通信能力强大的嵌入式操作系统,全新的、可移植的、实时的、模块化的操作系统。如图4-6所示,它的体系结构具体:①线程优先权级:Windows CE是有优先级的多任务操作系统,它允许多重功能、进程;②线程同步:实时系统必须保证进程和线程同步;③中断处理:实时应用被设立在指定的时间间隔内,对外部事件作出反应,实时应用使用中断作为一种确保外部事件由操作系统获知的方式;④中断响应:从处部中断到达处理器到中断开始处理间的时间。
图4-6 Windows CE体系结构图
2.Windows CE环境
Windows CE系统的开发大致可以分为三个阶段:
(1)硬件开发阶段:此阶段包括OAL修改、内核的裁剪、系统组件的定制、驱动开发与修改、测试与集成应用程序开发,主要进行用户界面、数据库以及其他应用程序的开发。
(2)基于Windows CE的产品开发流程:①硬件选型,选择参考开发板;②产品设计与布线,生成产品硬件板;③创建或者是定制Bootloader程序;④导入要开发的板子的BSP;⑤创建一个基于此BSP的操作系统工程,并完成此工程的定制和裁剪;⑥编写驱动程序;⑦生成操作系统的映像文件,并下载到开发板,进行调试;⑧导出SDK,方便与应用程序的开发人员。
(3)应用程序开发人员编写应用程序,并针对SDK生成可执行的文件;将应用程序与操作系统进行整合与集成,生成最终的系统映像文件;将最终的系统映像文件下载到硬件板子上,进行最终的整体调试。
四、Windows Phone
(一)Windows Phone发展
Windows Phone系统的前身是Windows Mobile,Windows Mobile是Microsoft用于Pocket PC和Smartphone的软件平台。
现在很多智能手机都以应用为主,界面上只是应用图标,必须点进去才可以看到里面的内容。Windows Phone的开始界面名为动态磁贴,用户可以自由地将应用、联系人等信息固定到动态磁贴中显示,不用点进去就能随时看到更新,突出了以人为本的设计理念。Windows Phone将大众熟悉的Windows桌面扩展到了智能手机中,因此Windows Phone是微软为手机终端推出的“移动版Windows”。2010年2月,微软公司正式向外界展示Windows Phone操作系统;2011年9月27日,微软公司发布了Windows Phone系统的重大更新版本Windows Phone 7.5;2012年6月21日,正式发布全新操作系统Windows Phone 8。2014年,微软公司发布Windows Phone 8.1,可以向下兼容,让使用Windows Phone 8操作系统的用户也可以升级到Windows Phone 8.1。2015年1月22日,微软公司召开发布会,正式发布Windows 10,同时指出Windows 10将是一个跨平台的系统,无论手机、平板、笔记本、二合一设备、PC,均可以采用Windows 10。
(二)Windows Phone架构
1.Windows Phone结构
为了鉴别访问手机数据的用户权限,实现手机上可以运行哪些应用程序,以及各种数据信息安全写入和读出手机方式的创建,Windows Phone通过采用各种安全技术来实现,如各种虚拟专用网络、安全套接字层服务、设备级加密的安全服务、存储卡加密以及各种身份认证。Windows Phone系统主要有以下4个特点:
(1)以信息数据为中心,与iOS、Android等系统以应用为中心不同,Windows Phone系统更注重用户体验。
(2)Windows Phone系统相对封闭,这种封闭机制能够保证整个操作系统安全、平稳运行,对直接用户是有利的。
(3)跨平台技术的使用。
(4)开发语言为C#,入门简单,上手容易。借助于Visual Studio开发工具,开发者可以非常方便地开发出各种应用程序。
Windows Phone操作系统架构如图4-7所示,无论是在内核、架构设计上,还是在编程模型上,都与之前的Windows Mobile系统大不相同,在软件开发和用户体验上完全不兼容。Silverlight、C#和XNA是其应用程序开发的基础,与Win32 API应用开发完全不同。
图4-7 Windows Phone操作系统架构
2.Windows Phone环境
(1)搭建开发环境:
目前提供的模拟器有WindowsPhone7SDK和WindowsPhone8SDK。这两种模拟器对开发环境要求有所不同,开发者可以根据需要从微软官方网站获取并安装SDK来搭建开发环境。
(2)创建应用程序:
创建应用程序后,页面布局或者动作可以用C#、XAML或Expression Blend来设计。编译应用程序页面时,应注意切换页面时的页面间传值、应用程序栏、系统托盘和屏幕旋转方向。
(3)测试应用程序:
测试应用程序有两种方法,一种是使用微软公司提供的模拟器,另一种是直接用真机。在编译、部署和调试应用程序之前,需要在Visual Studio Express中选择目标是模拟器还是真机,然后对程序进行测试。
(4)发布到应用商城:
发布到应用商城之前,需要先部署应用程序到真机上测试。Windows Phone 8 SDK提供了“Windows Phone应用程序分析”功能,可以在Visual Studio Express 2012 for Windows Phone测试应用程序,然后在应用商城申请开发者账号。最后把通过测试的xap文件按照应用商城的提示上传,测评结果将会在5个工作日内公布。若未通过测评,可以根据错误提示更改应用程序。
五、移动操作系统在医疗行业的应用对比
(一)移动操作系统概述
当下智能手机操作系统处于群雄争霸的局面,目前市场上存在的主要操作系统包括Android、iOS、Windows Phone、Blackberry OS等。
Android系统为硬件制作商和第三方软件开发人员提供了自由和便利,前者可以通过修改源代码来适应机型,后者可以将设计的数量成倍增长,又由于该平台提供免费服务,因此深受生产商和用户的青睐。
iOS操作系统具有较强的视频能力和游戏能力,结合Wifi便可作为在线观看的服务终端。苹果公司适时与开发商合作,针对iOS专门推出高品质游戏。除此之外,iOS还具有较强的封闭性,由于不支持Flash,提供商特意制作出HTML5版本。
Windows Phone操作系统试图打破人与物的隔阂,为用户提供了的各种方便。虽然Windows Phone依据之前的积累,在用户使用习惯等方面占据优势,但是其与手机制造商的联盟及对第三方软件的支持远远不够。Windows Phone的合作伙伴很少,且对第三方程序的限制较多,相比iOS、Android、Windows Phone的应用数量为少。
BlackBerry OS具备多任务处理功能,并支持如轨迹球、触摸板、滚轮等特定的输入装置。随着智能手机的快速发展,BlackBerry OS已经远远不能满足用户对手机的要求,越来越多的人选择了放弃。
(二)移动操作系统特性
OS作为支撑Android、iOS和Windows等操作系统软件运行的重要基础,决定着未来移动医疗能否在院内获得长足发展,系统间进行取长补短,已经很难说谁比谁更为优秀。面对日益增长的移动互联网市场,Android、iOS、Windows Phone分别寻找和利用具有差异性的开发策略进行自身发展。
Android系统的优点是源代码拥有良好的开放性,这一点能够吸引更多的开发者加入到其阵营中来。开发者对源代码进行修改,充分满足用户的个人需求,符合用户的使用习惯。缺点是存在手机病毒和恶意吸费软件损害用户利益的可能性。
iOS系统依付于iPad和iPhone之上,因此苹果终端在医疗市场的占有率决定了iOS系统的市场拓展。iOS系统的设计理念是简单、流畅、精美。苹果用户只能从苹果应用商城下载应用程序,不利于在企业内部网络使用,相比于Android市场上迅速增加的应用程序,苹果APP的更新速度相对缓慢,同时应用范畴也受到限制,再加上iPad和iPhone本身属于消费级产品,缺少医疗行业应用所需部分功能组件,比如二维码扫描窗等,导致iOS系统在医疗行业的渗透速度受限。
Android系统具有较高的占有率得益于:
1.自身的开源特性,很多移动医疗解决方案都是基于Android开发的,因此大多数移动终端设备首先要支持Android系统,同时Android的医疗APP非常丰富,如果选择Android操作系统,医疗机构在终端方面的选择性更多,可用的APP也更充裕。
2.Android操作系统的内核同样是Linux,这与医疗机构为确保信息安全选择Linux系统的初衷不谋而合。
3.对于一些研发实力较强的医疗机构来说,选择Android操作系统,可以针对自身需求自行研发APP,这一点是其他系统无法满足的。
一方面,Android的开源性导致很多APP不够完善,使用中或许会影响医疗系统的稳定性;另一方面,尽管Android选择Linux内核,但Android不是Linux,因此,Android的应用不能直接放到Linux系统上用,从移动到桌面还是有距离。Andordid系统的碎片化趋势越来越明显,各种版本的系统充斥在市场上,也成为Android系统手机发展的一大掣肘。
在当今的移动医疗市场上,Windows仍扮演挑战者的角色。Windows要想在移动医疗市场占据一席之地,需克服三大挑战。首先,Windows应用相对还是占少数,移动医疗APP主要集中在Android和iOS两大阵营;其次,Windows系统安全性差在医疗行业是公认的,Windows的移动端可能会带来更多信息安全威胁;最后,最新的Windows10放弃传统的界面风格,新界面风格并不能马上被大多数人接受。因此,Windows想在今天的移动医疗市场上杀出重围,仍需继续努力。
目前,全球市场的移动操作系统主要有Android、iOS、WindowsPhone几种。近年来,随着早期的Symbian系统逐步退出,以及RIM系统风光不再,Google公司的Android、苹果公司的iOS系统正形成“二分江山”的竞争态势,而微软公司正在起步中的Windows Phone依靠微软自身雄厚的系统开发实力,正在与传统手机制造商不断合作,是移动互联网系统中不可小觑的新生力量。对移动操作系统的研究需要围绕理念、美学、体验和管理四个层面同时进行,才能够体现出开发策略的完整构成模式(表4-1)。
表4-1 操作系统对比说明