科学规划

PDF
科学规划/2020/文章
特刊

科学编程在雾和边缘计算时代

查看此特殊问题

研究文章|开放获取

体积 2020 |文章ID. 5304612 | https://doi.org/10.1155/2020/5304612

周益莲,何利刚,王斌,苏毅,陈浩 MCAF:开发一个基于注释的移动云计算卸载框架“,科学规划 卷。2020 文章ID.5304612 9. 页面 2020 https://doi.org/10.1155/2020/5304612

MCAF:开发一个基于注释的移动云计算卸载框架

学术编辑:丹尼尔·达
已收到 2019年11月29日
修改后的 2020年2月24日
公认 07年5月20日
发表 2020年7月16日

抽象的

从手机卸载到远程云服务器的计算是一种有希望的方法,可以降低能耗和提高移动应用的性能。然而,巨大的挑战是作为远程云基础设施中强大的计算资源的自动集成以及移动设备的可移植性。在本文中,我们开发了一种基于Java注释的卸载框架,称为MCAF,适用于Android移动设备。此框架是设计和致力于简化具有卸载功能启用的Android应用程序的开发。所有开发人员都需要做的是导入我们的MCAF的SDK库并注释计算密集型方法。MCAF可以自动提取注释的源代码并生成将在云中运行的代码。此外,将卸载决策的代码自动插入原始源代码。我们还进行了实验实验,以显示了我们的MCAF的适用性。

1.介绍

智能手机等移动设备的便携性和能力的进步,以及越来越快的无线网络,诸如购物,游戏,信息管理等大量移动应用程序。智能手机改变了人类的生命,成为现代社会中不可或缺的小工具。尽管移动设备的硬件性能快速增加,但与桌面对应物相比,它仍然有限,并且无法满足最终用户和应用程序开发人员的不断增长的需求(例如,CPU,存储和电池寿命)。有限的硬件资源妨碍了进一步提高服务质量(QoS)[1],也进一步扩大了手机APP的类别。将移动设备与强大的云平台整合[23.提供移动云计算(MCC)为克服挑战提供了一个有前途的解决方案[4.5.].

MCC能够通过将部分执行从移动设备卸载到云服务器来节省移动设备的能源消耗和/或提高移动应用程序的运行性能。尽管已经开发出了各种卸载框架,但阻碍这些卸载框架广泛采用的一大障碍是,它严重依赖于程序员以卸载框架中指定的方式开发移动应用程序。在这项工作中,我们的目标是设计和开发一个卸载框架,简化了移动应用程序的开发。我们的卸载框架MCAF利用了Java注释,它在以下几个方面与现有的框架有所不同。

在所有现有的卸载框架中,程序员要么必须注释源代码,要么必须以特定的方式编写源代码,而框架开发人员需要开发定制的编译器来编译嵌入的具有卸载能力的源代码。使用MCAF不需要开发新的编译器,只需要现有的Java编译器就可以实现卸载过程。

此外,大多数现有的框架,如Cuckoo [6.要求程序员实现在云上运行的代码。相比之下,MCAF的目标是尽量减少进行卸载的工作量。使用MCAF的程序员不需要实现在云上运行的代码,而是像平常一样为移动设备编写源代码,并添加指定代码卸载的Java注释。MCAF根据Java注释自动从源代码中提取将要在云上运行的部分。然后,提取的代码被自动封装为一个独立的Java程序,并在满足条件时卸载到云中。

MCAF与大多数现有框架之间的另一个主要区别是,MCAF在方法级别的粒度上卸载了任务。MCAF提取要卸载的方法的源代码,然后将该方法包装为一个独立的程序。

总体而言,MCAF旨在减少框架开发人员和程序员在移动应用程序中实现卸载能力的努力。MCAF的用户必须要做的就是导入MCAF SDK库并为计算密集型方法添加注释。在本文中,我们介绍了我们卸载框架的设计和实施。为了展示我们的方法的适用性,我们还通过应用我们的卸载框架开发了两个用于现实方案的移动应用程序。还进行了实验,以评估我们框架的有效性。

请注意,在实践中,应确保在实际保密性和所传输数据的完整性。文献中存在现行措施[7.8.来解决卸载框架中的安全问题。例如,在[7.],数据在传输前进行加密和签名,然后在云端进行解密。在做出卸载决定时,加密和解密成本都被考虑在内。确保安全不是本文的重点。MCAF可以利用文献(如[4.)以确保机密性和完整性。

本文的其余部分组织如下。节2,介绍了Java注释的背景及相关工作。节3.,我们展示了MCAF的设计,也是一个案例研究,以显示MCAF的确切工作。MCAF在部分中进行评估4..本文在一节结束5.

2.背景

2.1.注释

注释是Java中的一个重要功能,因为它将Java开发人员从麻烦的配置中涉及[9.].它将编写样板Java代码的责任从程序员转移到编译器。注释最初是在Java 5.0中引入的,后来的Java版本逐渐支持更多的高级特性。

注释是一种元数据的形式,可用于描述程序中的有关元素(包,类,方法,字段,参数,变量等)的任何信息[10].注释不会直接影响程序语义。然而,由于注释确实会影响工具和库处理程序的方式,因此它们反过来会影响正在运行的程序的语义。注释可以静态地从源文件、类文件中读取,也可以在运行时以反射方式读取。例如,注释(如Deprecated、Override或NotNull)可用于描述在编译期间方法中的约束或元素的用法。

虽然应用程序程序员通常不必定义注释类型,但这样做并不困难。注释类型的声明类似于普通接口的声明。在关键字“interface”前面有一个@符号。方法的声明还将定义注释类型的元素。方法的声明不能有任何参数,可以有默认值。返回类型仅限于这些类型的原语、String、Class、枚举、注释和数组。下面是注释类型的范例声明。一旦定义了注释类型,程序开发人员就可以使用它来注释源代码。通常,注释将在编译期间处理。命令行实用工具APT是一个注释处理工具,用于根据插入到源文件中的注释查找和执行注释处理器。

2.2。相关工作

许多研究人员认为,将移动计算与云相结合是一种有希望的解决方案,可以克服智能手机的电池限制并扩展智能手机的性能[11].事实上,最近的很多工作都集中在构建能够将移动计算转移到云的框架上[1213].

Cuervo等人提出了一种名为MAUI的卸载系统,它可以实现细粒度的能量感知代码从智能手机卸载到远程服务器[14].在毛伊岛中,可以卸载的方法被声明为“可远程”方法。毛伊然后将卸载问题模拟作为整数编程问题,并通过解决整数程序找到最佳卸载决定。Microsoft.net公共语言运行时(CRL)是毛伊岛使用的编程语言。但是,毛武的缺点是它需要开发人员修改本地移动上运行的源代码,并在云中实现源代码运行。

与maui,clonecloud相比[1516[更进一步地走一步,不会要求程序员标记(例如,声明)offloadable方法。CLONECLOUD通过在运行时在静态和动态分析源代码来自动识别卸载成本。然后,它运行一个优化器来分区移动设备和云之间的任务。

Maui和CloneCloud是用于卸载在移动设备上运行到云的现有程序的部分的系统。杜鹃[6.17]是应用程序开发框架。程序员可以使用Cuckoo开发具有卸载能力的移动应用程序。杜鹃提供了一个简单的编程模型,并允许单个接口与本地和远程(云)实现。使用Cuckoo开发的应用程序将在运行时自动决定本地或远程实现是否已为接口调用。

DPSF [18是另一个基于Java的卸载框架。它首先离线分析应用程序的调用图,并确定可以卸载哪些类。然后在编译期间将所有Java类划分为两个部分。一部分中的类在移动电话中本地运行,而另一部分将被卸载到服务器上运行。整个应用程序部署在本地移动服务器和远程服务器上。应用程序开始在本地移动中运行。当它运行到卸载的类中的一个方法时,它利用Java中的RMI(远程方法调用)机制来调用部署在远程服务器中的Java应用程序中的方法。虽然DPSF也利用Java中现有的能力来实现卸载,但它与我们的MCAF有以下不同。

首先,DPSF基本上是一个静态卸载框架,因为它的类卸载,必须通过离线分析在编程阶段确定,然后必须调整源代码以满足卸载。DPSF只在某种意义上是动态的,即当它开始运行应用程序而无法检测到网络连接较差时,它将运行原始Java应用程序。一旦原始应用程序或应用程序与卸载能力开始运行,它将运行到完成。DPSF中没有其他机制在应用程序执行期间为单个类进行卸载决策。在MCAF中,虽然我们注释了哪种方法可以在编程阶段卸载,但是可以对特定方法进行卸载决定。如果满足卸载条件,则对该方法进行卸载。

其次,DPSF在类级别的粒度上减轻了工作负载,而在MCAF中是在方法级别上。

第三,当使用DPSF时,程序员必须更改源代码,例如,将非私有字段的修饰符更改为private,并为它们生成公共的getter/setter方法,为每个已卸下的类生成一个代理类,等等。在MCAF中,程序员只通过Java注释方案注释方法,但不更改原始源代码,这减少了程序员的工作,并且在开发阶段更不容易出错。用于在Cloud服务器中运行卸载方法的源代码是由MCAF自动生成的,而不是由程序员编写的。如果忽略注释,应用程序行为将保持不变。

3.MCAF

3.1.MCAF模块

移动云注释框架(MCAF)包括以下模块:(1)注释处理程序:提取与注释方法相关的所有信息;(2)云代理:实现当地移动设备与云之间的通信;(3)卸载决策者:实施卸载策略;(4)代码重写器:自动将提取的方法的源代码作为独立Java程序括起来,并将其编译为类文件。

3.1.1。注释处理程序

APT是现有的注释处理工具。在MCAF中,APT用于识别标注哪种方法,并保存标注信息。保存的注释信息包含注释方法的访问修饰符、返回类型和参数类型。但是,不包括参数值和方法代码。注释处理程序的职责之一是补充APT保存的注释信息。注释处理程序在每个注释方法中提取源代码片段。具体来说,在Annotation Handler中构造一个正则匹配表达式,用于搜索APT保存的标注信息,并匹配实现标注方法的源代码部分。提取的代码段将打包为独立的Java程序,并由code Rewriter模块编译为类文件。类文件将根据offloading Decider做出的卸载决定传输到云上并在云上运行。

3.1.2。卸载决策者

在处理注释处理程序后,识别所有注释方法,并保存了这些方法的注释信息和源文件。调用注释方法时,卸载决策模块会计算此方法的卸载成本。如果它有益于卸载,则通过代码重写器模块获得的该方法的字节码被检索并由云代理模块传送到云。如果卸载Defore决定不卸载,则该方法将在本地移动设备中执行。

请注意,卸载策略不是本文的重点。MCAF是一个实现卸载能力的框架。开发者可以将任何现有的卸载策略插入到卸载决策器中。Offloading Decider通过其输出与MCAF中的其他组件接口,该输出为True或False。如果输出为真,则将卸载该方法。否则,该方法将在本地运行。算法13.2呈现一个例子。

(1) public class A_ extends A {
(2)  int Add(intX,inty){
(3) isAddClassNeedUpload = Decider.getClassUploadStatus ();
(4)   if (isAddClassNeedUpload) {
(5) isAddClassRemoteExists = Decider.getRemoteExistsStatus ();
(6) 如果(! isAddClassRemoteExists) {
(7)     ClientProxy.uploadClass(“xx/xxx/AddClass.Class”);}
(8) 返回ClientProxy.getResult(“添加”,Xy);
(9)   }
(10) 返回X+y;
}
}
3.1.3。云代理

云代理模块负责卸载本地移动设备和云之间的相关通信。首先,当Offloading decision决定卸载一个带注释的方法时,Cloud Proxy将该方法的字节码和参数传输到Cloud。其次,卸载方法的执行结果返回到本地移动设备并传递给被调用的方法。

3.1.4。代码重写

Code Rewriter生成两种类型的源代码(类)。Annotation Handler提取带注释方法的代码段后,code Rewriter为每个带注释的方法生成独立的源代码。然后将源代码编译为一个Java类,该类的名称是附加一个单词“class”的带注释的方法的名称。例如,如果注释方法的名称是“Add”,那么新类的名称就是“AddClass”。在做出卸载决定后,生成的类可能被转移到云中并在云中运行。在类中,定义了一个成员函数,其中包括带注释的方法的所有指令。通过在云上调用新生成类的成员函数,我们将获得在本地智能手机上运行的带注释的方法的相同结果。我们称这种类型的类为云执行类。

由code Rewriter生成的第二类源代码(类)运行在本地智能手机中。在此源代码中,新类继承自带注释的方法所在的类。这个新类的名称是附加下划线“_”的继承类的名称。例如,如果继承的类是“A”,则新类的名称是“A_”。Code Rewriter覆盖新类“A_”通过自动插入代码,使卸载决策和代码与云交互,如上传“AddClass”生成以上,其输入参数到云和接收返回的结果从云。如果添加的决策代码做出的决策是假的(即不卸载),注释方法的原始指令将在本地智能手机中运行。我们称这个新类为政策和当地执行类。

3.2。对MCAF的案例研究

在本小节中,我们将提供一个示例来说明MCAF的工作原理。

我们首先在Algorithm中定义一个名为“Upload”的新注释2

(1)  @Target(ElementType.METHOD)
(2)  @Retention(RetentionPolicy.CLASS)
(3) public @interface上传{
(4)   String type() default “Upload”;
(5) String module() default " app ";
(6)   String[] valueType() default {};
(7) }

目标保留是Java中的两个预定义的注释类型。这目标键入值ElementType.method.在第1行中用于指定注释在方法级别应用。具有值的保留类型RetentionPolicy.CLASS在第2行中用于指定编译器在编译时保留添加的注释(但是由Java虚拟机忽略)。第3行定义了一个名为的新注释类型上传.定义一个新的注释类型类似于在Java中定义一个接口,除了关键字接口前面是符号@。在身体上传注释类型,声明了三个注释类型元素:type、module和valueType。这类型元素用于标识上传注解。这模块元素用于指定带注释的方法所在的模块(假设带注释的方法在“app”模块中)。valueType是带注释方法的输入参数的数据类型。我们开发了一个Annotation.jar包。“Upload”注释类型定义在annotation .jar中。jar还实现了Code Rewriter组件的功能。

定义上载注释类型后,我们可以使用它来注释一种方法。在算法3.,定义了一个名为“a”的类,其中包含一个“Add”方法。“Add”方法接受两个整数类型的输入参数,Xy.在“Add”方法之前,插入新定义的“Upload”注释类型,其中valueType元素接受两个输入参数的实际类型(即整数),Xy.另外两个元素“类型”和“模块”,采取默认值。

public class A extends MainActivity {
@Upload(valueType = {" int, " " int "})
 int Add(intX,inty){
返回X+y;
}
}

当算法中的代码3.编译,编译器意识到“添加”方法被“上传”注释。将生成两种类型的源代码(两个类)。

一方面,编译器会调用Annotation.jar中实现的Code Rewriter功能,生成一个名为AddClass的新类,如Algorithm中所示4..如果卸载决定器决定卸载“Add”方法,“AddClass”将被上传到云端执行。

包org.cloud.annotations.mainactivity;
public class AddClass {
公共int添加(intX,inty){
返回X+y;
}
}

另一方面,编译器还将调用代码重写器功能以生成名为“A_”的另一个新类,该类别从“A”延伸(“添加”方法位于类别“A”中)。然后通过插入算法中显示的一组指令来覆盖“添加”方法1(从4行到10行)。在算法1,第3行调用卸载决策者以确定是否应该上载“添加”方法。如果卸载DELIDER的输出为TRUE(在第4行中检查),则需要卸载方法,然后运行第5-8行。第5行和6检查是否已卸载“添加”方法(应用程序可以重复执行)。如果已卸载,则意味着云中存在“添加”方法的代码,并且不需要再次上传该方法的代码。如果此方法尚未卸载,则调用云代理以上传“AddClass”(第7行),其中包含将在云中运行的“添加”方法的代码,然后等待云到返回运行“添加”方法的结果(第8行)。如果卸载判定出错,则计算本地(第10行)。

当云服务器接收到智能手机上传的“addClass.class”时,它会通过Java反射机制调用AddClass.class中的“添加”方法。在云中运行“添加”方法的代码段以算法显示5.,其中Xy将拍摄智能手机上传的值。

(1) Object[] parameters = new Object[]{Xy};
(2) Class[] parametersType = new Class[]{int.class, int.class};
(3) 对象[]参数=(对象[])EntityBean.ParametersValue.toArray();
(4) Class[] parametersType = entityBean.parametersType。toArray(新类(entityBean.parametersType.size ()));
(5) 类< ?> cl = Class.forName(“org.demo.data.AddClass”);
(6) 方法方法= cl。getDeclaredMethod(添加、parametersType);
(7) 对象对象= cl.newInstance();
(8) RET =(int)方法.Invoke(对象,参数);
3.3。系统架构

在本节中,我们介绍了系统架构,用于实现卸载功能的Android应用程序。首先,我们介绍了可以使用我们的计划注释的方法类型的方法。Android应用程序在Dalvik虚拟机(Dalvik VM)上运行它们的字节码。Dalvik VM和Java虚拟机(JVM)之间存在一些差异。Dalvik VM已经优化了Android代码的执行。例如,UI图形,相机和传感器无法在JVM上执行,因为它们的执行取决于Android运行时环境。可以注释的方法必须满足以下条件:(1)注释的方法只能包含纯Java代码。请注意,由于该条件,由于最有可能卸载的方法是计算密集型的方法,因此不会在纯Java代码中编程所有算术运算,因此卸载的代码的百分比不会显着降低。(2)注释的方法不应使用全局变量。如果必须使用全局变量,则需要与其他方法参数一起传输到云服务器。 (3) The annotated methods have to be public methods.

3.3.1。构建过程

数字1显示使用我们的框架从源代码到APK文件构建Android应用程序的过程。开发人员需要做的唯一方法是添加批注,将源文件划分为两类:注释源文件和原始源文件。在此过程中,注释过程工具(APT)可以在注释的源文件中找到所有注释的方法。然后,它产生了云执行可以在云上执行的类和通过框架SDK在本地智能手机上运行的类。

3.3.2。运行时体系结构

数字2显示应用程序的运行时架构。在智能手机中,运行时架构主要分为四个部分。第一部分是方法,其中包含在Android应用程序运行时将执行的方法。在图中2,方法部分中有两个类,其分为虚线。方法A和B位于同一类中,而方法C,D和E是另一类。此外,我们使用虚线椭圆表示注释方法,即方法B,C和E.第二部分是策略,这使得卸载方法为注释方法。第三部分是资产;它是一个资源文件夹,并包含注释方法的源代码,可以在云上上传和执行。最后一部分是代理;它负责与云进行沟通。在云服务器中,模块参数用于在云中执行注释方法时从本地智能手机接收参数。

在云服务器中,参数模块负责管理智能手机和服务器之间的参数的传输。当在运行时在本地电话中调用注释方法时,该方法将参数值包装到序列化文件流中,该文件流通过网络传输到服务器,并且被反序列化为服务器上的参数值。通过使用序列化,除了基本数据类型之外,我们还可以轻松传输复杂类型参数。在云服务器上,我们分配了存储空间以存储从智能手机上传的可执行文件。通过Java反射机制调用这些文件。执行期间所需的参数由参数模块提供。当云服务器获取执行结果时,我们将使用序列化机制将结果传递给智能手机。

4.评价

开发卸载框架的目的是节省移动应用程序正在运行的智能手机的能耗,同时保持应用的性能。在本节中,我们评估了MCAF的性能和功耗。我们在智能手机上进行了真实的实验,它是Vivo X20,带有1.8 GHz CPU,OctA核心处理器,4 GB RAM和Android OS 7.1.1。我们将桌面用作云服务器,它使用3.40 GHz CPU和16 GB RAM运行Ubuntu 14.04。云服务器和智能手机由WiFi互连。

我们实现了两个应用程序,并通过卸载在本地电话或云服务器上运行它们。第一个应用是执行矩阵计算,这是一个计算密集型应用。在这个应用中,我们生成了大小为100 × 100的方阵。矩阵的元素是−10到10之间的随机数。该应用程序计算矩阵的n次幂。首先,我们在智能手机上运行应用程序。然后,我们通过将应用程序卸载到云服务器来运行它。我们还测量了智能手机的功耗和应用程序在这两种情况下的执行时间。如何设计聪明的卸载策略并不是这项工作的重点。在实验中,当无线连接可用时,应用程序总是被卸载。

4.1。执行时间

桌子1在智能手机中运行时和卸载时,列出应用程序的执行时间。卸载执行时间由2个部分组成,包括将代码和参数上载到云和云服务器上的执行时间的通信时间。如表所示,通信时间相对稳定。这是因为在卸载过程中传输的数据和网络速度变化很少。云服务器上的执行时间随功率逐渐增加N(即,矩阵乘法的数量)增加。我们还计算通过在智能手机上运行的卸载运行的加速。随着计算的增加,加速也增加。结果表明,我们的卸载框架可以显着提高应用程序的运行性能。


力量N 卸载(女士) 本地电话(女士) 加速(local_run / offloading_run)
传播

20. 237 61 6912 23.19
40 232 77 13742 44.47
60 232 102. 20610 61.71
80 214. 128 27468 80.32
100. 210. 152 34551 95.44

我们在实验中使用的第二个应用是图像分割,它将数字图像分割成多个分段。它也是一个计算密集型应用程序。应用程序在本地电话和云服务器中的执行时间如表所示2.测试图像的输入大小为300×300像素。如表所示,应用程序与矩阵计算应用程序相比,应用程序扰动了更多通信时间。当应用程序卸载时,结果仍显示出良好的加速。


卸载(女士) 本地电话(女士) 加速(电话/卸载)
传播 偏僻的

2 969 20. 3727 3.85
4. 984 27 7485 7.61
6. 1003. 29 11201. 11.17
8. 1065 43 15022 14.11
10 1067. 93. 18710 17.54

4.2。能源消耗

为了评估这些应用程序的能耗,我们使用称为TREPN Profiler的软件[19].它是移动设备的目标电源和性能分析应用程序。在TREPN分析器中,可以通过名为SHOW DELTAS的功能来实现单个应用程序的功率测量。数字3(一个)3 (b)当它们在本地和卸载时执行时,显示这两个应用的能量消耗。可以从卸载提供显着节能的图中观察到。随着计算尺寸的增加,节省量的节能量增加。

结论

本文介绍了一种基于Java注释的卸载框架,称为MCAF,用于移动云计算。MCAF用于以粒度的方法将带注释的源代码上传到云服务器。通过使用MCAF,开发人员无需实现云端服务,可以在编译期间MCAF自动生成。制作卸载决策的代码也会自动插入。开发人员需要做的一切都是导入我们的MCAF的SDK库并注释计算密集型方法。我们进行了真实实验,以展示MCAF的适用性。

可以扩展这项工作,以允许卸载与android相关的方法(即,不是用纯Java代码编写的方法,而是调用与android相关的库中的函数)。为了实现卸载android相关代码,需要做以下工作:(i)提取卸载方法,生成一个独立的apk封装卸载方法;(ii)在云中搭建一个VM,并在VM中部署Dalvik VM环境;(iii)在Cloud VM中开发功能组件,实现Dalvik VM与移动端通信。与当前MCAF中部署标准Java VM相比,上述框架的开发预计将涉及更多的工程工作。我们将进行认真的调查,看是否值得这样做。毕竟,只有计算密集型任务最有可能被卸载,这些任务可以用纯Java代码进行编码。

MCAF最初设计用于将工作负载从智能手机转移到云服务器。我们计划探索MCAF在雾边计算中的应用。在雾边缘计算中,数据处理转移到边缘设备,与云计算相比,边缘设备更接近数据生成的位置。只要边缘设备比智能手机更强大,就没有理由不使用MCAF实现在雾边缘计算中将工作负载从智能手机转移到边缘设备。

数据可用性

支持该工作结果的数据可根据相应作者的要求提供。

的利益冲突

提交人声明有关本文的出版物没有利益冲突。

致谢

本研究得到国家自然科学基金61972137、61772183和世界字节安全有限公司的部分资助。

参考文献

  1. 李坤,“基于客户满意度的云计算利润最大化的多服务器配置”,IEEE可持续计算汇刊,卷。2,不。1,pp。17-29,2017。查看在:出版商的网站|谷歌学术搜索
  2. K. Li,C. Liu,K. Li和A. Y.Zomaya,“云计算中资源使用的价格招标配置框架”并行和分布式系统汇刊,第27卷,第2期。8,页2168-2181,2016。查看在:出版商的网站|谷歌学术搜索
  3. C. Liu,K. Li,C. Xu和K. Li,“云服务预留的多个用户竞争的战略配置”并行和分布式系统汇刊,第27卷,第2期。2, pp. 508-520, 2016。查看在:出版商的网站|谷歌学术搜索
  4. H. Qi和A. Gani,《移动云计算研究:回顾、趋势和展望》,中第二届IEEE数字信息与通信技术及其应用国际会议论文集第195-202页,IEEE,曼谷,泰国,2012年5月。查看在:出版商的网站|谷歌学术搜索
  5. H. T. Dinh、C. Lee、D. Niyato和P. Wang,“移动云计算:架构、应用程序和方法的调查”,无线通讯与移动计算第13卷,没有。第18页,1587-1611页,2013。查看在:出版商的网站|谷歌学术搜索
  6. C. A. I. Long,K.K.K.H.Kunasekaran,V.Ramakrishnan等,“通过使用Cuckoo Model来最大限度地减少能源成本的Cuckoo模型,”任务卸载到云。2016年国际信息工程,管理和安全议会议的会议记录(ICIEMS 2016),Tirupur,印度,2016年。查看在:谷歌学术搜索
  7. B. Huang,Y. Li,Z. Li等,通过移动边缘计算中的深度加强学习,“安全与成本感知计算卸载”,无线通讯与移动计算,卷。2019年,第3816237号,20页,2019年。查看在:出版商的网站|谷歌学术搜索
  8. V.Viduto,C. Maple,W. Huang和D.López-Peréz,“一种新的风险评估和多目标网络安全对策选择问题的风险评估和优化模型”决策支持系统,卷。53,没有。3,pp。599-610,2012。查看在:出版商的网站|谷歌学术搜索
  9. W. Cazzola和E.Vacchi,“@Java:为Java带来更丰富的注释模型,”计算机语言,系统与结构,第40卷,不。1,页2-18,2014。查看在:出版商的网站|谷歌学术搜索
  10. http://tutorials.jenkov.com/java/annotations.html.
  11. J. Liu,K. Li,D.Zhu,J. Han和K. Li,“最大限度地减少了异构多核嵌入式系统的调度任务成本”,“美国计算机学会嵌入式计算系统汇刊,卷。16,不。2,p。2016年36日。查看在:谷歌学术搜索
  12. y . Wang I.-R。陈,华盛顿特区。移动云计算应用研究:前景与挑战无线个人通信,卷。80,不。4,pp。1607-1623,2015。查看在:出版商的网站|谷歌学术搜索
  13. M. A. Khan,“移动设备上运行的应用程序性能改进的计算卸载策略的调查,”网络与计算机应用,第56卷,第28-40页,2015。查看在:出版商的网站|谷歌学术搜索
  14. E. Cuervo, A. Balasubramanian, D. Cho等人,“MAUI:通过代码卸载让智能手机的寿命更长”第八届移动系统,应用和服务国际会议的诉讼程序,pp.209-62,ACM,旧金山,2010年6月。查看在:谷歌学术搜索
  15. B. G. Chun,S.IHM,P.Maniatis等,“Clonecloud:移动设备和云之间的弹性执行,”第六届计算机系统会议记录,pp.301-314,ACM,萨尔茨堡,奥地利,2011年4月。查看在:谷歌学术搜索
  16. L. P. R.Mali和L.G.D.D.Naik,“关于分布式应用加工框架 - 克隆云的综述,”国际工程与计算机科学杂志,第4卷,第4期。1, 2015。查看在:谷歌学术搜索
  17. R. Kemp, N. Palmer, T. Kielmann等人,《布谷鸟:智能手机的计算卸载框架》2010年移动计算、应用和服务国际会议论文集,第59-79页,洛杉矶,CA,美国,2010年10月。查看在:谷歌学术搜索
  18. D. Kong, T. Qi, T. Yang等人,“Android的动态计算卸载框架”,载于第五届IEEE宽带网络与多媒体技术会议的诉讼程序,pp.134-138,IEEE,桂林,中国,2013年11月。查看在:出版商的网站|谷歌学术搜索
  19. https://developer.samsung.com/game/trepn.

周宜莲等人版权所有这是一篇开放获取的文章创意公共归因许可证如果正确引用了原始工作,则允许在任何媒体中的不受限制使用,分发和再现。


更多相关文章

PDF 下载引用 引用
下载其他格式更多的
订单印刷副本订单
的观点113
下载82
引用

相关文章

我们致力于尽快分享与COVID-19有关的发现。我们将对已接受的与COVID-19相关的研究论文、病例报告和病例系列提供无限的发表费用豁免。综述文章不在此豁免政策范围内。注册在这里作为评论员,帮助快速跟踪新的提交。