KR101950484B1 - Task Management Device for Providing Real-time Performance to Android - Google Patents

Task Management Device for Providing Real-time Performance to Android Download PDF

Info

Publication number
KR101950484B1
KR101950484B1 KR1020180092390A KR20180092390A KR101950484B1 KR 101950484 B1 KR101950484 B1 KR 101950484B1 KR 1020180092390 A KR1020180092390 A KR 1020180092390A KR 20180092390 A KR20180092390 A KR 20180092390A KR 101950484 B1 KR101950484 B1 KR 101950484B1
Authority
KR
South Korea
Prior art keywords
real
time
garbage collection
rtik
processing unit
Prior art date
Application number
KR1020180092390A
Other languages
Korean (ko)
Inventor
조한무
서민원
이철훈
Original Assignee
엘아이지넥스원 주식회사
충남대학교산학협력단
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 엘아이지넥스원 주식회사, 충남대학교산학협력단 filed Critical 엘아이지넥스원 주식회사
Priority to KR1020180092390A priority Critical patent/KR101950484B1/en
Application granted granted Critical
Publication of KR101950484B1 publication Critical patent/KR101950484B1/en

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems

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

According to the present invention, disclosed is a device for managing a task of Android in real time capable of processing a task of Android in real time. The device comprises: an application processing unit processing an operation at an application level related to at least one application performing user operation; an operating system processing unit including an Android operating system for executing the application and performing an operation at an operating system level; and a middleware mediating the application processing unit and operating system processing unit and controlling garbage collection for time required for a real-time operation.

Description

안드로이드의 실시간 태스크 관리 장치 {Task Management Device for Providing Real-time Performance to Android}[Background Art] [0002] A task management device for providing real-time performance to Android [

본 발명은 안드로이드의 실시간 태스크 관리 장치에 관한 것으로, 특히 가비지 컬렉션 실행을 제어하는 안드로이드의 실시간 태스크 관리 장치에 관한 것이다.The present invention relates to a real-time task management apparatus for Android, and more particularly, to a real-time task management apparatus for Android that controls execution of garbage collection.

실시간으로 데이터를 획득하고 평가하는 것이 중요한 군용 점검 장비와 같은 시스템에서는 운영체제 레벨에서 실시간 처리가 가능해야 한다.Systems such as military inspection equipment where it is important to acquire and evaluate data in real time should be capable of real-time processing at the operating system level.

종래의 윈도우 운영체제에는 윈도우의 실시간성을 개선하기 위한 여러 방법들이 있으나 안드로이드에서는 동일 방법을 사용한 기술은 없다.There are many ways to improve the real-time performance of windows in the conventional Windows operating system, but there is no technology using the same method in Android.

또한, RTAndroid는 최신 안드로이드 커널 패치가 메인 라인 커널에 아직 통합되지 않았기 때문에, RT_PREEMPT patch를 적용하기 위해 기존 리눅스 커널을 광범위하게 수정해야 하는 단점이 있으며, RTDroid는 안드로이드의 모든 시스템을 처음부터 다시 구축하는 방식으로, 안드로이드 버전의 지속적인 발전에 따른 유지보수가 어려울 수 있다.In addition, RTAndroid has the disadvantage of extensively modifying the existing Linux kernel to apply the RT_PREEMPT patch, because the latest Android kernel patches have not yet been integrated into the mainline kernel, and RTDroid has been able to rebuild all of Android's systems from scratch , The maintenance of the Android version may be difficult due to the continuous development.

본 발명은 안드로이드의 실시간 태스크 관리 장치 및 관리 방법으로 사용자 작업을 수행하는 적어도 하나 이상의 어플리케이션과 관련된 어플리케이션 레벨의 동작을 처리하는 어플리케이션 처리부, 어플리케이션을 수행하기 위한 안드로이드 운영체제를 포함하고, 운영체제 레벨의 동작을 수행하는 운영체제 처리부, 어플리케이션 처리부와, 운영체제 처리부를 매개하는 미들웨어를 포함하며, 미들웨어는, 실시간 작업이 필요한 시간 동안 가비지 컬렉션을 제어하여 안드로이드의 실시간 태스크 처리를 가능하게 하는데 그 목적이 있다.The present invention relates to an application processing unit for processing an application level operation related to at least one application for performing a user task using a real-time task management apparatus and a management method of the Android, and an Android operating system for executing an application, An application processing unit, and an operating system processing unit, and middleware mediates garbage collection during a time required for real time operation, thereby enabling real time task processing of Android.

또한, 안드로이드의 가비지 컬렉션 실행을 제어하는 구조를 설계 및 구현함으로써 실시간 작업이 필요한 시간 동안 가비지 컬렉션을 제어하도록 하는데 또 다른 목적이 있다.Another purpose is to design and implement a structure that controls the execution of garbage collection of Android, thereby controlling garbage collection during the time required for real-time operation.

본 발명의 명시되지 않은 또 다른 목적들은 하기의 상세한 설명 및 그 효과로부터 용이하게 추론할 수 있는 범위 내에서 추가적으로 고려될 수 있다.Other and further objects, which are not to be described, may be further considered within the scope of the following detailed description and easily deduced from the effects thereof.

상기 과제를 해결하기 위해, 본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 장치는, 사용자 작업을 수행하는 적어도 하나 이상의 어플리케이션과 관련된 어플리케이션 레벨의 동작을 처리하는 어플리케이션 처리부, 상기 어플리케이션을 수행하기 위한 안드로이드 운영체제를 포함하고, 상기 운영체제 레벨의 동작을 수행하는 운영체제 처리부, 상기 어플리케이션 처리부와, 상기 운영체제 처리부를 매개하는 미들웨어를 포함하며, 상기 미들웨어는, 실시간 작업이 필요한 시간 동안 가비지 컬렉션을 제어한다.According to an aspect of the present invention, there is provided an apparatus for real-time task management of Android according to an embodiment of the present invention, comprising: an application processing unit for processing an application level operation related to at least one application performing a user task; An operating system processing unit including the Android operating system and performing an operation at the operating system level; the application processing unit; and middleware mediating the operating system processing unit. The middleware controls garbage collection during a time required for real time operation.

여기서, 미들웨어는, 상기 어플리케이션을 실행시키는데 필요한 자바로 작성된 API(Application Programming Interface)로 접근하는 어플리케이션 프레임워크 처리부, 상기 운영체제 처리부의 상단에 존재하며, 안드로이드 환경에 맞게 수정된 라이브러리 레벨의 동작을 수행하는 라이브러리 처리부 및 달빅 가상머신(Dalvik VM)을 이용하여, 메모리 관리와 멀티쓰레딩(multithreading)을 수행하는 런타임 처리부를 포함한다.Here, the middleware includes an application framework processing unit for accessing an application programming interface (API) written in Java necessary for executing the application, an application framework processing unit for performing an operation at a library level that is modified at the top of the operating system processing unit, And a runtime processing unit for performing memory management and multithreading using a library processing unit and a Dalvik virtual machine (Dalvik VM).

여기서, 운영체제 처리부는, 리눅스 커널을 기반으로 상기 달빅 가상머신(Dalvik VM)과 상기 어플리케이션 프레임워크 처리부를 통해 어플리케이션이 실행될 수 있는 환경을 제공한다.Here, the operating system processing unit provides an environment in which the application can be executed through the Dalvik VM and the application framework processing unit based on the Linux kernel.

여기서, 운영체제 처리부는, 상기 리눅스 커널의 실시간성 제어를 위해 사용되는 실시간 처리(Real-Time implant Kernel, RTiK) 모듈을 포함하며, 상기 실시간 처리 모듈은, 상기 리눅스 커널의 영역에서 실시간 타이머 기능을 제공한다.Here, the operating system processing unit includes a real-time implant kernel (RTiK) module used for real-time control of the Linux kernel, and the real-time processing module provides a real-time timer function in the area of the Linux kernel do.

여기서, 달빅 가상머신(Dalvik VM)은, 상기 가비지 컬렉션의 수행을 제어하는 가비지 컬렉션 제어부를 포함하며, 상기 가비지 컬렉션의 동작 방식은, 동시 마크 스윕(Concurrent Mark Sweep, CMS) 알고리즘을 이용하여 구현되되, 상기 가비지 컬렉션 제어부는, 상기 달빅 가상머신에서 가용 메모리 확보를 위해 상기 가비지 컬렉션을 실행해야 하는 시점에서 특정 플래그 값에 따라 실행 여부를 결정한다.Here, the Dalvik VM includes a garbage collection controller for controlling the execution of the garbage collection, and the garbage collection operation method is implemented using a Concurrent Mark Sweep (CMS) algorithm , The garbage collection control unit determines whether to execute the garbage collection according to a specific flag value at the time when the garbage collection should be executed in order to secure available memory in the Dalbig virtual machine.

여기서, 라이브러리 처리부는, 상기 실시간 처리(Real-Time implant Kernel, RTiK) 모듈에서 제공하는 상기 실시간 타이머 기능을 상기 어플리케이션에 제공하는 인터페이스인 실시간 API 레이어(RTiK-API’s Layer)를 포함하며, 상기 실시간 API 레이어(RTiK-API’s Layer)는, 모듈 제어 함수를 이용하여 상기 실시간 처리(Real-Time implant Kernel, RTiK) 모듈을 제어한다.Here, the library processing unit includes a real-time API layer (RTiK-API's layer) that provides the real-time timer function provided by the real-time processing kernel (RTiK) module to the application, The layer (RTiK-API's layer) controls the real-time processing module (Real-Time implant Kernel, RTiK) module using a module control function.

여기서, 모듈 제어 함수는, 상기 실시간 처리(Real-Time implant Kernel, RTiK) 모듈을 통해 안드로이드의 태스크를 제어하는 태스크 제어 함수 및 상기 실시간 타이머를 동작시켜 상기 실시간 처리(Real-Time implant Kernel, RTiK) 모듈의 시작 또는 종료를 명령하는 타이머 제어 함수를 포함한다.The module control function includes a task control function for controlling the task of the Android through the real-time implant kernel (RTiK) module and the real-time processing module (Real-Time implant Kernel, RTiK) And a timer control function for commanding the start or end of the module.

여기서, 어플리케이션 처리부는, 상기 실시간 처리(Real-Time implant Kernel, RTiK) 모듈을 제어하는 자바로 작성된 실시간 API 클래스(RTiK-APIs Class)를 더 포함하며, 상기 실시간 API 클래스(RTiK-APIs Class)는, 상기 실시간 API 레이어(RTiK-API’s Layer)를 통해 상기 실시간 처리(Real-Time implant Kernel, RTiK) 모듈에 접근한다.Here, the application processing unit further includes a real-time API class (RTiK-APIs Class) written in Java that controls the real-time processing module (Real-Time Implant Kernel, RTiK) , And accesses the real-time processing kernel (RTiK) module through the real-time API layer (RTiK-API's layer).

여기서, 실시간 API 레이어(RTiK-API’s Layer)는, 상기 실시간 처리(Real-Time implant Kernel, RTiK) 모듈에 접근하는 네이티브 라이브러리(Native Library)를 포함하며, 상기 실시간 API 클래스(RTiK-APIs Class)는, 네이티브 라이브러리(Native Library)를 통해 상기 실시간 처리 모듈에 접근할 수 있는 함수를 제공하며, 상기 실시간 처리 모듈에 접근할 수 있는 함수는, 상기 실시간 API 레이어(RTiK-API’s Layer)의 접근을 위하여 JNI(Java Native Interface) 함수를 이용한 JNI 프로토콜을 이용한다.Here, the real-time API layer (RTiK-API's Layer) includes a native library for accessing the real-time processing kernel (RTiK) module, and the real-time API class (RTiK-APIs Class) And a function capable of accessing the real-time processing module through a native library, wherein the function capable of accessing the real-time processing module includes a function for accessing the RTiK-API's layer, (Java Native Interface) function.

여기서, 라이브러리 처리부는, 실시간 태스크 수행을 위해 P쓰레드(Pthread) 라이브러리를 이용하여 상기 네이티브 라이브러리(Native Library) 영역에 태스크를 생성한다.Here, the library processing unit creates a task in the native library area using a Pthread library for real-time task execution.

여기서, 런타임 처리부는, 상기 달빅 가상머신(Dalvik VM)의 가비지 컬렉션 실행 여부를 저장하는 저장 파일을 포함하는 리눅스 파일 처리부를 더 포함하며, 상기 달빅 가상머신은, 코드 상에서 상기 저장 파일에 접근가능하다.Here, the runtime processing unit may further include a Linux file processing unit including a save file for storing whether the garbage collection execution of the Dalvik VM is executed, and the Dalbik virtual machine is capable of accessing the save file on the code .

여기서, 가비지 컬렉션 제어부는, 달빅 가상머신(Dalvik VM)이 초기화 되는 과정에서, 상기 저장 파일의 데이터를 읽어오는 리드(read)부, 상기 리드(read)부에서 읽어온 값을 상기 플래그 변수로 설정하는 플래그 변수 설정부, 상기 가비지 컬렉션이 필요한 시점에서 설정된 상기 플래그 변수 값을 확인하는 플래그 변수 확인부 및 상기 플래그 변수 값에 따라 상기 가비지 컬렉션 수행을 판단하는 가비지 컬렉션 수행 판단부를 포함한다.Here, the garbage collection control unit may include a read unit for reading the data of the storage file in the process of initializing the Dalvik VM, a value read from the read unit to the flag variable A flag variable checking unit for checking the flag variable value set at a time when the garbage collection is required, and a garbage collection execution determiner for determining the garbage collection performance according to the flag variable value.

여기서, 가비지 컬렉션 수행 판단부는, 상기 플래그 변수 값이 1인 경우 상기 가비지 컬렉션을 실행하지 않고, 0인 경우 상기 가비지 컬렉션을 실행한다.Here, the garbage collection execution determination unit does not execute the garbage collection when the flag variable value is 1, and executes the garbage collection when the flag variable value is 0.

이상에서 설명한 바와 같이 본 발명의 실시예들에 의하면, 사용자 작업을 수행하는 적어도 하나 이상의 어플리케이션과 관련된 어플리케이션 레벨의 동작을 처리하는 어플리케이션 처리부, 어플리케이션을 수행하기 위한 안드로이드 운영체제를 포함하고, 운영체제 레벨의 동작을 수행하는 운영체제 처리부, 어플리케이션 처리부와, 운영체제 처리부를 매개하는 미들웨어를 포함하며, 미들웨어는, 실시간 작업이 필요한 시간 동안 가비지 컬렉션을 제어하여 안드로이드의 실시간 태스크 처리를 가능하게 할 수 있다.As described above, according to the embodiments of the present invention, an application processing unit for processing an application level operation related to at least one application performing a user task, and an Android operating system for executing an application, An application processing unit, and middleware that mediates the operating system processing unit. The middleware can control the garbage collection during the time required for the real time operation, thereby enabling real time task processing of the Android.

또한, 안드로이드의 가비지 컬렉션 실행을 제어하는 구조를 설계 및 구현함으로써 실시간 작업이 필요한 시간 동안 가비지 컬렉션을 제어할 수 있다.In addition, by designing and implementing a structure that controls Android's garbage collection execution, it is possible to control garbage collection during the time required for real-time operation.

이에 따라, 성능을 검증할 수 있는 국산화된 실시간 이식 커널 개발을 통해, 전용 단말 개발에 사용되는 장비 개발과 유지, 보수비용을 감소시킬 수 있고, 실시간 운영체제에 대한 IPR을 확보할 수 있다.Therefore, through the development of a localized real-time portable kernel capable of verifying the performance, it is possible to reduce equipment development, maintenance and repair costs used for the development of a dedicated terminal, and secure IPR for a real-time operating system.

여기에서 명시적으로 언급되지 않은 효과라 하더라도, 본 발명의 기술적 특징에 의해 기대되는 이하의 명세서에서 기재된 효과 및 그 잠정적인 효과는 본 발명의 명세서에 기재된 것과 같이 취급된다.Even if the effects are not expressly mentioned here, the effects described in the following specification which are expected by the technical characteristics of the present invention and their potential effects are handled as described in the specification of the present invention.

도 1 및 도 2은 본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 장치를 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 장치의 런타임 처리부를 나타낸 블록도이다.
도 4는 본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 장치의 가비지 컬렉션 제어부를 나타낸 도면이다.
도 5는 본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 방법을 나타낸 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 방법을 나타낸 도면이다.
도 7은 본 발명의 일 실시예에 따른 호출 주기의 변화를 나타낸 그래프이다.
도 8 및 도 9는 본 발명의 일 실시예에 따른 힙 크기의 변화를 나타낸 그래프이다.
1 and 2 are views showing a real-time task management apparatus for Android according to an embodiment of the present invention.
3 is a block diagram showing a runtime processing unit of the real-time task management apparatus of the Android according to an embodiment of the present invention.
4 is a diagram illustrating a garbage collection control unit of the real-time task management apparatus of the Android according to an embodiment of the present invention.
5 is a flowchart illustrating a method for managing a real-time task of the Android according to an embodiment of the present invention.
FIG. 6 is a diagram illustrating a method for managing a real-time task of the Android according to an embodiment of the present invention.
FIG. 7 is a graph illustrating a change in a paging cycle according to an exemplary embodiment of the present invention. Referring to FIG.
8 and 9 are graphs illustrating changes in heap size according to an embodiment of the present invention.

이하, 본 발명에 관련된 안드로이드의 실시간 태스크 관리 장치에 대하여 도면을 참조하여 보다 상세하게 설명한다. 그러나, 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며, 설명하는 실시예에 한정되는 것이 아니다. 그리고, 본 발명을 명확하게 설명하기 위하여 설명과 관계없는 부분은 생략되며, 도면의 동일한 참조부호는 동일한 부재임을 나타낸다.Hereinafter, a real-time task management apparatus for Android according to the present invention will be described in detail with reference to the drawings. However, the present invention can be implemented in various different forms, and is not limited to the embodiments described. In order to clearly describe the present invention, parts that are not related to the description are omitted, and the same reference numerals in the drawings denote the same members.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, .

이하의 설명에서 사용되는 구성요소에 대한 접미사 “모듈” 및 “부”는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다.The suffix " module " and " part " for the components used in the following description are given or mixed in consideration of ease of specification, and do not have their own meaning or role.

제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 구성요소들은 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.The terms first, second, etc. may be used to describe various elements, but the elements should not be limited by terms. The terms are used only for the purpose of distinguishing one component from another.

본 발명은 안드로이드의 실시간 태스크 관리 장치에 관한 것이다.The present invention relates to a real-time task management apparatus for Android.

도 1 및 도 2은 본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 장치를 나타낸 도면이다.1 and 2 are views showing a real-time task management apparatus for Android according to an embodiment of the present invention.

안드로이드는 모바일 플랫폼으로, 운영체제와 미들웨어 및 핵심 어플리케이션이 포함된 소프트웨어 스택으로 정의된다. 안드로이드 플랫폼은 도 1과 같은 스택 구조를 가진다.Android is a mobile platform, defined as a software stack that includes the operating system, middleware, and core applications. The Android platform has a stack structure as shown in FIG.

본 발명의 처리부는 독립적으로 수행되는 것으로 예시하였으나, 서로 다른 프로세서에서 각각 구현이 되거나, 하나의 프로세스에 포함되어 구현이 가능하다.Although the processing unit of the present invention is illustrated as being performed independently, it may be implemented in different processors, or may be implemented in a single process.

도 1을 참조하면, 본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 장치(10)는 어플리케이션 처리부(100), 어플리케이션 프레임워크 처리부(200), 라이브러리 처리부(300), 런타임 처리부(400), 운영체제 처리부(500)를 포함한다.1, the real-time task management apparatus 10 of the Android according to an embodiment of the present invention includes an application processing unit 100, an application framework processing unit 200, a library processing unit 300, a runtime processing unit 400, And an operating system processing unit 500.

안드로이드의 실시간 태스크 관리 장치(10)는 운영체제 레벨에서 실시간으로 데이터를 획득하고 평가하는 실시간 처리가 가능한 관리 장치이다. The real-time task management device 10 of the Android is a management device capable of real-time processing for acquiring and evaluating data in real time at the operating system level.

전장에서 사용 가능한 사격통제장치나 모니터링 장비 중 실시간성이 요구되는 안드로이드 운영체제를 사용하는 휴대용 단말에서 활용 가능하다.It can be used in portable terminals using the Android operating system, which requires real-time fire control or monitoring equipment available on the battlefield.

실시간으로 데이터를 획득하고 평가하는 것이 중요한 군용 점검 장비와 같은 시스템에서는 운영체제 레벨에서 실시간 처리가 가능해야 한다. 기술의 발전으로 기존 장비를 휴대용 단말로 대체하려는 요구가 있으나, 안드로이드가 적용된 휴대용 단말은 실시간성이 요구되는 시스템에 적합하지 않다. 안드로이드에서는 가비지 컬렉션을 통해 가용 메모리를 확보하는데, 이 작업이 수행되는 동안 다른 태스크가 중단되어 특정 태스크의 주기성을 보장할 수 없다. 본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 장치(10)는 실시간 작업이 필요한 시간 동안 가비지 컬렉션을 제어하여 실시간 성능을 보장하며, 안드로이드에 실시간 성능 보장을 위한 RTiK(Real Time implant Kernel)을 적용한다. Systems such as military inspection equipment where it is important to acquire and evaluate data in real time should be capable of real-time processing at the operating system level. Although there is a demand for replacing existing devices with portable terminals due to the development of technology, portable terminals employing Android are not suitable for systems requiring real-time properties. On Android, garbage collection ensures free memory, while other tasks are interrupted while this task is being performed, which can not guarantee the periodicity of a particular task. The real-time task management apparatus 10 of the Android according to an embodiment of the present invention controls real-time performance by controlling garbage collection for a time required for real-time work, and real time implant kernel (RTiK) To be applied.

어플리케이션 처리부(100)는 사용자 작업을 수행하는 적어도 하나 이상의 어플리케이션과 관련된 어플리케이션 레벨의 동작을 처리한다.The application processing unit 100 processes application level operations related to at least one application that performs a user task.

운영체제 처리부(500)는 어플리케이션을 수행하기 위한 안드로이드 운영체제를 포함하고, 상기 운영체제 레벨의 동작을 수행한다.The operating system processing unit 500 includes an Android operating system for executing an application and performs the operation at the operating system level.

운영체제 처리부(500)는 스택 구조의 가장 아래에 위치하며 리눅스 커널로, 안드로이드 플랫폼의 기반이 된다. 리눅스 커널은 프로세스 및 메모리 관리, 보안 기능과 같은 시스템 기능을 제공한다. 또한 네트워크 인터페이스와 디바이스 드라이버 등을 관리하여 주변 하드웨어와의 인터페이스를 용이하게 하는 역할을 한다.The operating system processing unit 500 is located at the bottom of the stack structure and is a Linux kernel, which is the basis of the Android platform. The Linux kernel provides system functions such as process and memory management and security features. It also manages the network interface and the device driver to facilitate interface with peripheral hardware.

어플리케이션 처리부와, 운영체제 처리부를 매개하는 미들웨어를 포함하며, 미들웨어는 어플리케이션 프레임워크 처리부(200), 라이브러리 처리부(300), 런타임 처리부(400)를 포함한다.An application processing unit, and middleware that mediates an operating system processing unit. The middleware includes an application framework processing unit 200, a library processing unit 300, and a runtime processing unit 400.

미들웨어는, 실시간 작업이 필요한 시간 동안 가비지 컬렉션을 제어한다.The middleware controls garbage collection during the time required for real-time operation.

어플리케이션 프레임워크 처리부(200)는 어플리케이션을 실행시키는데 필요한 자바로 작성된 API(Application Programming Interface)로 접근한다.The application framework processor 200 accesses an API (Application Programming Interface) written in Java necessary for executing an application.

어플리케이션 프레임워크는 자바로 작성된 API 형태로 접근할 수 있으며, 안드로이드 어플리케이션에 다양한 상위 레벨 서비스를 제공한다.The application framework is accessible as an API written in Java and provides a variety of high-level services to Android applications.

라이브러리 처리부(300)는 운영체제 처리부(500)의 상단에 존재하며, 안드로이드 환경에 맞게 수정된 라이브러리 레벨의 동작을 수행한다.The library processing unit 300 exists at the top of the operating system processing unit 500 and performs a modified library level operation according to the Android environment.

라이브러리 처리부(300)는 리눅스 커널 상단에 위치하며 C/C++ 라이브러리 집합을 포함한다. 라이브러리에는 안드로이드 환경에 맞게 수정된 C라이브러리(libc)인 Bionic, 오디오 및 비디오, 그래픽, 브라우저, SQLite 등이 포함된다. The library processing unit 300 is located at the top of the Linux kernel and includes a set of C / C ++ libraries. The library includes Bionic, a C library (libc) modified for the Android environment, audio and video, graphics, browser, and SQLite.

런타임 처리부(400)는 달빅 가상머신(Dalvik VM)을 이용하여, 메모리 관리와 멀티쓰레딩(multithreading)을 수행한다.The runtime processing unit 400 performs memory management and multithreading using the Dalvik VM.

런타임 처리부(400)는 달빅 가상머신으로, 자바 가상머신을 대신하여 안드로이드에 최적화되어 설계된다. 달빅 가상머신은 메모리 관리와 멀티 쓰레딩을 위해 리눅스를 완전히 이용한다.The runtime processing unit 400 is a Dalvik virtual machine, and is designed to be optimized for Android on behalf of the Java virtual machine. The Dalvik virtual machine takes full advantage of Linux for memory management and multithreading.

달빅 가상머신은 안드로이드 KitKat(API 19) 버전까지 사용된 런타임 시스템이다. 어플리케이션 마다 별도의 가상머신에서 동작하기 때문에 가비지 컬렉션 또한 독립적으로 발생한다. 달빅 가상 머신은 리눅스 커널이 관리하는 프로세스 내에 존재한다.The Dalvik virtual machine is a runtime system used up to the Android KitKat (API 19) version. Garbage collection also occurs independently because each application runs in a separate virtual machine. The Dalvik virtual machine resides in a process managed by the Linux kernel.

달빅 가상머신(Dalvik VM)은, 가비지 컬렉션의 수행을 제어하는 가비지 컬렉션 제어부를 포함하며, 가비지 컬렉션의 동작 방식은, 동시 마크 스윕(Concurrent Mark Sweep, CMS) 알고리즘을 이용하여 구현되되, 가비지 컬렉션 제어부는 달빅 가상머신에서 가용 메모리 확보를 위해 가비지 컬렉션을 실행해야 하는 시점에서 특정 플래그 값에 따라 실행 여부를 결정한다.The Dalvik VM includes a garbage collection control unit for controlling the execution of garbage collection. The garbage collection operation method is implemented using a concurrent mark sweep (CMS) algorithm, Determines whether to execute the garbage collection according to a specific flag value when the garbage collection is to be executed in order to obtain available memory in the Dalbig virtual machine.

동시 마크 스윕(Concurrent Mark Sweep, CMS) 알고리즘은 다음과 같다. 먼저 컬렉션 주기의 시작 부분에서 일괄적으로 모든 뮤테이터 쓰레드들을 중단시킨 후, 힙 루트 스택에서 참조하는 도달 가능한(reachable) 객체들을 찾아서 마킹한다(Initial Mark). 중단시켰던 뮤테이터 쓰레드들을 다시 실행시킨 후에, 이전 단계에서 마킹한 객체가 참조하는 객체들을 따라가면서 도달 가능한지 확인하여 마킹한다(Concurrent Mark). 이 단계가 끝나면 가비지 컬렉터는 다시 모든 뮤테이터 쓰레드들을 중단시킨다.Concurrent Mark Sweep (CMS) algorithm is as follows. First, all the mutator threads are stopped at the beginning of the collection cycle, and then the reachable objects referenced in the heap root stack are found and marked (Initial Mark). After restarting the suspended mutator threads, mark the objects marked in the previous step by following the objects they refer to and mark them as Concurrent Marks. At the end of this phase, the garbage collector again stops all mutator threads.

이전 단계에서의 동시 마킹은 뮤테이터 쓰레드들의 동작과 함께 진행되었기 때문에 새로 추가되거나 참조가 끊긴 객체가 있는지 다시 확인한다(Remark). 그런 다음 뮤테이터 쓰레드들을 다시 시작시키고, 마킹되지 않은 객체들은 가비지로서 정리하는 작업을 수행한다(Concurrent Sweep). The concurrent marking in the previous step was done with the mutator thread's actions, so Remark checks again for newly added or dropped references. It then restarts the mutator threads and performs garbage collection of the unmarked objects (Concurrent Sweep).

자바 언어로 작성되는 안드로이드 어플리케이션은 달빅 가상머신(Dalvik Virtual Machine) 상에서 동작하는데, 달빅 가상머신에서는 가용 메모리 확보를 위해 가비지 컬렉션(Garbage Collection, GC)을 이용하여 메모리를 관리한다.Android applications written in the Java language run on the Dalvik virtual machine, and the Dalbig virtual machine manages the memory using the Garbage Collection (GC) to obtain available memory.

본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 장치(10)는 안드로이드에 가비지 컬렉션 실행을 제어하는 구조를 설계 및 구현하여 가비지 컬렉션으로 인한 실시간 태스크의 중단시간을 최소화 할 수 있도록 가비지 컬렉션의 실행을 제어하는 방법을 사용한다. 또한 안드로이드 환경에서 실시간성을 제공할 수 있도록 RTiK를 개선하여 적용한다. The real-time task management apparatus 10 of the Android according to the embodiment of the present invention designs and implements a structure for controlling the execution of garbage collection on the Android, thereby executing garbage collection so as to minimize the interruption time of the real- Is used. In addition, RTiK is improved and applied to provide real-time performance in Android environment.

운영체제 처리부(500)는, 리눅스 커널을 기반으로 달빅 가상머신(Dalvik VM)과 어플리케이션 프레임워크 처리부(200)를 통해 어플리케이션이 실행될 수 있는 환경을 제공하게 된다.The operating system processing unit 500 provides an environment in which applications can be executed through the Dalvik virtual machine (Dalvik VM) and the application framework processing unit 200 based on the Linux kernel.

도 2는 본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 장치에 있어서 추가되는 RT 스택구조를 나타낸 것이다.2 illustrates an RT stack structure added to the real-time task management apparatus of the Android according to an embodiment of the present invention.

안드로이드 운영체제는 리눅스 커널을 사용하며, 안드로이드 프레임워크 실행을 위한 스택 구조를 가진다. 이에 따라서 임베디드 리눅스에 실시간성 제어를 위해 개발한 RTiK-AL를 사용할 수 있으나, 가상 머신에서 동작하는 안드로이드에서 RTiK-AL 모듈 사용을 위한 인터페이스 및 제어 구조를 필요로 하게 된다.The Android operating system uses the Linux kernel and has a stack structure for running the Android framework. Accordingly, although RTiK-AL developed for real-time control in embedded Linux can be used, an interface and a control structure for using RTiK-AL module in Android operating in a virtual machine are required.

도 2에 나타난 바와 같이 본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 장치는 안드로이드의 스택 구조에서 실시간성 제공을 위한 방법으로 RTiK-API's Layer 및 RTiK-APIs Class가 추가된다.As shown in FIG. 2, the real-time task management apparatus of the Android according to an embodiment of the present invention adds RTiK-API's Layer and RTiK-APIs Class as a method for providing real-time performance in the stack structure of Android.

도 2를 참조하면, 운영체제 처리부(500)는 리눅스 커널의 실시간성 제어를 위해 사용되는 실시간 처리(Real-Time implant Kernel, RTiK) 모듈(510)을 포함한다.Referring to FIG. 2, the operating system processing unit 500 includes a real-time implant kernel (RTiK) module 510 used for real-time control of the Linux kernel.

실시간 처리 모듈은(510), 상기 리눅스 커널의 영역에서 실시간 타이머 기능을 제공한다.The real-time processing module 510 provides a real-time timer function in the area of the Linux kernel.

라이브러리 처리부(300)는, 실시간 처리(Real-Time implant Kernel, RTiK) 모듈(510) 제어를 위한 라이브러리 영역이다.The library processing unit 300 is a library area for controlling the real-time processing kernel (RTiK) module 510.

실시간 처리(Real-Time implant Kernel, RTiK) 모듈(510)에서 제공하는 상기 실시간 타이머 기능을 상기 어플리케이션에 제공하는 인터페이스인 실시간 API 레이어(RTiK-API’s Layer)(310)를 포함한다.And a real-time API layer (RTiK-API's Layer) 310 that provides the real-time timer function provided by the real-time implant kernel (RTiK) module 510 to the application.

실시간 API 레이어(RTiK-API’s Layer)(310)는, 모듈 제어 함수를 이용하여 상기 실시간 처리(Real-Time implant Kernel, RTiK) 모듈을 제어한다.The real-time API layer (RTiK-API's layer) 310 controls the real-time processing kernel (RTiK) module using a module control function.

모듈 제어 함수는, 실시간 처리(Real-Time implant Kernel, RTiK) 모듈을 통해 안드로이드의 태스크를 제어하는 태스크 제어 함수 및 실시간 타이머를 동작시켜 상기 실시간 처리(Real-Time implant Kernel, RTiK) 모듈의 시작 또는 종료를 명령하는 타이머 제어 함수를 포함한다.The module control function operates the task control function and the real-time timer for controlling the task of the Android through the real-time implant kernel (RTiK) module to start the real-time implant kernel (RTiK) module And a timer control function for commanding termination.

리눅스 커널에 실시간성 제어를 위해 사용되는 RTiK-Module은 커널 영역에서 실시간 타이머 기능을 제공한다. RTiK-APIs Layer는 이를 안드로이드 어플리케이션에 제공하기 위한 중간 단계의 인터페이스로 제공된다. 리눅스 커널 모듈로 제공되는 RTiK-Module제어를 위해 ioctl을 통한 커널에 접근할 수 있도록 모듈 제어 함수를 제공한다. 표 1은 모듈 제어 함수를 위해 제공하는 RTiK-APIs Layer의 모듈 제어 함수 목록을 나타낸 것이다.The RTiK-Module, used for real-time control in the Linux kernel, provides real-time timer functionality in the kernel domain. The RTiK-APIs layer is provided as an intermediate interface to provide this to Android applications. Provides module control functions for accessing the kernel via ioctl for RTiK-Module control provided as a Linux kernel module. Table 1 lists the module control functions of the RTiK-APIs layer for module control functions.

Figure 112018078377050-pat00001
Figure 112018078377050-pat00001

실시간 처리(Real-Time implant Kernel, RTiK) 모듈(510)을 통해 태스크의 실시간 성능 제공을 위해 태스크 제어를 위한 모듈 제어 함수 3개를 제공한다. 실시간 태스크 등록 및 사용 해제 함수와 시스템의 오버헤드를 줄이기 위한 태스크 응답 확인 함수를 제공한다.Three module control functions for task control are provided to provide real-time performance of tasks through a real-time implant kernel (RTiK) module 510. Provides task response checking function to reduce the overhead of real-time task registration and deactivation function and system.

또한, 태스크 등록 후에 실시간 타이머를 동작시켜 실시간 처리(Real-Time implant Kernel, RTiK) 모듈(510)의 시작 및 종료를 명령할 수 있도록 하는 2개의 함수를 제공한다. 이를 통해서 사용자 영역에 실시간성을 제공할 수 있도록 하는 인터페이스 함수가 제공된다. 안드로이드 운영체제에서는 사용자 어플리케이션에 cpp 언어로 작성된 인터페이스 함수를 사용하도록 NDK(Native Development Kit)을 통해 Native C/C++ Library 영역에 RTiK-APIs Layer를 등록하여 안드로이드 사용자 영역에서 접근할 수 있도록 한다.In addition, it provides two functions that enable the real-time processing (Real-Time Implant Kernel, RTiK) module 510 to be started and terminated by operating a real-time timer after task registration. This provides an interface function that can provide real-time properties to the user area. The Android operating system registers the RTiK-APIs layer in the Native C / C ++ Library area through the NDK (Native Development Kit) to use the interface function written in the cpp language in the user application so that it can be accessed from the Android user area.

라이브러리 처리부(300)는, 실시간 태스크 수행을 위해 P쓰레드(Pthread) 라이브러리를 이용하여 네이티브 라이브러리(Native Library) 영역에 태스크를 생성한다.The library processing unit 300 generates a task in a native library area using a Pthread library for real-time task execution.

기존 안드로이드의 자바 스레드는 우선순위를 제공하고 있으나, 이는 리눅스에서 Nice 값을 이용한 동적 우선순위 방법을 이용하는 것으로 실시간 태스크에 사용할 수 없는 한계를 보인다. 이를 해결하기 위해 본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 장치(10)는 Pthread 라이브러리를 이용한 Native Library 영역에 태스크를 생성한다. 구체적으로, rtik_task_create() 함수를 통해서 pthread를 통한 스레드를 생성한다. 이 때, 우선순위를 조정하여 실시간 태스크를 위한 설정을 수행한다. 또한, 다양한 사용자의 함수에 대한 호출을 위해 함수를 등록할 수 있도록 인자를 통해 제공한다.Existing Android Java threads provide priorities, but Linux uses the dynamic priority method with Nice values, which limits the limitations of real-time tasks. To solve this problem, the real-time task management apparatus 10 of the Android according to an embodiment of the present invention creates a task in a native library area using a Pthread library. Specifically, thread is created through pthread through rtik_task_create () function. At this time, the priority is adjusted to perform setting for the real-time task. In addition, it provides arguments through which functions can be registered for calls to various user functions.

사용자 함수 등록을 위한 자료구조는 매개변수가 2개인 함수 타입을 임의로 사용자가 지정할 수 있도록 하여, 사용자가 작성하는 다양한 함수가 실행될 수 있도록 한다. 이를 통해서 사용자 영역에 실시간 태스크를 제공할 수 있도록 한다.The data structure for user function registration allows the user to specify a function type with two parameters arbitrarily so that various functions created by the user can be executed. This enables real-time tasks to be provided to the user area.

어플리케이션 프레임워크 처리부(200)는 어플리케이션을 실행시키는데 필요한 자바로 작성된 API(Application Programming Interface)로 접근한다.The application framework processor 200 accesses an API (Application Programming Interface) written in Java necessary for executing an application.

어플리케이션 처리부(100)는, 실시간 처리(Real-Time implant Kernel, RTiK) 모듈을 제어하는 자바로 작성된 실시간 API 클래스(RTiK-APIs Class)(110)를 포함한다.The application processing unit 100 includes a real-time API class (RTiK-APIs Class) 110 written in Java that controls a real-time implant kernel (RTiK) module.

실시간 API 클래스(RTiK-APIs Class)(110)는, 실시간 API 레이어(RTiK-API’s Layer)(310)를 통해 상기 실시간 처리(Real-Time implant Kernel, RTiK) 모듈에 접근한다.A real-time API class (RTiK-APIs class) 110 accesses the real-time implant kernel (RTiK) module through a real-time API layer (RTiK-API's layer)

실시간 API 레이어(RTiK-API’s Layer)(310)는, 실시간 처리(Real-Time implant Kernel, RTiK) 모듈에 접근하는 네이티브 라이브러리(Native Library)를 포함한다.A real-time API layer (RTiK-API's Layer) 310 includes a native library for accessing real-time processing kernel (RTiK) modules.

실시간 API 클래스(RTiK-APIs Class)(110)는, 네이티브 라이브러리(Native Library)를 통해 상기 실시간 처리 모듈에 접근할 수 있는 함수를 제공하며, 실시간 처리 모듈(510)에 접근할 수 있는 함수는, 실시간 API 레이어(RTiK-API’s Layer)의 접근을 위하여 JNI(Java Native Interface) 함수를 이용한 JNI 프로토콜(210)을 이용한다.A real-time API class (RTiK-APIs class) 110 provides a function for accessing the real-time processing module via a native library, and a function capable of accessing the real- A JNI protocol 210 using a Java Native Interface (JNI) function is used for accessing a real-time API layer (RTiK-API's Layer).

안드로이드 운영체제는 가상 머신에서 동작하는 어플리케이션을 통해 사용자에게 서비스를 제공한다. 이에 따라 실시간 모듈을 제어하기 위해서는 자바로 작성된 클래스를 필요로 하게 된다. 구체적으로, cpp 언어로 작성된 실시간 API 레이어(RTiK-API’s Layer)(310) 접근을 위하여 자바와 cpp 간의 정보 전달을 위한 System.loadLibrary() 함수를 통해 라이브러리를 메모리에 읽어주며, 접근을 위한 4개의 함수는 표 2에 나타난다.The Android operating system provides services to users through applications running on virtual machines. Accordingly, in order to control a real-time module, a class written in Java is required. Specifically, the library is read into memory through a System.loadLibrary () function for information transmission between Java and cpp for accessing a real-time API layer (RTiK-API's Layer) 310 written in the cpp language, and four The functions are shown in Table 2.

Figure 112018078377050-pat00002
Figure 112018078377050-pat00002

초기화 함수를 이용하여 JNI에서 제공하는 Native Library의 함수 내부에 있는 기본 자료구조를 초기화 한다. 또한, 타이머 관리를 위한 명령 함수를 제공하며, 실시간 태스크의 실행 동기화를 위한 응답 대기 함수를 제공하고 있다.Initialize the basic data structure inside the Native Library function provided by JNI using initialization function. It also provides a command function for timer management, and provides a response wait function for real-time task execution synchronization.

이를 통해 자바 영역과 cpp 영역을 연결하여 안드로이드 어플리케이션에서도 모듈을 제어할 수 있도록 할 수 있게 된다.This makes it possible to connect the Java realm to the cpp realm and control the module in the Android application.

도 3은 본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 장치의 런타임 처리부를 나타낸 블록도이다.3 is a block diagram showing a runtime processing unit of the real-time task management apparatus of the Android according to an embodiment of the present invention.

가비지 컬렉션으로 인한 중단 시간을 최소화 하고자 실행 제어를 통해 가비지 컬렉션이 실행되지 않으면, 힙 메모리에 가비지가 남아있게 되고 해당 메모리 공간은 다른 객체에 의해 사용될 수 없다. 이에 따라 메모리 할당이 요청될 때마다 가용 메모리가 부족한 현상이 빈번하게 발생하며, 힙 메모리의 크기가 지속적으로 증가한다. 그렇기 때문에 가비지 컬렉션 실행이 비활성화 되는 시간은 실시간 태스크가 실행되는 특정 시간으로 한정시켜야 한다. 그 이외의 상황에서는 가비지 컬렉션이 실행될 수 있도록 하는 것이 필요하다.If garbage collection is not performed through execution control to minimize downtime due to garbage collection, garbage will remain in the heap memory and the memory space can not be used by other objects. Thus, whenever memory allocation is requested, the available memory becomes insufficient frequently, and the size of the heap memory continuously increases. Therefore, the time at which garbage collection execution is deactivated should be limited to the specific time at which the real-time task is executed. In other situations, it is necessary to allow garbage collection to be executed.

본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 장치의 가비지 컬렉션 실행 제어 구조는 안드로이드의 달빅 가상머신을 수정한 것으로, 달빅 가상머신에서 가용 메모리 확보를 위해 가비지 컬렉션을 실행해야 하는 시점에서 특정 플래그 값에 따라 그 실행 여부가 결정된다.The garbage collection execution control structure of the real-time task management apparatus of the Android according to an embodiment of the present invention is a modified version of the Dalvik virtual machine of the Android. In the case of the execution of the garbage collection, The value is determined according to the value.

안드로이드 어플리케이션은 리눅스 프로세스에 대응되며, 각자 자신만의 달빅 가상머신 인스턴스 상에서 실행된다. 달빅 가상머신은 Zygote 프로세스에 의해 생성 및 초기화되어 구동된다. Zygote 프로세스는 어플리케이션의 실행에 필요한 코드 및 메모리 정보들을 미리 메모리에 적재 해두었다가 새로운 어플리케이션이 실행될 때 빠르게 실행시키는 역할을 한다.The Android application is compatible with Linux processes and runs on its own Dalvik virtual machine instance. The Dalvik virtual machine is created and initialized and run by the Zygote process. The Zygote process loads the code and memory information necessary for the execution of the application into the memory in advance, and quickly executes the new application when it is executed.

도 3을 참조하면, 런타임 처리부(400)는 리눅스 파일 처리부(410), 달빅 가상머신(Dalvik VM)(430)을 포함한다.Referring to FIG. 3, the runtime processing unit 400 includes a Linux file processing unit 410 and a Dalvik VM 430.

런타임 처리부(400)는 달빅 가상머신(Dalvik VM)(430)을 이용하여, 메모리 관리와 멀티쓰레딩(multithreading)을 수행한다.The runtime processing unit 400 performs memory management and multithreading using the Dalvik VM 430. [

달빅 가상머신(Dalvik VM)은, 가비지 컬렉션의 수행을 제어하는 가비지 컬렉션 제어부(600)를 포함한다.The Dalvik virtual machine (Dalvik VM) includes a garbage collection control unit 600 that controls the execution of garbage collection.

가비지 컬렉션의 동작 방식은, 동시 마크 스윕(Concurrent Mark Sweep, CMS) 알고리즘을 이용하여 구현된다.The behavior of garbage collection is implemented using a Concurrent Mark Sweep (CMS) algorithm.

가비지 컬렉션 제어부(600)는, 달빅 가상머신에서 가용 메모리 확보를 위해 상기 가비지 컬렉션을 실행해야 하는 시점에서 특정 플래그 값에 따라 실행 여부를 결정한다.The garbage collection control unit 600 determines whether to execute the garbage collection according to a specific flag value at the time when the garbage collection should be executed in order to secure available memory in the Dalvik virtual machine.

리눅스 파일 처리부(410)는 달빅 가상머신(Dalvik VM)의 가비지 컬렉션 실행 여부를 저장하는 저장 파일을 포함한다.The Linux file processing unit 410 includes a storage file for storing whether or not the Dalvik VM (Garbage Collection Execution) is executed.

달빅 가상머신(Dalvik VM)(430)은, 코드 상에서 저장 파일에 접근가능하다.The Dalvik VM 430 is accessible to the storage file on the code.

도 4는 본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 장치의 가비지 컬렉션 제어부를 나타낸 도면이다.4 is a diagram illustrating a garbage collection control unit of the real-time task management apparatus of the Android according to an embodiment of the present invention.

달빅 가상머신(Dalvik VM)은, 가비지 컬렉션의 수행을 제어하는 가비지 컬렉션 제어부(600)를 포함한다.The Dalvik virtual machine (Dalvik VM) includes a garbage collection control unit 600 that controls the execution of garbage collection.

가비지 컬렉션 제어부(600)는, 달빅 가상머신에서 가용 메모리 확보를 위해 상기 가비지 컬렉션을 실행해야 하는 시점에서 특정 플래그 값에 따라 실행 여부를 결정한다.The garbage collection control unit 600 determines whether to execute the garbage collection according to a specific flag value at the time when the garbage collection should be executed in order to secure available memory in the Dalvik virtual machine.

도 4를 참조하면, 가비지 컬렉션 제어부(600)는 리드(read)부(610), 플래그 변수 설정부(620), 플래그 변수 확인부(630), 가비지 컬렉션 수행 판단부(640)를 포함한다.Referring to FIG. 4, the garbage collection control unit 600 includes a read unit 610, a flag variable setting unit 620, a flag variable verifying unit 630, and a garbage collection execution determining unit 640.

리드(read)부(610)는 달빅 가상머신(Dalvik VM)이 초기화 되는 과정에서, 상기 저장 파일의 데이터를 읽어온다.The read unit 610 reads data of the storage file in the process of initializing the Dalvik VM.

플래그 변수 설정부(620)는 리드(read)부에서 읽어온 값을 상기 플래그 변수로 설정한다.The flag variable setting unit 620 sets the value read from the read unit to the flag variable.

플래그 변수 확인부(630)는 가비지 컬렉션이 필요한 시점에서 설정된 상기 플래그 변수 값을 확인한다.The flag variable verifying unit 630 checks the flag variable value set at a time when garbage collection is required.

가비지 컬렉션 수행 판단부(640)는 플래그 변수 값에 따라 상기 가비지 컬렉션 수행을 판단한다. 구체적으로, 플래그 변수 값이 1인 경우 상기 가비지 컬렉션을 실행하지 않고, 0인 경우 상기 가비지 컬렉션을 실행한다.The garbage collection execution determination unit 640 determines whether the garbage collection execution is performed according to the flag variable value. More specifically, if the flag variable value is 1, the garbage collection is not executed. If the flag variable value is 0, the garbage collection is executed.

도 5는 본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 방법을 나타낸 흐름도이다.5 is a flowchart illustrating a method for managing a real-time task of the Android according to an embodiment of the present invention.

도 5를 참조하면, 가상머신을 이용하여, 메모리 관리와 멀티쓰레딩(multithreading)을 수행하는 안드로이드의 실시간 태스크 관리 방법은 Referring to FIG. 5, a real-time task management method for Android that performs memory management and multithreading using a virtual machine

리눅스 파일 처리부가 상기 가상머신의 가비지 컬렉션 실행 여부를 저장하는 저장 파일을 포함하는 단계(S100)에서 시작한다.The Linux file processing section starts with a step S100 in which a storage file for storing whether or not the virtual machine executes garbage collection is included.

단계 S200에서 가비지 컬렉션 제어부가 상기 가상머신에서 가용 메모리 확보를 위해 가비지 컬렉션을 실행해야 하는 시점에서 특정 플래그 값에 따라 실행 여부를 결정한다.In step S200, the garbage collection control unit determines whether to execute the garbage collection according to the specific flag value at the time when the garbage collection should be executed for securing available memory in the virtual machine.

구체적으로, 특정 플래그 값에 따라 실행 여부를 결정하는 단계(S200)는,More specifically, the step S200 of determining whether to execute according to the specific flag value,

단계 S210에서 리드(read)부가 상기 가상머신이 초기화 되는 과정에서, 상기 저장 파일의 데이터를 읽어온다.In step S210, the read unit reads data of the storage file in the process of initializing the virtual machine.

단계 S220에서 플래그 변수 설정부가 상기 리드(read)부에서 읽어온 값을 상기 플래그 변수로 설정한다.In step S220, the flag variable setting unit sets the value read from the read unit to the flag variable.

단계 S230에서 플래그 변수 확인부가 상기 가비지 컬렉션이 필요한 시점에서 설정된 상기 플래그 변수 값을 확인한다.In step S230, the flag variable confirmation unit checks the flag variable value set at the time when the garbage collection is required.

단계 S240에서 가비지 컬렉션 수행 판단부가 상기 플래그 변수 값에 따라 상기 가비지 컬렉션 수행을 판단한다,In step S240, the garbage collection execution determination unit determines the execution of the garbage collection according to the flag variable value.

가비지 컬렉션 수행을 판단하는 단계(S240)는, 플래그 변수 값이 1인 경우 상기 가비지 컬렉션을 실행하지 않고, 0인 경우 상기 가비지 컬렉션을 실행하며, 안드로이드의 실시간 태스크 관리 방법은 종료된다.In step S240, the garbage collection is executed if the flag variable is 1, and the garbage collection is executed if the flag variable is 0, and the real-time task management method of the Android is ended.

도 6은 본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 방법을 나타낸 도면이다.6 is a diagram illustrating a method for managing a real-time task of the Android according to an exemplary embodiment of the present invention.

Zygote 달빅 가상머신에 의해 시스템에 존재하는 모든 프로세스의 달빅 가상머신 인스턴스가 생성되고 초기화 되며, 이 과정에서 가비지 컬렉션의 실행 여부가 결정되도록 하였다. 이를 위해 가비지 컬렉션 실행 여부를 저장하고 있는 파일을 하나 두었으며, 달빅 가상머신 코드 상에서 파일에 접근할 수 있도록 하기 위해 리눅스 파일 시스템에 위치시켰다. 달빅 가상머신이 초기화 되는 과정에서 해당 파일에서 값을 읽어와 GC_DISABLED라는 플래그 변수에 설정한다. 이와 같은 과정을 통해 안드로이드 시스템 내에 존재하는 모든 달빅 가상머신의 가비지 컬렉션 실행이 제어된다.Zygote The Dalbig virtual machine creates and initializes the Dalbig virtual machine instances of all the processes in the system, and determines whether garbage collection is executed or not. To do this, I put a file that stores the execution status of the garbage collection and put it in the Linux file system so that I can access the files on the Dalvik virtual machine code. During the initialization of the Dalvik virtual machine, the value is read from the file and set to the flag variable GC_DISABLED. This process controls the execution of garbage collection of all Dalvik virtual machines in the Android system.

도 6은 달빅 가상머신이 초기화될 때 가비지 컬렉션 실행 여부에 대한 플래그 값이 설정된 후, 가비지 컬렉션 실행 여부가 결정되는 과정을 나타낸다. 가비지 컬렉션이 필요한 시점에서 GC_DISABLED 변수 값에 따라 실행 여부가 결정된다. GC_DISABLED 변수는 달빅 가상머신의 가비지 컬렉션 실행 여부를 나타내는 변수로, 값이 1인 경우 가비지 컬렉션을 실행하지 않고, 0인 경우 실행한다는 의미를 가진다.FIG. 6 shows a process of determining whether to execute garbage collection after setting a flag value for whether garbage collection is executed when the Dalvik virtual machine is initialized. When garbage collection is required, execution depends on the value of the GC_DISABLED variable. The variable GC_DISABLED indicates whether the garbage collection of the Dalvik virtual machine is executed. If the value is 1, it means that garbage collection is not executed. If the value is 0, it is executed.

달빅 가상머신은 가비지 컬렉션이 필요한 시점에서 dvmCollectGarbageInternal 함수를 호출하여 도달할 수 없는 객체를 가비지로 식별하고, 가비지가 차지하고 있는 메모리 공간을 회수한다.The Dalvik virtual machine calls the dvmCollectGarbageInternal function when garbage collection is needed to identify garbage objects that can not be reached, and reclaim memory space occupied by garbage.

기존의 달빅 가상머신 코드에 가비지 컬렉션의 실행을 제어하기 위한 함수를 구현하였으며, 표 3은 가비지 컬렉션의 실행을 제어하기 위한 함수 목록을 나타낸 것이다.In the existing Dalvik virtual machine code, a function for controlling the execution of the garbage collection is implemented. Table 3 shows a list of functions for controlling the execution of the garbage collection.

Figure 112018078377050-pat00003
Figure 112018078377050-pat00003

여기서, getGCstatus() 함수는 GC_DISABLED 변수에 대한 getter 함수로, 변수 값을 리턴하며, setGCstatus()함수는 GC_DISABLED 변수의 setter 함수이다. 해당 변수 값은 파일에서 값을 읽어서 설정되기 때문에, 인자로 전달 받은 값을 파일에 기록하기 위해 dvmGcExecSetup함수를 호출하는 작업을 수행한다.Here, the getGCstatus () function is a getter function for the GC_DISABLED variable and returns a variable value, and the setGCstatus () function is a setter function of the GC_DISABLED variable. Since the value of the variable is set by reading the value from the file, the dvmGcExecSetup function is called to write the value received as argument to the file.

dvmGcExecSetup 함수는 가비지 컬렉션 실행 여부를 파일에 설정하는 함수로, 인자로 전달 받은 값을 파일에 기록한다.The dvmGcExecSetup function sets whether to execute garbage collection on a file, and writes the value received as an argument to a file.

dvmExecGetValue 함수는 파일에서 값을 읽어서 GC_DISABLED 변수에 해당 값을 설정하는 함수이다.The dvmExecGetValue function reads a value from a file and sets the value to the GC_DISABLED variable.

도 7은 본 발명의 일 실시예에 따른 호출 주기의 변화를 나타낸 그래프이다.FIG. 7 is a graph illustrating a change in a paging cycle according to an exemplary embodiment of the present invention. Referring to FIG.

도 7은 본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 장치 및 관리 방법의 가비지 컬렉션 실행 제어에 따른 실시간 성능 차이를 확인하기 위한 것으로, 도 7의 (a)는 제어 방법이 적용되지 않은 환경이고, 도 7의 (b)는 가비지 컬렉션이 적용된 상황이며 두 상황에서의 실험을 통해 나타난 결과이다.FIG. 7 illustrates a real-time performance difference according to the garbage collection execution control of the real-time task management apparatus and method of the Android according to the embodiment of the present invention. FIG. 7 (a) And FIG. 7 (b) shows a situation in which garbage collection is applied, and the results are shown through experiments in two situations.

실험은 5ms 주기를 가지는 태스크의 주기성 만족을 확인하기 위해 가비지 컬렉션 실행 제어를 통한 비활성화와 활성화 시 태스크 호출 주기의 값을 비교한다.The experiment compares the value of the task call cycle with the deactivation through the garbage collection execution control and the activation in order to confirm the periodicity satisfaction of the task having the 5 ms cycle.

도 7의 (a)는 가비지 컬렉션 제어를 하지 않아 가비지 컬렉터가 활성화 되어 있을 때의 태스크의 호출 주기를 측정한 실험 결과이다.7A is an experimental result of measuring a call period of a task when the garbage collector is not activated because the garbage collection control is not performed.

가비지 컬렉션을 제어하기 이전의 데이터는 10ms 이상을 벗어나는 횟수가 386회로 7.72 %를 보이고 있으며, 4.5 ms 이하로 벗어나는 호출 주기는 2120 회, 42.41%로 나타나고 있다. 반면 10% 오차 범위 이내인 4.5 ms ~ 5.5ms 주기 범위는 1715 회인 34.31 %를 나타낸다. 이런 실험 결과를 통해 가비지 컬렉션을 활성화 하게 되면 실시간성을 전혀 만족할 수 없게 된다는 것을 보이고 있다.Before the control of garbage collection, the number of times that the data exceeded 10ms is 386 times 7.72%, and the number of calls that are less than 4.5ms is 2120 times, 42.41%. On the other hand, the cycle range of 4.5 ms to 5.5 ms within the 10% error range represents 3415%, which is 1715 times. These experiments show that if you enable garbage collection, you will not be able to satisfy real-time performance at all.

도 7의 (b)는 가비지 컬렉션 제어를 통해 실시간성이 요구되는 시간동안 가비지 컬렉터가 비활성화 되어 있을 때의 태스크 호출 주기를 측정한 실험 결과이다.FIG. 7 (b) is an experimental result of measuring a task call period when the garbage collector is inactivated during the time required for real-time through garbage collection control.

가비지 컬렉션을 비활성화 하여 기존에 발생하던 10ms를 초과하는 태스크 호출 주기는 1회로 감소하였으며, 그 외에 호출 주기를 보이는 데이터 또한 데이터의 오차범위 10% 이내인 4.5 ms ~ 5.5 ms 주기 범위로 나타내었을 때, 유효 횟수가 4908회인 98.18 %로 나타났다. 이를 통해서 기존 가비지 컬렉터를 활성화 할 때보다 크게 감소하는 것으로 이런 가비지 컬렉터를 제어하는 것이 실시간성을 만족하도록 할 수 있는 것을 나타낸다.When the garbage collection is deactivated, the task call interval exceeding 10 ms has been reduced by one. In addition, when the data showing the call interval is also expressed in the range of 4.5 ms to 5.5 ms within the error range of 10% of the data, The validity frequency was 4908, which was 98.18%. This means that the garbage collector can be controlled by controlling the garbage collector much more than when the existing garbage collector is activated.

도 8 및 도 9는 본 발명의 일 실시예에 따른 힙 크기의 변화를 나타낸 그래프이다.8 and 9 are graphs illustrating changes in heap size according to an embodiment of the present invention.

도 8 및 도 9는 본 발명의 일 실시예에 따른 안드로이드의 실시간 태스크 관리 장치 및 관리 방법의 가비지 컬렉션 실행 제어에 따른 실시간 성능 차이를 확인하기 위한 것으로, 10ms 주기의 UDP 소켓 통신이 30분간 이루어지는 동안 시간에 따른 힙 메모리 크기를 측정한 것이다. FIG. 8 and FIG. 9 illustrate the real-time performance difference according to the garbage collection execution control of the real-time task management apparatus and method of the Android according to the embodiment of the present invention. When the UDP socket communication of 10 ms cycle is performed for 30 minutes It measures the heap memory size over time.

도 8의 (a), (b)는 ArrayList를 사용한 경우 측정한 데이터를 그래프로 나타낸 것이고, 도 9의 (a), (b)는 은 배열을 사용한 경우의 그래프이다. 측정한 데이터 x축은 힙 메모리가 증가한 시점을 나타내며, y축은 MB 단위의 힙 메모리 크기이다.FIGS. 8A and 8B are graphs showing measured data when an ArrayList is used, and FIGS. 9A and 9B are graphs when a silver array is used. The measured data x axis represents the point at which the heap memory is increased, and the y axis is the heap memory size in MB.

데이터 수신을 위해 ArrayList와 배열을 사용한 경우 모두 실행 제어를 통해 가비지 컬렉션이 발생하지 않는 상황에서는 가용 메모리가 충분히 확보되지 않기 때문에, 지속적으로 힙의 크기가 증가한다. 그러나 30분간의 통신이 이루어지는 동안 가비지 컬렉션이 실행되지 않는 것으로 인한 메모리 관련 오류는 발생하지 않는 것을 확인하였다. 가비지 컬렉션이 실행되는 상황에서는 할당에 필요한 가용 메모리 확보를 위해 가비지 컬렉션이 일어나게 되고, 이에 따라 힙 메모리가 비교적 크게 증가하지 않는다.In the case of using ArrayList and array for data reception, the size of the heap continuously increases because there is not enough available memory in a situation where garbage collection does not occur through execution control. However, we confirmed that no memory-related errors were caused by the garbage collection not being executed during 30 minutes of communication. In a situation where garbage collection is executed, garbage collection occurs to obtain available memory required for allocation, and heap memory does not increase relatively large.

이를 통해 안드로이드에 실시간성을 제공하기 위해서 가비지 컬렉션 제어를 사용하여 실시간 태스크의 주기를 만족할 수 있었으며, 또한 이때 메모리 접근 시간을 줄일 수 있어서 실시간 태스크 성능에 거의 영향이 없도록 할 수 있음을 확인할 수 있다.In this way, it is possible to satisfy real-time task cycle by using garbage collection control to provide real-time property to Android, and it can be confirmed that memory access time can be reduced so that there is no influence on real-time task performance.

이상의 설명은 본 발명의 일 실시예에 불과할 뿐, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명의 본질적 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현할 수 있을 것이다. 따라서 본 발명의 범위는 전술한 실시예에 한정되지 않고 특허 청구 범위에 기재된 내용과 동등한 범위 내에 있는 다양한 실시 형태가 포함되도록 해석되어야 할 것이다.It will be apparent to those skilled in the art that various modifications and variations can be made in the present invention without departing from the spirit or scope of the invention. Therefore, the scope of the present invention is not limited to the above-described embodiments, but should be construed to include various embodiments within the scope of the claims.

10: 안드로이드의 실시간 태스크 관리 장치
100: 어플리케이션 처리부
200: 어플리케이션 프레임워크 처리부
300: 라이브러리 처리부
400: 런타임 처리부
500: 운영체제 처리부
600: 가비지 컬렉션 제어부
10: Android real-time task management device
100: Application processor
200: Application framework processor
300: Library processor
400: Runtime processor
500: Operating system processor
600: Garbage collection control unit

Claims (13)

사용자 작업을 수행하는 적어도 하나 이상의 어플리케이션과 관련된 어플리케이션 레벨의 동작을 처리하는 어플리케이션 처리부; 상기 어플리케이션을 수행하기 위한 안드로이드 운영체제를 포함하고, 운영체제 레벨의 동작을 수행하는 운영체제 처리부; 및 상기 어플리케이션 처리부와, 상기 운영체제 처리부를 매개하는 미들웨어; 를 포함하며, 상기 미들웨어는, 실시간 작업이 필요한 시간 동안 가비지 컬렉션을 제어하고,
상기 미들웨어는, 상기 어플리케이션을 실행시키는데 필요한 자바로 작성된 API(Application Programming Interface)로 접근하는 어플리케이션 프레임워크 처리부; 및 달빅 가상머신(Dalvik VM)을 이용하여, 메모리 관리와 멀티쓰레딩(multithreading)을 수행하는 런타임 처리부;를 포함하며,
상기 운영체제 처리부는, 리눅스 커널을 기반으로 상기 달빅 가상머신(Dalvik VM)과 상기 어플리케이션 프레임워크 처리부를 통해 어플리케이션이 실행될 수 있는 환경을 제공하고, 상기 리눅스 커널의 실시간성 제어를 위해 사용되는 실시간 처리(Real-Time implant Kernel, RTiK) 모듈을 포함하며,
상기 실시간 처리 모듈은, 상기 리눅스 커널의 영역에서 실시간 타이머 기능을 제공하는 것을 특징으로 하는 안드로이드의 실시간 태스크 관리 장치.
An application processing unit for processing an application level operation related to at least one application performing a user operation; An operating system processing unit including an Android operating system for executing the application, the operating system processing unit performing an operating system level operation; Middleware for mediating the application processor and the operating system processor; Wherein the middleware controls garbage collection for a time required for real time operation,
Wherein the middleware comprises: an application framework processing unit accessing an API (Application Programming Interface) written in Java necessary for executing the application; And a runtime processing unit for performing memory management and multithreading using a Dalvik VM,
The operating system processing unit provides an environment in which an application can be executed through the Dalvik VM and the application framework processing unit based on a Linux kernel and performs real-time processing Real-Time implant Kernel, RTiK) modules,
Wherein the real-time processing module provides a real-time timer function in an area of the Linux kernel.
제1항에 있어서,
상기 미들웨어는,
상기 운영체제 처리부의 상단에 존재하며, 안드로이드 환경에 맞게 수정된 라이브러리 레벨의 동작을 수행하는 라이브러리 처리부;를 더 포함하는 것을 특징으로 하는 안드로이드의 실시간 태스크 관리 장치.
The method according to claim 1,
The middleware comprises:
And a library processing unit which is located at the top of the operating system processing unit and performs a library level operation modified according to the Android environment.
삭제delete 삭제delete 제2항에 있어서,
상기 달빅 가상머신(Dalvik VM)은, 상기 가비지 컬렉션의 수행을 제어하는 가비지 컬렉션 제어부;를 포함하며,
상기 가비지 컬렉션의 동작 방식은, 동시 마크 스윕(Concurrent Mark Sweep, CMS) 알고리즘을 이용하여 구현되되,
상기 가비지 컬렉션 제어부는,
상기 달빅 가상머신에서 가용 메모리 확보를 위해 상기 가비지 컬렉션을 실행해야 하는 시점에서 특정 플래그 값에 따라 실행 여부를 결정하는 것을 특징으로 하는 안드로이드의 실시간 태스크 관리 장치.
3. The method of claim 2,
The Dalvik VM includes a garbage collection controller for controlling the execution of the garbage collection,
The garbage collection operation method is implemented using a Concurrent Mark Sweep (CMS) algorithm,
The garbage collection control unit,
And determines whether to execute the garbage collection according to a specific flag value when the garbage collection is to be executed in order to secure available memory in the Dalbig virtual machine.
제2항에 있어서,
상기 라이브러리 처리부는,
상기 실시간 처리(Real-Time implant Kernel, RTiK) 모듈에서 제공하는 상기 실시간 타이머 기능을 상기 어플리케이션에 제공하는 인터페이스인 실시간 API 레이어(RTiK-API’s Layer)를 포함하며,
상기 실시간 API 레이어(RTiK-API’s Layer)는,
모듈 제어 함수를 이용하여 상기 실시간 처리(Real-Time implant Kernel, RTiK) 모듈을 제어하는 것을 특징으로 하는 안드로이드의 실시간 태스크 관리 장치.
3. The method of claim 2,
The library processing unit,
And a real-time API layer (RTiK-API's Layer) that provides the real-time timer function provided by the real-time processing kernel (RTiK) module to the application,
The real-time API layer (RTiK-API's Layer)
Real-time processing module (RTiK) module is controlled using the module control function.
제6항에 있어서,
상기 모듈 제어 함수는,
상기 실시간 처리(Real-Time implant Kernel, RTiK) 모듈을 통해 안드로이드의 태스크를 제어하는 태스크 제어 함수; 및
상기 실시간 타이머를 동작시켜 상기 실시간 처리(Real-Time implant Kernel, RTiK) 모듈의 시작 또는 종료를 명령하는 타이머 제어 함수;를 포함하는 것을 특징으로 하는 안드로이드의 실시간 태스크 관리 장치.
The method according to claim 6,
Wherein the module control function comprises:
A task control function for controlling the task of the Android through the real-time processing kernel (RTiK) module; And
And a timer control function for operating the real-time timer to command start or end of the real-time processing kernel (RTiK) module.
제6항에 있어서,
상기 어플리케이션 처리부는,
상기 실시간 처리(Real-Time implant Kernel, RTiK) 모듈을 제어하는 자바로 작성된 실시간 API 클래스(RTiK-APIs Class)를 더 포함하며,
상기 실시간 API 클래스(RTiK-APIs Class)는, 상기 실시간 API 레이어(RTiK-API’s Layer)를 통해 상기 실시간 처리(Real-Time implant Kernel, RTiK) 모듈에 접근하는 것을 특징으로 하는 안드로이드의 실시간 태스크 관리 장치.
The method according to claim 6,
The application processing unit,
And a real-time API class (RTiK-APIs Class) written in Java for controlling the real-time processing kernel (RTiK) module,
Wherein the real-time API class (RTiK-APIs class) accesses the real-time processing kernel (RTiK) module through the real-time API layer (RTiK-API's layer) .
제8항에 있어서,
상기 실시간 API 레이어(RTiK-API’s Layer)는, 상기 실시간 처리(Real-Time implant Kernel, RTiK) 모듈에 접근하는 네이티브 라이브러리(Native Library)를 포함하며,
상기 실시간 API 클래스(RTiK-APIs Class)는, 네이티브 라이브러리(Native Library)를 통해 상기 실시간 처리 모듈에 접근할 수 있는 함수를 제공하며,
상기 실시간 처리 모듈에 접근할 수 있는 함수는,
상기 실시간 API 레이어(RTiK-API’s Layer)의 접근을 위하여 JNI(Java Native Interface) 함수를 이용한 JNI 프로토콜을 이용하는 것을 특징으로 하는 안드로이드의 실시간 태스크 관리 장치.
9. The method of claim 8,
The real-time API layer (RTiK-API's layer) includes a native library for accessing the real-time processing kernel module (RTiK)
The real-time API class (RTiK-APIs Class) provides a function capable of accessing the real-time processing module through a native library,
Wherein the function capable of accessing the real-
Wherein the JNI protocol using a Java Native Interface (JNI) function is used for accessing the real-time API layer (RTiK-API's Layer).
제9항에 있어서,
상기 라이브러리 처리부는,
실시간 태스크 수행을 위해 P쓰레드(Pthread) 라이브러리를 이용하여 상기 네이티브 라이브러리(Native Library) 영역에 태스크를 생성하는 것을 특징으로 하는 안드로이드의 실시간 태스크 관리 장치.
10. The method of claim 9,
The library processing unit,
Wherein a task is created in the native library area using a Pthread library for real-time task execution.
제5항에 있어서,
상기 런타임 처리부는,
상기 달빅 가상머신(Dalvik VM)의 가비지 컬렉션 실행 여부를 저장하는 저장 파일을 포함하는 리눅스 파일 처리부;를 더 포함하며,
상기 달빅 가상머신은, 코드 상에서 상기 저장 파일에 접근가능 한 것을 특징으로 하는 안드로이드의 실시간 태스크 관리 장치.
6. The method of claim 5,
The run-
And a Linux file processing unit including a save file for storing whether the garbage collection of the Dalvik VM is executed or not,
Wherein the Dalvik virtual machine is accessible on the code in the storage file.
제11항에 있어서,
상기 가비지 컬렉션 제어부는,
달빅 가상머신(Dalvik VM)이 초기화 되는 과정에서, 상기 저장 파일의 데이터를 읽어오는 리드(read)부;
상기 리드(read)부에서 읽어온 값을 상기 특정 플래그 값에 따른 플래그 변수 값으로 설정하는 플래그 변수 설정부;
상기 가비지 컬렉션이 필요한 시점에서 설정된 상기 플래그 변수 값을 확인하는 플래그 변수 확인부; 및
상기 플래그 변수 값에 따라 상기 가비지 컬렉션 수행을 판단하는 가비지 컬렉션 수행 판단부;를 포함하는 것을 특징으로 하는 안드로이드의 실시간 태스크 관리 장치.
12. The method of claim 11,
The garbage collection control unit,
A read unit for reading data of the storage file in the process of initializing the Dalvik VM;
A flag variable setting unit for setting a value read by the read unit as a flag variable value according to the specific flag value;
A flag variable verifying unit for verifying the flag variable value set at a time when the garbage collection is required; And
And a garbage collection execution determiner for determining execution of the garbage collection according to the flag variable value.
제12항에 있어서,
상기 가비지 컬렉션 수행 판단부는,
상기 플래그 변수 값이 1인 경우 상기 가비지 컬렉션을 실행하지 않고, 0인 경우 상기 가비지 컬렉션을 실행하는 것을 특징으로 하는 안드로이드의 실시간 태스크 관리 장치.
13. The method of claim 12,
Wherein the garbage collection execution determination unit determines,
Wherein the controller executes the garbage collection when the flag variable value is 1 and executes the garbage collection when the flag variable value is 0.
KR1020180092390A 2018-08-08 2018-08-08 Task Management Device for Providing Real-time Performance to Android KR101950484B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180092390A KR101950484B1 (en) 2018-08-08 2018-08-08 Task Management Device for Providing Real-time Performance to Android

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180092390A KR101950484B1 (en) 2018-08-08 2018-08-08 Task Management Device for Providing Real-time Performance to Android

Publications (1)

Publication Number Publication Date
KR101950484B1 true KR101950484B1 (en) 2019-02-20

Family

ID=65561830

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180092390A KR101950484B1 (en) 2018-08-08 2018-08-08 Task Management Device for Providing Real-time Performance to Android

Country Status (1)

Country Link
KR (1) KR101950484B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102173535B1 (en) * 2020-06-01 2020-11-03 젝스컴퍼니 주식회사 Embedded board based on android enhenced real time response

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100772867B1 (en) * 2006-02-23 2007-11-02 삼성전자주식회사 Method for offering partially isolated execution environment for applications and digital devices using the same
KR101015573B1 (en) * 2010-07-29 2011-02-16 (주)제이모바일 Device for executing android application based on rtos
KR20120113160A (en) * 2011-04-04 2012-10-12 주식회사 인프라웨어테크놀러지 Device and method for executing android applications on general purpose operating systems, and computer readable recording medium for the same

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100772867B1 (en) * 2006-02-23 2007-11-02 삼성전자주식회사 Method for offering partially isolated execution environment for applications and digital devices using the same
KR101015573B1 (en) * 2010-07-29 2011-02-16 (주)제이모바일 Device for executing android application based on rtos
KR20120113160A (en) * 2011-04-04 2012-10-12 주식회사 인프라웨어테크놀러지 Device and method for executing android applications on general purpose operating systems, and computer readable recording medium for the same

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
이철훈 외 1명. ‘안드로이드 달빅 가상머신의 가비지 컬렉션 실행 제어에 관한 연구’. 한국통신학회 동계종합학술발표회 논문집, 2018.01., pp.1118-1119.* *
이철훈 외 2명. ‘안드로이드에 실시간 성능제공을 위한 RTiK 기반 실시간 통신 구현 및 성능 측정’. 한국통신학회 하계종합학술발표회 논문집, 2018.06., pp.1329-1330.* *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102173535B1 (en) * 2020-06-01 2020-11-03 젝스컴퍼니 주식회사 Embedded board based on android enhenced real time response

Similar Documents

Publication Publication Date Title
JP4640728B2 (en) System and method for dynamically and persistently tracking incremental profiling data in the process of cloning application environments
KR101116615B1 (en) Resource management system and method for applications and threads in JAVA Virtual Machine
US20180039507A1 (en) System and method for management of a virtual machine environment
EP1467282B1 (en) Operating systems
US8074231B2 (en) Configuration of isolated extensions and device drivers
JP4866864B2 (en) Method and program for managing access to shared resources in a multi-processor environment
WO2006018307A2 (en) Operating systems
EP2701059A1 (en) Method and apparatus for loading application program
TW201820131A (en) Process management method and apparatus
US20070094655A1 (en) Firmware filters and patches
CN108733589B (en) Method and device for realizing distributed transaction hot deployment
JP7304119B2 (en) Method and Apparatus for Representing Activation Frames for Pauseless Garbage Collection
KR101950485B1 (en) Task Management Method for Providing Real-time Performance to Android
US7426720B1 (en) System and method for dynamic preloading of classes through memory space cloning of a master runtime system process
US20020049897A1 (en) Method for adding processor
US20050251803A1 (en) Method of performing kernel task upon initial execution of process at user level
KR101950484B1 (en) Task Management Device for Providing Real-time Performance to Android
US20070067762A1 (en) Exposing code contentions
WO2017012339A1 (en) Resource management method and apparatus
US7401178B1 (en) Expanded memory space in environments including virtual machines
US9348667B2 (en) Apparatus for managing application program and method therefor
JP2015001757A (en) Computer system and start method
KR101889942B1 (en) Apparatus and method for controlling video processing unit
US11922158B2 (en) Unified local patch repository
CN113467893B (en) Automatic testing method and device for virtual machine, storage medium and processor

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant