KR102262102B1 - 애플리케이션 실행 방법 및 장치 - Google Patents

애플리케이션 실행 방법 및 장치 Download PDF

Info

Publication number
KR102262102B1
KR102262102B1 KR1020140103866A KR20140103866A KR102262102B1 KR 102262102 B1 KR102262102 B1 KR 102262102B1 KR 1020140103866 A KR1020140103866 A KR 1020140103866A KR 20140103866 A KR20140103866 A KR 20140103866A KR 102262102 B1 KR102262102 B1 KR 102262102B1
Authority
KR
South Korea
Prior art keywords
application
profile data
memory
requested
terminal
Prior art date
Application number
KR1020140103866A
Other languages
English (en)
Other versions
KR20150117192A (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 EP15776620.5A priority Critical patent/EP3129872A4/en
Priority to US14/682,427 priority patent/US10275158B2/en
Priority to PCT/KR2015/003565 priority patent/WO2015156615A1/en
Publication of KR20150117192A publication Critical patent/KR20150117192A/ko
Priority to US15/446,686 priority patent/US10025513B2/en
Application granted granted Critical
Publication of KR102262102B1 publication Critical patent/KR102262102B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/445Program loading or initiating
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 단말에서 애플리케이션을 실행하는 방법 및 장치에 관한 것이다. 구체적으로, 본 발명은 애플리케이션을 런칭(Launching)할 때 또는 애플리케이션이 실행 중인 상태에서 실행되는 속도를 개선하기 위한 것으로 애플리케이션의 런칭 단계에서는 요청된 I/O들을 미리 로딩(Pre-loading)하기 위해서 업데이트 하는 방법 및 장치를 제공하고, 애플리케이션의 런칭 이후 단계에서는 메모리 매핑 정보를 관리하는 방법 및 장치를 제공한다.

Description

애플리케이션 실행 방법 및 장치{METHOD AND APPARATUS FOR APPLICATION EXECUTION}
본 발명은 단말에서 애플리케이션을 실행하는 방법 및 장치에 관한 것이다. 구체적으로, 본 발명은 애플리케이션을 런칭(Launching)할 때 또는 애플리케이션이 실행 중인 상태에서 실행 속도를 개선하기 위한 기술에 관한 것이다.
일반적으로 단말이 애플리케이션을 최초 런칭(Launching) 하는 경우, 애플리케이션이 실행된 화면이 나오기 전까지 단말의 중앙처리장치(CPU)가 HDD와 같은 보조기억장치로부터 RAM과 같은 주 기억장치에 I/O요청된 데이터를 로딩(Loading)하는 과정이 수반된다. 따라서, 최초 애플리케이션이 실행되는 경우에는 해당 애플리케이션의 런칭에 필요한 I/O들이 메모리에 미리 로딩(Pre-loading)되어 있지 않으므로, 애플리케이션의 런칭에 상당 시간이 요구된다. 그러나, 재런칭 단계에서는 앞선 런칭에서 로딩했던 I/O의 목록을 이용하여 런칭에 필요한 I/O들을 미리 로딩할 수 있어 전체적인 로딩시간을 앞당길 수 있다. 다만, 이 경우에도 앞선 런칭에서 로딩했던 I/O의 목록들을 갱신하는 방법에 따라서, 전체적인 로딩시간이 얼마나 단축될 수 있는지 달라질 수 있다.
한편, 애플리케이션이 런칭 되고 난 뒤에 애플리케이션의 실행 속도를 개선하기 위해서 가상 메모리와 물리 메모리의 언매핑(unmap()) 요청이 입력되더라도, 가상 메모리와 물리 메모리와의 매핑 정보를 반환하지 않고, 별도의 재사용 풀(Pool)에 일정 시간 동안 저장하는 방법이 고려될 수 있다. 다만, 이 경우 얼마만큼의 메모리 매핑 정보를 재사용 풀에 저장할 것인지, 어떻게 삭제할 것인지 등에 대해서 적절한 재사용 풀 운용방법이 요구될 수 있다.
본 발명은 상기와 같은 문제점을 해결하기 위해 안출된 것으로, 단말의 애플리케이션 실행에 있어 런칭(Launching) 단계와 런칭 후 단계에서의 애플리케이션 실행 속도를 개선하기 위한 방법 및 장치를 제공한다.
상기와 같은 문제점을 해결하기 위한 본 발명의 단말의 애플리케이션(Application)의 실행 방법은 상기 애플리케이션의 런칭(Launching)을 감지하는 단계, 상기 애플리케이션의 이전의 런칭에서 요청된 I/O(Input/Output)들의 목록을 포함하는 프로파일 데이터에 기초하여 상기 이전의 런칭에서 요청된 I/O들을 미리 로딩(Pre-loading)하는 단계 및 상기 애플리케이션의 런칭에서 요청된 I/O 및 상기 이전의 런칭에서 요청된 I/O 중 적어도 어느 하나에 기초하여 상기 프로파일 데이터를 갱신하는 단계를 포함하는 것을 특징으로 한다.
또한 본 발명의 애플리케이션을 실행하는 단말은 상기 애플리케이션의 이전의 런칭에서 요청된 I/O(Input/Output)들의 목록을 포함하는 프로파일 데이터를 저장하고 있는 저장부 및 상기 애플리케이션의 런칭(Launching)을 감지하고, 상기 프로파일 데이터에 기초하여 상기 이전의 런칭에서 요청된 I/O들을 미리 로딩(Pre-loading)하고, 상기 애플리케이션의 런칭에서 요청된 I/O 및 상기 이전의 런칭에서 요청된 I/O 중 적어도 어느 하나에 기초하여 상기 프로파일 데이터를 갱신하는 제어부를 포함하는 것을 특징으로 한다.
또한 본 발명의 단말의 애플리케이션(Application)의 실행 방법은, 상기 애플리케이션에서 수행된 프로세스의 메모리 회수 요청을 감지하는 단계 상기 메모리 회수 요청에 대응하는 상기 프로세스의 메모리 매핑 정보를 메모리 매핑 저장부에 저장하는 단계 상기 메모리 매핑 저장부에 저장된 총 메모리 매핑 정보가 기 설정된 용량을 초과하는지 판단하는 단계 및 상기 판단결과, 상기 총 메모리 매핑 정보가 기 설정된 용량을 초과하는 경우, 적어도 하나의 메모리 매핑 정보를 매핑된 페이지 단위로 가상 메모리와 물리 메모리의 연결을 해제하는 단계를 포함하는 것을 특징으로 한다.
또한 본 발명의 애플리케이션을 실행하는 단말은, 데이터를 저장하는 물리 메모리부, 상기 애플리케이션에서 발생하는 요청신호를 입력하는 입력부, 상기 물리메모리에 저장된 상기 데이터를 매핑하는 가상 메모리부, 상기 입력부로부터 애플리케이션에서 수행된 프로세스의 메모리 회수 요청을 감지하고, 상기 메모리 회수 요청에 대응하는 상기 프로세스의 메모리 매핑 정보를 저장하는 메모리 매핑 저장부 및 상기 메모리 매핑 저장부에 저장된 총 메모리 매핑 정보가 기 설정된 용량을 초과하는지 판단하고, 상기 판단결과, 상기 총 메모리 매핑 정보가 기 설정된 용량을 초과하는 경우, 적어도 하나의 메모리 매핑 정보를 매핑된 페이지 단위로 상기 가상 메모리부와 상기 물리 메모리부의 연결을 해제하는 제어부를 포함하는 것을 특징으로 한다.
본 발명의 다양한 실시 예에 따르면, 단말의 애플리케이션 런칭 단계에서 요청된 I/O를 모두 프로파일 데이터로 업데이트하여 재런칭하는 경우 런칭속도를 더욱 빠르게 할 수 있다.
또한 본 발명에 따르면, 프로파일 데이터의 업데이트 방법에 있어, 병합(merge)가능한 I/O 간의 병합으로 프로파일 데이터 상의 I/O를 미리 로딩(Pre-loading)하는 시간을 단축할 수 있다는 효과가 있다.
또한 본 발명에 따르면, 가상 메모리 상태에 따라 I/O를 미리 로딩(Pre-loading)할지 여부 및 로딩할 I/O의 수를 결정하므로, 메모리 성능 저하를 경감시실 수 있다는 효과가 있다.
또한 본 발명에 따르면, 애플리케이션의 실행 중에 메모리 회수 요청이 있는 경우, 일정 용량의 재사용 저장소를 운용함으로써, 프리 메모리를 충분하게 확보할 수 있다는 효과가 있다.
도 1은 본 발명의 일 실시 예에 따른 애플리케이션의 런칭 과정에서의 동작을 간략히 나타낸 도면,
도 2는 본 발명의 일 실시 예를 설명하기 위해 블록 입출력 계층에서 프로파일하는 것을 나타낸 도면,
도 3은 본 발명의 일 실시 예에 따른 앱 런칭 속도 개선 방법을 나타낸 순서도,
도 4는 본 발명의 앱 런칭 속도 개선 방법이 적용된 경우의 앱 런칭 과정을 나타낸 도면,
도 5는 본 발명의 프로파일 데이터 업데이트 방법을 나타낸 순서도,
도 6은 본 발명의 일 실시 예에 따른 프로파일 업데이트 방법에 있어서, 발생한 I/O가 앱 런칭과 관련된 I/O인지를 확인하는 것을 나타내는 도면,
도 7은 본 발명의 프로파일 데이터 업데이트 방법에 따른 I/O 병합(merge)을 나타낸 도면,
도 8은 본 발명의 일 실시 예에 따른 앱 런칭 속도 개선 장치를 도시한 블록도,
도 9는 앱의 메모리 매핑 정보를 관리하는 메모리 매핑 저장부의 일 실시예를 나타낸 도면,
도 10은 본 발명의 일 실시 예에 따른 메모리 매핑 저장부 관리방법을 나타낸 순서도,
도 11은 본 발명의 일 실시 예에 따른 메모리 매핑 저장부를 나타낸 도면,
도 12는 본 발명의 일 실시 예에 따른 메모리 매핑 저장부의 동작을 나타낸 도면,
도 13은 본 발명의 일 실시 예에 따른 애플리케이션 실행 장치를 나타낸 도면,
도 14는 본 발명의 일 실시 예에 따른 adaptive loading 방법을 설명하기 위한 도면,
도 15는 본 발명의 일 실시 예에 따른 adaptive loading 방법의 동작을 나타낸 순서도이다.
이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
실시 예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
이하의 설명에서 사용되는 특정 용어들은 본 발명의 이해를 돕기 위해서 제공된 것이며, 이러한 특정 용어의 사용은 본 발명의 기술적 사상을 벗어나지 않는 범위에서 다른 형태로 변경될 수 있다.
본 명세서에서 단말은, 중앙처리장치(CPU)와 저장부가 포함된 다음의 장치일 수 있다. 예를 들면, 단말은 스마트 폰(smartphone), 태블릿 PC(tablet personal computer), 이동 전화기(mobile phone), 화상전화기, 전자북 리더기(e-book reader), 데스크탑 PC(desktop personal computer), 랩탑 PC(laptop personal computer), 넷북 컴퓨터(netbook computer), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 모바일 의료기기, 카메라(camera), 또는 웨어러블 장치(wearable device)(예: 전자 안경과 같은 head-mounted-device(HMD), 전자 의복, 전자 팔찌, 전자 목걸이, 전자 앱세서리(appcessory), 전자 문신, 또는 스마트 와치(smartwatch))중 적어도 하나를 포함할 수 있다.
또한 본 명세서의 단말은 중앙처리장치(CPU)와 저장부가 포함된 스마트 가전 제품(smart home appliance)일 수 있다. 스마트 가전 제품은, 예를 들자면, 전자 장치는 텔레비전, DVD(digital video disk) 플레이어, 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기, 셋톱 박스(set-top box), TV 박스(예를 들면, 삼성 HomeSyncTM, 애플TVTM, 또는 구글 TVTM), 게임 콘솔(game consoles), 전자 사전, 전자 키, 캠코더(camcorder), 또는 전자 액자 중 적어도 하나를 포함할 수 있다.
또한 본 명세서의 단말은 각종 의료기기(예: MRA(magnetic resonance angiography), MRI(magnetic resonance imaging), CT(computed tomography), 촬영기, 초음파기 등), 네비게이션(navigation) 장치, GPS 수신기(global positioning system receiver), EDR(event data recorder), FDR(flight data recorder), 자동차 인포테인먼트(infotainment) 장치, 선박용 전자 장비(예: 선박용 항법 장치 및 자이로 콤파스 등), 항공 전자기기(avionics), 보안 기기, 차량용 헤드 유닛, 산업용 또는 가정용 로봇, 금융 기관의 ATM(automatic teller’s machine) 또는 상점의 POS(point of sales) 중 적어도 하나를 포함할 수 있다.
본 명세서에서 I/O(Input/Output)는 프로그램이 입출력을 실행하는 것 또는 입출력을 실행하기 위한 동작을 가리킨다. 구체적으로 HDD, 플래시메모리 등과 같은 보조메모리로부터 RAM, 캐시(Cache)메모리 등과 같은 고속의 주메모리로 데이터를 불러오는 명령 또는 불러오는 데이터를 가리킨다. 또는 외부장치로부터 명령 또는 데이터를 불러오는 명령 또는 불러오는 데이터를 가리킨다.
본 명세서에서는 편의상 애플리케이션은 Application, APP 또는 앱으로도 표현될 수 있고, 이 경우 단말에서 실행되는 응용프로그램을 나타내는 용어로 사용될 수 있다.
본 명세서에서 편의상 HDD, 플래시메모리 등과 같은 보조메모리는 제1 메모리로, RAM, 캐시(Cache)메모리 등과 같은 고속의 주메모리는 제2 메모리로 표현될 수 있다.
도 1은 본 발명의 일 실시 예에 따른 애플리케이션의 런칭 과정에서의 동작을 간략히 나타낸 것이다.
도 1에 따르면, 앱을 런칭할 때 수행되는 작업은 CPU Operation과 I/O Operation으로 동작을 나눌 수 있다.
CPU Operation은 CPU가 데이터를 이용하여 다양한 연산을 수행하는 작업들이고, I/O Operation은 HDD, 플래시메모리 등과 같은 보조메모리로부터 해당 앱을 런칭할 때 필요한 파일의 데이터를 RAM, 캐시(Cache)메모리 등과 같은 고속의 주메모리로 불러오는(Loading) 작업을 의미할 수 있다.
최초 앱이 런칭되는 경우, 앱을 런칭 하는데 필요한 파일 또는 데이터를 미리 알지 못하므로, 도 1에 나타난 바와 같이, CPU Operation과 I/O Operation은 번갈아 가며 수행될 수 있다. 즉, CPU Operation이 수행되다가, 특정 파일 또는 데이터가 필요하면, I/O Operation을 수행하고, 다시 또 CPU Operation이 수행되는 과정이 반복될 수 있다.
따라서 최초 앱이 런칭되는 경우에는 I/O Operation과 CPU Operation이 동시에 수행될 수 없으므로, 런칭 속도가 상대적으로 느릴 수 있다.
그러나 앱이 최초 런칭 되면서, 단말은 앱이 런칭될 때 요청된(Requested) I/O 목록을 프로파일 데이터(Profile Data)로 저장하고, 다음에 앱이 재런칭 되면, 프로파일 데이터의 유무를 판단하며, 판단 결과, 프로파일 데이터가 있는 경우에는 해당 데이터의 목록에 저장된 I/O를 CPU Operation에서 해당 I/O를 요청하기 전에 미리 로딩(Pre-loading) 할 수 있다. 따라서, 앱이 재런칭 되는 경우에는 최초 런칭 되는 경우에 비해 보다 빠른 속도로 앱이 런칭 될 수 있다.
따라서 도 1에서와 같이 CPU Operation과 I/O Operation 이 별도의 프로세스로 각각 동시에 수행되므로, CPU Operation을 수행하는 데 소요되는 시간만으로 앱이 런칭되는 것처럼 보이는 효과가 있다.
다만, 상술한 바와 같이 앱이 런칭 되는데 있어, CPU Operation에 걸리는 시간만큼 소모되기 위해서는, 앱 런칭에 필요한 모든 I/O Operation이 미리 로딩(Pre-loading)되어야 한다.
도 2는 본 발명의 일 실시 예를 설명하기 위해 블록 입출력 계층에서 프로파일하는 것을 나타낸 도면이다.
도 2에 따르면, 본 발명에서 앱을 최초 런칭하는 경우에 런치 시작(Launch start) 부터 런치 종료(Launch End)의 시간 사이에 요청된 I/O는 상에서 IO1, IO2, IO3, IO4, IO5, IO6, IO7 및 IO8이다. 이들 I/O 중에는 해당 앱의 런칭에 관련된 I/O뿐만 아니라 해당 앱의 런칭과 관련 없는 I/O들이 포함될 수 있다.
블록 입출력 계층(Block I/O Layer)은 로딩(Loading)하고 있는 상태를 페이지 블록으로 나타낸 계층일 수 있다. 블록 입출력 계층에서는 요청된 I/O중에서 이미 로딩이 되어 있는 I/O는 제외하고, 캐시(Cache)상태가 아닌 즉, 로딩되어야 하는 I/O에 대해서만 프로파일을 한다. 따라서 도 2 에서, 블록 입출력 계층에서는 이미 로딩되어 있는 IO6, IO8의 경우에는 프로파일 하지 않고, IO1, IO2, IO3, IO4, IO5 및 IO7만을 프로파일 하며, 이들 I/O들을 프로파일 데이터로 저장할 수 있다. 그러므로 이후 재런칭 단계에서는 I06과 I08이 미리 로딩(Pre-loading)되지 않으므로, 도 1에서와 같이 런칭에 필요한 모든 I/O가 미리 로딩될 수 없다.
가상 파일 시스템(Virtual File System)은 파일 시스템과 사용자 Take간에 도입된 가상의 계층일 수 있다. 만일, 블록 입출력 계층에서 프로파일 하지 않고, VFS상에서 요청된 I/O를 프로파일 하면, IO1, IO2, IO3, IO4, IO5, IO6, IO7 및 IO8을 모두 프로파일 할 수 있고, I/O들을 프로파일 데이터로 저장할 수 있다. 따라서, 재런칭 단계에서는 저장되어 있었던 요청된 I/O리스트에 저장된 I/O는 IO1, IO2, IO3, IO4, IO5 및 IO7이고, 이들 I/O에 대해서 Pre-fetch 할 수 있다(Fast_launcher). 그런데 이 경우에도, 만일 요청된 모든 I/O가 해당 앱을 실행시키기 위한 I/O가 아닌 경우가 발생할 수 있다. 예컨대, IO6 및 IO8은 앱의 런칭과 관련 없는 I/O라고 가정하면, 불필요한 I/O를 미리 로딩하는 것과 다름없다. 따라서, 이런 불필요한 프로파일 데이터의 발생을 해결하기 위해서 매번 앱이 런칭 될 때 프로파일 데이터를 업데이트 하는 방법을 생각해 볼 수 있다. 즉, 매 런칭 될 때마다 프로파일 데이터와 요청된 I/O를 비교하여 공통되는 I/O만을 해당 앱의 런칭에 필요한 I/O로 간주하여 프로파일 데이터를 업데이트 하는 방법이 고려될 수 있다. 이를 수학식으로 나타낸 것은 다음의 [수학식 1]과 같다.
Figure 112014075806555-pat00001
다만, 위와 같은 프로파일 데이터를 업데이트 하는 방법의 경우에도, 매번 공통되는 I/O만을 저장하기 때문에, 런칭이 반복됨에 따라서, 앱의 런칭과 관련된 I/O를 누락할 수도 있고, 불필요한 프로파일 데이터를 발생하지는 않으나 앱 런칭 속도 개선이라는 목적을 달성하기 어렵다는 문제도 발생할 수 있다.
도 3은 본 발명의 일 실시 예에 따른 앱 런칭 속도 개선 방법을 나타낸 순서도이다.
도 3에 따르면, 본 발명의 앱 실행 속도 개선 방법은 S301단계에서, 앱의 런칭여부를 판단할 수 있다. 앱 런칭이 없으면, 다시 대기상태에 있을 수 있다.
S302단계에서, 앱의 런칭이 있으면, 단말은 기존에 저장되어 있는 프로파일 데이터의 존재 여부를 판단할 수 있다.
기존에 저장되어 있는 프로파일 데이터가 없는 경우에는, 해당 앱의 런칭이 최초 런칭이므로, S303단계에서, 요청된 I/O들을 순차적으로, 요청된 시기에 따라 로딩하게 된다. 따라서 이때는 도 1에서의 최초 런칭에서의 런칭 시간이 소요된다.
요청된 I/O의 로딩과 별도로, S304단계에서, 단말은 요청된 I/O의 목록을 프로파일 데이터로 저장할 수 있다.
S302단계에서 기존에 저장되어 있는 프로파일 데이터가 존재하는 경우에는, S306단계에서 CPU Operation과는 별도의 I/O Operation 프로세스를 실행하여 프로파일 데이터에 포함된 I/O들을 미리 로딩(Pre-loading)할 수 있다. 따라서, 도 1에서의 재런칭과 같이 앱 런칭 시간이 단축될 수 있다.
S306단계에서는, 기존에 저장되어 있던 프로파일 데이터를 업데이트 할 수 있다. 프로파일 데이터를 업데이트하는 과정에 대해서는 후술하는 도 5에 대한 설명에서 더욱 상세하게 설명한다.
도 4는 본 발명의 앱 런칭 속도 개선 방법이 적용된 경우의 앱 런칭 과정을 나타낸 도면이다.
본 명세서와 도면에서 본 발명에 따른 앱 런칭 속도 개선 방법은 Application Launching Accelerator(이하 ALA) 라고 표현할 수 있음을 명시한다.
도 4에 따르면, 본 발명에서는 VFS계층에서 프로파일을 하므로 최초 앱 런칭에서 요청된 I/O인 IO1, IO2, IO3, IO4, IO5, IO6, IO7 및 IO8가 모두 프로파일 데이터로 저장되고, 재런칭 과정에서 이전 런칭에서 요청되었던 모든 I/O들이 미리 로딩(Pre-loading)되어 본 발명의 ALA 에 따라 앱 런칭 시간이 단축될 수 있음을 알 수 있다.
본 발명의 앱 런칭 속도 개선 방법은, 상술한 프로파일을 VFS계층에서 수행하는 것 외에도, 이로 인해 증가될 수 있는 앱 런칭과 관련 없는 I/O의 목록들을 구별하는 방안을 제공할 수 있다. 또한, I/O들을 미리 로딩(Pre-loading)하는 과정에서 기존의 프로파일 데이터에 존재하지 않는 요청된 I/O가 있는 경우에는 I/O들간에 병합(Merge)할 수 있는지 여부를 판단할 수 있다. 앱 런칭과 관련 없는 I/O목록들을 구별하는 방안은 후술하는 도 5 및 도 6에서 상세하게 설명하고, I/O들의 merge방법에 대해서는 도 5 및 도 7에서 상세히 설명한다.
도 5는 본 발명의 프로파일 데이터 업데이트 방법을 나타낸 순서도이다.
S501단계에서는, 요청된 I/O가 기존 프로파일 리스트에 존재하고 있던 I/O인지를 판단할 수 있다. 즉, 본 발명에서는 기존 프로파일 리스트에 존재하는 I/O가 아니더라도, 프로파일 리스트에 추가할 수 있도록 VFS계층에서 프로파일을 수행한다. 따라서, 앱 런칭 과정에서 프로파일하는 I/O는 기존 프로파일 데이터에 포함된 I/O를 비롯한 요청된 모든 I/O이고, 이들 전부를 프로파일 리스트에 저장하기 위한 I/O인지를 결정하기 위해서는 별도의 기준이 요구된다.
따라서, 본 발명에서는 먼저, 앱 런칭과 관련된 I/O인지를 판단하기에 앞서 앱 런칭 단계에서 발생한 모든 요청된 I/O들을 추출하기 위하여, 기존 프로파일 데이터와 비교하여 공통되는 I/O만을 추출하는 것이 아니라, 기존 프로파일 데이터에 없었던 I/O들도 추출할 수 있다. 이를 수학식으로 나타낸 것은 다음의 [수학식 2]와 같다.
Figure 112014075806555-pat00002
S501단계에서 판단 결과, 기존 프로파일 데이터에 존재하던 I/O라면 앱 런칭과 관련된 I/O일 확률이 상당히 높을 수 있으나, 기존 프로파일 데이터에 존재하지 않았던 I/O라면, 앱 런칭과 관련 없는 I/O일 수 있다.
S502단계에서는, 요청된 I/O가 런칭한 앱과 관련이 있는지 여부를 판단 할 수 있다. 본 발명에서, 요청된 I/O가 앱 런칭과 관련이 있는지를 판단하는 방법으로 IPC(Interprocess Communication)을 활용할 수 있다.
구체적으로 IPC는 하나의 시스템 내에서 실행시켜놓은 프로그램들끼리 메시지를 주고 받는 것을 의미하는데, 앱 런칭이 시작 시간(App Launch start) 부터 발생한 요청된 I/O들 간에 IPC가 발생하는 경우는 해당 I/O들이 앱 런칭과 관련되어 있다는 것을 의미할 수 있다. 따라서 S502단계에서 I/O들에 IPC가 발생하였는지 여부를 기준으로 앱 런칭과 관련 있는 I/O인지를 판단할 수 있다.
S503단계에서, IPC가 발생하지 않아서 해당 앱의 런칭과 관련 없는 I/O로 판단된 경우에는, 프로파일 데이터에 저장할 필요가 없으므로, 새로 저장할 프로파일 데이터에서 제외할 수도 있다.
S504단계에서는 S501 및 S502단계에서 판단한 결과에 따라서, 기존에 존재하던 프로파일 데이터 상의 I/O들과, 새로 추가되고 앱 런칭과 관련된 I/O들을 합친 I/O들의 리스트를 업데이트할 프로파일 데이터로 결정한다.
S505단계에서는 S404단계에서 결정된 업데이트의 대상이 된 I/O들 중에서 병합(merge)이 가능한 I/O들이 있는지 여부를 판단할 수 있다. 예를 들어, 앱 런칭 단계에서는 동일한 파일에 대해 여러 번 데이터를 읽어오는 I/O가 발생할 수 있다. 따라서 이런 I/O들이 인접해서 발생하는 경우에는 한번의 I/O에서 해당파일을 읽을 수 있다면, 로딩하는데 걸리는 시간을 줄일 수 있다. 따라서, 각 I/O Operation에서 읽어오는 파일명, 오프셋(offset) 및 길이(length)를 비교하여 공통되는 파일명이 존재하고, 해당 I/O들을 병합(merge)하면, 한번의 I/O에서 모든 데이터를 읽어올 수 있는 경우에는 I/O들 간 병합이 가능하다.
그러나, 전체 I/O에 대해서 이를 적용하는 경우 오히려 I/O순서가 바뀔 수 있어 성능의 저하가 발생할 수 있으므로, 일정한 범위 내에 있는 I/O 에 대해서 경우가 있을 수 있다. 여기서 일정 범위는 I/O를 처리하는 시간에 기반한 범위일 수 있고, 구체적으로는 일정한 시간단위를 나타내는 Time Window내의 I/O에 대해서 merge를 수행할 수 있는지를 판단할 수 있다.
S506단계에서, merge 가능한 I/O들이 존재하는 경우에는, 해당 I/O를 하나로 merge하여 최종 프로파일 데이터를 업데이트할 수 있다.
물론 S507단계에서와 같이, merge가능한 I/O가 존재하지 않는 경우에는, 각각 별개의 I/O로서 최종 프로파일 데이터를 업데이트 할 수 있다.,
도 6은 본 발명의 일 실시 예에 따른 프로파일 업데이트 방법에 있어서, 발생한 I/O가 앱 런칭과 관련된 I/O인지를 확인하는 것을 나타내는 도면이다.
도 6에 따르면, 앱 런칭 단계에서 요청된 I/O가 실제로 앱 런칭에 관련된 I/O인지 확인하기 위해서, IPC의 발생여부를 판단할 수 있다.
구체적으로 IPC는 하나의 시스템 내에서 실행시켜놓은 프로그램들끼리 메시지를 주고 받는 것을 의미하는데, 앱 런칭이 시작 시간(App Launch start) 부터 발생한 요청된 I/O들 간에 IPC가 발생하는 경우는 해당 I/O들이 앱 런칭과 관련되어 있다는 것을 의미할 수 있다. 즉, I/O를 발생시킨 프로세스가 실행중인 프로세스와 관련 있는 프로세스인 경우에 IPC가 발생하는데, IPC가 발생하면 IPC값을 1로 설정하고, 관련이 없는 프로세스인 경우에는 IPC가 발생하지 않으므로, IPC값이 0으로 설정될 수 있다.
따라서, 단말은 I/O의 목록에서 IPC의 발생여부를 확인하여 IPC가 발생한 경우에는 해당 앱의 런칭과 관련 있는 I/O로, 반대의 경우에는, 앱 런칭과 관련 없는 I/O인 것으로 결정할 수 있다. 따라서, 위와 같은 본 발명에 따르면, VFS계층에서 프로파일 하는 것으로 인해 증가하는 I/O에 대해서 해당 앱의 런칭과 관련 있는 I/O를 구별해 낼 수 있다.
도 7은 본 발명의 프로파일 데이터 업데이트 방법에 따른 I/O 병합(merge)을 나타낸 도면이다.
도 7에 따르면, 도 5의 S504단계에 따라, 업데이트할 I/O의 목록이 결정되면, 단말은 I/O목록들 중에서 merge할 수 있는 I/O의 유무를 판단할 수 있다.
앱 런칭 단계에서 발생하는 I/O Operation은 특정 파일의 일부 데이터를 불러올 수 있다. 따라서, 동일한 파일을 읽어오는 경우에는, 하나의 I/O에서 로딩할 수 있다면, 병합(merge)된 시간만큼 미리 읽어오는(Pre-loading) 시간을 단축할 수 있다.
I/O끼리 병합이 가능한지 여부는 다음의 기준에 의해 판단할 수 있다. 구체적으로, merge할 I/O 는 동일한 파일(file)을 대상으로 해야 하고, 각 I/O 의 파일의 오프셋(offset)과 길이(length)가 중복되거나 이어질 수 있어야 가능하다. Merge할 I/O에서 요구하는 offset이 완전히 연속될 필요는 없다. 또한 merge할 I/O들이 너무 멀리 떨어져 있는 경우에는 merge하는 것이 오히려 더 성능 저하를 야기할 수 있다.
구체적으로 도 7에서 IO2-3, IO2-2, IO2-1과, I04-1, I04-2는 merge가능한 I/O를 나타낸 것이다. 이들 I/O의 merge가 가능한 것은 단순히 읽어오는 파일, 오프셋 및 길이에 연관이 있는 것뿐만 아니라, 이들 I/O들이 merge할 수 있을 정도의 구간 내에 있기 때문이다. 즉, IO2-3, IO2-2, IO2-1과, I04-1, I04-2를 각각 동일한 I/O에서 읽을 수 있으면, 미리 읽어(Pre-loading)할 시간이 줄어들어 I/O Operation에 의한 지연이 줄어들 수 있다. 그러나 전체 프로파일 데이터에 대해서 merge를 시도하는 경우에는 I/O순서가 뒤바뀔 수 있으므로, 오히려 미리 읽어오는(Pre-loading) 성능 자체가 저하될 수 있다. 따라서 일정한 구간 내의 I/O에 한해서 merge를 수행하는 것이 타당하고, 여기서 일정한 구간은 Time Window로 명명될 수 있다.
도 8은 본 발명의 일 실시 예에 따른 앱 런칭 속도 개선 장치를 도시한 블록도이다.
도 8에 따르면, 본 발명의 일 실시 예에 따른 앱 런칭 속도 개선 장치는 제어부(810) 및 저장부(820)으로 표현될 수 있다.
저장부(820)는 상기 애플리케이션의 이전의 런칭에서 요청된 I/O(Input/Output)들의 목록을 포함하는 프로파일 데이터를 저장하고 있을 수 있다.
또한 제어부(810)는 애플리케이션의 런칭(Launching)을 감지하고, 프로파일 데이터에 기초하여 이전의 런칭에서 요청된 I/O들을 미리 로딩(Pre-loading)하고, 애플리케이션의 런칭에서 요청된 I/O 및 이전의 런칭에서 요청된 I/O 중 적어도 어느 하나에 기초하여 프로파일 데이터를 갱신할 수 있다.
또한 제어부(810)는 애플리케이션의 런칭에서 요청된 I/O가 상기 프로파일 데이터에 존재하던 I/O인지를 판단하고, 판단결과, 프로파일 데이터에 존재하던 I/O 외의 I/O들을 갱신할 상기 프로파일 데이터에 추가할 수 있다.
또한 제어부(810)는 애플리케이션의 런칭에서 요청된 I/O가 상기 애플리케이션의 런칭과 관련된 I/O인지 판단할 수 있다.
또한 제어부(810)는 애플리케이션의 런칭에서 요청된 I/O가 프로파일 데이터에 저장된 I/O와의 IPC(Interprocessor Communication)가 발생하였는지 여부로 애플리케이션의 런칭에서 요청된 I/O가 애플리케이션의 런칭과 관련된 I/O인지 판단할 수 있다.
또한 제어부(810)는 기 애플리케이션의 런칭(Launching)을 감지하고, 프로파일 데이터에 기초하여 이전의 런칭에서 요청된 I/O들을 미리 로딩(Pre-loading)하고, 애플리케이션의 런칭에서 요청된 I/O 및 이전의 런칭에서 요청된 I/O 중 적어도 어느 하나에 기초하여 상기 프로파일 데이터를 갱신할 수 있다.
또한 제어부(810)는 프로파일 데이터에 포함될 I/O를 결정하고, 프로파일 데이터에 포함될 I/O 중에서 병합(merge)가능한 I/O를 병합할 수 있다.
또한 제어부(810)는 프로파일 데이터에 포함될 I/O 중 동일한 파일에 대한 I/O를 검출하고, 검출한 동일한 파일에 대한 I/O가 기 설정된 병합 가능한 시간범위 이내에 존재하는지 판단하며, 동일한 파일에 대한 I/O가 기 설정된 병합 가능한 시간범위 이내에 존재하는 경우 동일한 파일에 대한 I/O를 병합할 수 있다.
이상 도 8에 따라 본 발명의 앱 런칭 속도 개선 장치에 대해서 설명하였다. 상술한 설명에서는 제어부(810)와 저장부(820)로 나누어 설명하였으나, 당업자의 선택에 따라 보다 더 세부적인 모듈로 구성될 수도 있고, 또한 하나의 모듈로 구성될 수도 있음을 명시한다.
이하의 도 9부터의 설명은 앱이 런칭되고 난 이후에 앱 실행 속도를 개선하는 방법 및 장치에 관한 설명이다.
앱이 런칭되고 난 뒤에는 사용자의 입력에 따라, 앱은 수 많은 데이터를 읽거나 쓰며, 이 경우 단말은 물리 메모리와 가상 메모리를 이용하여 연산을 수행할 수 있다.
도 9는 앱의 메모리 매핑 정보를 관리하는 메모리 매핑 저장부의 일 실시예를 나타낸 것이다.
애플리케이션이 실행되고 나면, 해당 애플리케이션 내에서 다양한 기능을 수행하는 프로세스가 생성될 수 있다. 각각의 프로세스는 다양한 데이터를 읽거나 쓰기 위해서 메모리를 액세스 하게 되는데, 물리적 메모리에 저장된 데이터를 가상 메모리에 매핑(mapping)하여 가상메모리를 액세스 하는 방식(Virtual Memory Access)으로 데이터에 접근할 수 있다.
해당 프로세스가 특정 가상 메모리의 사용이 완료 되어 반환하게 되면 프로세스는 해당 가상 메모리를 시스템에 반환(unmap)을 하게 되고 이를 통하여 시스템은 가상메모리와 물리메모리의 연결을 해제하게 된다. 그런데 매 프로세스가 가상메모리를 반환(unmap)을 요청할 때마다 가상메모리와 물리메모리의 연결을 해제하게 되면, 다시 동일한 프로세스가 새로운 가상메모리를 요청하는 경우 기존의 동일한 작업(가상메모리와 물리메모리의 연결)을 수행해야 하기 때문에 효율이 떨어질 수 있다.
따라서, 애플리케이션에서 언매핑 요청을 하더라도 이를 단순히 메모리 회수 요청으로 인식하고, 이전에 매핑 되었던 페이지들(Pre-mapped pages)의 물리적 메모리와 가상 메모리의 연결을 해제하지 않고, 임의의 저장소인 재사용 풀(Reuse Pool)에 보관하다가, 다시 매핑 요청이 발생하면, 재사용 풀로부터 해당 메모리 정보를 애플리케이션에 바로 제공할 수 있다.
도 9에 따르면, 프로세스 P1, P3, P5, P6, P4, P8은 그 순서대로 생성되었었던 프로세스를 나타내고 각각의 블록들은 매핑된 메모리 정보인 메모리 매핑 정보를 의미할 수 있다.
본 명세서에서는 매핑된 페이지 정보(Pre-mapped pages)의 재사용 풀(Reuse Pool)은 메모리 매핑 저장부(900)로 표현될 수 있다.
메모리 매핑 저장부(900)는 정보는 각 프로세스별로 생성될 수 있다. 즉 도 9에서의 메모리 매핑 저장부(900)는 P1, P3, P5, P6, P4, P8의 각 프로세스별로 생성되고, 각 메모리 매핑 저장부(900)는 이전에 이미 매핑된 페이지 정보를 포함하고 있다. 그런데 이 경우 종래에는 메모리 매칭 저장부(900)내에 저장되는 페이지의 양 즉 전체 메모리 매칭 저장부(900)의 용량은 물리적 메모리에 따라 달라질 수 있었다. 즉, 물리적 메모리가 모두 사용될 때까지 메모리 매칭 저장부(900)에 계속 메모리 매핑 정보를 저장하다가, 물리적 메모리가 가득 차면, 가장 오래된 순서대로 메모리 매핑 저장부(900)로부터 삭제하고, 물리적 메모리와 가상 메모리의 연결을 해제할 수 있다.
그런데 위와 같은 방식의 경우, 전체 메모리 사용량이 증가하고, 프리 메모리(FREE MEMORY)의 확보가 용이하지 않다는 단점이 있을 수 있다. 또한 메모리 매핑 저장부(900)가 가득 찬 경우에는 빈번한 메모리 회수(RECLAIM/LOW MEMORY KILLER)의 발생으로 시스템 성능이 저하될 수 있다.
도 10은 본 발명의 일 실시 예에 따른 메모리 매핑 저장부 관리방법을 나타낸 순서도이다.
도 10에 따르면 S1001단계에서, 단말은 애플리케이션에서 메모리 회수 요청을 하였는지 여부를 판단할 수 있다. 판단결과 애플리케이션으로부터 메모리 회수 요청이 감지되지 않으면 단말은 계속 대기할 수 있다.
애플리케이션으로부터 메모리 회수 요청이 감지되는 경우, 단말은 S1002단계에서 메모리 회수 요청에 대응하는 프로세스의 메모리 매핑 정보를 메모리 매핑 저장부에 저장할 수 있다.
S1003단계에서 단말은, 메모리 매핑 저장부에 저장된 메모리 매핑 정보의 총 용량이 기 설정된 용량을 초과하는지 판단할 수 있다. 즉, 도 9에서의 메모리 매핑 저장부(900)와는 달리, 메모리 매핑 저장부의 용량은 그 크기가 제한 될 수 있다.
또한 본 발명의 메모리 매핑 저장부는 도 9의 메모리 매핑 저장부(900)와는 상이하게 각 프로세스 별로 생성되는 것이 아니라, 단일 저장부로 구성될 수 있고, 이 경우 하나의 저장부에 생성된 프로세스의 순서에 따라서, 차례대로 저장될 수 있다.
만일 기 설정된 용량을 초과하는 경우에는 S1004단계에서 초과하는 만큼에 해당하는 메모리 매핑 정보를 삭제할 수 있다. 이 때, 초과하는 부분에 해당하는 매핑된 정보는 페이지 단위로 삭제될 수 있다.
삭제된 매핑 정보에 해당하는 페이지들은 실제 물리 메모리와 가상 메모리의 연결이 해제될 수 있다. 따라서 그만큼의 프리 메모리(FREE MEMORY)를 확보할 수 있다.
도 11은 본 발명의 일 실시 예에 따른 메모리 매핑 저장부를 나타낸 도면이다.
도 11에 따르면, 본 발명의 메모리 매핑 저장부(1100)는 각 프로세스별로 별도로 생성되지 않고, 단일 저장부로 구성될 수 있다. 따라서 생성된 프로세스 P1, P3, P5, P6, P4, P8는 생성되었던 순서대로 메모리 매핑 저장부(1101)에 저장될 수 있다.
또한 본 발명의 메모리 매핑 저장부(1100)는 그 크기가 제한될 수 있다. 특히 도 11에서는 메모리 매핑 저장부(1100)의 크기가 30MB로 제한된 경우를 나타낸다. 이 경우 30MB가 초과하는 부분의 메모리 매핑 정보들은 메모리 매핑 저장부(1100)로부터 삭제될 수 있다. 메모리 매핑 저장부(1100)로부터 삭제되는 경우 물리적 메모리와 가상메모리의 연결이 해제될 수 있다.
도 12는 본 발명의 일 실시 예에 따른 메모리 매핑 저장부의 동작을 나타낸 도면이다.
도 12에서 List add는 애플리케이션으로부터 메모리 회수 요청을 감지하여 메모리 매핑 저장부에 메모리 매핑 정보를 추가하는 것을 나타낸다.
List delete는 메모리 매핑 저장부의 크기가 기 설정된 용량을 초과하는 경우에 가장 오래된 메모리 매핑 정보 리스트를 페이지 단위로 삭제하는 것을 나타낸다.
VMA Allocation은 본 발명으 lapah리 매핑 저장부에 저장된 메모리 매핑 정보에 대하여 애플리케이션으로부터 다시 매핑(mmap())요청이 있는 경우, 요청된 페이지에 대한 메모리 매핑 정보를 요청된 사이즈만큼 애플리케이션에 제공하는 것을 나타낸다.
도 13은 본 발명의 일 실시 예에 따른 애플리케이션 실행 장치를 나타낸 도면이다.
도 13에 따르면, 본 발명의 일 실시 예에 따른 애플리케이션 실행 장치는
입력부(1301), 제어부(1302), 가상 메모리부(1303) 및 물리 메모리부(1304)를 포함할 수 있다.
물리 메모리부(1304)는 데이터를 저장하는 실제 메모리일 수 있고 그 종류는 한정되지 않는다.
입력부(1301)는 애플리케이션에서 발생하는 매핑 또는 언매핑 등과 같은 요청신호를 입력할 수 있다.
가상 메모리부(1303)는 물리 메모리부(1304)에 저장된 데이터를 매핑할 수있다. 따라서, 애플리케이션은 가상 메모리부(1303)를 액세스함으로써 물리 메모리부(1304)를 데이터를 읽을 수 있다.
본 발명의 제어부(1302)는 도면에는 도시되지 않았으나, 입력부(1301)로부터 애플리케이션에서 수행된 프로세스의 메모리 회수 요청을 감지하고, 상기 메모리 회수 요청에 대응하는 상기 프로세스의 메모리 매핑 정보를 저장하는 메모리 매핑 저장부를 더 포함할 수 있다.
또한 제어부(1302)는 메모리 매핑 저장부에 저장된 총 메모리 매핑 정보가 기 설정된 용량을 초과하는지 판단하고, 판단결과, 총 메모리 매핑 정보가 기 설정된 용량을 초과하는 경우, 적어도 하나의 메모리 매핑 정보를 매핑된 페이지 단위로 가상 메모리부와 물리 메모리부의 연결을 해제할 수 있다.
또한 제어부(1302)는 적어도 하나의 메모리 매핑 정보를 메모리 매핑 저장부에서 삭제하고, 삭제한 적어도 하나의 메모리 매핑 정보를 페이지 단위로 가상메모리와 물리메모리의 연결을 해제할 수 있다.
또한 제어부(1302)는 애플리케이션으로부터 메모리 매핑 저장부에 저장된 적어도 하나의 메모리 매핑 정보를 요청하는 경우, 요청된 만큼의 메모리 매핑 정보를 애플리케이션으로 전송할 수 있다.
또한 본 발명의 기 설정된 용량은 물리 메모리의 크기보다 작거나 같을 수 있음은 전술한 바와 같다.
이상에서 본 발명의 애플리케이션 실시 장치의 간략한 구조가 설명되었으나, 당업자의 선택에 따라 상술한 각 구성요소를 더욱 세분화하거나 합쳐서 하나 이상의 모듈로 재구성할 수 있음을 명시한다.
도 4 내지 8을 통해 설명된 본 발명의 다양한 실시 예에 따르면, 요청된 I/O의 목록을 저장한 프로파일 데이터가 존재하는 경우, 해당 I/O들을 pre-loading하여 앱의 런칭 속도를 개선할 수 있다.
한편 시스템의 관점에서 볼 때, 메모리의 여유분의 크기에 따라서 전체 시스템의 성능이 영향을 받을 수 있다. 구체적으로 앱 런칭 속도를 개선하기 위해 수행하는 프로파일 데이터를 pre-loading 하는 것이 메모리 여유분이 적은 경우에 수행되면 오히려 시스템의 성능을 저하시킬 수 있다.
따라서, 본 실시 예에서는 프로파일 데이터의 pre-loading을 현재 메모리의 상태에 따라서 차등적으로 수행하는 이른바 adaptive loading방법을 제안한다. 즉, 메모리 여유분이 많을 때(high free 메모리)에는 모든 profile data를 loading 하고, 메모리 level이 낮아질수록 loading하는 data를 줄일 수 있다.
여기서 Loading data의 선택은 발생시킨 process의 선택을 통해 이루어 질 수 있고, 메모리 여유분이 적어질수록 profile data가 많은 related service(process)를 loading 대상에서 제외시키며, 가장 낮은 메모리 level(low free 메모리)에서는 target app이 발생시킨 profile data만 로딩하게 된다. 메모리 level은 threshold 값을 통해 구분 가능하며, Threshold 값은 system의 메모리 크기에 따라 달라질 수 있다.
상술한 adaptive loading 방법에 대해서 도 13 내지 14를 통해 보다 상세히 설명한다.
도 14은 본 발명의 일 실시 예에 따른 adaptive loading 방법을 나타낸 도면이다.
도 14에 따르면, 1400은 프로파일 데이터에 저장되어 있는 요청된 I/O의 목록을 나타낸 것이다. target app에 대한 I/O는 복수의 process에 의해 발생할 수 있다. 여기서 PID는 해당 I/O를 발생시킨 process의 고유한 식별자일 수 있다. 그런데 PID는 프로파일 데이터가 생성될 때마다 또는 단말이 재부팅 될 때마다 변경될 수 있는 값이므로, PID 값 만으로 해당 I/O를 발생시킨 process가 어떤 것인지를 고정적으로 알기 어렵다.
1401은 I/O를 발생시킨 process의 이름에 따른 PID를 나타낸 표이다. 이에 의하면, PID를 이용하여 I/O를 발생시킨 process의 이름을 알 수 있다.
즉, {IO1,IO2-1,IO2-2,IO2-3,IO5,IO6}는 target app에 의해 발생한 I/O들이고, 와 {IO4-1,IO4-2}, {IO3,IO7}는 각각 related service#1과 related service#2에의해 발생한 I/O들임을 알 수 있다. 이런 PID와 process name을 매핑시킨 table은 단말에 저장되어 있을 수 있고, 어플리케이션의 설치, 삭제 또는 변경에 따라 해당 table 정보가 갱신될 수도 있다.
한편, 1402는 시스템 메모리의 상태와 그에 따른 본 발명의 adaptive loading방법을 나타낸 표이다.
1402에 따르면, 일정한 임계값(threshold)에 따라 시스템 메모리의 상태를 판단할 수 있다. 도 14 및 도 14에서는 free memory의 양에 따라 메모리의 상태를 결정하는 실시 예를 나타내고 있으나, 다양한 실시 예에서 사용 중인 메모리의 양에 기초하여 메모리의 상태를 결정할 수도 있다. 임계값은 시스템의 메모리의 크기에 따라 달라질 수 있다.
1402에서 임계값은 low임계값과 high 임계값의 두 가지 값을 가질 수 있다.
먼저, 프리메모리의 양이 low 임계값보다 낮은 경우에는 사용 가능한 메모리 자원이 매우 적은 상태림을 알 수 있으므로 이를 low free memory level로 판단할 수 있다. 따라서 이 경우에는, target app에 의해 발생한 I/O만을 선택적으로 pre-loading할 수 있다(Target App Only Mode).
다음으로, 프리메모리의 양이 high 임계값보다 높은 경우에는 사용 가능한 메모리 자원이 많은 경우를 나타내므로 현재 메모리의 상태가 high free memory상태임을 알 수 있다. 이 때는 메모리 자원에 여유가 있으므로 프로파일 데이터에 저장된 모든 I/O를 pre-loading할 수 있는 full-loading 모드로 동작할 수 있다.
마지막으로, 프리메모리의 양이 low 임계값과 high 임계값의 사이에 있는 경우에는 메모리 레벨을 Normal state로 판단할 수 있고, 이 경우에는 free memory의 비율에 따라 차등적으로 프로파일 데이터 중 pre-loading 할 I/O를 결정할 수 있다. 예컨대 high임계값이 80% 이고, low 임계값이 20%인 경우를 가정할 때, free memory양이 50%인 경우와 30%인 경우에 그에 따른 pre-loading I/O 역시 free memory 양의 비율만큼 차이를 둘 수 있다.
1402에서는 두 개의 임계값을 갖고 메모리의 상태를 3가지 상태로 구분하여 차등적으로 pre-loading을 수행하기 위한 모드를 매핑하고 있으나, 임계값 없이 free 메모리의 양에 따라 전체 프로파일 데이터에서 free 메모리 양의 비율에 대응하는 만큼의 프로파일 데이터에 해당하는 I/O만을 preloading 하는 방법으로 동작할 수도 있다.
도 15는 본 발명의 일 실시 예에 따른 adaptive loading의 동작을 나타낸 순서도이다.
도 15에 따르면, 먼저 1500단계에서 단말은 프리(free) 메모리 크기를 획득할 수 있다. 도면에는 미도시 되었으나, 메모리의 상태를 판단하여 프리 메모리의 크기를 획득하는 것은 애플리케이션의 런칭 마다 수행될 수 있다.
1501단계에서 단말은 free memory값이 low임계값보다 큰지를 판단한다. 판단결과 free memory값이 low임계값보다 작은 경우 메모리의 상태를 low free memory로 판단하고 target app에 의해 발생한 I/O만을 pre-loading할 수 있다(1502).
free memory값이 low임계값보다 큰 경우에는 1503단계에서 free memory값이 high임계값보다 큰지를 판단한다. 판단결과, free memory값이 high임계값보다 큰 경우에는 사용할 수 있는 메모리 자원이 많으므로 메모리의 상태가 high free memory이고, 이 때는 프로파일 데이터에 포함된 모든 I/O의 pre-loading을 수행할 수 있다(1504).
free memory값이 high임계값보다 작은 경우에는 메모리의 상태가 normal state임을 판단하고, 전체 메모리 대비 free 메모리의 비율을 계산할 수 있다(1505).
1506 단계에서, 단말은 1505단계에서 계산된 비율에 따라 프로파일 데이터 내의 I/O을 차등적으로 pre-loading할 수 있다.
이상에서 설명된 본 명세서와 도면에 개시된 본 발명의 실시 예들은 본 발명의 기술 내용을 쉽게 설명하고, 본 발명의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 또한 앞서 설명된 본 발명에 따른 실시 예들은 예시적인 것에 불과하며, 당해 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 범위의 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 다음의 특허청구범위에 의해서 정해져야 할 것이다.
810: 제어부
820: 저장부
900: 메모리 매핑 저장부

Claims (28)

  1. 단말의 애플리케이션(Application)의 실행 방법에 있어서,
    상기 애플리케이션의 런칭(Launching)을 감지하는 단계;
    상기 애플리케이션의 이전의 런칭에서 요청된 I/O(Input/Output)들의 목록을 포함하는 프로파일 데이터에 기초하여 상기 이전의 런칭에서 요청된 I/O들을 미리 로딩(Pre-loading)하는 단계;
    상기 애플리케이션의 런칭에서 요청된 I/O가 상기 애플리케이션의 런칭과 관련된 I/O인지 결정하는 단계; 및
    상기 애플리케이션의 런칭에서 요청된 I/O가 상기 애플리케이션의 런칭과 관련된 경우, 상기 I/O를 상기 프로파일 데이터에 추가하고, 상기 프로파일 데이터를 갱신하는 단계;를 포함하고,
    상기 프로파일 데이터를 갱신하는 단계는,
    상기 프로파일 데이터에 포함될 I/O 중 동일한 파일에 대한 I/O를 검출하는 단계;
    검출한 상기 동일한 파일에 대한 I/O가 기 설정된 병합 가능한 시간범위 이내에 존재하는지 판단하는 단계; 및
    상기 동일한 파일에 대한 I/O가 상기 기 설정된 병합 가능한 시간범위 이내에 존재하는 경우 상기 동일한 파일에 대한 I/O를 병합하는 단계를 포함하는 애플리케이션 실행 방법.
  2. 제 1항에 있어서, 상기 애플리케이션의 런칭에서 요청된 I/O와 상기 이전의 런칭에서 요청된 I/O에 기초하여 상기 프로파일 데이터를 갱신하는 단계는,
    상기 애플리케이션의 런칭에서 요청된 I/O가 상기 프로파일 데이터에 존재하던 I/O인지를 판단하는 단계; 및
    판단결과, 상기 프로파일 데이터에 존재하던 I/O 외의 I/O들을 갱신할 상기 프로파일 데이터에 추가하는 단계;를 포함하는 것을 특징으로 하는 애플리케이션 실행 방법.
  3. 삭제
  4. 제 1항에 있어서, 상기 상기 애플리케이션의 런칭에서 요청된 I/O가 상기 애플리케이션의 런칭과 관련된 I/O인지 결정하는 단계는,
    상기 애플리케이션의 런칭에서 요청된 I/O가 상기 프로파일 데이터에 저장된 I/O와의 IPC(Interprocessor Communication)가 발생하였는지 여부로 판단하는 것을 특징으로 하는 애플리케이션 실행 방법.
  5. 삭제
  6. 삭제
  7. 애플리케이션을 실행하는 단말에 있어서,
    상기 애플리케이션의 이전의 런칭에서 요청된 I/O(Input/Output)들의 목록을 포함하는 프로파일 데이터를 저장하고 있는 저장부; 및
    상기 애플리케이션의 런칭(Launching)을 감지하고, 상기 프로파일 데이터에 기초하여 상기 이전의 런칭에서 요청된 I/O들을 미리 로딩(Pre-loading)하고, 상기 애플리케이션의 런칭에서 요청된 I/O가 상기 애플리케이션의 런칭과 관련된 I/O인지 결정하고, 상기 애플리케이션의 런칭에서 요청된 I/O가 상기 애플리케이션의 런칭과 관련된 경우, 상기 I/O를 상기 프로파일 데이터에 추가하고, 그리고 상기 프로파일 데이터를 갱신하는 제어부;를 포함하고,
    상기 제어부는,
    상기 프로파일 데이터에 포함될 I/O 중 동일한 파일에 대한 I/O를 검출하고, 검출한 상기 동일한 파일에 대한 I/O가 기 설정된 병합 가능한 시간범위 이내에 존재하는지 판단하고, 상기 동일한 파일에 대한 I/O가 상기 기 설정된 병합 가능한 시간범위 이내에 존재하는 경우 상기 동일한 파일에 대한 I/O를 병합하는 애플리케이션을 실행하는 단말.
  8. 제 7항에 있어서, 상기 제어부는
    상기 애플리케이션의 런칭에서 요청된 I/O가 상기 프로파일 데이터에 존재하던 I/O인지를 판단하고, 판단결과, 상기 프로파일 데이터에 존재하던 I/O 외의 I/O들을 갱신할 상기 프로파일 데이터에 추가하는 것을 특징으로 하는 애플리케이션을 실행하는 단말.
  9. 삭제
  10. 제 7항에 있어서, 상기 제어부는,
    상기 애플리케이션의 런칭에서 요청된 I/O가 상기 프로파일 데이터에 저장된 I/O와의 IPC(Interprocessor Communication)가 발생하였는지 여부로 상기 애플리케이션의 런칭에서 요청된 I/O가 상기 애플리케이션의 런칭과 관련된 I/O인지 결정하는 것을 특징으로 하는 애플리케이션을 실행하는 단말.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 제 1항에 있어서, 상기 애플리케이션의 런칭(Launching)을 감지하는 단계 이후에,
    상기 단말의 메모리 상태를 판단하는 단계;를 더 포함하는 것을 특징으로 하는 애플리케이션 실행방법.
  22. 제 21항에 있어서, 상기 단말의 메모리 상태를 판단하는 단계는,
    상기 단말의 프리(free)메모리의 양이 제1 임계값보다 낮은 경우에는 로우(low)메모리 상태로 판단하고,
    상기, 미리 로딩(Pre-loading)하는 단계는,
    상기 프로파일 데이터에 포함된 I/O 중 상기 애플리케이션에 의해 요청된 I/O만을 미리 로딩(pre-loading)하는 것을 특징으로 하는 애플리케이션 실행방법.
  23. 제 21항에 있어서, 상기 단말의 메모리 상태를 판단하는 단계는,
    상기 단말의 프리(free)메모리의 양이 제2 임계값보다 높은 경우에는 하이(high)메모리 상태로 판단하고,
    상기, 미리 로딩(Pre-loading)하는 단계는,
    상기 프로파일 데이터에 포함된 I/O 전체를 미리 로딩(pre-loading)하는 것을 특징으로 하는 애플리케이션 실행방법.
  24. 제 21항에 있어서, 상기 단말의 메모리 상태를 판단하는 단계는,
    상기 단말의 프리(free)메모리의 양이 제1 임계값과 제2 임계값 사이에 있는 경우에는 노말(normal)메모리 상태로 판단하고,
    상기 미리 로딩(Pre-loading)하는 단계는,
    상기 프로파일 데이터에 포함된 I/O 중, 전체 메모리 크기 중 상기 프리(free)메모리의 비율에 따른 I/O를 미리 로딩(pre-loading)하는 것을 특징으로 하는 애플리케이션 실행방법.
  25. 제 7항에 있어서, 상기 제어부는,
    애플리케이션의 런칭(Launching)을 감지한 뒤, 상기 단말의 메모리 상태를 판단하는 것을 특징으로 하는 단말.
  26. 제 25항에 있어서, 상기 제어부는,
    상기 단말의 프리(free)메모리의 양이 제1 임계값보다 낮은 경우에는 로우(low)메모리 상태로 판단하고, 상기 프로파일 데이터에 포함된 I/O 중 상기 애플리케이션에 의해 요청된 I/O만을 미리 로딩(pre-loading)하는 것을 특징으로 하는 단말.
  27. 제 25항에 있어서, 상기 제어부는,
    상기 단말의 프리(free)메모리의 양이 제2 임계값보다 높은 경우에는 하이(high)메모리 상태로 판단하고, 상기 프로파일 데이터에 포함된 I/O 전체를 미리 로딩(pre-loading)하는 것을 특징으로 하는 단말.
  28. 제 25항에 있어서, 상기 제어부는,
    상기 단말의 프리(free)메모리의 양이 제1 임계값과 제2 임계값 사이에 있는 경우에는 노말(normal)메모리 상태로 판단하고, 상기 프로파일 데이터에 포함된 I/O 중, 전체 메모리 크기 중 상기 프리(free)메모리의 비율에 따른 I/O를 미리 로딩(pre-loading)하는 것을 특징으로 하는 단말.
KR1020140103866A 2014-04-09 2014-08-11 애플리케이션 실행 방법 및 장치 KR102262102B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP15776620.5A EP3129872A4 (en) 2014-04-09 2015-04-09 Application execution method and apparatus
US14/682,427 US10275158B2 (en) 2014-04-09 2015-04-09 Apparatus and method for improving operation speed of application
PCT/KR2015/003565 WO2015156615A1 (en) 2014-04-09 2015-04-09 Application execution method and apparatus
US15/446,686 US10025513B2 (en) 2014-04-09 2017-03-01 Execution method and apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020140042567 2014-04-09
KR20140042567 2014-04-09

Publications (2)

Publication Number Publication Date
KR20150117192A KR20150117192A (ko) 2015-10-19
KR102262102B1 true KR102262102B1 (ko) 2021-06-09

Family

ID=54265109

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140103866A KR102262102B1 (ko) 2014-04-09 2014-08-11 애플리케이션 실행 방법 및 장치

Country Status (3)

Country Link
US (2) US10275158B2 (ko)
EP (1) EP3129872A4 (ko)
KR (1) KR102262102B1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9633233B2 (en) 2014-05-07 2017-04-25 Sandisk Technologies Llc Method and computing device for encrypting data stored in swap memory
US9665296B2 (en) * 2014-05-07 2017-05-30 Sandisk Technologies Llc Method and computing device for using both volatile memory and non-volatile swap memory to pre-load a plurality of applications
US9710198B2 (en) 2014-05-07 2017-07-18 Sandisk Technologies Llc Method and computing device for controlling bandwidth of swap operations
US9928169B2 (en) 2014-05-07 2018-03-27 Sandisk Technologies Llc Method and system for improving swap performance
CN106293792B (zh) * 2015-06-02 2019-12-20 腾讯科技(深圳)有限公司 软件启动方法和装置
CN105550034A (zh) * 2015-11-26 2016-05-04 东莞酷派软件技术有限公司 一种ddr控制方法及移动终端
KR102456109B1 (ko) * 2015-12-03 2022-10-18 삼성전자주식회사 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법
CN105760226B (zh) * 2016-02-01 2019-06-28 Oppo广东移动通信有限公司 一种快速启动移动终端相机的方法、装置及移动终端
US10034407B2 (en) * 2016-07-22 2018-07-24 Intel Corporation Storage sled for a data center
CN109947497B (zh) * 2017-12-20 2021-06-08 Oppo广东移动通信有限公司 应用程序预加载方法、装置、存储介质及移动终端
CN109960539A (zh) * 2017-12-21 2019-07-02 广东欧珀移动通信有限公司 应用程序预加载方法、装置、存储介质及移动终端
CN108509273A (zh) * 2018-03-22 2018-09-07 杭州迪普科技股份有限公司 一种内存处理方法及装置
US10514865B2 (en) * 2018-04-24 2019-12-24 EMC IP Holding Company LLC Managing concurrent I/O operations
CN108595228B (zh) 2018-05-10 2021-03-12 Oppo广东移动通信有限公司 应用程序预测模型建立方法、装置、存储介质及移动终端
CN108595227A (zh) 2018-05-10 2018-09-28 Oppo广东移动通信有限公司 应用程序预加载方法、装置、存储介质及移动终端
CN108710513B (zh) 2018-05-15 2020-07-21 Oppo广东移动通信有限公司 应用程序启动方法、装置、存储介质及终端
CN108829456A (zh) * 2018-05-29 2018-11-16 Oppo广东移动通信有限公司 应用程序预加载方法、装置、存储介质及终端
CN108804157A (zh) 2018-06-05 2018-11-13 Oppo广东移动通信有限公司 应用程序预加载方法、装置、存储介质及终端
CN112817648A (zh) * 2019-10-31 2021-05-18 深圳市万普拉斯科技有限公司 应用程序文件预加载方法、装置和移动终端
US11836507B2 (en) * 2020-06-18 2023-12-05 Dell Products L.P. Prioritizing the pre-loading of applications with a constrained memory budget using contextual information
US20230045617A1 (en) * 2021-08-03 2023-02-09 Samsung Electronics Co., Ltd. Method and electronic device for managing a boost time required for an application launch

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070043939A1 (en) * 2000-02-03 2007-02-22 Realtime Data Llc Systems and methods for accelerated loading of operating systems and application programs
US20130332811A1 (en) 2012-06-07 2013-12-12 Microsoft Corporation Progressive loading for web-based spreadsheet applications

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6003115A (en) * 1997-07-29 1999-12-14 Quarterdeck Corporation Method and apparatus for predictive loading of a cache
US8417913B2 (en) 2003-11-13 2013-04-09 International Business Machines Corporation Superpage coalescing which supports read/write access to a new virtual superpage mapping during copying of physical pages
US8850154B2 (en) * 2007-09-11 2014-09-30 2236008 Ontario Inc. Processing system having memory partitioning
US8799892B2 (en) * 2008-06-09 2014-08-05 International Business Machines Corporation Selective memory donation in virtual real memory environment
US8935456B2 (en) * 2010-11-16 2015-01-13 Vmware, Inc. Method and system for integrating database memory management in virtual machines
US20130066832A1 (en) * 2011-09-12 2013-03-14 Microsoft Corporation Application state synchronization
KR101355105B1 (ko) 2012-01-03 2014-01-23 서울대학교산학협력단 캐시 일관성 보장을 위한 공유 가상 메모리 관리 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070043939A1 (en) * 2000-02-03 2007-02-22 Realtime Data Llc Systems and methods for accelerated loading of operating systems and application programs
US20130332811A1 (en) 2012-06-07 2013-12-12 Microsoft Corporation Progressive loading for web-based spreadsheet applications

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Kazuki Ohta 외 5명. Optimization Techniques at the I/O Forwarding Layer. 2010년

Also Published As

Publication number Publication date
US10025513B2 (en) 2018-07-17
EP3129872A4 (en) 2018-05-02
US20170177250A1 (en) 2017-06-22
US10275158B2 (en) 2019-04-30
US20150293701A1 (en) 2015-10-15
EP3129872A1 (en) 2017-02-15
KR20150117192A (ko) 2015-10-19
US20180253232A9 (en) 2018-09-06

Similar Documents

Publication Publication Date Title
KR102262102B1 (ko) 애플리케이션 실행 방법 및 장치
CN107870728B (zh) 用于移动数据的方法和设备
CN111078147B (zh) 一种缓存数据的处理方法、装置、设备及存储介质
US10432723B2 (en) Storage server and storage system
US9058217B2 (en) Preferential CPU utilization for tasks
US9684604B2 (en) Electronic device with cache memory and method of operating the same
KR20160031973A (ko) 데이터 아이템들을 캐시하기 위한 방법들, 장치들, 및 시스템들
US9170944B2 (en) Two handed insertion and deletion algorithm for circular buffer
US11360884B2 (en) Reserved memory in memory management system
CN107533508B (zh) 用于减少压缩存储器时的存储器承诺用量的方法和系统
US10795606B2 (en) Buffer-based update of state data
US10204598B2 (en) Predictive pre-decoding of encoded media item
US10613984B2 (en) Prefetch tag for eviction promotion
CN107408073B (zh) 使用存储器压缩来减少存储器提交开销
US9880849B2 (en) Allocation of load instruction(s) to a queue buffer in a processor system based on prediction of an instruction pipeline hazard
US9632947B2 (en) Systems and methods for acquiring data for loads at different access times from hierarchical sources using a load queue as a temporary storage buffer and completing the load early
US9063863B2 (en) Systems and methods for background destaging storage tracks
KR20190117294A (ko) 전자 장치 및 그의 제어방법
US8832379B2 (en) Efficient cache volume SIT scans
US9442863B1 (en) Cache entry management using read direction detection
CN113485642A (zh) 数据缓存方法及装置
CN115756961A (zh) 全量数据恢复方法、装置、电子设备及介质
JP2015111370A (ja) 情報処理装置、スワップ制御方法及びプログラム
KR20160015793A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN117271065A (zh) 用于云服务的数据刷新方法、装置、介质及电子设备

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant