CN110618876B - 一种基于飞腾平台与共享内核的Linux与Android并存和交互方法 - Google Patents

一种基于飞腾平台与共享内核的Linux与Android并存和交互方法 Download PDF

Info

Publication number
CN110618876B
CN110618876B CN201910219053.5A CN201910219053A CN110618876B CN 110618876 B CN110618876 B CN 110618876B CN 201910219053 A CN201910219053 A CN 201910219053A CN 110618876 B CN110618876 B CN 110618876B
Authority
CN
China
Prior art keywords
linux
android
kernel
coexistence
binder
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910219053.5A
Other languages
English (en)
Other versions
CN110618876A (zh
Inventor
余杰
马俊
刘晓东
黄晟
马超
杨诏钧
张冬松
李翔
兰悦
文波
伍凯歌
毛涛
易龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Kirin Software Co Ltd
Original Assignee
National University of Defense Technology
Kirin Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology, Kirin Software Co Ltd filed Critical National University of Defense Technology
Priority to CN201910219053.5A priority Critical patent/CN110618876B/zh
Publication of CN110618876A publication Critical patent/CN110618876A/zh
Application granted granted Critical
Publication of CN110618876B publication Critical patent/CN110618876B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种基于飞腾平台与共享内核的Linux与Android并存和交互方法,所述Linux与所述Android均运行在所述飞腾平台上;步骤包括:S1、所述Linux与所述Android的兼容性准备;S2、所述Linux与所述Android并存流程;S3、所述Linux与所述Android的交互流程;所述S1的兼容性准备包括:所述Linux和所述Android使用同一共享内核、所述Android针对所述Linux的功能扩展和所述Linux针对所述Android的功能扩展。相较于现有技术,本申请的优势在于:通过自底向上全面兼容并行Linux与Android两个***,最终能够实现一个兼容式的新***,它们使用同一内核,使用共同的内核接口,既能够保留各自***的运行时,又能将自身扩展到对方***中去;为高效兼容并行Linux和Android提供稳定可靠的方法。

Description

一种基于飞腾平台与共享内核的Linux与Android并存和交互 方法
技术领域
本发明属于操作***技术领域,具体地说,涉及一种基于飞腾平台与共享内核的Linux与Android并存和交互方法。
背景技术
Android是目前移动终端市场中市场份额最高的Linux类操作***,在移动终端领域具有极好的生态环境;然而Android的前身Linux操作***目前在桌面领域受到来自Windows等操作***的冲击,所占的市场份额并不高;同时,Linux桌面操作***由于开发人员数目和市场份额的限制发展较为缓慢。随着信息技术的飞速发展,国家对信息安全的重视程度日益提升,Windows***作为美国闭源操作***,存在着巨大的安全隐患,为人诟病。与此同时,国产操作***生态环境长期处于不良状态,一直不见起色。
要解决国产操作***的生态问题,必须解决用户数不足和平台应用软件数不足这两个关键点。Android在移动终端领域具有广泛的用户群,并且具有成熟的开发平台和应用软件群体,对于解决国产操作***目前的窘境具有一定的参考价值。
飞腾硬件平台是搭载国产兼容ARM64架构的飞腾处理器的可运行国产操作***的硬件平台。为实现国产信息产品的完全自主可控,国产操作***的生态环境有必要考虑与飞腾硬件平台的紧密结合。
近年来,国内外有许多研究人员尝试将Android运行环境迁移到Windows或Linux类计算机平台以达到“兼容”的效果,现有的跨平台运行方法主要是虚拟化技术和容器技术。虚拟化技术虽然稳定性、普适性较强,但是在软件层对硬件进行模拟造成了巨大的资源浪费,并且有部分硬件,比如显卡,因为驱动和设计方案未公开,所以几乎没有第三方自主进行虚拟化的途径;容器技术虽然能够一定程度上弥补效率的不足,但是由于其封闭的特性使得两个运行环境间的交互较为不便,同时,容器难以具有一个操作***的全部特性,经常作为模拟器或者与虚拟化技术共同使用。技术和硬件层面上的困难,使得Android“兼容”的进展比较缓慢。
中国发明专利“基于Linux容器的设备虚拟化***及方法”(申请号CN105808320A),该申请是一种容器技术,并且明确说明对设备进行了虚拟化,通过主操作***的客户端进行对一个或多个Android***的兼容运行。和本申请的区别:本申请并没有基于容器技术或虚拟化技术,而是直接基于本申请所提出的共享内核技术实现Linux与Android操作***的并行;由于未经过虚拟化,Linux和Android***的运行效率不会在软件层面受到影响,效率极高。。
中国发明专利“Android模拟器及实现Android模拟器的方法”(申请号CN106445630A),该申请是Windows平台上对Android进行兼容运行的技术,技术要点在于Linux中间件在Windows***上的适配。和本申请的区别:本申请是基于构建源于Linux的共享内核进而实现Linux与Android***并存的技术,Linux内核与Windows内核完全不同,并且因为Windows属于闭源操作***,其它开发者无法进行扩展,所以上述申请与本申请无关。
中国发明专利“Android虚拟机加载方法及装置”(申请号CN104216726A),该申请属于Android***虚拟机加载的改进方法,侧重点在创建虚拟机的效率和维护上。和本申请的区别:Android虚拟机加载方法及装置并没有体现Linux***与Android***共享内核并行的特征,本申请侧重点也并非在如何高效的建立Android(Java)虚拟机实例;该申请针对的方向是Android***的改进,本申请针对的方向是Linux***和Android***的并行实现。
中国发明专利“一种同时运行Android/Linux操作***的方法”(申请号CN201410483020.9),该申请是在同一设备和内核上实现Linux与Android可切换运行的方法,在共享内核这一思路上是类似的。与本发明的区别:首先,本申请不需要在两个***间进行切换,也不存在因为切换带来的后台运行,其次,具体来说本申请的并行也不需要共享boot loader,两个***的文件***是一致的。
中国发明专利“一种利用Linux应用在Android***中运行的方法及装置”(申请号CN201010139435.6),该申请使得Android***能够运行Linux应用,从一定程度上解决了Linux与Android兼容的问题,同时也提到了双***显示相关的问题,并且给出了一种方案。与本申请的区别:该申请是一种Android上的Linux应用模拟器,并不需要在Android上运行整个Linux***;本申请实现Linux与Android应用共存的方法与模拟技术有差别,首先在于两个***真正原生运行在共享内核上,并且共享文件***等资源;其次,本申请关于显示冲突问题的解决与该申请有差别,并非同一种方法,本申请有许多类似问题需要依赖本申请提出的创新性理论进行解决。
中国发明专利“一种在Android操作***上运行Linux应用程序的方法及***”(申请号CN201510683347.5),该发明公开了一种在Android操作***上运行Linux应用程序的方法。虽然该发明还提供了一种在Android操作***上运行Linux应用程序的***,实现了在安装Andoird操作***的智能设备上,直接运行Linux应用程序,但是该发明仍是基于容器技术实现Linux***与Android***的共存,并没有涉及到本发明中基于扩展内核与基础库的Linux***与Android***高效并存方案。
发明内容
有鉴于此,本发明为了解决现有技术存在的缺陷和不足,提供了一种基于飞腾平台与共享内核的Linux与Android并存和交互方法,能够在一台计算机上同时运行Linux和Android***,自底向上的解决了Linux***与Android***的兼容问题。
为了解决上述技术问题,本发明公开了一种基于飞腾平台与共享内核的Linux与Android并存和交互方法,并采用以下技术方案来实现。
一种基于飞腾平台与共享内核的Linux与Android并存和交互方法,所述Linux与所述Android均运行在所述飞腾平台上;步骤包括:S1、所述Linux与所述Android的兼容性准备;S2、所述Linux与所述Android并存流程;S3、所述Linux与所述Android的交互流程。
进一步的,所述S1的兼容性准备包括:所述Linux和所述Android使用同一共享内核、所述Android针对所述Linux的功能扩展和所述Linux针对所述Android的功能扩展。
更进一步的,使所述Linux和所述Android使用同一共享内核的具体步骤包括:S111、在Linux内核中的make configmenu中激活Android binder、ashmem模块,确保config配置文件中关于binder、ashmem的编译选项为y;S112、重新编译所述Linux内核并安装;S113、配置udev。
更进一步的,所述Android针对所述Linux的功能扩展具体为对所述Android基础c库Bionic c进行扩展,移植Glibc中用于进程间通信的代码,使所述Glibc和所述Bionic c能够通过内核原有的Linux进程间通信接口进行通信;优选的,对所述Bionic c进行扩展的具体步骤为:S121、在libc中添加Sys V IPC消息队列和共享内存的代码;S122、在所述libc的***调用列表里添加接口的声明、***体系架构、相关头文件以及对应的代码;S123、重新编译得到新的Android基础库;所述S121和所述S122不分先后顺序。
更进一步的,所述Linux针对所述Android的功能扩展具体为将所述Android进程间通信机制Binder移植到Linux上;使所述Linux上的Binder库和所述Android上的Binder库能够通过内核的binder、ashmem设备以及驱动进行通信。
再进一步的,将所述Binder移植到所述Linux的过程是通过Linux编译链接工具实现的;具体为将所述Android源码项目中的Binder源码按照Glib c的格式与规范进行修改,再在所述Linux上编译链接成可供Linux进程调用的动态库文件。
进一步的,所述S2的具体步骤包括:
S201、启动所述Linux***;
S202、所述Linux***启动完成并保持运行,等待所述Android***启动,待所述Android***启动完成后进入S211;所述Android***启动流程具体为S203-S209;
S203、开始构建所述Android***运行时;
S204、启动适配的Android基础环境初始化init流程;
S205、初始化适配的Native环境;
S206、启动Dailvk/ART;
S207、启动适配的Frameworks环境;
S208、适配应用层环境;
S209、确保所述Android***运行时环境构建完成;
S210、Android端显示、交互适配;
S211、Linux端显示、交互适配;
S212、实现所述Linux与所述Android在同一硬件平台、内核以及同一用户界面上的并存;
所述S210和所述S211不分先后顺序。
进一步的,所述S3的具体步骤包括:
S301、启动Linux进程A,进入main函数;
S302、调用Glibc中的函数将指定数据写入指定文件;
S303、main函数返回,结束所述进程A;
S304、启动Android应用B,进入Java层;
S305、所述Java层通过JNI调用进入Native层,所述Java层等待所述JNI调用返回;
S306、所述Native层通过Bionic c中的函数读取所述指定文件,得到所述数据;
S307、所述JNI调用返回结果,所述Java层继续执行下一步;
S308、所述Java层执行相应函数输出所述数据。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述Linux与Android并存和交互方法的步骤。
一种飞腾平台上基于完全函数的多版本软件管理装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上任一所述Linux与Android并存和交互方法的步骤。
与现有技术相比,本发明可以获得包括以下技术效果:通过自底向上全面兼容并行Linux与Android两个***,最终能够实现一个兼容式的新***,它们使用同一内核,使用共同的内核接口,既能够保留各自***的运行时,又能将自身扩展到对方***中去;为高效兼容并行Linux和Android提供稳定可靠的方法。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明一个实施例的整体架构示意图。
图2是本发明一个实施例的Linux和Android***运行基础库主要部分的关系图。
图3是本发明一个实施例的Linux与Android交互运行的主要流程图。
图4是本发明一个实施例的Linux与Android共存运行的主要流程图。
具体实施方式
以下将配合附图及实施例来详细说明本发明的实施方式,藉此对本发明如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
本发明提供了一种基于国产飞腾硬件平台、以Linux为操作***共享内核,在一台计算机(包括服务器、PC机、笔记本、一体机等)上同时运行Linux和Android***的方法,自底向上的解决了Linux***与Android***的兼容问题。
图1是Linux与Android***基于飞腾硬件平台以及共享内核并行的整体架构示意图。包括运行在飞腾硬件平台上的Linux***和Android***,以及这两个***对应的基础库和共享内核,Linux基础库里还包括针对Android***的扩展库,Android基础库还包括针对Linux***的扩展库。共享内核包括Linux内核和Binder Ashmem,其中Binder Ashmem是Android内核必要的部件以及对应驱动,例如binder、ashmem等,以确保Android***能够运行在Linux内核上。
对于图1,从底层看,Linux***与Android***不经过任何虚拟化或者模拟技术直接共享硬件层与内核层;从顶层来看,Linux***与Android***拥有各自的运行并且拆开来看时,Linux与Android的运行时环境不受共享内核的影响,原有的结构并不改变;在共享内核的情况下,Linux与Android的运行时,看似没有交集,但是因为运行在任一***上的进程共享了内核资源,所以它们能够进行传统的进程间通信。
本申请在Linux内核的基础上加入Android内核必要的部件以及对应驱动(如binder、ashmem等),并且重新编译内核,使得Linux和Android***可以直接运行在扩展的共享内核上;只要运行在同一内核上,就能通过共享内核资源实现资源共享和信息交互。
由于Android***本身的内核源于Linux内核,所以它们内核的很多部分的工作原理、工作方式甚至对外的接口都是相同的。如果能够使Linux与Android***在同一终端上共享同一内核,那么这很大一部分资源就能够不进行适配直接共享。但是由于Linux与Android原生内核毕竟有所不同,所以一直以来两个***只能运行在不同的内核上。本申请通过兼容性扩展Linux***,实现内核层同时对Linux和Android***的兼容,能够直接共享内核的资源。剩下的任务便是两个***对扩展内核接口的适配,将各自***重要的内核接口增加到对方***的基础库中,这样便能够实现Linux和Android共享内核资源的通用协议。
安卓***主要是面向嵌入式硬件环境和移动智能终端平台,其使用的安卓内核基于标准Linux内核增加了一些针对这些平台和安卓自身特点的驱动模块。目前安卓内核特有的驱动模块源码已经整合到了标准Linux内核中,因此首先需要将安卓内核对应的驱动模块移植到国产飞腾操作***内核中,同时还需要结合国产操作***对安卓运行时环境易用性的支持进行内核的适配和扩展。
具体实现方式如下:
(1)共享内核的实现:
为了使Linux和Android共享内核,内核必须同时支持Linux和Android运行时的需要,故选取合适的linux内核(目前安卓内核特有的驱动模块源码已经整合到了标准Linux内核中,具有Android模块的编译选项,在Android内核回归Linux后,Linux内核默认包含了Android模块,并且在config配置文件中默认为不激活),在make configmenu中激活Android binder、ashmem等模块,确保config配置文件中关于binder、ashmem的编译选项为y,重新编译此Linux内核并安装,最后配置udev使得/dev/binder和/dev/ashmem的权限为666。
(2)Android针对Linux功能扩展:
主要是对Android基础c库Bionic c进行扩展,移植Glibc中一些用于进程间通信的代码(Bionic里提供了一些库,它们只实现了Glibc库中一部分功能,libc是C语言最基础的库文件,它提供了***的基本功能,主要是对***调用的封装,是应用和内核交流的桥梁),使Glibc和Bionic c能够通过内核原有的Linux进程间通信接口进行通信。在libc中添加Sys V IPC消息队列和共享内存的代码,同时在libc的***调用列表里添加接口的声明以及***体系架构,并添加相关头文件以及对应的C语言或者汇编实现,重新编译得到新的Android基础库。
(3)Linux针对Android功能扩展:
主要是Android进程间通信机制Binder在Linux上的移植,Binder库中同时又包含了Ashmem的实现,Linux上的Binder库和Android上的Binder库能够通过内核的binder、ashmem设备和驱动进行通信,Binder移植需要通过使用Linux编译链接工具,将安卓源码项目中的Binder源码按照Glib c的格式与规范进行适当修改,在Linux上编译链接成可供Linux进程调用的动态库文件。
图2是Linux基础库glibc以及Android基础库bionic c经过验证或适配的内核接口以及内核接口的封装协议的韦恩图。Linux基础库扩展的具体方法是通过使用Linux***的编译工具gcc/g++编译Android基础库的源码,这种方法的作用是为Linux提供了通向Android的接口。Android基础库的扩展方法是选择性的添加Linux基础库中的关键代码以及***调用,使得Android也具有了通向Linux的接口和协议。因为考虑到Android基础库本身的轻量性和完备性,本申请Android基础库的扩展只实现了部分关键Linux基础库代码的移植。
通过对Linux基础库glibc和Android基础库bionic c的扩展内核的内核接口进行扩展以及重新编译,使得在保留Linux和Android自身基础库的情况下,新的Linux基础库和Android基础库能够适配共享内核,使用一组共同的进程间通信协议,进而为两个***的资源共享提供基础支撑。
对图2所示的Linux基础库与Android基础库的关系图,需要进一步指出的是,Linux***和Android***虽然在内核层和基础库层十分相似,但两者的基础库不能互通;这是因为两者在进行核外开发时使用了完全不同的编译链接工具,编译连接器的不同很大程度上影响了基础库的二进制编码形式;同时,为了保持上层应用的稳定性,基础库层也只能以内核增加接口的方式进行适配;所以,即使扩展后的任一***拥有共同的资源,也并不能够以直接调用对方***库函数的形式进行,而是需要显式的经过内核进行跨***调用。
图3是检验Linux运行时与Android运行时通过基于飞腾硬件平台与共享内核进行交互的实例流程图。在并行Linux和Android的环境下,一个Linux进程A通过适配后的Linux基础C库glibc以及共享内核接口写入一个变量到共享内核的文件***中,这里的变量选用了string类型变量;然后一个Android的Java进程B调用JNI接口,并通过Android基础库bionic c提供的内核接口访问共享内核,读取Linux进程A在之前写入文件***的文件filepath,最后返回到B进程中进行打印。其中,Linux进程A可以直接通过Linux终端命令行运行;Android进程B,可以通过Linux的终端来运行/system/bin/adb install来安装进程B的apk文件至Android***内。然后通过/system/bin/am start-n命令启动,Android进程返回的结果可以通过/system/bin/logcat|grep System.out.println()查看。
具体步骤为:
S301、启动Linux进程A,进入main函数;
S302、调用Glibc的stdio和string库将“你好”这个字符串使用fwrite函数写入文件,文件路径为FilePath;
S303、main函数返回,Linux进程A结束;
S304、启动Android应用B,进入Java层;
S305、Java层通过JNI调用进入Native层,Java层等待JNI调用返回;
S306、Native层通过Bionic c的stdio的fread函数和string库读取Linux glibc写入的文件,得到string“你好”;
S307、JNI调用返回结果,Java层继续执行下一步;
S308、Java层执行System.out.println(),控制台输出“你好”。
图3中所述的Linux进程A和Android进程B,一般的,指的是分别使用各自的编译***(如Linux的gcc/g++,Android的源码项目AOSP编译环境和Android Studio的编译环境等),向同一计算机体系架构编译出的可执行文件。通过图3的示例,能够验证本申请的理论在基础C库(string库)和文件***上的准确性,即通过本申请提出的方法,能够实现Linux***和Android***资源共享的效果。
本申请的本质是Linux和Android两个***在内核级的兼容;通过这种自底向上的兼容形式,能够模糊不同***间进程的边界,使得核外用户层能够通过共享内核进行资源共享与通信交互,为实现Linux***与Android***的并行和交互提供了最基础的支持。
以上所述的都是基于Linux与Android运行时已经并存这一前提条件,Linux与Android实现并存的具体步骤如图4所示。实现Linux与Android运行时并存的主要思路是以Linux操作***为宿主***,在Linux***启动完成的大前提下,重新定制Android的启动流程,比如init流程、显示流程等,进而达到Linux与Android运行时并存的效果。具体的实现并存的步骤包括:
S401、启动基于飞腾硬件平台和共享内核的Linux***,即正常开机启动,挂载设备、创建文件目录等操作;
S402、基于飞腾硬件平台的Linux运行时搭建完成,在保持自身运行时的前提下,准备启动Android运行时(init进程);此步骤之后流程会分为两个并行分支,其中在Linux上的流程进入S411(其实是进入等待状态,等待Android启动完成后再与之进行显示、交互适配),而在Android上的流程则进入下一步;
S403、Android运行时构建开始,在Linux运行时搭建完成后,选择通过宿主***Linux以启动进程的方式启动Android init进程;
S404、基于飞腾硬件平台和共享内核启动适配的Android基础环境初始化init流程,适配的内容大致有去除Linux***已经挂载、创建过的目录、去除额外启动分支等;
S405、对经过适配后的Native层环境进行初始化,在原生Android Native层启动的基础上,基于共享内核通用协议适配SurfaceFlinger、InputEvent、Sys文件***等;
S406、启动Daivlk/ART,Android进入java环境;
S407、启动适配的Frameworks环境,在原生Android Frameworks层的基础上,增加扩展的Wifi模块、Apk管理模块等;
S408、适配应用层环境,主要是对用户界面进行修改;
S409、Android运行时启动完成,准备与宿主***进一步交互;
S410、Android上的显示适配和交互适配,通过Native层和Frameworks层经过适配后的SurfaceFlinger、InputEvent、Sys文件***等建立Android端的显示和交互模块;
S411、Linux上的显示适配和交互适配,通过共享内核通用协议(共享内存)建立Qt窗口,实现Android显示流程的显示功能,并实现InputEvent输入事件的键盘鼠标交互功能等;
S412、经过上述步骤,实现了Linux与Android在同一硬件平台和内核上的并存,并且实现了Linux与Android在同一用户界面上的并存。
本申请能够同时完美运行Linux和Android***的根本原因是因为Android内核本身与Linux同源并且相似;通过对内核和两个操作***基础库的定制与适配,最终可以实现将两个***同时运行在同一内核之上,并且实现完全的资源共享。
Binder:Binder是Android***进程间通信(IPC)机制。Linux已经拥有管道,system VIPC,socket等IPC手段,却还要倚赖Binder来实现进程间通信。
Ashmem:Ashmem(Anonymous Shared Memory匿名共享内存),是在Android的内存管理中提供的一种机制。它基于mmap***调用,不同的进程可以将同一段物理内存空间映射到各自的虚拟空间,从而实现共享。
JNI:Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C和C++语言)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。
本发明的有益效果是:通过自底向上全面兼容并行Linux与Android两个***,最终能够实现一个兼容式的新***,它们使用同一内核,使用共同的内核接口,既能够保留各自***的运行时,又能将自身扩展到对方***中去;为高效兼容并行Linux和Android提供稳定可靠的方法。
以上对本发明实施例所提供的一种基于飞腾平台与共享内核的Linux与Android并存和交互方法,进行了详细介绍。以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
如在说明书及权利要求当中使用了某些词汇来指称特定组件或模块。本领域技术人员应可理解,不同机构可能会用不同名词来称呼同一个组件或模块。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件或模块在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”、“包括”为开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。说明书后续描述为实施本发明的较佳实施方式,然所述描述乃以说明本发明的一般原则为目的,并非用以限定本发明的范围。本发明的保护范围当视所附权利要求所界定者为准。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者***中还存在另外的相同要素。
上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明创造构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

Claims (5)

1.一种基于飞腾平台与共享内核的Linux与Android并存和交互方法,所述Linux与所述Android均运行在所述飞腾平台上;其特征在于:步骤包括:
S1、所述Linux与所述Android的兼容性准备,所述Linux和所述Android使用同一共享内核、所述Android针对所述Linux的功能扩展和所述Linux针对所述Android的功能扩展;
其中使所述Linux和所述Android使用同一共享内核的具体步骤包括:
S111、在Linux内核中的make configmenu中激活Android binder、ashmem模块,确保config配置文件中关于binder、ashmem的编译选项为y;
S112、重新编译所述Linux内核并安装;
S113、配置udev;
所述Android针对所述Linux的功能扩展具体为对所述Android基础c库Bionic c进行扩展,移植Glibc中用于进程间通信的代码,使所述Glibc和所述Bionic c能够通过内核原有的Linux进程间通信接口进行通信;
所述Linux针对所述Android的功能扩展具体为将所述Android进程间通信机制Binder移植到Linux上;使所述 Linux上的Binder库和所述Android上的Binder库能够通过内核的binder、ashmem设备以及驱动进行通信;
将所述Binder移植到所述Linux的过程是通过Linux编译链接工具实现的;具体为将所述Android源码项目中的Binder源码按照Glib c的格式与规范进行修改,再在所述Linux上编译链接成可供Linux进程调用的动态库文件;
S2、所述Linux与所述Android并存流程,所述并存流程包括:
启动所述Linux***;
所述Linux***启动完成并保持运行,等待所述Android***启动,待所述Android***启动完成后进入Linux端显示、交互适配;
S3、所述Linux与所述Android的交互流程,所述交互流程包括:
S301、启动Linux进程A,进入main函数;
S302、调用Glibc中的函数将指定数据写入指定文件;
S303、main函数返回,结束所述进程A;
S304、启动Android应用B,进入Java层;
S305、所述Java层通过JNI调用进入Native层,所述Java层等待所述JNI调用返回;
S306、所述Native层通过Bionic c中的函数读取所述指定文件,得到所述数据;
S307、所述JNI调用返回结果,所述Java层继续执行下一步;
S308、所述Java层执行相应函数输出所述数据。
2.根据权利要求1所述基于飞腾平台与共享内核的Linux与Android并存和交互方法,其特征在于:
对所述Bionic c进行扩展的具体步骤为:
S121、在libc中添加Sys V IPC消息队列和共享内存的代码;
S122、在所述libc的***调用列表里添加接口的声明、***体系架构、相关头文件以及对应的代码;
S123、重新编译得到新的Android基础库;所述S121和所述S122不分先后顺序。
3.根据权利要求1或2所述的基于飞腾平台与共享内核的Linux与Android并存和交互方法,其特征在于:所述S2的具体步骤包括:
所述Android***启动流程具体为S201-S207;
S201、开始构建所述Android***运行时;
S202、启动适配的Android基础环境初始化init流程;
S203、初始化适配的Native环境;
S204、启动Dailvk/ART;
S205、启动适配的Frameworks环境;
S206、适配应用层环境;
S207、确保所述Android***运行时环境构建完成;
S208、Android端显示、交互适配;
S209、Linux端显示、交互适配;
S210、实现所述Linux与所述Android在同一硬件平台、内核以及同一用户界面上的并存;
所述S208和所述S209不分先后顺序。
4.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1或2所述Linux与Android并存和交互方法的步骤。
5.一种基于飞腾平台与共享内核的Linux与Android并存和交互装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于:所述处理器执行所述计算机程序时实现如权利要求1或2所述Linux与Android并存和交互方法的步骤。
CN201910219053.5A 2019-03-21 2019-03-21 一种基于飞腾平台与共享内核的Linux与Android并存和交互方法 Active CN110618876B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910219053.5A CN110618876B (zh) 2019-03-21 2019-03-21 一种基于飞腾平台与共享内核的Linux与Android并存和交互方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910219053.5A CN110618876B (zh) 2019-03-21 2019-03-21 一种基于飞腾平台与共享内核的Linux与Android并存和交互方法

Publications (2)

Publication Number Publication Date
CN110618876A CN110618876A (zh) 2019-12-27
CN110618876B true CN110618876B (zh) 2023-05-23

Family

ID=68921227

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910219053.5A Active CN110618876B (zh) 2019-03-21 2019-03-21 一种基于飞腾平台与共享内核的Linux与Android并存和交互方法

Country Status (1)

Country Link
CN (1) CN110618876B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111625293B (zh) * 2020-05-15 2023-04-11 武汉蓝星科技股份有限公司 一种基于linux内核的终端双***及其硬件访问管理方法
CN114168203B (zh) * 2020-09-10 2024-02-13 成都鼎桥通信技术有限公司 双***运行状态控制方法、装置和电子设备
CN112214213B (zh) * 2020-10-27 2023-10-20 南方电网数字电网科技(广东)有限公司 Linux内核的开发和管理方法、装置、计算机设备和存储介质
CN114637559B (zh) * 2020-12-15 2023-11-24 博泰车联网科技(上海)股份有限公司 显示开机界面的方法、***、设备及存储介质
CN113326072B (zh) * 2021-05-24 2023-11-24 北京计算机技术及应用研究所 一种飞腾服务器平台下基于非易失内存的实时监控方法
CN113543097B (zh) * 2021-06-02 2024-03-29 惠州市德赛西威智能交通技术研究院有限公司 一种用于Android***的多蓝牙交互方法及***
CN113641437B (zh) * 2021-08-16 2023-06-16 深圳技德智能科技研究院有限公司 一种Linux兼容Android的应用界面旋转方法及装置
CN113538207B (zh) * 2021-09-17 2022-03-01 北京鲸鲮信息***技术有限公司 跨进程调用的图形渲染方法、装置、电子设备与存储介质
CN113590363B (zh) * 2021-09-26 2022-02-25 北京鲸鲮信息***技术有限公司 数据发送方法、装置、电子设备及存储介质
CN113840271B (zh) * 2021-09-27 2024-04-19 北京字节跳动网络技术有限公司 一种nfc数据的传输方法、装置、电子设备及存储介质
CN113904849B (zh) * 2021-10-09 2024-01-09 深圳技德智能科技研究院有限公司 访问网络方法、装置、计算机设备和存储介质
CN113900754B (zh) * 2021-10-09 2023-10-31 深圳技德智能科技研究院有限公司 共享桌面方法、装置、计算机设备和存储介质
CN114020414B (zh) * 2021-11-09 2024-03-19 成都阿加犀智能科技有限公司 Android***与底层Linux共生方法、装置、电子设备及存储介质
CN113824888B (zh) * 2021-11-23 2022-06-17 北京鲸鲮信息***技术有限公司 Linux兼容Android的相机控制方法、***、装置及介质
CN113986858B (zh) * 2021-12-24 2022-06-03 北京鲸鲮信息***技术有限公司 Linux兼容安卓***的共享文件操作方法和装置
CN115473811A (zh) * 2022-09-21 2022-12-13 西安超越申泰信息科技有限公司 一种网络性能优化方法、装置、设备及介质
CN117234655B (zh) * 2023-11-13 2024-01-26 成都阿加犀智能科技有限公司 基于安卓***运行Linux桌面程序的方法、装置、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103262057A (zh) * 2010-10-01 2013-08-21 Flex Electronics ID Co.,Ltd. 跨环境通信框架
CN103593185A (zh) * 2013-11-04 2014-02-19 浙江大学 基于单Linux内核的多Android***共享输入显示设备的方法
CN104572166A (zh) * 2014-03-21 2015-04-29 中电科技(北京)有限公司 一种基于飞腾台式计算机的uefi固件实现方法
CN108762815A (zh) * 2018-05-16 2018-11-06 北京麟卓信息科技有限公司 一种基于非虚拟化体系架构的Android运行环境实现方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8726294B2 (en) * 2010-10-01 2014-05-13 Z124 Cross-environment communication using application space API

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103262057A (zh) * 2010-10-01 2013-08-21 Flex Electronics ID Co.,Ltd. 跨环境通信框架
CN103593185A (zh) * 2013-11-04 2014-02-19 浙江大学 基于单Linux内核的多Android***共享输入显示设备的方法
CN104572166A (zh) * 2014-03-21 2015-04-29 中电科技(北京)有限公司 一种基于飞腾台式计算机的uefi固件实现方法
CN108762815A (zh) * 2018-05-16 2018-11-06 北京麟卓信息科技有限公司 一种基于非虚拟化体系架构的Android运行环境实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
何兴鹏 ; 刘钊远 ; 陶琛嵘 ; .Linux程序向Android平台移植的研究.计算机测量与控制.2018,(05),全文. *

