KR102136906B1 - Bpram을 이용한 운영체제의 레이아웃 및 실행 - Google Patents

Bpram을 이용한 운영체제의 레이아웃 및 실행 Download PDF

Info

Publication number
KR102136906B1
KR102136906B1 KR1020157007400A KR20157007400A KR102136906B1 KR 102136906 B1 KR102136906 B1 KR 102136906B1 KR 1020157007400 A KR1020157007400 A KR 1020157007400A KR 20157007400 A KR20157007400 A KR 20157007400A KR 102136906 B1 KR102136906 B1 KR 102136906B1
Authority
KR
South Korea
Prior art keywords
operating system
bpram
layout
image
kernel
Prior art date
Application number
KR1020157007400A
Other languages
English (en)
Other versions
KR20150052107A (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 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20150052107A publication Critical patent/KR20150052107A/ko
Application granted granted Critical
Publication of KR102136906B1 publication Critical patent/KR102136906B1/ko

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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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/44557Code layout in executable memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

항구적 데이터 및 실행 코드를 바이트 어드레서블 영속적 랜덤 액세스 메모리(byte-addressable persistent random access memory, BPRAM)로 이동시킴으로써 컴퓨터 시스템 부팅 시간 및/또는 애플리케이션 초기화 시간을 가속화하는 소프트웨어 레이아웃 시스템이 개시된다. 이 시스템은 운영체제 또는 애플리케이션의 어떤 컴포넌트 및 양태가 빈번하지 않게 변화하는지를 결정한다. 이 정보로부터, 시스템은 커널을 비롯하여 빈번하게 사용되는 컴포넌트에 대한 고속 접근을 제공하도록 고성능 BPRAM 캐시를 구축한다. 그 결과 커널 또는 응용 코드 및 데이터 구조는 메모리 페치와 관련하여 고성능 접근 및 실행 시간을 갖는다. 따라서, 소프트웨어 레이아웃 시스템은 정상 동작을 위해 운영체제 및 애플리케이션을 준비하는 더 고속의 방법을 제공하고 초기화에 소비되는 시간을 단축한다.

Description

BPRAM을 이용한 운영체제의 레이아웃 및 실행{LAYOUT AND EXECUTION OF OPERATING SYSTEMS USING BPRAM}
컴퓨터 시스템은 턴온되었을 때 컴퓨터를 사용하도록 준비하고 하드웨어의 제어를 운영체제에게 인도하는 부팅 단계를 실행한다. 일반적으로, 하드웨어는 기본 입출력 시스템(Basic Input/Output System, BIOS) 및 확장형 펌웨어 인터페이스(Extended Firmware Interface, EFI)와 같은, 하드웨어를 초기화하는 일부 펌웨어를 포함한다. 이 펌웨어는 그 다음에 일반적으로 디스크 드라이브를 검사하여 마스터 부트 레코드(master boot record, MBR) 또는 실행할 다른 제1의 명령어 집합을 식별한다. 이 명령어들은 부트 로더를 인보크(invoke)하고, 부트 로더는 그 다음에 운영체제를 로드 및 초기화한다(또는 잠재적으로 컴퓨터 시스템을 부팅할 운영체제의 메뉴를 제공한다). 유사하게, 운영체제가 로딩되면 애플리케이션들이 또한 초기화 단계를 실행하고, 그 동안에 그 애플리케이션과 관련된 소프트웨어 및 데이터 모듈들이 로딩되고, 메모리 상태가 초기화(예를 들면, 리소스 또는 다른 데이터에 의해)되는 등의 작업이 실행된다.
상기 부팅 및 초기화 처리는 가끔 시간 소모적이다. 복잡한 하드웨어가 초기화하고 소정의 동작 상태에 도달하기까지 시간이 걸릴 뿐만 아니라 소프트웨어가 디스크로부터 로딩되고 각종 초기화 작업을 실행하는데 시간이 소요된다. 컴퓨터 시스템 사용자는 이러한 처리가 완료할 때까지 시스템 또는 애플리케이션을 사용할 수 없고 따라서 시간이 허비된다. 또한, 컴퓨터를 슬립 상태, 저전력 상태 또는 동면(hibernation) 상태로부터 깨우는 것과 같은 다른 기간 동안에, 시스템은 사용자의 컴퓨터 시스템 사용을 지연시키는 유사한 부팅형 처리를 수행할 수 있다. 모바일 장치, 게임 콘솔, 라우터, 및 소비자들이 이 장치들을 통합형 가전제품으로 본다 할지라도 내부적으로 컴퓨터 시스템으로서 구현되는 다른 장치들의 경우에, 부팅 시간은 장치의 가용성을 크게 손상시킬 수 있다.
표준형 운영체제에 있어서, 커널(kernel)과 같이 좀처럼 업데이트되지 않는 항구적 코드(constant code)는 사용자 응용 코드와 동일한 방법으로 레거시(legacy) 드라이브로부터 판독된다. 이것은 운영체제가 하드 드라이브 또는 다른 비교적 느린 리소스로부터 복잡한 로드 시퀀스를 통하여 자신을 동작 상태로 이끌기 때문에 최적의 부팅 시간 미만으로 되게 한다. 최신의 플래시 기반형 디스크 드라이브의 경우에도, 소프트웨어 코드를 로딩하고 초기 구성을 설정하기 위한 판독 및 기입의 수는 사용자에 대하여 현저한 양의 시간을 소비할 수 있다. 이것은 수십 개의 라이브러리를 액세스 및 로딩하는 것 및 후속적으로 상기 라이브러리에 의해 특정된 메모리 영역을 데이터로 초기화하는 것을 수반하는 애플리케이션의 경우에도 마찬가지이다. 이러한 데이터의 대부분은 운영체제 또는 애플리케이션이 로딩할 때마다 동일한 항구적 데이터이다. 과거의 기술은 여전히 현저한 지연을 수반하는 기존의 비 바이트 어드레서블(non-byte-addressable) 하드 드라이브에서 이 데이터를 재배열하는 방법에, 또는 사용자가 애플리케이션을 요청하기 전에 미리 정상적인 초기화 시퀀스를 수행하는 것에 초점이 맞추어져 있다(예를 들면, 마이크로소프트™ 윈도즈™ 프리페치(Prefetch) 및 슈퍼페치(Superfetch) 특징(features) 참조).
여기에서는 항구적 데이터 및 실행 코드를 비휘발성의 고성능 메모리(예를 들면, ReRAM 또는 PCM)로 이동하고 가변 데이터를 DRAM 등의 휘발성 스토리지에 남겨둠으로써 컴퓨터 시스템 부팅 시간 및/또는 애플리케이션 초기화 시간을 가속화하는 소프트웨어 레이아웃 시스템에 대하여 설명한다. 이 시스템은 운영체제 또는 애플리케이션의 어떤 컴포넌트 및 양태가 항구적이며 변화하지 않거나 최소한으로 변화하는지를 결정한다. 이 정보로부터, 시스템은 커널을 비롯하여 빈번하게 사용되는 컴포넌트에 대한 고속 접근을 제공하도록 고성능 메모리(ReRAM/PCM) 캐시를 구축한다. 그 결과 커널 또는 응용 코드 및 데이터 구조는 메모리 페치와 관련하여 고성능 접근 및 실행 시간을 갖는다. 시스템은 애플리케이션에 대해서도 유사한 처리를 수행할 수 있다. 소프트웨어 애플리케이션은 공통의 스타트업(startup) 시퀀스를 또한 실행함으로써 여기에서 설명하는 기술을 이용하여 예측될 수 있고 가속화될 수 있는 처리 데이터 구조, 스레드, 리소스 등을 초기화한다. 고성능 캐시가 직접 바이트 어드레서블인 경우와 같은 일부 경우에, 시스템은 캐시로부터 직접 부팅 또는 실행할 수도 있다. 따라서, 소프트웨어 레이아웃 시스템은 정상 동작을 위해 운영체제 및 애플리케이션을 준비하는 더 고속의 방법을 제공하고 초기화에 소비되는 시간을 단축한다.
이 요약은 뒤의 상세한 설명 부분에서 더 구체적으로 설명하는 개념들의 선택을 간단한 형태로 소개하기 위해 제공된다. 이 요약은 청구된 주제의 핵심적인 특징 또는 본질적인 특징을 식별하기 위한 것으로 의도되지 않고, 또한 청구된 주제의 범위를 제한하는 용도로 의도되지 않는다.
도 1은 일 실시형태에 따른 소프트웨어 레이아웃 시스템의 컴포넌트들을 예시하는 블록도이다.
도 2는 일 실시형태에 따른, BPRAM에서의 사전-레이아웃을 위한 코드 및 데이터를 식별하기 위해 운영체제 커널을 검사하기 위한 소프트웨어 레이아웃 시스템의 처리를 설명하는 흐름도이다.
도 3은 일 실시형태에 따른, BPRAM으로부터 운영체제 커널을 초기화하는 소프트웨어 레이아웃 시스템의 처리를 설명하는 흐름도이다.
도 4는 일 실시형태에 따른, BPRAM에서의 사전-레이아웃을 위한 코드 및 데이터를 식별하기 위해 애플리케이션을 검사하는 소프트웨어 레이아웃 시스템의 처리를 설명하는 흐름도이다.
도 5는 일 실시형태에 따른, BPRAM으로부터 애플리케이션을 초기화하는 소프트웨어 레이아웃 시스템의 처리를 설명하는 흐름도이다.
도 6은 일 실시형태에 따른, 소프트웨어 레이아웃 시스템에서 사용되는 각종 유형의 스토리지 및 데이터의 관계를 설명하는 블록도이다.
여기에서는 항구적 데이터 및 실행 코드를 비휘발성의 고성능 메모리(예를 들면, ReRAM 또는 PCM)로 이동하고 가변 데이터를 DRAM 등의 휘발성 스토리지에 남겨둠으로써 컴퓨터 시스템 부팅 시간 및/또는 애플리케이션 초기화 시간을 가속화하는 소프트웨어 레이아웃 시스템에 대하여 설명한다. 이 시스템은 운영체제 또는 애플리케이션의 어떤 컴포넌트 및 양태가 항구적이고 변화하지 않거나 최소의 변화를 받는지를 결정한다. 이 정보로부터, 시스템은 커널을 비롯하여 빈번하게 사용되는 컴포넌트에 대한 고속 접근을 제공하도록 고성능 메모리(ReRAM/PCM) 캐시를 구축한다. 예를 들면, 시스템은 커널 데이터 구조 및 코드를 비휘발성의 고성능 ReRAM에 유지하고 동적/가변 데이터를 휘발성 DRAM 메모리에 남겨둘 수 있다. 그 결과 커널 또는 응용 코드 및 데이터 구조는 메모리 페치와 관련하여 고성능 접근 및 실행 시간을 갖는다.
시스템은 애플리케이션과 관련하여 유사한 처리를 수행할 수 있다. 소프트웨어 애플리케이션은 공통의 스타트업 시퀀스를 또한 실행함으로써 여기에서 설명하는 기술을 이용하여 예측될 수 있고 가속화될 수 있는 처리 데이터 구조, 스레드, 리소스 등을 초기화한다. 예를 들면, 시스템은 좀처럼 변경되지 않는 데이터를 참조하는 애플리케이션의 스타트업 시퀀스의 일부를 식별하고, 그 데이터를 애플리케이션이 스타트업할 때마다 접근될 수 있는 비휘발성 고성능 메모리 캐시에 캐시할 수 있다. 일부 실시형태에 있어서, 시스템은 또한 커널 또는 프로세스를 활성으로 만들기 위해 메모리에 고속 전송하는 방식으로 데이터를 레이아웃한다. 예를 들면, 시스템은 동작 중에 메모리에서의 운영체제 또는 애플리케이션의 최종 레이아웃을 결정하고, 그 레이아웃의 이미지를 고성능 캐시에 저장하며, 그 다음에 운영체제 또는 애플리케이션이 시작하도록 선택된 다음에, 시스템은 직접 메모리 접근(direct memory access, DMA) 또는 다른 고성능 복사 기술을 이용하여 사전-레이아웃 부팅/초기화 이미지를 실행을 위해 메모리로 이전할 수 있다. 고성능 캐시가 직접 바이트 어드레서블인 경우와 같은 일부 경우에, 시스템은 캐시로부터 직접 부팅 또는 실행할 수도 있다. 따라서, 소프트웨어 레이아웃 시스템은 정상 동작을 위해 운영체제 및 애플리케이션을 준비하는 더 고속의 방법을 제공하고 초기화에 소비되는 시간을 단축한다.
여기에서 설명하는 바와 같이, 소프트웨어 레이아웃 시스템은 2개의 개념적 단계, 즉 레이아웃(layout)과 스타트업(startup) 단계로 동작한다. 레이아웃 단계 중에, 시스템은 하나 이상의 운영체제 또는 애플리케이션을 분석하여 운영체제 또는 애플리케이션이 어떻게 자신을 초기화하는지를 결정한다. 시스템은 업계에 공지된 각종의 정적 및 동적 분석 기술을 이용하여 이진 실행 파일, 인 메모리 데이터, 라이브 실행 또는 스타트업 중에 운영체제 또는 애플리케이션에 의해 사용되는 명령어 및 데이터를 식별하는 다른 정보를 분석할 수 있다. 예를 들면, 마이크로소프트™ 윈도즈™ 운영 체제에 의해 사용되는 이식가능한 실행가능 포맷(portable 실행가능 포맷, PE)은 판독 전용 또는 판독/기입으로서 표시될 수 있는 데이터 섹션을 포함하고, 소프트웨어 레이아웃 시스템은 이 정보를 이용하여 판독 전용 섹션을 ReRAM 또는 다른 캐시에 배치할 수 있다. 시스템은 또한 어떤 명령어 또는 데이터가 좀처럼 변경되지 않는지에 대한 픽처(picture)를 구축하기 위해 이력적 변경 정보를 추적할 수 있다. 이 좀처럼 변경되지 않는 데이터는 그 다음에 ReRAM과 같은 고속 스토리지로부터 로딩하도록 목표 정해진다. 시스템은 분석 결과를 서술하고 고속 메모리를 이용한 저장을 위해 소프트웨어 명령어 및/또는 데이터를 제공하는 레이아웃 이미지 또는 다른 데이터 구조를 생성한다.
스타트업 단계 중에, 시스템은 이전에 수행된 레이아웃 작업을 레버리지하여 운영체제 또는 애플리케이션의 스타트업을 더 고속으로 만든다. 이것은 ReRAM 캐시로부터 초기화 이미지에 직접 접근하도록 BIOS 또는 다른 스타트업 명령을 지시하는 것을 포함할 수 있고, 또는 전통적 실행을 위해 캐시로부터의 실행 준비 이미지(ready-to-execute image)를 휘발성 메모리에 복사하기 위해 DMA 또는 다른 고속 전송 방법을 이용하는 명령을 포함할 수 있다. 이러한 전송은 수십 개의 이미지를 조금씩 로딩하는 것보다 더 고속이기 때문에, 초기화 처리가 실질적으로 가속화되고 애플리케이션이 사용자에 의해 사용할 준비가 될 때까지의 시간을 감소시킨다.
모든 최신 운영체제에 있어서, 데이터는 가변성 또는 불변성이다. 애플리케이션의 히프(heap) 내에 포함된 것과 같은 데이터는 애플리케이션 실행 중에 변하기 때문에 가끔 가변성이다. 실행 이미지(소프트웨어 코드) 및 글로벌 상수는 불변성 데이터의 예이다. 현재, 가변성 및 불변성 데이터는 둘 다 플래시 또는 하드 드라이브와 같은 지속성 스토리지에 저장되고 있고, 실행 중에 운영체제가 애플리케이션에 접근할 수 있게 하기 위해 DRAM에 캐시된다. 하드 드라이브 및 플래시 메모리는 일반적으로 바이트 어드레서블이 아니고, 그래서 실행은 전형적으로 그러한 장치로부터 직접 발생할 수 없다. 이 때문에 데이터가 바이트 어드레서블인 DRAM에 먼저 복사되고, 소프트웨어 코드를 실행함으로써 그 데이터가 실행 및 액세스될 수 있다.
일반적으로, 현재의 메모리 계층은 저속의 영속적인 대량 접근 기술과 고속의 바이트 어드레서블의 비영속적 기술 간에 차이가 있다. 위상 변화 메모리, ReRAM 또는 멤리스터(memristor)와 같은 바이트 어드레서블 영속적 메모리 기술은 바이트 어드레서블이면서 영속적인 스토리지를 제공함으로써 DRAM과 영속 스토리지 간의 갭을 메우는 메모리를 제공한다. 우리는 이 기술을 여기에서 BPRAM(byte-addressable, persistent random access memory)이라고 부른다. 이러한 상이한 메모리 기술은 모두 상이한 성능 및 내구성(마모) 보증을 갖지만, 이들은 현대의 컴퓨터에서 사용될 수 있는 새로운 유형의 메모리를 도입한다. 불변성 오브젝트를 저장하기 위해 BPRAM을 사용하면 성능을 개선하고 DRAM을 자유롭게(free up) 하며 절전이 가능하고, 소프트웨어 레이아웃 시스템은 이러한 장점들을 도출하기 위해 BPRAM에 이주될 수 있는 애플리케이션 또는 운영체제 내의 데이터 구조를 식별한다.
이러한 BPRAM의 사용에 의해 도입되는 하나의 새로운 고려사항은 마모(wear)이다. 마모되기 전에 BPRAM 장치에 기입하는 수는 가끔 DRAM 또는 하드 디스크보다 훨씬 적기 때문에, 기술 마모에 기인하여 데이터가 손실되지 않도록 보장하기 위해 가끔 주의가 필요하다. 그러므로, BPRAM의 가장 간단한 사용은 먼저 BPRAM을 DRAM과 나란히 메모리 버스에서 이용가능하게 하는 것이다. 다음에, 실행가능한 애플리케이션만을 이용가능한 영속적 메모리에 저장하는 것을 생각할 수 있다. 저속의 대용량 스토리지로부터 애플리케이션 바이너리를 페치하여 그 바이너리를 휘발성 메모리에 캐시하는 대신에, 실행 파일(executables)이 단순히 BPRAM에 저장되고 BPRAM으로부터 직접 실행될 수 있다. 실행 파일이 애플리케이션 데이터보다 훨씬 덜 빈번하게 업데이트되기 때문에, BPRAM은 긴 수명시간을 갖는다고 확신할 수 있다. BPRAM이 가끔 DRAM보다 더 느리기 때문에 실행이 저속으로 된다는 것이 걱정이지만, CPU 프리페치 및 캐시는 많은 차이를 숨길 수 있고, BPRAM은 하드 드라이브보다 훨씬 더 고속으로 될 수 있다. BPRAM에 캐시된 실행 파일은 애플리케이션, 라이브러리, 동적으로 링크되는 라이브러리(dynamically linked library, DLL), 또는 운영체제를 구성하는 컴포넌트들을 포함한 임의 유형의 바이너리를 포함할 수 있다.
실행 파일을 단순히 캐시하는 것 외에, 컴퓨팅 환경의 다른 부분들이 또한 BPRAM에 캐시될 수 있다. 예를 들면, 코드가 컴파일될 때, '항구적' 또는 '판독 전용'(실행가능 포맷으로 표시되거나 다른 방법으로 결정됨)으로서 규정된 데이터는 DRAM에 저장되기보다는 BPRAM에 저장될 수 있다. 연산을 위해 다량의 정적 데이터를 이용하는 애플리케이션은 DRAM을 자유롭게 하고(free up), 대신 그 데이터 구조를 BPRAM에 저장할 수 있다.
마지막으로, 데이터 구조를 그 접근 패턴에 따라서 BPRAM 내로 및 밖으로 이주시키도록 런타임을 설계할 수 있다. 예를 들면, 해시 테이블이 진정으로 상태 머신(state machine)으로서 표시될 수 있고, 여기에서 해시 테이블은 빈번하게 업데이트되고, 그 다음에 판독기에 의해 배타적으로 접근되며 다시 업데이트된다. 이러한 유형의 접근 패턴은 데이터 구조가 판독기에 의해 액세스되는 동안 BPRAM에 저장되어 있을 수 있다는 것을 의미한다. 그러나, 애플리케이션이 데이터 구조에 기입함으로써 데이터 구조를 업데이트하려고 할 때, 데이터 구조는 다시 휘발성(DRAM) 메모리로 이동될 것이다.
애플리케이션은 몇 가지 다른 방법으로 상기 이용가능성으로부터 이익을 갖는다. 먼저, 애플리케이션은 프로세스를 빠져나갈 때 애플리케이션이 디스크에 대하여 데이터 구조를 직렬화할 필요성을 제거한다. 물론, 이것은 애플리케이션이 데이터 구조의 일관성에 대하여 추론할 수 있는 경우에만 유용하다. 애플리케이션이 갑자기 작동이 안 될(crash) 때, 데이터 구조는 더 이상 유용하지 않고 다른 위치에 저장되어 있는 카피(또는 스냅샷)으로부터 재생되어야 한다. 둘째로, 애플리케이션 성능은 애플리케이션이 그 데이터 구조의 영속 버전에 대한 즉각적인 접근을 갖는 경우에 개선될 수 있다. 마지막으로, DRAM보다 더 낮은 에너지 풋프린트를 갖는 BPRAM의 경우에, 그 데이터의 일부를 BPRAM에 저장함으로써 계산기의 전체 에너지 풋프린트를 낮추기 위해 DRAM의 의미있는 부분이 BPRAM으로 교체될 수 있다.
표준형 운영체제에 있어서, 커널과 같이 좀처럼 업데이트되지 않는 항구적 코드는 사용자 응용 코드와 동일한 방법으로 레거시 드라이브로부터 판독된다. 소프트웨어 레이아웃 시스템은 운영체제의 어떤 컴포넌트가 항구적이고 변경되지 않거나 최소로 변경되는지를 결정하고, 커널을 비롯한 이러한 빈번하게 사용되는 컴포넌트에 대한 고속 접근을 제공하기 위해 고성능 ReRAM/PCM 캐시를 구축한다. 따라서, 시스템은 커널 데이터 구조 및 코드를 비휘발성 고성능 ReRAM에 유지하고, 가변 데이터를 휘발성 DRAM 또는 다른 시스템에 남겨둔다.
사용자 공간 애플리케이션은 운영체제가 초기화되고 안정화된 후에 전통적인 방식으로 새롭게 로딩된다. 그러나, 애플리케이션을 나중에 또는 다른 운영체제에서 로딩하는 것은 애플리케이션이 라이브러리로부터 조금씩 로딩되는 것을 요구하고, 이때 메모리에 로딩된 사용자 데이터는 완전한 라이브 이미지를 형성한다. 소프트웨어 레이아웃 시스템은 애플리케이션 및 그들의 메모리를 ReRAM/PCM에게 신속히 지속시켜서 나중에 동일한 시스템 또는 다른 시스템에서의 고속 전송 및 고속 재구성을 가능하게 한다. 이러한 중지 및 재개는 운영체제 로드 시퀀스를 이용한 애플리케이션 이미지 형성의 비용 및 부담을 제거하고 사용자 데이터를 라이브 상태로 지속한다. 시스템의 이러한 요소 및 다른 요소들은 뒤에서 더 자세히 설명된다.
도 1은 일 실시형태에 따른 소프트웨어 레이아웃 시스템의 각종 컴포넌트를 예시한 블록도이다. 시스템(100)은 커널 레이아웃 컴포넌트(110), 애플리케이션 레이아웃 컴포넌트(120), 정적 분석 컴포넌트(130), 동적 분석 컴포넌트(140), 레이아웃 생성 컴포넌트(150), 마모 감시 컴포넌트(160), 커널 초기화 컴포넌트(170), 및 애플리케이션 초기화 컴포넌트(180)를 포함한다. 상기 각각의 컴포넌트에 대하여 이하에서 구체적으로 설명한다.
커널 레이아웃 컴포넌트(110)는 부팅을 위해 운영체제 커널이 사용하는 데이터 및 소프트웨어 명령어를 결정하고, 커널이 BPRAM으로부터 부팅하게 하는 바이트 어드레블 영속 랜덤 액세스 메모리(BPRAM)에 대한 커널 데이터 및 소프트웨어 명령어의 레이아웃을 결정한다. 커널은 만족스러운 성능을 위해 충분한 고속의 바이트 어드레서블 메모리인 경우에 BPRAM으로부터 직접, 또는 BPRAM에 저장된 레이아웃을 다른 메모리(예를 들면, DRAM)에 먼저 복사함으로써 BPRAM으로부터 간접적으로 부팅할 수 있다. 일부 운영체제는 코드가 어디로부터 실행되는지에 대한 결정에 영향을 주는 보안 부팅 처리와 같은 추가의 필요조건을 가질 수 있다. 커널 레이아웃 컴포넌트(110)는 커널에 대한 레이아웃 이미지를 결정하고 결정된 이미지를 BPRAM에 복사하기 위해 정적 분석 컴포넌트(130), 동적 분석 컴포넌트(140) 및 레이아웃 생성 컴포넌트(150)를 인보크한다. 커널 레이아웃 컴포넌트(110)는 또한 컴퓨터 시스템이 BPRAM에 복사된 이미지로부터 부팅하도록 부팅 데이터 구조 또는 다른 정보를 변경할 수 있다. 커널 레이아웃 컴포넌트(110)는 또한 재시작, 동면, 슬립으로부터의 재개 등과 같이, 커널의 다른 유형의 초기화를 위한 레이아웃을 결정할 수 있다.
애플리케이션 레이아웃 컴포넌트(120)는 애플리케이션을 초기화하기 위해 애플리케이션에 의해 사용되는 데이터 및 소프트웨어 명령어들을 결정하고, 애플리케이션이 BPRAM으로부터 초기화되게 하는 BPRAM에 대한 애플리케이션 데이터 및 소프트웨어 명령어의 레이아웃을 결정한다. 커널과 마찬가지로, 애플리케이션은 BPRAM으로부터 직접 실행할 수 있고, 또는 운영체제가 BPRAM에 저장된 애플리케이션 레이아웃을 다른 메모리 장치에 먼저 복사하고 상기 다른 메모리 장치로부터 애플리케이션을 실행할 수 있다. 레이아웃은 또한 가끔 오늘날의 모바일 장치에서 비 바이트 어드레서블 플래시 메모리를 이용하여 행하여지는 것처럼, 애플리케이션 상태를 동면시키고 애플리케이션 상태를 신속히 복원시키기 위해 사용될 수 있다. 애플리케이션은 변화하는 데이터와 비교적 변화하지 않는 데이터의 조합과 함께 동작할 수 있고, 애플리케이션 레이아웃 컴포넌트(120)는 비교적 변화하지 않는 데이터를 BPRAM에 배치하고 변화하는 데이터를 DRAM과 같은 휘발성 메모리에 배치하도록 결정할 수 있다. 애플리케이션 바이너리, 항구적, 및 다른 유형의 데이터와 같은 데이터 아이템은 애플리케이션이 실행할 때마다 동일할 수 있고, 또는 연간 수 회 이하로 갱신되는 애플리케이션 바이너리와 같이 드물게만 변화될 수 있다. 상기 정보를 직접 실행가능한 레이아웃으로 BPRAM에 유지함으로써, 애플리케이션은 오늘날 전형적으로 따르는 로딩 프로세스보다 훨씬 더 고속으로 실행 상태로 될 수 있고, 그동안에 명령 및 데이터를 가진 수십 개의 바이너리가 하나의 스토리지 위치(예를 들면, 하드 드라이브)로부터 별도로 로딩되고 애플리케이션이 실행할 준비가 되기 전에 메모리에 맵핑될 수 있다.
애플리케이션 레이아웃 컴포넌트(120)는 애플리케이션에 대한 레이아웃 이미지를 결정하고 결정된 이미지를 BPRAM에 복사하기 위해 정적 분석 컴포넌트(130), 동적 분석 컴포넌트(140) 및 레이아웃 생성 컴포넌트(150)를 인보크한다. 애플리케이션 레이아웃 컴포넌트(120)는 또한 운영체제가 BPRAM에 복사된 이미지로 애플리케이션을 실행시키게 하는 요청을 다시 전송하도록 운영체제 데이터 구조 또는 다른 정보를 변경할 수 있다. 커널 레이아웃 컴포넌트(110) 및 애플리케이션 레이아웃 컴포넌트(120)에 의해 생성된 이미지는 다른 컴퓨터 시스템 및/또는 운영체제에 이식가능하고, 그래서 이미지는 이미지가 본질적으로 실행되는 컴퓨터 시스템이 아닌 다른 컴퓨터 시스템에서 생성될 수 있으며, 그 다음에 이미지가 실행되는 하나 이상의 컴퓨터 시스템에 복사될 수 있다. 이것에 의해, 가상화 환경, 애플리케이션 호스트, 모바일 장치 제조업자 등이 여기에서 설명하는 장점들을 실현하도록 임의의 특정 장치의 BPRAM에 복사될 수 있는 고속 로딩 애플리케이션 및 운영체제 이미지를 생성할 수 있다.
정적 분석 컴포넌트(130)는 소프트웨어 바이너리, 데이터 모듈 또는 다른 저장된 소프트웨어 데이터를 정적으로 분석하여 소프트웨어가 명령어 및 데이터에 접근하는 법을 결정한다. 정적 분석 컴포넌트(130)는 이진 코드(예를 들면, 어셈블리), 중간 코드(예를 들면, 마이크로소프트™ 중간 언어(intermediate language, IL) 코드), 또는 애플리케이션 또는 운영체제의 다른 컴파일된 또는 실행가능한 버전을 분석할 수 있다. 정적 분석은 실질적으로 최근 수년 동안에 걸쳐 진보되어 왔다. 시스템(100)은 애플리케이션이 코드, 데이터 및 다른 리소스를 저장하고 있는 영역을 구체적으로 집중하기 위해 정적 분석 기술을 이용한다. 정적 분석 컴포넌트(130)는 정보를 수신하도록 애플리케이션 바이너리를 설치(instrument)하거나 애플리케이션의 특정 동작을 차단할 수 있고, 상기 차단된 동작을 새로운 동작 또는 추가 동작으로 교체할 수 있다. 예를 들어서, 만일 정적 분석 컴포넌트(130)가 외부 모듈에 대한 호출을 발견하면, 정적 분석 컴포넌트(130)는 상기 호출을 BPRAM에서 외부 모듈의 이미지에 접근하는 것으로 교체할 수 있다. 이 방법으로, 시스템(100)은 애플리케이션의 동작을 발견하고 애플리케이션 및 운영체제 초기화를 가속화하기 위해 BPRAM을 사용할 수 있도록 그 행동을 수정할 수 있다. 정적 분석 컴포넌트(130)는 또한 특정 코드 및/또는 데이터가 분석 대상의 소프트웨어에 의해 어떻게 사용되는지를 서술하는 소프트웨어 데이터의 이식가능한 실행가능(portable executable, PE) 헤더 또는 다른 정보와 같은 메타데이터에 접근할 수 있다. 예를 들면, PE 포맷은 특정 섹션이 실행 코드, 판독 전용 데이터, 판독/기입 데이터, 리소스(예를 들면, 버튼, 아이콘, 대화 상자 등) 등으로서 표시될 수 있게 한다.
동적 분석 컴포넌트(140)는 정적 분석으로 결정하기 어려운 애플리케이션의 행동에 관한 추가 정보를 수집하기 위해 실행 애플리케이션을 동적으로 분석한다. 가끔 애플리케이션은 정적 분석을 좌절시키는 프로그래밍 단계를 포함한다(의도적으로 또는 단순히 단계들이 편집 후에 그 방법을 만들어내기 때문에). 동적 분석은 단지 추측치 또는 근사치만을 정적 분석 중에 이용할 수 있는, 외부 컴포넌트로부터 수신된 응답의 콘텐츠, 애플리케이션에 의해 사용되는 메모리의 실제 콘텐츠, 및 사용자 구성 정보와 같은, 이용가능한 정보를 갖는다. 일부 경우에, 시스템은 성능 오버헤드 또는 다른 공지된 리소스 제한에 기초하여 정적 분석을 수행할 것인지, 동적 분석을 수행할 것인지 또는 둘 다를 수행할 것인지를 결정한다. 동적 분석은 정적 분석 중에 발견되지 않은 애플리케이션 행동을 잠재적으로 발견할 수 있다. 동적 분석 컴포넌트(140)는 또한 정적 분석의 결과를 확인하기 위해 동적 분석을 이용할 수 있다. 동적 분석 컴포넌트(140)는 BPRAM에서의 레이아웃에 적합한 특수한 응용 코드 및 데이터를 식별하기 위해 레이아웃 생성 컴포넌트(150)에 상기 결정된 정보를 제공한다. 예를 들면, 동적 레이아웃 컴포넌트(150)는 비록 판독/기입으로서 표시되어 있다 하더라도 특정 데이터가 애플리케이션에 의해 실제로 변화되지 않는지 결정할 수 있다. 반대로, 동적 분석은 빈번하게 변화되는 애플리케이션 데이터의 부분들을 또한 식별할 수 있다. 애플리케이션은 응용 코드가 판독 전용인지 및 그래서 BPRAM에의 저장에 적합한 것인지를 표시하는 자기 수정 코드(self-modifying code)와 같은 행동을 또한 포함할 수 있다.
레이아웃 생성 컴포넌트(150)는 커널 레이아웃 컴포넌트 또는 애플리케이션 레이아웃 컴포넌트에 의해 결정된 레이아웃에 기초하여 운영체제 또는 애플리케이션을 초기화하기 위한 BPRAM의 이미지를 생성하고 생성된 이미지를 BPRAM에 저장한다. 레이아웃 생성 컴포넌트(150)는 하나 이상의 저장된 모듈, 데이터 저장부 등으로부터 데이터, 이진 코드, 및 다른 소프트웨어 정보에 접근하여, 운영체제 또는 애플리케이션을 실행하는데 사용되는 애플리케이션 또는 운영체제의 인 메모리 데이터의 적어도 일부를 표시하는 이미지를 생성할 수 있다. 레이아웃 생성 컴포넌트(150)는 오늘날의 로더, 히프 및 다른 소프트웨어 컴포넌트에 의해 수행되는 많은 단계들을 운영체제 또는 애플리케이션을 실행하기 전에 수행한다. 예를 들면, 로더는 전형적으로 애플리케이션이 로딩할 때마다 하드 드라이브에 저장된 바이너리 모듈을 검색하고 그 모듈의 콘텐츠를 바이트 어드레서블 메모리 히프에 배치하는 책임이 있음에 반하여, 레이아웃 생성 컴포넌트(150)는 유사한 단계를 1회 수행하고 결과적인 메모리 이미지를 BPRAM에 배치하며, 이때 BPRAM은 저속 스토리지로부터 모듈들을 매번 로딩하지 않고 애플리케이션이 요청될 때마다 준비할 수 있다. 이것은 애플리케이션 로딩 시간을 크게 가속시킨다.
마모 감시 컴포넌트(160)는 BPRAM에 대한 마모 사양을 초과하여 다수 회 BPRAM에 기입하는 것을 회피하기 위해 BPRAM의 사용 정보를 선택적으로 모니터링한다. BPRAM은 가끔 제한된 수의 기입이 가능하고, BPRAM이 균일하게 사용되는 것을 보장하기 위해 마모 레벨링(wear leveling) 및 유사한 기술을 수행하는데 도움이 된다(예를 들면, 다른 섹션들이 사용되지 않는 동안 매번 하나의 섹션이 사용되지 않는다). 또한, 컴포넌트(160)는 정적 및/또는 동적 분석을 통하여 결정된 데이터의 기입 빈도에 기초하여 어떤 장치에 어떤 데이터를 저장할 것인가의 사이에서 트레이드오프를 행할 수 있다. 만일 특수한 BPRAM 장치가 적당히 긴 수명시간(예를 들면, 장치가 특정 컴퓨터 시스템에서 사용될 수 있는 5-10년) 동안 특정 데이터의 기입 부하를 취급할 수 있으면, 시스템(100)은 데이터를 그 위치에 저장할 수 있다. 더 긴 수명시간(예를 들면, 더 많은 기입 사이클)을 가진 BPRAM 장치의 경우에, 시스템(100)은 비록 데이터가 판독만을 완성하지 않았다 하더라도 BPRAM 내의 어떤 가끔 기입된 데이터를 포함하는 것으로 선택할 수 있다. 예를 들면, 애플리케이션 구성 파라미터는 BPRAM이 적당히 되도록 충분히 드물게 변할 수 있다. BPRAM이 더 긴 수명을 갖는 시간에 걸쳐서 개발될 때, 시스템은 더 많은 데이터용으로 BPRAM을 사용하도록 적응시킬 수 있다.
커널 초기화 컴포넌트(170)는 레이아웃 생성 컴포넌트에 의해 생성된 BPRAM의 이미지를 이용하여 운영체제를 초기화한다. 하드 드라이브 또는 반도체 디스크를 회전시키는 것과 같이 섹터 기반형 영구 스토리지로부터 운영체제 바이너리 및 데이터를 로딩함으로써 종래의 방식으로 운영체제를 부팅하는 대신에, 컴포넌트(170)는 BPRAM 이미지로부터 직접, 또는 BPRAM 이미지를 DRAM 또는 다른 메모리에 신속히 복사함으로써 운영체제를 실행한다. 레이아웃 생성 컴포넌트(150)에 의해 생성된 레이아웃이 코드 및 데이터가 어디에 최초로 저장되었는가 보다는 코드 및 데이터가 실행 중에 어떻게 사용되는가에 기초를 두기 때문에, 저장된 이미지로부터 운영체제를 초기화하는 것은 훨씬 더 고속으로 된다. 더 느린 스토리지에 대한 잠재적으로 수십 개의 호출 대신에, 커널 초기화 컴포넌트(170)는 BPRAM으로부터 운영체제를 직접 실행하기 위해 바이트 주소지정 가능도(byte addressability)를 이용할 수 있고, 또는 BPRAM 이미지를 DRAM 또는 다른 메모리에 신속히 복사하기 위해 고속 직접 메모리 액세스(DMA) 전송을 이용할 수 있다.
애플리케이션 초기화 컴포넌트(180)는 레이아웃 생성 컴포넌트에 의해 생성된 BPRAM의 이미지를 이용하여 애플리케이션을 초기화한다. 하드 드라이브 또는 반도체 디스크를 회전시키는 것과 같이 섹터 기반형 영구 스토리지로부터 애플리케이션 바이너리 및 데이터를 로딩함으로써 종래의 방식으로 애플리케이션을 초기화하는 대신에, 컴포넌트(180)는 BPRAM 이미지로부터 직접, 또는 BPRAM 이미지를 DRAM 또는 다른 메모리에 신속히 복사함으로써 애플리케이션을 로딩한다. 레이아웃 생성 컴포넌트(150)에 의해 생성된 레이아웃이 코드 및 데이터가 어디에 최초로 저장되었는가 보다는 코드 및 데이터가 실행 중에 어떻게 사용되는가에 기초를 두기 때문에, 저장된 이미지로부터 애플리케이션을 초기화하는 것은 훨씬 더 고속으로 된다. 더 느린 스토리지에 대한 잠재적으로 수십 개의 호출 대신에, 애플리케이션 초기화 컴포넌트(180)는 BPRAM으로부터 애플리케이션을 직접 실행하기 위해 바이트 주소지정 가능도를 이용할 수 있고, 또는 BPRAM 이미지를 DRAM 또는 다른 메모리에 신속히 복사하기 위해 고속 직접 메모리 액세스(DMA) 전송을 이용할 수 있다.
소프트웨어 레이아웃 시스템이 구현되는 컴퓨팅 장치는 중앙 처리 장치, 메모리, 입력 장치(예를 들면, 키보드 및 포인팅 장치), 출력 장치(예를 들면, 디스플레이 장치), 및 스토리지 장치(예를 들면, 디스크 드라이브 또는 다른 비휘발성 기억 매체)를 포함할 수 있다. 메모리 및 스토리지 장치는 시스템을 구현 또는 인에이블시키는 컴퓨터 실행가능 명령어(예를 들면, 소프트웨어)가 인코드될 수 있는 컴퓨터 판독가능 기억 매체이다. 또한, 데이터 구조 및 메시지 구조가 컴퓨터 판독가능 기억 매체에 저장될 수 있다. 여기에서 청구되는 임의의 컴퓨터 판독가능 매체는 법적으로 특허가능한 카테고리 내에 있는 매체들만을 포함한다. 시스템은 또한 데이터를 전송할 수 있는 하나 이상의 통신 링크를 포함할 수 있다. 인터넷, 근거리 통신망, 광역 통신망, 점대점 다이얼업 접속, 셀 폰 네트워크 등과 같은 각종 통신 링크가 사용될 수 있다.
시스템의 실시형태들은 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 프로그램가능한 가전제품, 디지털 카메라, 네트워크 PC, 미니 컴퓨터, 메인프레임 컴퓨터, 임의의 상기 시스템 및 장치를 포함한 분산형 컴퓨팅 환경, 셋톱박스, 시스템 온 칩(SOC) 등을 포함하는 각종 운영 환경에서 구현될 수 있다. 컴퓨터 시스템은 셀 폰, 개인용 디지털 단말, 스마트폰, 퍼스널 컴퓨터, 프로그램가능 가전제품, 디지털 카메라 등일 수 있다.
시스템은 하나 이상의 컴퓨터 또는 다른 장치에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어의 일반적인 개념과 관련하여 설명될 수 있다. 일반적으로, 프로그램 모듈은 특정의 태스크를 수행하거나 특정의 추상적 데이터 유형을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 전형적으로, 프로그램 모듈의 기능은 각종 실시형태에서 설명하는 것처럼 결합되거나 분산될 수 있다.
도 2는 일 실시형태에 따른, BPRAM에서의 사전-레이아웃을 위한 코드 및 데이터를 식별하기 위해 운영체제 커널을 검사하는 소프트웨어 레이아웃 시스템의 처리를 설명하는 흐름도이다. 도 2 및 도 3은 운영체제 커널에 적용될 때 시스템의 2개의 상이한 동작 단계를 예시한다. 도 2는 고속 부팅 레이아웃을 결정하고 그 레이아웃을 BPRAM에 복사하는 단계를 설명하는 것이고, 도 3은 도 2의 단계에 의해 미리 생성된 BPRAM 이미지로부터 커널을 부팅하는 단계를 설명하는 것이다.
블록 210에서 시작하여, 시스템은 고속 레이아웃을 수행하여 커널의 고속 부팅 이미지를 생성하는 타겟 운영체제 커널을 식별한다. 상기 커널은 고속 부팅 이미지와 레이아웃이 상이한 하나 이상의 모듈을 포함한 저장된 포맷을 갖는다. 시스템은 정보 기술(IT) 기술자에 의해 실행될 수 있는 관리 도구를 제공할 수 있고, 또는 커널을 식별하고 BPRAM에의 저장을 위한 고속 부팅 이미지 레이아웃을 생성하는 처리를 시작하기 위해 운영체제의 일부로서 자동으로 실행할 수 있다. 커널을 식별하는 것은 기존 데이터 스토리지 장치의 부트 레코드 또는 다른 데이터 구조를 검사하는 것, 컴퓨터 시스템의 부트 업을 모니터링하는 것, 또는 타겟 커널을 표시하는 모듈 경로를 수신하는 것을 포함할 수 있다.
블록 220으로 진행해서, 시스템은 식별된 타겟 운영체제 커널에 대하여 정적 분석을 수행하여 커널과 관련된 하나 이상의 정적 및 동적으로 링크된 모듈을 결정하고 바이트 어드레서블 영속 랜덤 액세스 메모리(BPRAM)에 저장하기 위한 충분히 불변인 커널에 의해 사용되는 데이터를 식별한다. 정적 분석을 수행하기 위한 각종 기술이 공지되어 있지만, 프로세스는 일반적으로 커널과 관련된 메인 모듈을 로딩하고, 실행가능 포맷을 검사하여 모듈의 각 섹션(섹션들은 리소스, 항구적 데이터, 다른 모듈들을 참조하는 링크된 모듈 섹션, 및 실행 코드를 포함한 하나 이상의 코드 섹션을 포함할 수 있음)들을 식별하며, 아마도 임의의 식별된 머신 코드 또는 다른 분석 기술을 분해(disassembly)함으로써 시작한다. 일부 실시형태에 있어서, 시스템은 또한 동적으로 링크된 라이브러리, 하드웨어용의 드라이버, 또는 커널에 의해 사용되는 다른 리소스와 같은 임의의 참조되는 모듈들을 로딩할 수 있다.
블록 230으로 진행해서, 시스템은 커널과 관련된 추가 모듈 및 데이터를 식별하기 위해 운영체제 커널을 실행하고 커널의 초기화를 모니터링함으로써 동적 분석을 선택적으로 수행한다. 동적 분석은 정적 분석을 통하여 발견한 것 외의 모듈 및/또는 데이터를 찾을 수 있을 뿐만 아니라 정적 분석에 의해 식별된 아이템의 확인을 제공할 수 있다. 동적 분석은 커널에 의해 사용되는 동적으로 할당된 메모리 구조, 소정의 조건 하에서 동적으로만 로딩되는 모듈, 특정 하드웨어 환경에 기초하여 상이한 커널의 부분 등과 같이 정적 분석을 통하여 결정하기 어려운 정보를 제공할 수 있다. 정적 및 동적 분석 중에, 시스템은 커널이 직접 실행할 수 있는 사전-레이아웃된 이미지를 생성하기 위해 사용될 수 있는, 커널이 초기화하는 법에 대한 정보를 수집하고, 종래의 초기화 단계 중 적어도 일부를 스킵한다.
일부 실시형태에 있어서, 시스템은 또한 발견된 각각의 리소스를 식별하는 시그너처 정보를 포착한다. 상기 식별하는 정보는 파일 시스템 내의 타임스탬프, 체크섬, 또는 특정 리소스가 변경된 때를 표시하는 다른 값을 포함할 수 있다. 시스템은 그 다음에 이 정보를 이용하여 운영체제 파일 또는 드라이버가 제조업자로부터의 업데이트에 의해 업데이트된 후와 같이, 레이아웃 분석을 다시 수행할 때를 결정할 수 있다. 시스템은 각각의 부트 업 중에 또는 특정 수의 부트 업 후에, 레이아웃에 기여하는 각각의 공지된 리소스를 검토하고, 임의의 리소스가 변경되었는지 판단하며, 만일 임의의 리소스가 변경되었으면 BPRAM 이미지를 업데이트하기 위한 새로운 레이아웃 프로세스를 개시하는 프로세스를 수행할 수 있다.
정적 및 동적 분석 중에, 시스템은 또한 하드웨어 장치와 같은 외부 리소스에 영향을 주는 임의의 초기화를 관찰하고 주목할 수 있다. 그래픽 카드, 입력 장치, 디스플레이 및 기타 장치와 같은 하드웨어는 추가의 요청을 수신하기 위해 하드웨어를 공지의 상태로 두는 특수한 초기화 시퀀스를 예상할 수 있다. 소프트웨어 레이아웃 시스템이 다수의 전형적인 초기화 단계를 미리 수행할 수 있는 동안, 외부 리소스에 영향을 주는 단계들은 운영체제가 부팅할 때마다 수행될 필요가 있다. 따라서, 시스템은 그러한 초기화 루틴을 추적하고 상기 루틴에 대한 포인터 또는 다른 레퍼런스를 저장하여 운영체제가 사전-레이아웃된 고속 부팅 이미지로부터 로딩할 때 루틴이 수행될 수 있게 한다.
블록 240으로 진행해서, 시스템은 운영체제 커널을 고속 부팅하기 위해 그로부터 사전-레이아웃된 이미지를 저장하기에 적합한 BPRAM 장치를 식별한다. BPRAM은 바이트 어드레서블이지만 또한 영구적이라는 점에서 이전에 이용가능한 전형적인 플래시 메모리, 하드 드라이브, 및 동적 RAM(DRAM)과 차이가 있다. 바이트 어드레서블이란 하드 드라이브 및 하드 드라이브와 같이 동작하는 플래시에 대하여 전형적인 것처럼, 섹터마다 그것으로부터 로딩하는 대신에 BPRAM의 각 바이트가 직접 어드레스될 수 있는 것을 의미한다. 컴퓨터 프로세서는 전형적으로 바이트 어드레서블 메모리에 저장되어 있는 소프트웨어 코드만을 실행할 수 있다. 영속적이란 BPRAM이 전력 사이클(즉, 장치에 대한 전력을 오프시키고 그 다음에 다시 온 시키는 것) 사이에서도 BPRAM에 저장된 데이터를 유지한다는 것을 의미한다. 전형적인 DRAM은 바이트 어드레서블이지만 영속적이지는 않고, 전형적인 하드 드라이브는 영속적이지만 바이트 어드레서블이 아니다. 따라서, BPRAM은 상기 2가지의 특성을 동시에 갖는다는 점에서 새로운 것이다. 따라서, 실행 대상의 이미지는 그것을 실행하게 하는 요청에 앞서 미리 형성되고, BPRAM에 저장되며, 그 다음에 그곳으로부터 직접 실행되거나 다른 메모리 장치에 복사한 후에 실행될 수 있다.
블록 250으로 진행해서, 시스템은 BPRAM 장치에 관한 마모 상태 정보를 선택적으로 결정한다. 비록 이것은 더 나은 장치에 의해 시간에 따라 해결될 수 있지만, 현재의 BPRAM은 제한된 횟수만 성공적으로 기입될 수 있다는 불리한 면이 있다. 비록 이 횟수가 빈번하지 않은 BPRAM의 업데이트에는 충분하지만, 전형적인 DRAM 장치 또는 하드 드라이브만큼 자주 BPRAM에 기입하기에는 충분하지 않다. 따라서, 시스템은 BPRAM 장치에의 기입을 관리하기 위해 마모 상태 정보를 추적하고, 하나 이상의 기술을 이용하여 BPRAM 장치의 유용한 수명을 연장할 수 있다. 이 정보는 장치의 각 영역이 얼마나 많이 기입되었는지, BPRAM의 어느 부분이 현재 사용중 또는 비 사용중인지, 각 영역에 대하여 이용가능한 것으로 예측되는 기입의 수 등을 포함할 수 있다. 마모 상태 정보에 기초하여, 시스템은 레이아웃 이미지를 저장하기 위한 BPRAM 내의 위치를 선택한다.
블록 260으로 진행해서, 시스템은 저장된 커널의 포맷과 상이한 커널의 인 메모리 레이아웃에 기초하여 고속 부팅 이미지에 대한 레이아웃을 생성한다. 상기 고속 부팅 이미지는 실행할 준비가 되어 있고 커널을 실행하게 하는 요청을 수신하기 전에 생성된다. 메모리 내 커널의 전형적인 이미지는 커널을 실행하게 하는 요청이 있는 때에만, 하드 드라이브 스토리지로부터의 저장된 모듈을 DRAM에 로딩함으로써 생성된다. 여기에서, 시스템은 이 단계들을 미리 수행하고, 그 결과를 BPRAM에 저장하여 커널을 부팅하게 하는 미래의 요청이 매번 각 단계들을 반복하지 않고 고속으로 이루어지게 한다. 레이아웃 이미지는 하나 이상의 모듈 코드 섹션, 하나 이상의 데이터 섹션, 커널에 의해 생성된 하나 이상의 판독 전용 히프 영역 등의 콘텐츠를 포함할 수 있다.
블록 270으로 진행해서, 시스템은 생성된 레이아웃 이미지를 식별된 BPRAM 장치에 복사한다. BPRAM 장치는 시스템이 이미지를 장치에 복사하는 특정의 기입 처리를 포함할 수 있다. 시스템은 또한 커널의 전형적인 초기화 단계를 모두 통과한 지점을 나타내는 커널 내의 특정 실행 위치를 식별할 수 있다. 레이아웃 이미지가 소정 양의 초기화가 수행된 후의 상태에서 커널을 포함하기 때문에, 커널이 BPRAM으로부터 실행된 때, 커널은 평소보다 늦은 실행 위치에서 시작될 수 있다. 따라서, 시스템은 커널 이미지 내의 엔트리 포인트 어드레스를 덮어쓰기하거나, 또는 커널이 BPRAM으로부터 실행할 때 적당한 지점으로부터 시작하도록 커널에게 지시하는 유사한 수정을 행할 수 있으며, 이것에 의해 전형적인 초기화 단계들을 스킵한다. 블록 270 후에, 상기 단계들이 종료한다.
도 3은 일 실시형태에 따른, BPRAM으로부터 운영체제 커널을 초기화하는 소프트웨어 레이아웃 시스템의 처리를 설명하는 흐름도이다. 도 3은 도 2의 단계에 의해 미리 생성된 BPRAM 이미지로부터 커널을 부팅하는 단계를 설명한다.
블록 310에서 시작하여, 시스템은 운영체제를 부팅하게 하는 요청을 수신한다. 전형적으로 운영체제의 제어하에 초기화하는 애플리케이션과는 달리, 운영체제는 전형적으로 컴퓨터 시스템의 기본 입출력 시스템(BIOS), 부트 로더, 하이퍼바이저(가상화의 경우), 또는 다른 저수준 부트 코드의 제어하에 초기화한다. 상기 저수준 부트 코드는 마스터 부트 레코드(MBR), 전역 고유 식별자(globally unique identifier, GUID) 분할표(GPT), 또는 이용할 수 있는 부팅가능한 운영체제를 표시하는 다른 저장된 데이터 구조로부터 운영체제를 식별할 수 있다. 특정의 운영체제가 식별되면, 저수준 부트 코드는 전형적으로 운영체제의 메인 모듈을 식별하고, 그 모듈을 로딩하며, 제어를 모듈의 엔트리 포인트로 넘긴다. 소프트웨어 레이아웃 시스템의 경우에, 저수준 부트 코드는 BPRAM 이미지의 엔트리 포인트를 호출함으로써 BPRAM으로부터 부트하도록 운영체제에게 요청할 수 있다.
블록 320으로 진행해서, 시스템은 운영체제가 개별적인 모듈을 로딩하지 않고 실행될 수 있는 BPRAM 내의 이전에 레이아웃된 이미지를 식별한다. 레이아웃 이미지는 로딩 및 초기화 프로세스가 완료되지 않으면 실행 준비가 되지 않은 개별 모듈로서 저장된 운영체제의 전형적인 저장된 포맷과는 대조적으로 실행할 준비가 된다. 상기 로딩 및 초기화 프로세스는 모듈들을 메모리에 맵핑하고, 히프 또는 다른 메모리 영역에 데이터 영역을 생성하는 등의 작업을 수행한다. 이와 대조적으로, 소프트웨어 레이아웃 시스템의 실행 단계는 어떤 이른 시간에 이미 완성된 단계들과 함께 시작한다. 따라서, 소프트웨어 레이아웃 시스템은 BPRAM으로부터 직접 또는 BPRAM으로부터의 레이아웃 이미지를 다른 메모리 장치에 신속히 복사하고 그로부터 운영체제를 실행함으로써 운영체제를 실행하는 것으로 직접 이동할 수 있다.
결정 블록 330으로 진행해서, 만일 시스템이 이전에 레이아웃된 이미지를 식별하였으면, 시스템은 블록 340으로 진행하여 고속 부트를 수행하고, 그렇지 않으면 시스템이 종료하고 운영체제와 관련된 저장된 모듈을 로딩하는 종래의 부트 프로세스로 되돌아간다. 시스템은 또한 식별된 이전에 레이아웃된 이미지가 운영체제의 저장된 포맷과 관련하여 최신의 것인지를 판단할 수 있다(도시 생략됨). 만일 저장된 운영체제 모듈의 버전이 업데이트되었으면, 이전에 레이아웃된 이미지가 또한 업데이트될 필요가 있고, 시스템은 그러한 업데이트를 이 시점에서 수행하거나, 또는 수행할 업데이트의 필요성을 나중 시간(예를 들면, 다음 부팅 전)으로 표시해 둘 수 있다.
결정 블록 340으로 진행해서, 시스템은 식별된 이전에 레이아웃된 이미지가 실행될 준비가 되었는지 판단하고, 만일 준비가 되었으면 블록 360으로 스킵하여 BPRAM 이미지를 실행하고, 그렇지 않으면 시스템은 블록 350으로 진행한다. 비록 BPRAM이 바이트 어드레서블이라 할지라도, 다른 곳에서 이미지를 실행할 좋은 이유가 있을 수 있다. 예를 들어서, 만일 BPRAM 장치가 DRAM보다 저속이면, DRAM으로의 고속 복사(예를 들면, 직접 메모리 액세스(DMA) 또는 다른 방법을 이용해서)를 수행하도록 고속으로 될 수 있고, 그 다음에 그곳으로부터 실행할 수 있다. 대안적으로 또는 추가적으로, BPRAM 이미지는 BPRAM을 불필요하게 마모시키는 기입가능 섹션을 포함할 수 있지만, BPRAM 이미지는 마모 걱정 없이 DRAM에서 잘 실행될 수 있다. 이런 이유 및 다른 이유로 인하여, 소프트웨어 레이아웃 시스템의 특정 구현 예는 BPRAM으로부터 직접 실행하지 않도록 선택될 수 있다.
블록 350으로 진행해서, 시스템은 운영체제의 식별된 이전에 레이아웃된 이미지를 실행을 위해 다른 메모리 장치에 복사한다. 상기 복사는 복사 동작을 가속화하는 DMA 또는 다른 고속 전송 기술을 포함할 수 있다.
블록 360으로 진행해서, 시스템은 식별된 이전에 레이아웃된 이미지를 이용하여 운영체제의 실행을 시작한다. 이 지점에서의 이미지는 아직 BPRAM에 있어서 직접 실행되거나, 또는 BPRAM으로부터 다른 메모리 장치로의 카피이다. 운영체제의 실행은 사전-레이아웃 처리 때문에 더 이상 필요 없는 초기화 단계에 기초하여 운영체제의 다른 엔트리 포인트를 식별하는 것뿐만 아니라, 레이아웃을 미리 수행함으로써 야기된 운영체제의 상태와 함께 외부 리소스를 정렬시키도록 수행되는 외부 리소스에 대한 임의의 초기화 루틴을 호출하는 것을 포함할 수 있다.
블록 370으로 진행해서, 시스템은 섹터 기반 스토리지 장치에 저장된 모듈로부터 운영체제를 로딩하는 종래의 부팅에 비하여 더 빠른 시간에 상기 식별된 이전에 레이아웃된 이미지를 이용하여 애플리케이션을 실행하기 위한 준비 상태로 운영체제를 만든다. 시스템이 부팅 처리의 대부분을 미리 수행하고 이 부분들이 메모리보다 비교적 더 느린 스토리지 장치의 관여에 기인하여 전형적으로 가장 느리기 때문에, 부팅 처리는 여기에서 설명하는 처리에 의해 극적으로 가속화될 수 있다. 블록 370 후에, 상기 단계들이 종료된다.
도 4는 일 실시형태에 따른, BPRAM에서의 사전-레이아웃을 위한 코드 및 데이터를 식별하기 위해 애플리케이션을 검사하는 소프트웨어 레이아웃 시스템의 처리를 설명하는 흐름도이다. 도 4 및 도 5는 애플리케이션에 적용될 때 시스템의 2개의 상이한 동작 단계를 예시한다. 도 4는 애플리케이션의 실행 준비 레이아웃을 결정하고 그 레이아웃을 BPRAM에 복사하는 단계를 설명하는 것이고, 도 5는 도 4의 단계에 의해 미리 생성된 BPRAM 이미지로부터 애플리케이션을 초기화하는 단계를 설명하는 것이다.
블록 410에서 시작하여, 시스템은 고속 레이아웃을 수행하여 애플리케이션의 고속 초기화 이미지를 생성하는 타겟 애플리케이션을 식별한다. 상기 애플리케이션은 고속 초기화 이미지와 레이아웃이 상이한 하나 이상의 모듈을 포함한 저장된 포맷을 갖는다. 시스템은 정보 기술(IT) 기술자에 의해 실행될 수 있는 관리 도구를 제공할 수 있고, 또는 애플리케이션을 식별하고 BPRAM에의 저장을 위한 고속 초기화 이미지 레이아웃을 생성하는 처리를 시작하기 위해 운영체제의 일부로서 자동으로 실행할 수 있다. 애플리케이션을 식별하는 것은 운영체제에 설치된 애플리케이션의 리스트를 검사하는 것, 애플리케이션을 실행하게 하는 요청을 차단하는 것, 이미 실행중인 애플리케이션을 모니터링하는 것, 또는 타겟 애플리케이션을 표시하는 모듈 경로를 수신하는 것을 포함할 수 있다.
블록 420으로 진행해서, 시스템은 식별된 타겟 애플리케이션에 대하여 정적 분석을 수행하여 애플리케이션과 관련된 하나 이상의 정적 및 동적으로 링크된 모듈을 결정하고 바이트 어드레서블 영속 랜덤 액세스 메모리(BPRAM)에 저장하기 위한 충분히 불변인 애플리케이션에 의해 사용되는 데이터를 식별한다. 정적 분석을 수행하기 위한 각종 기술이 공지되어 있지만, 프로세스는 일반적으로 애플리케이션과 관련된 메인 모듈을 로딩하고, 실행가능 포맷을 검사하여 모듈의 각 섹션(섹션들은 리소스, 항구적 데이터, 다른 모듈들을 참조하는 링크된 모듈 섹션, 및 실행 코드를 포함한 하나 이상의 코드 섹션을 포함할 수 있음)들을 식별하며, 아마도 임의의 식별된 머신 코드 또는 다른 분석 기술을 분해함으로써 시작한다. 일부 실시형태에 있어서, 시스템은 또한 동적으로 링크된 라이브러리, 애드인(add-in) 확장 모듈, 또는 애플리케이션에 의해 사용되는 다른 리소스와 같은 임의의 참조되는 모듈들을 로딩할 수 있다.
워드 프로세서와 같은 애플리케이션은 하나 이상의 애드인 모듈을 통하여 애플리케이션에 새로운 기능을 추가하기 위해 가끔 제3자 확장성을 허용하고, 시스템은 레이아웃 이미지에 임의의 설치된 애드인을 포함할 수 있다. 또한, 애플리케이션은 애플리케이션이 의존하는 하나 이상의 모듈의 형태로 런타임을 포함하는 하나 이상의 프레임워크를 이용하여 구축될 수 있다. 예를 들면, 마이크로소프트™ .NET는 애플리케이션이 공통 데이터 구조 및 기능에 대하여 레버리지할 수 있는 공통 언어 런타임(common language runtime, CLR)을 포함하고, 이들은 애플리케이션과 함께, 또는 복수의 그러한 애플리케이션을 레버리지할 수 있는 일반적인 방법으로 BPRAM에 포함될 수 있다.
블록 430으로 진행해서, 시스템은 애플리케이션과 관련된 추가 모듈 및 데이터를 식별하기 위해 애플리케이션을 실행하고 애플리케이션의 초기화를 모니터링함으로써 동적 분석을 선택적으로 수행한다. 동적 분석은 정적 분석을 통하여 발견한 것 외의 모듈 및/또는 데이터를 찾을 수 있을 뿐만 아니라 정적 분석에 의해 식별된 아이템의 확인을 제공할 수 있다. 동적 분석은 애플리케이션에 의해 사용되는 동적으로 할당된 메모리 구조, 소정의 조건 하에서 동적으로만 로딩되는 모듈, 특정 하드웨어 또는 운영체제 환경에 기초하여 상이한 애플리케이션의 부분 등과 같이 정적 분석을 통하여 결정하기 어려운 정보를 제공할 수 있다. 정적 및 동적 분석 중에, 시스템은 애플리케이션이 직접 실행할 수 있는 사전-레이아웃된 이미지를 생성하기 위해 사용될 수 있는, 애플리케이션이 초기화하는 법에 대한 정보를 수집하고, 종래의 초기화 단계 중 적어도 일부를 스킵한다.
일부 실시형태에 있어서, 시스템은 또한 발견된 각각의 리소스를 식별하는 시그너처 정보를 포착한다. 상기 식별하는 정보는 파일 시스템 내의 타임스탬프, 체크섬, 또는 특정 리소스가 변경된 때를 표시하는 다른 값을 포함할 수 있다. 시스템은 그 다음에 이 정보를 이용하여 애플리케이션 파일이 제조업자로부터의 업데이트에 의해 업데이트된 후와 같이, 레이아웃 분석을 다시 수행할 때를 결정할 수 있다. 시스템은 각각의 애플리케이션 실행 중에 또는 특정 수의 실행 후에, 레이아웃에 기여하는 각각의 공지된 리소스를 검토하고, 임의의 리소스가 변경되었는지 판단하며, 만일 임의의 리소스가 변경되었으면 BPRAM 이미지를 업데이트하기 위한 새로운 레이아웃 프로세스를 개시하는 프로세스를 수행할 수 있다.
정적 및 동적 분석 중에, 시스템은 또한 시스템 구성 데이터베이스와 같은 외부 리소스에 영향을 주는 임의의 초기화를 관찰하고 주목할 수 있다. 소프트웨어 레이아웃 시스템이 다수의 전형적인 초기화 단계를 미리 수행할 수 있지만, 외부 리소스에 영향을 주는 단계들은 애플리케이션이 초기화할 때마다 수행될 필요가 있다. 따라서, 시스템은 그러한 초기화 루틴을 추적하고 상기 루틴에 대한 포인터 또는 다른 레퍼런스를 저장하여 애플리케이션이 사전-레이아웃된 이미지로부터 로딩할 때 루틴이 수행될 수 있게 한다.
블록 440으로 진행해서, 시스템은 애플리케이션을 초기화하기 위해 그로부터 사전-레이아웃된 이미지를 저장하기에 적합한 BPRAM 장치를 식별한다. BPRAM은 바이트 어드레서블이지만 또한 영구적이라는 점에서 이전에 이용가능한 전형적인 플래시 메모리, 하드 드라이브, 및 동적 RAM(DRAM)과 차이가 있다. 바이트 어드레서블이란 하드 드라이브 및 하드 드라이브와 같이 동작하는 플래시에 대하여 전형적인 것처럼, 섹터마다 그것으로부터 로딩하는 대신에 BPRAM의 각 바이트가 직접 어드레스될 수 있는 것을 의미한다. 컴퓨터 프로세서는 전형적으로 바이트 어드레서블 메모리에 저장되어 있는 소프트웨어 코드만을 실행할 수 있다. 영속적이란 BPRAM이 전력 사이클(즉, 장치에 대한 전력을 오프시키고 그 다음에 다시 온 시키는 것) 사이에서도 BPRAM에 저장된 데이터를 유지한다는 것을 의미한다. 전형적인 DRAM은 바이트 어드레서블이지만 영속적이지는 않고, 전형적인 하드 드라이브는 영속적이지만 바이트 어드레서블이 아니다. 따라서, BPRAM은 상기 2가지의 특성을 동시에 갖는다는 점에서 새로운 것이다. 따라서, 실행 대상의 이미지는 그것을 실행하게 하는 요청에 앞서 미리 형성되고, BPRAM에 저장되며, 그 다음에 그곳으로부터 직접 실행되거나 다른 메모리 장치에 복사한 후에 실행될 수 있다.
블록 450으로 진행해서, 시스템은 BPRAM 장치에 관한 마모 상태 정보를 선택적으로 결정한다. 비록 이것은 더 나은 장치에 의해 시간에 따라 해결될 수 있지만, 현재의 BPRAM은 제한된 횟수만 성공적으로 기입될 수 있다는 불리한 면이 있다. 비록 이 횟수가 빈번하지 않은 BPRAM의 업데이트에는 충분하지만, 전형적인 DRAM 장치 또는 하드 드라이브만큼 자주 BPRAM에 기입하기에는 충분하지 않다. 따라서, 시스템은 BPRAM 장치에의 기입을 관리하기 위해 마모 상태 정보를 추적하고, 하나 이상의 기술을 이용하여 BPRAM 장치의 유용한 수명을 연장할 수 있다. 이 정보는 장치의 각 영역이 얼마나 많이 기입되었는지, BPRAM의 어느 부분이 현재 사용중 또는 비 사용중인지, 각 영역에 대하여 이용가능한 것으로 예측되는 기입의 수 등을 포함할 수 있다. 마모 상태 정보에 기초하여, 시스템은 레이아웃 이미지를 저장하기 위한 BPRAM 내의 위치를 선택한다.
블록 460으로 진행해서, 시스템은 저장된 애플리케이션의 포맷과 상이한 애플리케이션의 인 메모리 레이아웃에 기초하여 고속 초기화 이미지에 대한 레이아웃을 생성한다. 상기 고속 초기화 이미지는 실행할 준비가 되어 있고 애플리케이션을 실행하게 하는 요청을 수신하기 전에 생성된다. 메모리 내 애플리케이션의 전형적인 이미지는 애플리케이션을 실행하게 하는 요청이 있는 때에만, 하드 드라이브 스토리지로부터의 저장된 모듈을 DRAM에 로딩함으로써 생성된다. 여기에서, 시스템은 이 단계들을 미리 수행하고, 그 결과를 BPRAM에 저장하여 애플리케이션을 실행하게 하는 미래의 요청이 매번 각 단계들을 반복하지 않고 고속으로 이루어지게 한다. 레이아웃 이미지는 하나 이상의 모듈 코드 섹션, 하나 이상의 데이터 섹션, 애플리케이션에 의해 생성된 하나 이상의 판독 전용 히프 영역 등의 콘텐츠를 포함할 수 있다.
블록 470으로 진행해서, 시스템은 생성된 레이아웃 이미지를 식별된 BPRAM 장치에 복사한다. BPRAM 장치는 시스템이 이미지를 장치에 복사하는 특정의 기입 처리를 포함할 수 있다. 시스템은 또한 애플리케이션의 전형적인 초기화 단계를 모두 통과한 지점을 나타내는 애플리케이션 내의 특정 실행 위치를 식별할 수 있다. 레이아웃 이미지가 소정 양의 초기화가 수행된 후의 상태에서 애플리케이션을 포함하기 때문에, 애플리케이션이 BPRAM으로부터 실행된 때, 애플리케이션은 평소보다 늦은 실행 위치에서 시작될 수 있다. 따라서, 시스템은 애플리케이션 이미지 내의 엔트리 포인트 어드레스를 덮어쓰기하거나, 또는 애플리케이션이 BPRAM으로부터 실행할 때 적당한 지점으로부터 시작하도록 애플리케이션에게 지시하는 유사한 수정을 행할 수 있으며, 이것에 의해 전형적인 초기화 단계들을 스킵한다. 블록 470 후에, 상기 단계들이 종료한다.
도 5는 일 실시형태에 따른, BPRAM으로부터 애플리케이션을 초기화하는 소프트웨어 레이아웃 시스템의 처리를 설명하는 흐름도이다. 전술한 바와 같이, 도 5는 도 4의 단계에 의해 미리 생성된 BPRAM 이미지로부터 애플리케이션을 초기화하는 단계를 설명한다.
블록 510에서 시작하여, 시스템은 애플리케이션을 실행하게 하는 요청을 수신한다. 애플리케이션은 전형적으로 운영체제의 제어하에 초기화한다. 운영체제는 사용자가 애플리케이션을 시작시킬 수 있는 쉘(shell) 뿐만 아니라, 애플리케이션이 다른 애플리케이션의 실행을 요청할 수 있는 애플리케이션 프로그래밍 인터페이스(API)를 제공할 수 있다. 운영체제는 또한 운영체제의 초기화시에 또는 특정 이벤트가 발생한 때 자동으로 진수되는 서비스 또는 데몬의 개념을 포함할 수 있다. 애플리케이션이 어떻게 시작되는가에 상관없이, 시스템은 애플리케이션이 요청한 통지를 수신한다. 이것은 애플리케이션이 실행되는 요청에 응답하여 일반적으로 수행되는 로더 요청 또는 다른 단계들을 후킹(hook)하는 운영체제 내에서 장치 드라이버를 실행시킴으로써 행하여질 수 있다. 일부 실시형태에 있어서, 소프트웨어 레이아웃 시스템은 고유의 특징으로서 운영체제에 직접 구축된다.
블록 520으로 진행해서, 시스템은 애플리케이션이 개별적인 모듈을 로딩하지 않고 실행될 수 있는 BPRAM 내의 이전에 레이아웃된 이미지를 식별한다. 레이아웃 이미지는 로딩 및 초기화 프로세스가 완료되지 않으면 실행 준비가 되지 않은 개별 모듈로서 저장된 애플리케이션의 전형적인 저장된 포맷과는 대조적으로 실행할 준비가 된다. 상기 로딩 및 초기화 프로세스는 모듈들을 메모리에 맵핑하고, 히프 또는 다른 메모리 영역에 데이터 영역을 생성하는 등의 작업을 수행한다. 이와 대조적으로, 소프트웨어 레이아웃 시스템의 실행 단계는 어떤 이른 시간에 이미 완성된 단계들과 함께 시작한다. 따라서, 소프트웨어 레이아웃 시스템은 BPRAM으로부터 직접 또는 BPRAM으로부터의 레이아웃 이미지를 다른 메모리 장치에 신속히 복사하고 그로부터 애플리케이션을 실행함으로써 애플리케이션을 실행하는 것으로 직접 이동할 수 있다.
결정 블록 530으로 진행해서, 만일 시스템이 이전에 레이아웃된 이미지를 식별하였으면, 시스템은 블록 540으로 진행하여 애플리케이션의 고속 초기화를 수행하고, 그렇지 않으면 시스템이 종료하고 애플리케이션과 관련된 저장된 모듈을 로딩하는 종래의 초기화 프로세스로 되돌아간다. 시스템은 또한 식별된 이전에 레이아웃된 이미지가 애플리케이션의 저장된 포맷과 관련하여 최신의 것인지를 판단할 수 있다(도시 생략됨). 만일 저장된 애플리케이션 모듈의 버전이 업데이트되었으면, 이전에 레이아웃된 이미지가 또한 업데이트될 필요가 있고, 시스템은 그러한 업데이트를 이 시점에서 수행하거나, 또는 수행할 업데이트의 필요성을 나중 시간(예를 들면, 애플리케이션의 다음 실행 전)으로 표시해 둘 수 있다.
결정 블록 540으로 진행해서, 시스템은 식별된 이전에 레이아웃된 이미지가 실행될 준비가 되었는지 판단하고, 만일 준비가 되었으면 블록 560으로 스킵하여 BPRAM 이미지를 실행하고, 그렇지 않으면 시스템은 블록 550으로 진행한다. 비록 BPRAM이 바이트 어드레서블이라 할지라도, 다른 곳에서 이미지를 실행할 좋은 이유가 있을 수 있다. 예를 들어서, 만일 BPRAM 장치가 DRAM보다 저속이면, DRAM으로의 고속 복사(예를 들면, 직접 메모리 액세스(DMA) 또는 다른 방법을 이용해서)를 수행하도록 고속으로 될 수 있고, 그 다음에 그곳으로부터 실행할 수 있다. 대안적으로 또는 추가적으로, BPRAM 이미지는 BPRAM을 불필요하게 마모시키는 기입가능 섹션을 포함할 수 있지만, BPRAM 이미지는 마모 걱정 없이 DRAM에서 잘 실행될 수 있다. 이런 이유 및 다른 이유로 인하여, 소프트웨어 레이아웃 시스템의 특정 구현 예는 BPRAM으로부터 직접 실행하지 않도록 선택될 수 있다.
블록 550으로 진행해서, 시스템은 애플리케이션의 식별된 이전에 레이아웃된 이미지를 실행을 위해 다른 메모리 장치에 복사한다. 상기 복사는 복사 동작을 가속화하는 DMA 또는 다른 고속 전송 기술을 포함할 수 있다.
블록 560으로 진행해서, 시스템은 식별된 이전에 레이아웃된 이미지를 이용하여 애플리케이션의 실행을 시작한다. 이 지점에서의 이미지는 아직 BPRAM에 있어서 직접 실행되거나, 또는 BPRAM으로부터 다른 메모리 장치로의 카피이다. 애플리케이션의 실행은 사전-레이아웃 처리 때문에 더 이상 필요 없는 초기화 단계에 기초하여 애플리케이션의 다른 엔트리 포인트를 식별하는 것뿐만 아니라, 레이아웃을 미리 수행함으로써 야기된 애플리케이션의 상태와 함께 외부 리소스를 정렬시키도록 수행되는 외부 리소스에 대한 임의의 초기화 루틴을 호출하는 것을 포함할 수 있다.
블록 570으로 진행해서, 시스템은 섹터 기반 스토리지 장치에 저장된 모듈로부터 애플리케이션을 로딩하는 종래의 초기화에 비하여 더 빠른 시간에 상기 식별된 이전에 레이아웃된 이미지를 이용하여 애플리케이션을 사용자가 사용하기 위한 준비 상태로 만든다. 시스템이 애플리케이션 초기화 처리의 대부분을 미리 수행하고 이 부분들이 메모리보다 비교적 더 느린 스토리지 장치의 관여에 기인하여 전형적으로 가장 느리기 때문에, 초기화 처리는 여기에서 설명하는 처리에 의해 극적으로 가속화될 수 있다. 블록 570 후에, 상기 단계들이 종료된다.
도 6은 일 실시형태에 따른, 소프트웨어 레이아웃 시스템에서 사용되는 각종 유형의 스토리지 및 데이터의 관계를 설명하는 블록도이다. 전형적인 컴퓨터 시스템은 프로세서(610), 비 영속적 동적 RAM(620), 및 섹터 기반 영속 스토리지(630)를 포함한다. 운영체제 및 애플리케이션 실행 모듈뿐만 아니라 데이터 파일을 포함한 파일들은 섹터 기반 영속 스토리지(630)에 저장된다. 동작 중에, 컴퓨터 시스템은 운영체제 파일 및 애플리케이션 파일을 섹터 기반 영속 스토리지(630)로부터 프로세서(610)에서 실행되는 명령을 통하여 동적 RAM(620)으로 로딩한다. 이 명령들은 그들의 저장된 포맷으로부터의 실행 모듈들을 프로세서에 의해 실행할 준비가 된 포맷으로 리포맷한다. 소프트웨어 레이아웃 시스템은 영속적이면서 바이트 어드레서블인(즉, 섹터 기반형이 아님) 추가 유형의 메모리인 BPRAM(640)을 도입한다. 컴퓨터 시스템은 저장된 포맷으로부터 실행 준비가 된 포맷으로 복사하는 초기화 처리를 먼저 검토하지 않고 운영체제 및 애플리케이션을 BPRAM으로부터 직접 실행할 수 있다. 오히려, BPRAM(640)은 적용가능한 운영체제 및/또는 애플리케이션의 실행 준비가 된 포맷을 이미 포함하고 있다.
일부 실시형태에 있어서, 소프트웨어 레이아웃 시스템은 실행을 위해 애플리케이션에 의해 사용되는 정보를 서술하는 운영체제와 관련된 수정된 인스톨러(installer)를 포함한다. 애플리케이션과 관련된 설치 파일은 운영체제에 대한 정보를 제공하는 매니페스트 및 애플리케이션의 고속 실행을 위해 그로부터 적당한 레이아웃 이미지를 생성하는 인스톨러를 포함할 수 있다. 아직 수행될 수 있는 정적 및 동적 분석과 달리, 설치 정보는 애플리케이션 제조업자로부터 직접 오고, 제조업자가 애플리케이션의 의존성 및 다른 레이아웃 고려사항을 더 잘 식별하도록 레이아웃 처리를 고칠 수 있게 한다.
일부 실시형태에 있어서, 소프트웨어 레이아웃 시스템은 섹터 기반형 및 바이트 어드레서블 영역의 조합을 가진 BPRAM을 이용한다. 비록 바이트 어드레서블 부분을 위에서 구체적으로 설명하였지만, BPRAM은 섹터 기반형 및 바이트 어드레서블 부분이 공존하게 하는 방식으로 분할될 수 있다. 섹터 기반형 부분은 미리 레이아웃될 수 없는 애플리케이션 또는 운영체제 부분의 저장을 가능하게 하지만, 섹터 기반형 부분은 저속의 섹터 기반형 매체(예를 들면, 회전 하드 드라이브)로부터 보다 섹터 기반 BPRAM으로부터 더 고속으로 여전히 로딩될 수 있다.
일부 실시형태에 있어서, 소프트웨어 레이아웃 시스템은 여기에서 설명하는 완전한 레이아웃 처리를 이용하는 것이 아니라 할지라도, BPRAM으로부터 적어도 일부 애플리케이션 참조 모듈을 제공하기 위해 복수의 애플리케이션으로부터의 호출들을 차단한다. 예를 들면, 시스템은 동적으로 링크된 라이브러리(DLL)로부터 로딩된 기능의 어드레스를 복귀시키는 공통 WIN32™ API 호출 GetProcaddress를 차단할 수 있고, DLL을 로딩하고 DLL의 메모리 맵핑된 부분으로부터 어드레스를 복귀시키기 보다는 DLL이 실행 준비 포맷으로 이미 레이아웃된 BPRAM의 영역으로 포인터를 대신 복귀시킬 수 있다. 유사하게, 시스템은 장치 드라이버와 같은 모듈들을 로딩하기 위해 커널 코드를 차단하고, 이 호출들을 BPRAM에 다시 전송할 수 있다.
일부 실시형태에 있어서, 소프트웨어 레이아웃 시스템은 실행중인 애플리케이션에게 투명하게 BPRAM에 대한 가상 메모리 어드레스의 맵핑을 제공한다. 좀처럼 변하지 않고 BPRAM에 저장된 애플리케이션 및/또는 운영체제 데이터의 경우에, 시스템은 BPRAM에 저장된 영역들을 표준형의 가상 메모리 어드레스 공간에 맵핑할 수 있다. 이 방법으로, 이 데이터에 대한 포인터를 이용하는 애플리케이션 또는 운영체제는 포인터에 의해 참조되는 데이터가 BPRAM에 저장되어 있는지, DRAM에 저장되어 있는지 또는 다른 곳에 저장되어 있는지를 알지 못하고, 전과 같이 그러나 잠재적으로 새로운 위치에 있는 데이터와 함께 기능을 계속한다.
일부 실시형태에 있어서, 소프트웨어 레이아웃 시스템은 만일 고속 초기화 중에 임의의 에러가 발생하면 종래의 초기화 처리에 폴백(fall back)함으로써 고장 허용 한계(fault tolerance)를 제공한다. 모듈, 버그 또는 다른 에러에 대한 업데이트는 고속 초기화 처리가 운영체제 또는 애플리케이션을 실행 상태로 두는 것을 실패하게 할 수 있다. 그러한 경우에, 시스템은 종래의 초기화 처리에서 폴백하고 운영체제 또는 애플리케이션을 섹터 기반형 매체에 저장된 모듈로부터 로딩할 수 있다.
일부 실시형태에 있어서, 소프트웨어 레이아웃 시스템은 애플리케이션의 더 많은 인스턴스가 특정 컴퓨터 하드웨어에서 동작하게 할 수 있다. 많은 애플리케이션이 BPRAM의 공유가능 부분에 저장되기 때문에, 애플리케이션의 각각의 새로운 인스턴스에 의해 소비되는 리소스의 양은 크게 감소된다. 이것은 애플리케이션의 실행중인 복수의 인스턴스가 실질적인 양의 리소스를 소비할 필요가 없다는 것을 의미한다. 일부 응용에 있어서, 많은 인스턴스를 실행시키는 것은 일반적인 것이고, 더 많이 실행시키는 능력은 많이 사용되고 있다.
전술한 것으로부터, 소프트웨어 레이아웃 시스템의 특정 실시형태가 설명의 목적으로 여기에서 설명되었지만, 본 발명의 정신 및 범위로부터 벗어나지 않고 각종의 수정이 이루어질 수 있다. 따라서, 본 발명은 첨부된 특허 청구범위에 의한 것을 제외하고 제한되지 않는다.

Claims (17)

  1. 바이트 어드레서블 영속적 랜덤 액세스 메모리(byte-addressable persistent random access memory, BPRAM)에서 사전-레이아웃을 위해 코드 및 데이터를 식별하도록 운영체제 커널을 검사하기 위한 컴퓨터 구현된 방법에 있어서,
    타겟 운영체제 커널의 고속 부팅 이미지를 생성하기 위해 고속 레이아웃을 수행할 상기 타겟 운영체제 커널을 식별하는 단계 ― 상기 타겟 운영체제 커널은 레이아웃이 상기 고속 부팅 이미지와 상이한 하나 이상의 모듈을 포함하는 저장된 포맷을 갖는 것임 ― ;
    상기 타겟 운영체제 커널과 연관된 하나 이상의 정적 또는 동적으로 링크된 모듈을 결정하기 위해 그리고 BPRAM 내의 저장을 위해 충분히 불변인 상기 타겟 운영체제 커널에 의해 사용되는 데이터를 식별하기 위해, 상기 타겟 운영체제 커널과 연관된 메인 모듈을 로딩하고 상기 메인 모듈의 실행가능 포맷을 검사함으로써, 상기 타겟 운영체제 커널에 대한 정적 분석을 수행하는 단계;
    상기 타겟 운영체제 커널과 연관되고 정적 분석 동안 식별되지 않는 추가의 모듈 및 데이터를 식별하기 위해, 상기 타겟 운영체제 커널을 실행하고 상기 타겟 운영체제 커널의 초기화를 모니터링함으로써, 동적 분석을 수행하는 단계;
    상기 고속 부팅 이미지를 저장하기에 적합한 BPRAM 장치를 식별하는 단계;
    상기 타겟 운영체제 커널의 상기 저장된 포맷과 상이한 정적 및 동적 분석 동안 식별된 상기 타겟 운영체제 커널의 인 메모리(in-memory) 레이아웃에 기초하여 상기 고속 부팅 이미지를 생성하는 단계 ― 상기 고속 부팅 이미지는 실행 준비가 되어 있고, 상기 타겟 운영체제 커널을 실행하라는 요청을 수신하기 전에 생성되는 것임 ― ;
    상기 고속 부팅 이미지를 상기 식별된 BPRAM 장치에 복사하는 단계; 및
    상기 고속 부팅 이미지를 한번 이상 부팅한 후, 상기 운영체제 커널의 저장된 포맷에 대해 상기 고속 부팅 이미지가 최신인지 여부를 결정하고, 그렇지 않은 경우, 상기 BPRAM 상의 상기 고속 부팅 이미지를 업데이트하는 단계
    를 포함하는, 바이트 어드레서블 영속적 랜덤 액세스 메모리(BPRAM)에서 사전-레이아웃을 위해 코드 및 데이터를 식별하도록 운영체제 커널을 검사하기 위한 컴퓨터 구현된 방법.
  2. 제1항에 있어서,
    상기 타겟 운영체제 커널을 식별하는 단계는, 기존 데이터 스토리지 장치의 부트 레코드(boot record) 또는 다른 데이터 구조를 검사하는 단계, 컴퓨터 시스템의 부트 업(boot up)을 모니터링하는 단계, 및 상기 타겟 운영체제 커널을 표시하는 모듈 경로를 수신하는 단계 중 적어도 하나를 포함하는 것인, 컴퓨터 구현된 방법.
  3. 제1항에 있어서,
    상기 정적 분석을 수행하는 단계는, 상기 메인 모듈의 하나 이상의 섹션을 식별하는 단계, 및 상기 식별된 섹션 중 적어도 하나의 섹션 내의 식별된 머신 코드를 분해(disassemble)하는 단계를 더 포함하는 것인, 컴퓨터 구현된 방법.
  4. 제1항에 있어서,
    상기 정적 분석을 수행하는 단계는, 상기 타겟 운영체제 커널에 의해 참조되는 하나 이상의 모듈을 로딩하는 단계, 및 상기 참조되는 하나 이상의 모듈에 대해서도 마찬가지로 정적 분석을 수행하는 단계를 포함하는 것인, 컴퓨터 구현된 방법.
  5. 제1항에 있어서,
    상기 동적 분석을 수행하는 단계는, 상기 타겟 운영체제 커널에 의해 사용되는 하나 이상의 동적으로 할당된 메모리 구조, 특정 조건 하에서만 동적으로 로딩되는 모듈, 및 특정 하드웨어 환경에 기초하여 달라지는 상기 타겟 운영체제 커널의 부분을 식별하는 단계를 포함하는 것인, 컴퓨터 구현된 방법.
  6. 제1항에 있어서,
    상기 정적 분석을 수행하는 단계 및 상기 동적 분석을 수행하는 단계는, 상기 정적 분석 및 상기 동적 분석 동안 식별되는 모듈 각각을 식별하는 시그니처 정보를 포착하는 단계를 포함하며, 상기 시그니처 정보는 상기 식별된 모듈 중 하나가 변경되는 경우 레이아웃 분석을 다시 수행할 때를 결정하는데 사용가능한 것인, 컴퓨터 구현된 방법.
  7. 제1항에 있어서,
    상기 정적 분석 및 상기 동적 분석 동안, 상기 타겟 운영체제 커널이 상기 고속 부팅 이미지로부터 로딩할 때 상기 타겟 운영체제 커널 외부의 리소스에 영향을 주는 초기화 단계가 수행될 수 있도록, 하드웨어 장치에 영향을 주는 임의의 초기화를 관찰 및 기록하는 단계를 더 포함하는, 컴퓨터 구현된 방법.
  8. 제1항에 있어서,
    상기 BPRAM 장치를 식별하는 단계는, 상기 고속 부팅 이미지를 저장하기에 충분한 빈 공간(free space)을 가지며 영속적이고 바이트 어드레서블인 메모리 장치를 식별하는 단계를 포함하는 것인, 컴퓨터 구현된 방법.
  9. 제1항에 있어서,
    상기 고속 부팅 이미지를 생성하는 단계는, 하나 이상의 모듈 코드 섹션 및 하나 이상의 모듈 데이터 섹션의 콘텐츠를 포함하는 통합형 레이아웃을 생성하는 단계를 포함하는 것인, 컴퓨터 구현된 방법.
  10. 제1항에 있어서,
    상기 고속 부팅 이미지를 복사하는 단계는, 상기 고속 부팅 이미지로부터 초기화함으로써 불필요하게 되는 하나 이상의 초기화 단계를 반영하도록 상기 고속 부팅 이미지 내의 상기 타겟 운영체제 커널의 엔트리 포인트(entry point)를 수정하는 단계를 포함하는 것인, 컴퓨터 구현된 방법.
  11. 바이트 어드레서블 영속적 메모리를 이용한 운영체제의 레이아웃 및 실행을 위한 컴퓨터 시스템에 있어서,
    소프트웨어 명령어를 실행하도록 구성되는 프로세서 및 메모리를 포함하며,
    상기 소프트웨어 명령어는,
    부트 업하기 위해 운영체제 커널에 의해 사용되는 커널 데이터 및 소프트웨어 명령어를 결정하고, 상기 운영체제 커널이 바이트 어드레서블 영속적 랜덤 액세스 메모리(BPRAM)로부터 부팅하게 할 상기 BPRAM에 대한 커널 데이터 및 소프트웨어 명령어의 레이아웃을 결정하는 커널 레이아웃 컴포넌트;
    소프트웨어가 명령어 및 데이터에 접근하는 방법을 결정하기 위해, 메인 모듈의 실행가능 포맷을 검사함으로써, 상기 운영체제 커널과 연관된 상기 메인 모듈을 포함하는 소프트웨어를 정적으로 분석하는 정적 분석 컴포넌트;
    정적 분석 동안 식별되지 않는 상기 운영체제 커널의 거동과 관련된 추가 정보를 수집하도록 작동하면서, 상기 운영체제 커널을 동적으로 분석하는 동적 분석 컴포넌트;
    상기 정적 분석 및 상기 동적 분석과 상기 커널 레이아웃 컴포넌트에 의해 결정된 레이아웃에 기초하여 상기 운영체제 커널을 초기화하기 위한 이미지를 생성하고, 상기 이미지를 상기 BPRAM에 저장하는 레이아웃 생성 컴포넌트; 및
    상기 레이아웃 생성 컴포넌트에 의해 상기 BPRAM에 저장된 이미지를 이용하여 상기 운영체제 커널을 초기화하는 커널 초기화 컴포넌트
    내에 구현되며,
    상기 프로세서 및 메모리는 또한, 상기 운영체제 커널의 저장된 포맷에 대해 상기 이미지가 최신인지 여부를 결정하고, 그렇지 않은 경우, 상기 BPRAM에 저장된 상기 이미지를 업데이트하게끔 소프트웨어 명령어를 실행시키도록 구성되는 것인, 컴퓨터 시스템.
  12. 제11항에 있어서,
    상기 커널 레이아웃 컴포넌트는 또한, 상기 운영체제 커널에 대한 레이아웃을 결정하고 상기 결정된 레이아웃을 상기 BPRAM에 복사하기 위해 상기 정적 분석 컴포넌트, 동적 분석 컴포넌트, 및 레이아웃 생성 컴포넌트를 인보크(invoke)하도록 구성되는 것인, 컴퓨터 시스템.
  13. 제11항에 있어서,
    상기 커널 레이아웃 컴포넌트는 또한, 상기 컴퓨터 시스템으로 하여금 상기 레이아웃 생성 컴포넌트에 의해 상기 BPRAM에 저장된 이미지로부터 부팅하게 하기 위해 하나 이상의 부트 데이터 구조를 변경하도록 구성되는 것인, 컴퓨터 시스템.
  14. 제11항에 있어서,
    상기 레이아웃 생성 컴포넌트는 상기 이미지를 생성하도록 하나 이상의 저장된 모듈로부터 데이터, 이진 코드, 및 다른 소프트웨어 정보에 접근하며, 상기 이미지는 상기 운영체제 커널을 실행하는데 사용되는 인 메모리(in-memory) 데이터 중 적어도 일부를 나타내는 것인, 컴퓨터 시스템.
  15. 제11항에 있어서,
    상기 커널 초기화 컴포넌트는 상기 BPRAM의 이미지를 동적 RAM으로 신속하게 복사하고 상기 BPRAM에 저장된 상기 이미지를 실행하기 위해 고속 직접 메모리 액세스(direct memory access, DMA) 전송을 이용하는 것인, 컴퓨터 시스템.
  16. 바이트 어드레서블 영속적 랜덤 액세스 메모리(BPRAM)에 저장된 이미지로부터 운영체제 커널을 초기화하기 위해 컴퓨터 시스템을 제어하기 위한 컴퓨터 실행가능 방법에 있어서,
    운영체제를 부팅하라는 요청을 수신하는 단계;
    개별 모듈을 로딩하지 않고 상기 운영체제가 실행될 수 있는 상기 BPRAM 내의 이전에 레이아웃된 이미지를 식별하는 단계;
    상기 식별된 이전에 레이아웃된 이미지가 제 위치에서 실행될 수 있는지 여부를 결정하고, 만약 그렇지 않은 경우, 상기 운영체제의 상기 식별된 이전에 레이아웃된 이미지를 실행을 위해 또 다른 메모리 장치로 복사하는 단계;
    상기 식별된 이전에 레이아웃된 이미지를 이용하여 상기 운영체제의 실행을 시작하는 단계 ― 상기 운영체제의 실행은, 상기 이전에 레이아웃된 이미지를 이용한 상기 운영체제의 실행으로 인해 필요하지 않은 초기화 단계에 기초하여 상기 운영체제의 대안적인 엔트리 포인트를 식별하는 단계 뿐 아니라, 외부 리소스를 미리 레이아웃을 수행함으로써 야기되는 운영체제의 상태와 일치되게(in line with) 하기 위해 수행되는 외부 리소스에 대한 임의의 초기화 루틴을 인보크하는 단계를 포함함 ― ;
    섹터 기반 스토리지 장치에 저장된 모듈로부터 상기 운영체제를 로딩하는 종래의 부트보다 빠른 시간에 상기 식별된 이전에 레이아웃된 이미지를 이용하여 애플리케이션을 실행하기 위해 상기 운영체제를 준비 상태로 만드는 단계;
    상기 이전에 레이아웃된 이미지가 상기 운영체제의 저장된 포맷에 대해 최신인지 여부를 결정하고, 그렇지 않은 경우, 상기 이전에 레이아웃된 이미지를 업데이트하는 단계
    를 포함하는, 바이트 어드레서블 영속적 랜덤 액세스 메모리(BPRAM)에 저장된 이미지로부터 운영체제 커널을 초기화하기 위해 컴퓨터 시스템을 제어하기 위한 컴퓨터 실행가능 방법.
  17. 제16항에 있어서,
    상기 요청을 수신하는 단계는, 기본 입출력 시스템(Basic Input/Output System, BIOS), 부트 로더, 또는 하이퍼바이저가 상기 운영체제에 구동하도록 요청하는 단계를 포함하는 것인, 컴퓨터 실행가능 방법.
KR1020157007400A 2012-08-30 2013-08-19 Bpram을 이용한 운영체제의 레이아웃 및 실행 KR102136906B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/598,621 US9740500B2 (en) 2012-08-30 2012-08-30 Layout system for operating systems using BPRAM
US13/598,621 2012-08-30
PCT/US2013/055635 WO2014035710A1 (en) 2012-08-30 2013-08-19 Layout and execution of operating systems using bpram

Publications (2)

Publication Number Publication Date
KR20150052107A KR20150052107A (ko) 2015-05-13
KR102136906B1 true KR102136906B1 (ko) 2020-07-22

Family

ID=49054927

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157007400A KR102136906B1 (ko) 2012-08-30 2013-08-19 Bpram을 이용한 운영체제의 레이아웃 및 실행

Country Status (6)

Country Link
US (1) US9740500B2 (ko)
EP (1) EP2891059B1 (ko)
JP (1) JP6259459B2 (ko)
KR (1) KR102136906B1 (ko)
CN (1) CN104583948B (ko)
WO (1) WO2014035710A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9158550B2 (en) * 2011-06-16 2015-10-13 Vmware, Inc. Caching based operating system installation
US9952879B2 (en) 2012-08-30 2018-04-24 Microsoft Technology Licensing, Llc Application pre-layout in byte-addressable persistent random access memory
CN104572155A (zh) * 2013-10-24 2015-04-29 鸿富锦精密工业(武汉)有限公司 计算机升级控制系统及方法
US10372463B1 (en) * 2013-11-27 2019-08-06 EMC IP Holding Company LLC Provisioning a computerized device with an operating system
IN2014CH00532A (ko) * 2014-02-05 2015-08-07 Infosys Ltd
WO2015167593A1 (en) * 2014-04-28 2015-11-05 Hewlett-Packard Development Company, L.P. Improving startup time of managed code
JP6379881B2 (ja) * 2014-09-03 2018-08-29 富士ゼロックス株式会社 情報処理装置及びプログラム
US20170068304A1 (en) * 2015-09-09 2017-03-09 Mediatek Inc. Low-power memory-access method and associated apparatus
US10176028B2 (en) 2015-09-25 2019-01-08 International Business Machines Corporation Upgrading a kernel or kernel module with a configured persistent memory unused by the kernel
KR101890125B1 (ko) * 2016-12-01 2018-08-21 한국과학기술원 메모리 힙 영역 공격을 방어하기 위한 메모리 정렬 랜덤화 방법
US10783252B2 (en) * 2017-08-23 2020-09-22 Qualcomm Incorporated System and method for booting within a heterogeneous memory environment
EP3803587A1 (en) 2018-05-29 2021-04-14 Telefonaktiebolaget LM Ericsson (publ) Improved performance of function as a service
US10884720B2 (en) * 2018-10-04 2021-01-05 Microsoft Technology Licensing, Llc Memory ordering annotations for binary emulation

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5815718A (en) 1996-05-30 1998-09-29 Sun Microsystems, Inc. Method and system for loading classes in read-only memory
KR970076168A (ko) * 1996-05-31 1997-12-12 김광호 고속 부팅 장치를 갖는 컴퓨터 시스템
CA2267477C (en) 1999-03-30 2003-10-14 Object Technology International Inc. Packaging memory image files
US6574747B2 (en) * 2000-06-02 2003-06-03 Microsoft Corporation Extensible execute in place (XIP) architecture and related methods
US7080373B2 (en) * 2001-03-07 2006-07-18 Freescale Semiconductor, Inc. Method and device for creating and using pre-internalized program files
US7051323B2 (en) * 2002-10-08 2006-05-23 Sun Microsystems, Inc. Method and apparatus for initializing romized system classes at virtual machine build time
KR100493884B1 (ko) * 2003-01-09 2005-06-10 삼성전자주식회사 시리얼 플래시 메모리에서의 현지 실행을 위한 제어 장치및 그 방법, 이를 이용한 플래시 메모리 칩
US7350186B2 (en) 2003-03-10 2008-03-25 International Business Machines Corporation Methods and apparatus for managing computing deployment in presence of variable workload
TWI220469B (en) * 2003-03-25 2004-08-21 Icp Electronics Inc Automatic booting system and method thereof
JP2005011120A (ja) * 2003-06-19 2005-01-13 Sony Corp 情報処理方法及び装置
KR100562906B1 (ko) * 2003-10-08 2006-03-21 삼성전자주식회사 시리얼 플래시 메모리에서의 xip를 위한 우선순위기반의 플래시 메모리 제어 장치 및 이를 이용한 메모리관리 방법, 이에 따른 플래시 메모리 칩
US7159091B1 (en) * 2003-12-31 2007-01-02 Intel Corporation Dynamic relocation of execute in place applications
KR20060031192A (ko) * 2004-10-07 2006-04-12 주식회사 팬택앤큐리텔 고속 부팅이 가능한 임베디드 시스템 및 그 방법
JP2006309338A (ja) * 2005-04-26 2006-11-09 Toshiba Corp データ変換器モジュール
US8078910B1 (en) 2008-12-15 2011-12-13 Open Invention Network, Llc Method and system for providing coordinated checkpointing to a group of independent computer applications
US7409537B2 (en) 2005-10-06 2008-08-05 Microsoft Corporation Fast booting an operating system from an off state
US7653794B2 (en) 2006-05-08 2010-01-26 Microsoft Corporation Converting physical machines to virtual machines
US7707185B1 (en) 2006-10-19 2010-04-27 Vmware, Inc. Accessing virtual data storage units to offload operations from a computer system hosting a virtual machine to an offload server
US8185778B2 (en) * 2008-04-15 2012-05-22 SMART Storage Systems, Inc. Flash management using separate metadata storage
US9823992B2 (en) 2008-06-20 2017-11-21 Vmware, Inc. Decoupling dynamic program analysis from execution in virtual environments
US8499297B2 (en) 2008-10-28 2013-07-30 Vmware, Inc. Low overhead fault tolerance through hybrid checkpointing and replay
US8448219B2 (en) 2009-04-23 2013-05-21 Novell, Inc. Securely hosting workloads in virtual computing environments
US8566944B2 (en) * 2010-04-27 2013-10-22 Microsoft Corporation Malware investigation by analyzing computer memory
US8891319B2 (en) * 2010-11-30 2014-11-18 Micron Technology, Inc. Verify or read pulse for phase change memory and switch
DE112011106060T5 (de) * 2011-12-28 2014-12-04 Intel Corp. Verfahren und Vorrichtung zum Verteilen von Code- und Datenspeicherungen zwischen flüchtigem und nichtflüchtigem Speicher

Also Published As

Publication number Publication date
JP2015530662A (ja) 2015-10-15
EP2891059A1 (en) 2015-07-08
EP2891059B1 (en) 2020-10-07
WO2014035710A1 (en) 2014-03-06
CN104583948A (zh) 2015-04-29
KR20150052107A (ko) 2015-05-13
CN104583948B (zh) 2017-12-22
US9740500B2 (en) 2017-08-22
US20140068240A1 (en) 2014-03-06
JP6259459B2 (ja) 2018-01-10

Similar Documents

Publication Publication Date Title
KR102136906B1 (ko) Bpram을 이용한 운영체제의 레이아웃 및 실행
KR102084816B1 (ko) Bpram을 사용한 소프트웨어 애플리케이션들의 레이아웃 및 실행
US10452404B2 (en) Optimized UEFI reboot process
JP6018590B2 (ja) ライブラリーオペレーティングシステムによるアプリケーションの互換性
JP5649184B2 (ja) ブート・ブロックの再配置によって複数のソフトウェア・イメージを管理するための方法、コンピュータ・プログラムおよびシステム
US7797507B2 (en) Virtual machine system and operating method thereof
US20080209198A1 (en) Boot Acceleration For Computer Systems
EP1316887A2 (en) System and method for dynamically patching code
US10725770B2 (en) Hot-swapping operating systems using inter-partition application migration
WO2013088818A1 (ja) 仮想計算機システム、仮想化機構、及びデータ管理方法
KR20130068630A (ko) 임베디드 디바이스의 초기화 방법 및 장치
US9361124B2 (en) Computer system and startup method
Clerc et al. Os streaming deployment
Barnes Configuring WSL 2
CN117873580A (zh) 操作系统切换方法、芯片及设备
CN118113355A (zh) 操作系统切换方法、芯片及设备
CN115390876A (zh) 虚拟机qemu程序热升级方法、装置和设备
JP2000137580A (ja) 未使用hdセクタを利用して論理hdを実現させるデバイスドライバ

Legal Events

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