Also Published As

Publication number Publication date
CN110618876A (zh) 2019-12-27

Similar Documents

Publication Publication Date Title
CN110618876B (zh) 一种基于飞腾平台与共享内核的Linux与Android并存和交互方法
CN108765158B (zh) 一种基于区块链的智能合约引擎***及其合约执行方法
CN101470621B (zh) 虚拟机配置***
US7895594B2 (en) Virtual machine extended capabilities using application contexts in a resource-constrained device
US20180074843A1 (en) System, method, and computer program product for linking devices for coordinated operation
Wu et al. Porting mobile web application engine to the android platform
WO2022083316A1 (zh) 一种应用运行的方法、装置及计算机存储介质
RU2009115662A (ru) Среда разработки программного обеспечения для "тонкого" клиента
CN103345406A (zh) 一种实现智能移动终端的云端虚拟移动终端的***和方法
CN104090765A (zh) 一种***转网页游戏的方法及装置
CN112015522B (zh) ***功能扩展方法、装置及计算机可读存储介质
CN115629971A (zh) 一种应用的开发***和开发方法
Jeong et al. Seamless offloading of web app computations from mobile device to edge clouds via html5 web worker migration
CN104205049A (zh) 混合模拟和内核函数处理***和方法
CN101655804B (zh) 虚拟操作***构建方法及装置
CN113312046A (zh) 子应用页面处理方法、装置和计算机设备
CN109460280B (zh) 运行程序的方法、终端
CN108647087B (zh) 实现php内核可重入的方法、装置、服务器和存储介质
CN114816475A (zh) 一种嵌入式操作***的更新方法、装置、设备和介质
Haja et al. Location, proximity, affinity–the key factors in FaaS
CN114741054A (zh) 基于国产化操作***的桌面应用软件开发及构建的方法
CN114816418A (zh) 一种嵌入式操作***的搭建方法、装置、设备和介质
Navas et al. Reconciling run-time evolution and resource-constrained embedded systems through a component-based development framework
CN103034477B (zh) 一种组件式开放架构模型实现方法
Bouraqadi-Saâdani et al. A reflective infrastructure for coarse-grained strong mobility and its tool-based implementation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 6-8 / F, building 3, Xin'an venture Plaza, Tanggu marine science and Technology Park, Binhai New Area, Tianjin 300450

Applicant after: Kirin Software Co.,Ltd.

Applicant after: National University of Defense Technology

Address before: 300457 floors 6-8, building 3, Xin'an entrepreneurship Plaza, Tanggu marine science and Technology Park, Binhai high tech Zone, Binhai New Area, Tianjin

Applicant before: TIANJIN KYLIN INFORMATION TECHNOLOGY Co.,Ltd.

Applicant before: National University of Defense Technology

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant