KR20080112269A - 자원 제한 장치, 자원 제한 장치용 가상 실행 시스템, 및 가상 실행 시스템의 성능 향상 방법 - Google Patents

자원 제한 장치, 자원 제한 장치용 가상 실행 시스템, 및 가상 실행 시스템의 성능 향상 방법 Download PDF

Info

Publication number
KR20080112269A
KR20080112269A KR1020087024380A KR20087024380A KR20080112269A KR 20080112269 A KR20080112269 A KR 20080112269A KR 1020087024380 A KR1020087024380 A KR 1020087024380A KR 20087024380 A KR20087024380 A KR 20087024380A KR 20080112269 A KR20080112269 A KR 20080112269A
Authority
KR
South Korea
Prior art keywords
virtual execution
operating system
execution system
application program
information
Prior art date
Application number
KR1020087024380A
Other languages
English (en)
Other versions
KR101366402B1 (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 KR20080112269A publication Critical patent/KR20080112269A/ko
Application granted granted Critical
Publication of KR101366402B1 publication Critical patent/KR101366402B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)
  • Electrophonic Musical Instruments (AREA)
  • Stereophonic System (AREA)
  • Studio Devices (AREA)

Abstract

자원 제한 장치에서 사용하도록 구성된 가상 실행 시스템이 개시된다. 자원 제한 장치는 운영 체제 및 명령들을 포함하는 애플리케이션 프로그램을 포함한다. 가상 실행 시스템은 애플리케이션 프로그램을 실행하고 애플리케이션 프로그램의 운영 체제와의 호환을 돕도록 구성된 실행 엔진을 포함한다. 비함수적 양태들은 명령들 및 운영 체제를 특성화한다. 실행 엔진은 비함수적 양태들에 액세스하며, 비함수적 양태들에 기초하여 애플리케이션 프로그램의 실행 동안 개량들을 구현한다.
자원 제한 장치, 가상 실행 시스템, 운영 체제, 애플리케이션 프로그램, 실행 엔진

Description

자원 제한 장치, 자원 제한 장치용 가상 실행 시스템, 및 가상 실행 시스템의 성능 향상 방법{VIRTUAL EXECUTION SYSTEM FOR RESOURCE-CONSTRAINED DEVICES}
본 발명은 일반적으로 가상 실행 시스템에 관한 것이다. 구체적으로, 본 발명은 자원 제한 장치에서의 가상 실행 시스템의 사용에 관한 것이다.
자원 제한 장치들은 통상적으로 컴퓨팅 자원들 및 메모리에 대해 데스크톱 컴퓨터보다 훨씬 큰 제한을 갖는 전자 장치들이다. 자원 제한 장치들의 예는 이동 전화, 개인 휴대 단말기, 핸드헬드 컴퓨터, 게임 콘솔, 셋톱 박스, 위성 기반 측위 장치, 예를 들어 GPS(global positioning system) 장치, 및 센서 노드를 포함한다. 자원 제한 장치들은 장치 내의 가상 실행 환경을 돕는 가상 실행 시스템들(실행시간 환경들이라고도 함)에게 흥미로운 대상이다. 가상 실행 시스템들은 소프트웨어로, 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있는 프로그램 실행 시스템들로서, 이들은 하이 레벨 애플리케이션 프로그램들이 장치의 운영 체제 또는 하드웨어와의 호환성에 관계없이 실행될 수 있게 한다. 따라서, 가상 실행 시스템은 장치의 운영 체제 또는 하드웨어로부터 독립된 애플리케이션 프로그램을 제공한다.
자원 제한 장치에서 가상 실행 시스템을 사용하는 주요 이유는 자원 제한 장치 상에서의 고유 프로그래밍, 즉 장치의 내부 파일 포맷을 사용하는 프로그래밍이 통상적으로 어렵다는 것이다. 자원 제한 장치 상에서의 고유 프로그래밍이 어려운 이유는 자원 제한 장치 상에 제공되는 고유 프로그래밍 모델들(애플리케이션 프로그램 인터페이스(API)들, 즉 애플리케이션들을 생성하는 데 사용되는 루틴들, 프로토콜들 및 도구들, 및 애플리케이션들의 작성에 이용 가능한 프로그래밍 개념들을 포함함) 및 프로그래밍 언어들이 종종 이해하기 어렵고 애플리케이션 프로그래머들에게 간단한 인터페이스들을 제공하지 못하기 때문이다.
실행시간 기술들, 즉 애플리케이션 프로그램의 실행 동안 동작하고 가상 실행 시스템을 돕는 기술들은 자원 제한 장치 상에서 애플리케이션 프로그램을 구현하는 프로세스를 크게 개선하는 잠재력을 갖는다. 실행시간 기술들의 예는 캘리포니아 산타클라라의 선 마이크로시스템즈사에 의해 생성된 JAVA VIRTUAL MACHINE("JVM"), 및 국제 표준인 COMMON LANGUAGE INFRASTRUCTURE("CLI")를 포함한다. COMMON LANGUAGE RUNTIME("CLR")은 워싱턴 레드먼드의 마이크로소프트사에 의해 생성된 CLI의 일 구현이다. 실행시간 기술들은 애플리케이션 프로그램이 임의의 다양한 하이 레벨 언어로 작성되고 상이한 시스템 환경들에서도 실행되는 것을 가능하게 한다. 애플리케이션 개발자는 실행시간 기술들에 따르는 하이 레벨 언어들을 중간 언어, 예를 들어 COMMON INTERMEDIATE LANGUAGE("CIL") 또는 JAVA BYTECODE로 컴파일한다. 이어서, 중간 언어는 프로그램 실행 동안 장치의 아키텍처에 특유한 고유 코드로 변환된다.
가상 실행 시스템들은 애플리케이션 프로그래머의 관점에서는 매우 바람직하지만, 자원 제한 장치 상에서의 실행시간 기술의 이용의 주요 결점은 장치의 성능 저하이다. 이러한 성능 저하의 이유들 중 하나는 가상 실행 시스템의 실행시간 기술에 의해 지원되는 프로그래밍 모델과 자원 제한 장치의 운영 체제 및 하드웨어와 연관되는 프로그래밍 모델 사이에 갭이 존재한다는 것이다. 이러한 성능 저하는 자원 제한 장치에 바람직하지 않으며, 자원 제한 장치를 사용하지 못하게 할 수 있다.
자원 제한 장치에서의 가상 실행 시스템의 사용과 연관되는 또 하나의 문제는 자원 제한 장치들의 운영 체제들이 상이한 성능들을 제공하며 데스크톱 시스템들에 포함된 운영 체제들과 다른 제한들을 갖는다는 것이다. 따라서, 가상 실행 시스템에 의해 제공되는 프로그래밍 모델들을 자원 제한 장치들 내의 운영 체제들의 API들 및 실행시간 구조들에 맵핑하는 것을 어려운 과제이다. 동시에, 애플리케이션 프로그래머에게는 기반 운영 체제의 추가 능력들을 이용하는 것이 바람직하다.
<발명의 요약>
이 요약은 아래의 상세한 설명에서 더 설명되는 개념들의 선택을 간략화된 형태로 소개하기 위해 제공된다. 이 요약은 청구 발명의 주요 특징들 또는 본질적인 특징들을 식별하거나, 청구 발명의 범위 결정을 위한 보조물로서 사용하고자 하는 의도는 없다.
상세한 설명에서 더 상세히 설명되는 실시예들은 가상 실행 시스템, 자원 제한 장치, 및 자원 제한 장치에서 성능을 향상시키기 위한 관련 방법을 포함한다. 일 실시예는 자원 제한 장치에서 사용하도록 구성된 가상 실행 시스템이다. 자원 제한 장치는 운영 체제 및 명령들을 포함하는 애플리케이션 프로그램을 포함한다. 가상 실행 시스템은 애플리케이션 프로그램을 실행하고 애플리케이션 프로그램의 운영 체제와의 호환을 돕도록 구성된 실행 엔진을 포함한다. 비함수적 양태들은 명령들 및 운영 체제를 특성화한다. 실행 엔진은 비함수적 양태들에 액세스하며, 비함수적 양태들에 기초하여 애플리케이션 프로그램의 실행 동안 개량들을 구현한다.
이제, 본 발명의 실시예들은 첨부 도면들을 참조하여 예시적으로 설명된다.
도 1은 자원 제한 장치에 포함된 일반적인 계층 구조의 블록도로서, 일반 계층 구조는 애플리케이션 프로그램, 가상 실행 시스템, 플랫폼 적응 계층, 운영 체제 및 하드웨어를 포함한다.
도 2는 도 1의 가상 실행 시스템 및/또는 플랫폼 적응 계층에 의해 행해지는 단계들을 나타내는 예시적인 알고리즘의 흐름도이다.
도 3은 소켓 함수에 대한 호출들의 플랫폼 적응 계층 구현들의 블록도이다.
도 4는 애플리케이션 스레드들이 활성 개체들로서 표현되는 소켓 함수에 대한 호출들의 제1 플랫폼 적응 계층 구현의 블록도이다.
도 5는 애플리케이션 스레드들이 활성 개체들로서 표현되는 소켓 함수에 대한 호출들의 제2 플랫폼 적응 계층 구현의 블록도이다.
도 6은 추가 플랫폼 적응 계층 스레드를 갖거나 갖지 않는 SYMBIAN 콘솔 상의 인쇄 명령문의 성능을 나타내는 그래프이다.
도 7은 중간 플랫폼 적응 계층 스레드를 갖거나 갖지 않는 낮은 복잡성의 동작의 성능을 나타내는 그래프이다.
도 8은 에뮬레이터 상에서의 순차화된 플랫폼 적응 계층 함수들의 실행의 성능에 대한 애플리케이션 스레드들의 수의 영향을 나타내는 그래프이다.
도 9는 자원 제한 장치 상에서의 순차화된 플랫폼 적응 계층 함수들의 실행의 성능에 대한 애플리케이션 스레드들의 수의 영향을 나타내는 그래프이다.
도 10은 자원 제한 장치의 성능에 대한 관리 대 비관리 스레드들의 사용의 영향을 나타내는 그래프이다.
도 1은 예시적인 자원 제한 장치의 소프트웨어 및 하드웨어 계층 구조 아키텍처(10)의 블록도이다. 장치(12) 내에는, 명령들(16)을 포함하고 제1 컴퓨터 판독가능 매체(18)에 저장되는 애플리케이션 프로그램(14); 클래스 라이브러리들(22) 및 실행 엔진(24)을 포함하는 가상 실행 시스템(20); 플랫폼 적응 계층("PAL")(26); 명확히 정의된 인터페이스, 한 세트의 API들 및 내부 데이터 구조들(30)(내부 데이터 구조들은 실행시간 동안 "실행시간 구조들"로서 참조됨)을 제공함으로써 기반 서비스들의 이용을 노출, 즉 제공, 지원 및/또는 허가하고 제2 컴퓨터 판독가능 매체(32)에 저장되는 운영 체제(28); 및 하드웨어(34), 예를 들어 자원 제한 장치의 마이크로프로세서, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM) 및 블루투스 하드웨어 컴포넌트가 도시되어 있다. 따라서, 운영 체제가 한 세트의 API들 및 내부 데이터 구조들을 노출한다고 얘기될 때, 이는 운영 체제가 애플리케이션 프로그램들, 애플리케이션 프로그래머들 및/또는 가상 실행 시스템에 의해 사용될 수 있는 한 세트의 API들 및 내부 데이터 구조들을 갖는다는 것을 의미한다.
PAL(26)은 가상 실행 시스템(20)과 인터페이스하며, 운영 체제(28) 및 하드웨어(34)와 직접 통신한다. PAL은 기반 운영 체제 서비스들의 가상 실행 시스템의 프로그래밍 모델에 대한 적응을 처리하는 컴포넌트의 논리적 추상 개념이다. 운영 체제는 하드웨어와 장치(12) 상에서 실행되는 소프트웨어 사이의 인터페이스로서 기능한다. 각각의 컴퓨터 판독가능 매체(18, 32)는 예를 들어 RAM, ROM, EEPROM, 플래시 메모리, CD-ROM, DVD, 광 디스크, 자기 카세트, 자기 테이프, 자기 디스크 드라이브, 또는 정보를 저장하는 데 사용할 수 있는 임의의 다른 매체일 수 있다. 또한, 제1 컴퓨터 판독가능 매체(18) 및 제2 컴퓨터 판독가능 매체(32)는 단일 컴퓨터 판독가능 매체 내에 포함될 수 있다.
클래스 라이브러리들(22)은 실행 엔진(24)에 의해 사용되는 데이터를 포함한다. 실행 엔진은 애플리케이션 프로그램(14)을 실행하고 애플리케이션 프로그램의 운영 체제(28)와의 호환을 돕도록 구성된다. 실행 엔진은 중간 언어 코드를 판독하고, 클래스 라이브러리들로부터의 데이터를 사용하며, 이 정보가 장치의 운영 체제 및 하드웨어(34)에 의해 사용될 수 있도록 정보를 변환한다. PAL은 애플리케이션 프로그램으로부터의 명령들을 기반 운영 체제 내의 API들 및 실행시간 구조들(30)로 맵핑하도록 구성된다. 도 1은 예시적이며, 자원 제한 장치(12)의 고유 특성에 따라 다양한 하드웨어 및/또는 소프트웨어 컴포넌트가 도 1에 추가되거나, 결합되거나, 제거될 수 있다.
가상 실행 시스템(20)에 의해 지원되는 프로그래밍 모델과 자원 제한 장치(12)에 의해 지원되는 프로그래밍 모델 간의 정보의 갭을 좁히는 것이 중요하다. 후술하는 실시예들은 가상 실행 시스템의 프로그래밍 모델에 의한 자원 제한 장치의 프로그래밍 모델의 인식을 향상시킴으로써 이러한 정보 갭을 좁힌다. 구체적으로, 실시예들은 가상 실행 시스템, 특히 실행 엔진(24)이 PAL(26)과 협력하여, 가상 실행 시스템에 의해 사용되는 중간 언어로부터의 명령들을 기반 운영 체제(28)의 적절한 API들 및 실행시간 구조들(30)로 맵핑하는 것을 보다 용이하게 한다. 이러한 맵핑들의 예는 가상 실행 시스템에서 지원되는 스레딩 모델의 자원 제한 장치의 운영 체제에 의해 노출되는 스레딩 모델로의 맵핑, 및 기반 운영 체제의 보안 제한들을 효과적으로 고려하도록 하기 위한 가상 실행 시스템에서 지원되는 파일 액세스 메소드의 맵핑을 포함한다.
성능 향상은 가상 실행 시스템, 및 장치의 운영 체제(28)에 의해 실행될 애플리케이션 프로그램의 명령들(16)과 관련된 비함수적 양태들에 대한 가상 실행 시스템(20), 및 특히 실행 엔진(24)의 인식을 향상시킴으로써 이루어진다. 이것은 애플리케이션 프로그램 명령들을 비함수적 양태들을 기술하는 메타데이터로 증대시킴으로써 이루어진다. 이러한 비함수적 양태들은 예를 들어 적시성, 보안, 자원 수요, 네트워크 수명, 실시간 양태, 에너지 소비 및/또는 실행 모드에 대한 정보를 포함할 수 있다. 비함수적 양태들은 애플리케이션 프로그램(14)의 요구 특성들 및 장치의 기반 운영 체제의 특성들을 고려하여 성능을 어떻게 최적화할 것인지에 대한 추가 지식을 가상 실행 시스템에 제공한다. 특히, 비함수적 양태들은 가상 실행 시스템에 의해 장치의 운영 체제 내의 적절한 API들 및 실행시간 구조들(30)을 발견하는 데 사용된다.
다음은 가상 실행 시스템(20)에 의해 행해지는 예시적인 단계들이다. 첫째, 자원 제한 장치(12)의 운영 체제(28)에 의해 제공되는 API들 및 실행시간 구조들(30)이 분석된다. 둘째, 가상 실행 시스템의 프로그래밍 모델, 예를 들어 API들 및 실행시간 구조들을 기반 운영 체제로 맵핑할 메소드들이 발견된다. 셋째, 이러한 상이한 메소드들이 PAL(26)에서 구현된다(옵션으로, 실행 엔진(24)에 대한 추가가 필요할 수 있다). 넷째, 실행 엔진은 상이한 구현들 사이에서 스위칭하는 것이 허가된다. 다섯째, 비함수적 양태들을 기술하는 메타데이터가 명령들에 추가된다. 메타데이터의 추가는 프로그래머에 의해 명령 레벨에서 수행될 수 있다. 또한, 메타데이터의 추가는 프로파일들에 기초하여 특정 유형의 모든 명령에 대해 자동으로 수행될 수 있다. 여섯째, 실행 엔진은 비함수적 양태들을 이용하여, 운영 체제로의 향상된 맵핑을 제공하거나, 가상 실행 시스템의 프로그래밍 모델에 초기에 포함되지 않은 운영 체제 특징들, 예를 들어 운영 체제 내의 소켓들/파일들에 액세스하기 위한 보안 문제들을 이용할 수 있다.
PAL(26)과 협력하여 가상 실행 시스템(20)에 의해 행해지는 단계들을 나타내는 예시적인 알고리즘이 도 2에 도시되어 있다. 이 알고리즘은 컴퓨터 판독가능 매체(18, 32)에 저장되는 컴퓨터 판독가능 명령들로 구현될 수 있다. 알고리즘의 개시(38) 후, 다음 단계(40)는 가상 실행 시스템이 애플리케이션 프로그램의 명령들(16)의 비함수적 양태들 및 운영 체제(28)의 비함수적 양태들을 식별하는 것이다. 단계 42에서, 비함수적 양태들은 가상 실행 시스템에 제공되며, 단계 44에서 가상 실행 시스템은 애플리케이션 프로그램(14)의 실행 동안 비함수적 양태들을 이용한다. 이어서, 단계 46에서, 가상 실행 시스템은 PAL과 협력하여 운영 체제 내의 API들 및 실행시간 구조들(30)을 식별한다. 단계 48에서, 가상 실행 시스템은 애플리케이션 프로그램의 실행 동안 비함수적 양태들은 물론, API들 및 실행시간 구조들을 고려한다. 단계 50에서, PAL은 가상 실행 시스템과 협력하여 명령들을 API들 및 실행 시간 구조들로 맵핑한다. 알고리즘은 단계 52에서 종료된다.
가상 실행 시스템(20)에 의해 이용되는 비함수적 양태들은 가상 실행 시스템과 호환되는 소정 형태의 중간 언어로 인코딩되는 메타데이터를 이용하여 기술된다. 메타데이터가 주어지면, 가상 실행 시스템은 자원 제한 장치(12) 상에서의 실행시간 기술의 전개를 돕는 광범위한 최적화를 수행할 수 있다. 예를 들어, 함수를 실행할 때, 소정의 실시간 양태들이 중요한 경우, 가상 실행 시스템은 기반 운영 체제(28)의 능력에 기초하여 소정 명령들을 자동으로 우선 순위화할 수 있다. 또한, 보안 문제에 대한 정보가 성능 향상에 중요할 수 있다. 예를 들어, 보안 제한에 대한 추가 정보가 없을 경우, 최강의 보안 메커니즘들이 지원되어야 하며, 이는 성능 저하를 유발할 수 있다. 또한, 실행 모드들에 대한 정보, 예를 들어 함수가 기반 운영 체제 상의 비동기 함수 호출을 수반하는지의 여부에 관한 정보가 성능 향상에 적합한 API들 및 실행시간 구조들(30)을 찾는데 사용될 수 있다.
일 실시예에서, 자원 제한 장치(12) 내의 운영 체제(28)는 .NET 환경에서 실행되는 코드인 관리 코드(managed code)를 실행하도록 구성되는 API들 및 실행시간 구조들(30)을 포함한다. 관리 코드의 실행은 .NET 애플리케이션들이 실행되는 실행시간 환경인 CLR에 의해 제어된다. CLR은 .NET 애플리케이션과 기반 운영 체제 사이에 계층화된다. 실행 동안, CLR은 실행 엔진(24)을 중지시키고, 중간 언어로 인코딩된 정보, 예를 들어 메타데이터를 검색할 수 있다.
필요한 성능 향상을 허가하기 위해, 실행 엔진(24)에서 그리고 PAL(26)에서 최적화가 가능하도록 추가 정보가 관리 코드 내에 삽입된다. 이러한 추가 정보는 다양한 프로그래밍 메커니즘, 예를 들어 .NET 언어들이 동적 링크 라이브러리("DLL")들에서 비관리 함수들(unmanaged functions)을 호출하는 메커니즘인 호출 메커니즘("PInvoke")에 중요하다. 추가 정보는 관리 코드 라이브러리들에도 중요하다. 추가 데이터를 관리 코드 내에 삽입하기 위해, CLI는 확장형 메타데이터 모델을 지원한다.
일반적으로, 메타데이터는 CLI의 공통 유형 시스템("CTS")에서 유형들을 기술하는 데 사용된다. CTS는 실행시간 환경에서 데이터의 유형들이 어떻게 선언되고, 사용되고, 관리되는지를 정의하는 데 사용되는 사양이다. 메타데이터는 실행시간에 실행 엔진(24)에 의해 클래스들을 로딩하거나 실행시간 검사들을 수행하기 위해 액세스될 수 있다. 자원 제한 장치들(12) 상에서, 메타데이터는 가상 실행 시스템(20)이 PAL(26)과 함께 기반 운영 체제(28)의 API들 및 실행시간 구조들(30)을 고려하여 더 양호한 최적화를 수행할 수 있게 하는 데 사용된다. C#과 같은 CLI 프로그래밍 언어들에서, 속성들은 메타데이터를 예를 들어 데이터, 메소드, 클래스 및 인터페이스에 추가하기 위한 메커니즘이다. 커스텀 속성들의 사용에 대한 하나의 대안은 성능 향상을 허가하기 위해 PInvoke 메커니즘의 신택스(syntax)를 직접 확장하는 것인데, 이는 실행 엔진에 의해 액세스 가능한 메타데이터에도 영향을 줄 것이다.
PInvoke 메커니즘 및 다른 명령들(16)에 첨부되는 메타데이터의 종류는 실행 엔진(24)이 관리 코드 명령들을 기반 운영 체제(28)의 적절한 API들 및 실행시간 구조들(30)로 맵핑하기 위해 동적으로 최적화를 수행하는 것을 가능하게 한다. 첨부된 메타데이터는 가상 실행 시스템(20)에 의해 실행될 명령들의 비함수적 양태들을 기술한다. 예를 들어 표준 PInvoke 메커니즘을 고려하면, 메타데이터는 함수명, 함수 번호, 인수들의 유형, 호출 규약들, 및 데이터 마샬링과 같은 주로 함수적 양태들을 다룬다(ECMA 표준 ECMA-335의 섹션 15.5 참조). 여기서, PInvoke 메커니즘은 PAL에서 최적화를 허가하는 비함수적 양태들에 의해 확장된다. 이러한 비함수적 양태들의 예는 보안 제한들에 대한 정보, 함수 호출들의 부작용들에 대한 정보, 타이밍 문제들에 대한 정보, 및 실행 모드들, 예를 들어 함수가 비동기적인지에 관한 정보이다.
후술하는 3개 예에서의 구체적인 비함수적 양태들은 함수가 비동기 함수 호출로 맵핑되는지에 대한 정보, 보안 제한들에 대한 정보, 및 기반 운영 체제(28)의 특성들에 대한 정보를 제공한다. 3개 예에서는, 영국 런던의 Symbian사에 의해 제공되는 SYMBIAN 운영 체제에 대한 가상 실행 시스템(20)에서의 보안, 메모리 및 스레딩 문제들을 처리하기 위한 구체적인 기술들이 설명된다. 3개 예는 CLR의 SYMBIAN 운영 체제로의 포트, 즉 애플리케이션 프로그램(14)의 하나의 유형의 컴퓨터에서 다른 유형의 컴퓨터로의 이전을 구현한다. SYMBIAN 운영 체제는 데이터 인에이블드 이동 전화들, 예를 들어 인터넷에 액세스하도록 구성되는 이동 전화들에 대한 운영 체제이다. SYMBIAN 운영 체제는 CLR에 의해 제공되는 것과 다른 종류의 프로그래밍 모델을 제공하며, CLR/SYMBIAN 인터페이스는 실행시간 기술들의 자원 제한 장치들(12)로의 포팅과 연관되는 어려움들의 일부를 예시한다.
아래의 설명이 CLI에 따르는 가상 실행 시스템(20)에 초점을 맞출 것이지만, 본 명세서에 포함된 가르침은 상이한 실행시간 기술들, 예를 들어 JVM에 적용될 수 있으며, SYMBIAN 운영 체제가 아닌 다른 운영 체제들(28), 예를 들어 소형 센서 장치들 상에서 통상적으로 사용되는 TINYOS에 적용될 수 있다.
예 1: SYMBIAN 스마트폰에 대한 보안 제한
가상 실행 시스템(20)을 자원 제한 장치(12)로 포팅할 때, 장치의 기반 운영 체제(28)의 추가 보안 메커니즘들을 유지하는 것이 바람직하다. 이것은 보안 메커니즘들이 가상 실행 시스템에 의해 지원되는 프로그래밍 언어들(14)로부터 직접 액세스될 수 없는 경우에도 그러하다. 추가 보안 제한들은 종종 신뢰성에 대한 특별 요구들 및 장치들에 대한 자원 제한들의 결과이다. 이 예에서는, 현재 스마트폰들에 대한 주요 운영 체제인 SYMBIAN 운영 체제에서의 보안 제한이 설명된다. 특히, 이 예에서 보안 제한은 가상 실행 시스템에 통합되며, 애플리케이션 프로그래머들이 액세스할 수 있게 된다.
도 3을 참조하면, 이 섹션에서 설명되는 예시적인 SYMBIAN 보안 제한은 자원들에 대한 액세스를 제한하며, 자원들에 액세스하기 위해서는 명시적인 접속 설정을 요구하므로, 신뢰성을 향상시킬 것으로 기대된다. SYMBIAN 운영 체제(28)는 운영 체제의 로컬 서비스 제공자들인 한 세트의 소위 서버들(54)을 제공한다. 서버들은 소정의 자원들에 액세스하는 데 사용된다. 파일 시스템 함수들에 액세스하기 위한 서버들, 예를 들어 비트맵들 또는 윈도우들을 처리하고, 쇼트 메시지 서비스("SMS") 또는 멀티미디어 메시지 서비스("MMS")와 같은 메시지들을 전송하고, 소켓 인터페이스를 통해 네트워크에 액세스하고, 심지어 메시지들을 인쇄하기 위한 서버들이 존재한다. 일반적으로, 간단한 수학적 계산을 제외한 거의 모든 것에 대한 서버가 존재한다. 서버들은 통상적으로 SYMBIAN의 협력적 멀티태스킹 모델을 돕기 위해 비동기 함수들을 제공한다.
각각의 서버(54)는 상이한 스레드(56) 또는 프로세스 상에서 실행되며, 따라서 개별 애플리케이션 프로그램(14)으로부터 분리된다. 클라이언트와 서버 간의 통신은 애플리케이션 스레드(58)와 서버 스레드 사이에 존재하도록 지정되는 세션들을 통해 이루어진다. 결과되는 추가 액세스 제한 또는 보안 제한은 세션을 생성한 스레드만이 이 세션을 이용하는 것이 허가된다는 것이다. 이것은 임의의 세션에서 보안이 실시될 수 있고 보안이 장치(12)의 건전성(robustness)에 기여할 수 있는 것을 보장한다.
가상 실행 시스템(20)은 통상적으로, 항상 바람직하지만은 않을 수 있는 이러한 추가 보안 보호를 회피하기 위한 메커니즘을 구현한다. 대신에, 가상 실행 시스템은 건전성 및 성능을 향상시키기 위해 자원 제한 장치(12)의 특별 제한들 및 자원 제한들을 알고 존중해야 할 것으로 생각된다.
도 3은 SYMBIAN의 보안 보호를 회피하기 위한 메커니즘을 도시하고(도 3의 우측 부분 60 참조), 이를 대표적인 데스크톱 운영 체제(28) 상의 PAL 구현과 비교하는(도 3의 좌측 62 참조) 블록도이다. 도 3의 좌측에서 볼 수 있듯이, 관리 프레임워크(managed framework)에서의 소켓 함수의 호출이 기반 운영 체제의 소켓 함수로 직접 맵핑될 수 있다. 기반 SYMBIAN 운영 체제에 대해, 상이한 스레드들(64)로부터 호출되는 send() 연산은 보안 제한으로 인해 문제가 된다. 구체적으로, 서버(54), 이 사례에서는 SYMBIAN 운영 체제("OS") 소켓 서버에 대한 접속을 개방하는 스레드만이 그 서버와 대화할 수 있다. send()가 2개의 상이한 스레드로부터 호출되는 경우, 2개의 상이한 스레드는 SYMBIAN 소켓 함수로 직접 맵핑된다. 이것은 에러를 유발할 것이며, 통상적인 사용 동안 스마트폰의 고장을 유발할 수 있다.
다수의 스레드(64)가 소켓 서버(54)에 액세스하는 것을 허가하기 위하여, PAL(26)은 새로운 스레드, 즉 SYMBIAN 소켓 서버에 대한 접속을 설정하는 도 3에 도시된 PAL 소켓 스레드(66)를 도입해야 한다. 이제 상이한 스레드들이 .NET send() 함수를 호출하는 경우, 요청들은 PAL 소켓 스레드에 의해 실행을 위해 스케쥴링되고 언젠가는 호출된다. 이러한 구성을 이용함으로써, PAL 소켓 스레드만이 소켓 서버에 액세스하며, 보안 보호가 회피된다. 이러한 보안 보호의 회피는 소정의 사례들에서는 수용 가능하지만, 일반적으로 이러한 접근법은 기반 운영 체제(28)의 보호들을 무효화하므로 문제가 된다. 다음은 이러한 문제를 다루기 위한 여러 상이한 접근법들이다.
접근법 1:
전술한 메커니즘은 상이한 스레드들(64)이 서버(54)와의 단일 세션을 공유하게 하는 데 사용될 수 있다. 이러한 단일 서버 세션은 상이한 애플리케이션 스레드들로부터의 요청들을 순서화하는 PAL(26) 내의 추가 스레드(66)에 의해 설정된다. 이러한 접근법의 이점은 단일 서버 세션이 상이한 애플리케이션 스레드들에 의해 재사용될 수 있다는 점이다. 이러한 접근법의 단점은 상이한 종류의 서비스 제공자들에 대해 재사용될 수 있는 추가 스레드의 희생, 스케쥴링 오버헤드 및 SYMBIAN의 보안 메커니즘들의 약화가 발생한다는 점이다.
접근법 2:
아마도 가장 간단한 솔루션은 서버(54)와의 통신을 필요로 하는 각각의 PAL 함수에서 서버 세션, 즉 서비스 제공자에 대한 접속을 생성하는 것이다. 세션 설정 후, 함수가 실행되며, 그 후 서버 세션이 종료된다. 이 접근법과 관련된 단점은 거의 모든 PAL 함수에서 필요한 접속 설정/셧다운에 의해 발생하는 성능 저하이다.
접근법 3:
또 하나의 접근법은 특정 서버(54)에 의해 제공되는 서비스를 이용하는 모든 애플리케이션 스레드(58)에 대해 개별 서버 세션을 설정하는 것이다. 이것은, 2개의 스레드(64)가 서버를 사용하는 경우, 양 스레드가 2개의 상이한 서버 세션을 설정할 수 있고, 하나의 스레드에 의해 설정된 서버 세션이 그 하나의 스레드 내로부터 호출된 함수들에 의해 사용된다는 것을 의미한다. 이러한 접근법의 이점은, 이 접근법이 SYMBIAN 운영 체제(28)의 액세스 제한을 존중하며, 하나의 서버 세션이 사용되고 있는 경우에 그 스레드가 애플리케이션 스레드인 경우에도 항상 동일 스레드로부터 세션이 발생한다는 점이다. 또한, 이러한 접근법을 이용하여 함수를 호출하는 것은 요청들을 순차화하는 개별 PAL 스레드를 필요로 하지 않으므로 더 빠르다. 이것은 PAL 내의 추가 스레드와의 스레드 동기화가 필요하지 않다는 것을 의미한다. 이 접근법의 단점은 이 접근법이 제1 접근법보다 많은 서버 세션을 유발할 수 있다는 것인데, 이는 서버 세션들이 상이한 애플리케이션 스레드들 사이에 공유되지 않기 때문이다.
위의 접근법들 모두는 가능한 애플리케이션 영역을 갖는다. 그러나, 자원 제한 장치(12)의 자원 제한으로 인해, 애플리케이션 프로그래머가 어떤 특정 접근법을 이용할지를 결정하는 것이 필요하거나 바람직할 수 있다. 이것은 메타데이터를 이용하여 수행될 수 있다. 예를 들어, 제3 접근법이 바람직한 경우, 스레드 생성 함수에 대한 커스텀 속성이 도입되는데, 이는 프로그래머가 추가 서버 세션이 생성될 것을 지정하는 것을 가능하게 한다. 이러한 추가 서버 세션은 이 스레드(64) 내에서 호출된 함수들에 의해 사용된다. 대안으로, 어느 접근법을 취할지에 관한 결정은 어셈블리 레벨에서 수행될 수도 있는데, 이는 메타데이터 속성이 어셈블리에서 생성된 모든 스레드에 대해 어떤 접근법을 이용할지를 지정할 수 있음을 의미한다. 이를 행함으로써, 애플리케이션 고유 메타데이터에 기초하여 가상 실행 시스템(20)에서 최적화가 구현될 수 있다.
예 2: PAL API들 및 실행시간 구조들의 애플리케이션 고유 적응
자원 제한 장치(12)의 자원 제한에 대처하기 위한 기존 접근법들 중 하나는 특정 애플리케이션 프로그램(14)에 따라 관리 어셈블리들, 즉 코드 모듈들이 관리 코드(관리 코드는 가상 실행 시스템(20)에서 실행될 코드이다)로 구성되는 어셈블리들을 적응시키는 것이다. 즉, 특정 애플리케이션 프로그램 및 한 세트의 관리 코드 라이브러리들이 주어질 때, 관리 코드 라이브러리들의 어떤 서브세트가 특정 애플리케이션 프로그램에 의해 요구되는지를 알 수 있다. 자원 제한 장치의 메모리 제한이 엄격할 수 있으므로, 절대적으로 필요한 관리 코드 라이브러리들의 서브세트만이 특정 애플리케이션 프로그램과 함께 자원 제한 장치 상에 전개된다. 이러한 접근법은 필요한 메모리의 양을 줄이고, 성능을 크게 향상시킬 수 있다. 그러나, 이 접근법은 가상 실행 시스템의 비관리 코드 부분이 아니라 관리 코드에만 영향을 준다.
가능하게 되는 최적화들의 간단한 예는 실행 엔진(24)의 초기화 및 시동 단계에 영향을 준다. 이전 섹션으로부터 예 1을 고려하면, 서버(54)에 대한 세션이 언제 생성되는가 하는 것이 중요한 문제이다. 아래의 두 가지 접근법이 가능하다. 첫째, 모든 서버, 예를 들어 파일 서버, 네트워킹 서버, 메시징 서버, 및 비트맵 서버에 대한 서버 세션들이 필요한 스레드들(64) 및 API들 및 실행시간 구조들(30)과 함께 시동 동안 생성된다. 이러한 첫째 접근법의 이점은 필요한 API들 및 실행시간 구조들 모두가 PAL 함수에 의해 요구될 때마다 적소에 있다는 점이다. 이 접근법의 단점은 그러한 구조들의 대부분이 사용되지 않을 수 있으며, 따라서 돈을 낭비할 수 있다는 점이다. 제2 접근법은 서버 세션들 및 대응 API들 및 실행시간 구조들이 실행시간 동안 생성되는 것이다. 예 1의 셋째 접근법에서, 이것은 스레드들이 생성될 때 발생할 수 있다. 아니면, 서버 세션들은 소정의 PAL 함수들이 실제로 사용될 때에만 설정될 수 있다. 예를 들어, 파일 함수에 대한 첫 번째 호출은 SYMBIAN 파일 서버에 대한 접속을 설정할 것이다.
또한, 이 예의 양 접근법이 이용될 수 있다. 일반적으로는 우수하지만, 제2 접근법은 특정 서버(54)에 액세스하는 함수를 호출하는 최초 시기가 훨씬 더 많은 실행 시간을 초래할 수 있다는 단점을 갖는다. 이것은 애플리케이션 프로그램(14)이 자원 제한 장치(12)에서 일반적이 아닌 소정의 실시간 제한들을 갖는 경우에 문제가 될 수 있다.
API들 및 실행시간 구조들(30)의 초기화는 실행될 애플리케이션 프로그램(14) 및 관리 라이브러리들 내의 대응 메타데이터의 정적 분석을 수행함으로써 스트림라인화될 수 있다. 정적 분석은 애플리케이션 프로그램의 실행 없이 애플리케이션 프로그램 상에서 수행되는 분석이다. 예를 들어, 정적 분석은 애플리케이션 프로그램이 파일 함수들에 액세스하지 않음을 보일 수 있는데, 이 경우에는 서버(54)와의 통신을 위해 필요한 서버 세션 및 스레드(64)를 설정할 필요가 없을 것이다. 관리 코드 라이브러리들 내의 메타데이터는 또한, 어느 관리 함수들이(PInvoke 메커니즘을 통해) 소정 서버와 대화하는 SYMBIAN 함수들을 호출하는지를 지정하는 데 필요하다. 이러한 주석은 가상 실행 시스템(20)에서의 많은 유용한 계층간 최적화에 필요하다.
또한, 가상 실행 시스템(20)의 비관리 풋프린트, 즉 관리 코드 라이브러리들이 없는 부분이 중요할 수 있다. 자원 제한 장치들(12)에 대한 가상 실행 시스템을 갖기 위하여, 이들 장치 상에서 실행될 애플리케이션 프로그램들(14)의 요구들에 따라 가상 실행 시스템의 비관리 부분에 포함된 모듈들을 적응시키는 것이 필요할 수 있다.
제안되는 접근법은 가상 실행 시스템의 실행 엔진(24)의 비관리 부분에 대해 관리 부분과 동일한 종류의 최적화를 적용하는 것이다. 이것은, 관리 코드 라이브러리들에 포함되는 메타데이터에 기초하여(이 메타데이터는 특정 운영 체제(28)에 따라 포함되어야 하는데, 즉 SYMBIAN에 대해 포함되는 속성들은 TINYOS 또는 NUT/OS와 다를 수 있다), 관리 애플리케이션의 정적 분석을 통해 어느 PAL 모듈들이 필요할 것인지를 알 수 있음을 의미한다. 예를 들어, 애플리케이션 프로그램(14)이 파일 함수들, 메시징 함수들 또는 그래픽 사용자 인터페이스("GUI") 기능만을 필요로 하는 경우, 대응하는 PAL 함수들은 가상 실행 시스템(20)에 포함되고, 자원 제한 장치(12) 상에 전개된다. 또한, 이 접근법은 관리 코드 라이브러리들을 기반 운영 체제에 고유한 메타데이터로 증대시킴으로써만 가능하다. 이러한 메타데이터만이 제안되는 크기 최적화를 가능하게 한다.
언뜻 보아서는, 후자의 접근법이 PInvoke를 통한 표준 라이브러리 로딩인 것처럼 보인다. 예를 들어, 파일 액세스, 네트워킹, 및 GUI 기능을 위한 PAL 모듈들이 윈도우 애플리케이션 프로그램들(14)에 의해 사용될 수 있는 데이터 또는 실행가능 함수들의 라이브러리들인 개별 동적 링크 라이브러리("DLL")들 내에 내장되는 것으로 가정한다. 윈도우는 마이크로소프트사에 의해 제작되었다. 또한, 이 예에서는, 상이한 크기 제한을 갖는 두 유형의 메모리(18, 32), 즉 (1) 대용량 비휘발성 메모리, 예를 들어 픽처들을 저장하기 위해 이동 전화에 부착되는 메모리 카드, 및 (2) 제한된 양의 RAM이 존재하는 것으로 가정한다. 파일 액세스, 네트워킹, 및 GUI 기능을 위한 상이한 PAL 모듈들은 비휘발성 메모리에 저장되고, 단지 PAL 모듈들을 호출하는 PInvoke가 발생할 때 LoadLibrary 함수를 통해 RAM에 로딩될 수 있다.
위의 예는 아래의 3 가지 문제와 관련된다. 첫째, PAL 모듈들은 대개 모든 파일 함수 또는 모든 네트워킹 함수를 포함하며, 따라서 사실상, 필요한 것보다 큰 모듈들이 LoadLibrary 함수를 통해 제한된 양의 RAM에 로딩된다. 제안된 메타데이터 증대와 함께 애플리케이션 프로그램(14)의 정적 분석을 통해, PAL 모듈들은 필요한 기능들만을 포함할 수 있다. 둘째, 통상적으로 발생하는 바와 같은 초기화 동안이 아니라 실행시간 동안의 모듈들의 동적 로딩이 바람직하지 않을 수 있다. 이것은 특히, 소정의 시간 제한을 갖는 애플리케이션 프로그램들에 대해 사실이다. 셋째, 대용량의 이용 가능한 비휘발성 메모리의 가정이 항상 올바른 것은 아니다. 이 때문에, 가상 실행 시스템(20)이 장치(12) 상에 전개될 때, 메모리 제한들이 종종 중요한 고려 사항이 된다.
어떤 애플리케이션 프로그램들(14)이 자원 제한 장치(12) 상에서 실행될 것인지가 알려질 때, 이러한 애플리케이션 프로그램들의 정적 분석은 자원 제한 장치 상에 전개되어야 하는 가상 실행 시스템(20)의 메모리 수요를 크게 개선할 수 있다. 이 경우에는 동적 최적화가 도움이 될 수 없다. 사실상, 대개는 실행될 애플리케이션 프로그램들의 수는 매우 적다. 사실상, 대부분의 경우에는 단일 애플리케이션 프로그램만이 존재한다.
예 3: 비동기 함수들에 대한 지식을 이용한 최적화
이 예는 가상 실행 시스템(20), 또는 보다 정확하게는 그 상부의 애플리케이션 프로그램 언어들(14) 및 기반 운영 체제(28)에 의해 제공되는 상이한 프로그래밍 모델들 사이에 효율적으로 맵핑하는 방법을 설명한다. 특히, 아래의 예는 스레드 처리 상황을 다룬다. 이 예에서 다뤄지는 문제는 가상 실행 시스템들이 대개는 개발자들이 상이한 태스크들 사이에서 어떻게 수동으로 스위칭할지에 대해 관심을 가질 필요가 없는 간단한 프로그래밍 모델에 집중한다는 점이다. 이와 달리, 자원 제한 장치들(12)의 운영 체제들은 대개 우선적으로 스케쥴된 스레드들(64)에 대해 제한된 지원만을 갖는다. 결과적으로, 이러한 운영 체제들은 완전히 이벤트 기반이고, 태스크들 사이에서 명확히 스위칭하는 책임을 프로그래머에게 넘기거나, 협동 멀티태스킹에 대한 강한 집중을 갖는 프로그래밍 구조들을 제공한다. SYMBIAN 운영 체제는 후자의 범주에 속한다. SYMBIAN 운영 체제는 우선적으로 스케쥴된 스레드들을 지원하지만, 그의 프로그래밍 모델은 협동 멀티태스킹에 강하게 집중한다.
이 섹션의 목표는 상이한 프로그래밍 모델들 사이의 갭을 처리하는 방법, 및 가상 실행 시스템(20)이 기반 프로그래밍 모델을 인식하게 함으로써 가상 실행 시스템(20)에서의 최적화를 가능하게 하는 방법을 보여주는 것이다. 특히, (1) 우선적으로 스케쥴된 스레드들(64)의 수, 및 이들이 가상 실행 시스템에서 유발하는 관리 오버헤드를 줄이는 것, 및 (2) 기반 운영 체제에 의해 제공되는 경량의 스레드 모델을 이용하여 동시 태스크들을 실행하는 효율을 향상시키는 것이 바람직하다. 이러한 목표들은 가상 실행 시스템이 최적화를 수행하는 데 이용하는 기반 프로그래밍 모델에 대한 정보를 메타데이터로서 관리 코드 내에 삽입함으로써 달성된다.
다음은 스레드들(64)의 수를 줄이는 방법의 하나의 예시적인 접근법이다. 예 1은 SYMBIAN 운영 체제(28)와 연관된 보안 제한들을 처리하는 아키텍처들을 소개하였다. 도 3에서 알 수 있듯이, 대부분의 일반적인 접근법은 다수의 .NET 스레드로부터의 요청들을 순차화하는 PAL(26) 내의 새로운 스레드(66)의 생성을 필요로 한다. 즉, .NET 스레드들, 예를 들어 C# 또는 비주얼 베이직 내의 애플리케이션 스레드들은 SYMBIAN 내의 우선적으로 스케쥴된 스레드들로 맵핑되며, 이들의 함수 호출들은 추가 PAL 스레드에 의해 순차화된다.
이제, 자신의 주요 루프 내에 함수들을 갖고 자신들의 요청들이 개별 PAL 스레드(66)에 의해 순차화되는 2개의 .NET 스레드들(64)이 존재하는 도 3의 예를 다시 고려한다. 이 경우, 2개의 .NET 스레드에 대해 우선적으로 스케쥴된 스레드들을 생성할 필요가 없다. 대신에, 이들의 요청들이 PAL 스레드에서 순차화되므로, 그리고 SYMBIAN 운영 체제(28)가 양호하게 지원되는 경량 스레드 모델을 제공하므로, 상이한 스레드들이 단일 스레드에서 실행될 수 있다. 따라서, 애플리케이션 스레드의 주요 함수가 소정의 요구들을 충족시키는 경우, 각각의 애플리케이션 스레드에 대해 우선적으로 스케쥴된 스레드를 생성할 필요가 없다.
주요 요구는 애플리케이션 스레드(58)의 주요 함수가 추가 PAL 스레드(66)에서 순차화되는 비동기 함수들을 호출하는 것이다. 대부분의 함수들, 예를 들어 파일 함수들, 네트워킹 함수들, 메시징 함수들 및 심지어 인쇄 명령문들은 이러한 특성을 충족시킨다. 결과적으로, 제안되는 최적화는 대부분은 아니더라도 많은 애플리케이션 스레드에 적용될 수 있을 가능성이 있다. 한편, 가상 실행 시스템(20)이 어느 관리 함수들이 기반 운영 체제(28) 상의 비동기 함수 호출로 맵핑되고 어느 관리 함수들이 맵핑되지 않는지를 인식하는 것이 요구된다. 이러한 정보는 적절한 메타데이터를 관리 코드 라이브러리들에 삽입함으로써 이용 가능하게 된다. 이러한 정보가 주어지면, 실행 엔진(24)은 애플리케이션 스레드에 대해 새로운, 우선적으로 스케쥴된 스레드를 생성하는 것이 필요한지, 또는 SYMBIAN의 경량 스레딩 모델이 사용될 수 있는지를 동적으로 결정할 수 있다.
도 4를 추가로 참조하면, 제안되는 최적화에서, SYMBIAN의 경량 스레드 모델이 사용될 수 있다. 기본적으로, SYMBIAN의 경량 스레드 모델은 2개의 코어 컴포넌트, 즉 활성 개체들 및 활성 스케쥴러들로 구성된다. 활성 개체들(68)은 활성 스케쥴러와 함께, 애플리케이션 프로그래머가 협동 멀티태스킹을 처리하는 것을 보다 쉽게 해준다. 통상적으로, 애플리케이션 프로그램(14)은 단일의 우선적으로 스케쥴된 스레드에 존재하는 활성 개체들의 세트를 포함하는데, 즉 협동 멀티태스킹이 사용된다.
활성 개체들(68)로서 표현되는 상이한 태스크들 사이의 제어의 전달은 다음과 같이 이루어진다. 먼저, 예 1에서 설명된 바와 같이, SYMBIAN 운영 체제(28)는 일련의 로컬 서비스 제공자들, 소위 서버들(54)을 제공한다. 이들 서버는 비동기 함수 요청들을 지원한다. 즉, 애플리케이션 프로그램(14)이 비동기 함수를 호출하는 경우, 함수 요청은 서버로 전송되고, 서버는 함수 요청을 실행하며, 함수 요청이 실행된 때 호출 애플리케이션 프로그램에 통지한다. 서버들은 애플리케이션 프로그램과 다른 스레드(64) 또는 프로세스에 존재하므로, 이는 애플리케이션 프로그램이 비동기 요청이 완료되기를 기다리는 동안 소정의 유휴 시간을 가짐을 의미한다. 사실상, 애플리케이션 프로그램이 비동기 함수를 호출할 때마다, 이러한 방법은 활성 개체에 의해 추상화되는 상이한 태스크들 사이에 제어를 전달하는 데 사용된다.
실시예들에서, 활성 개체 개념은 전술한 요구들이 충족되는 경우에 가상 실행 시스템(20)에서 애플리케이션 스레드들(58)을 표현하는 데 사용된다. 또한, 이러한 요구들이 중요한 이유는, 애플리케이션 스레드가 규칙적인 간격으로 비동기 함수들을 호출하지 않는 경우에는 이러한 태스크가 모든 다른 태스크를 차단할 수 있기 때문이다. 그러나, SYMBIAN 운영 체제(28) 내의 많은 함수는 비동기 표현을 가지며, 거의 모든 PAL 계층 함수들, 예를 들어 파일 함수들, 네트워킹 함수들, 인쇄 명령문들, 및 메시징 함수들은 PAL 스레드(66)에서의 순차화를 필요로 한다.
도 4 및 도 5는 각각 2개의 가능한 아키텍처(70, 72)의 그래픽 개요를 제공한다. 도 4에서는, 애플리케이션 스레드들(58)만이 활성 개체들(68)로서 표현되며, 요청들을 순차화하기 위한 데이터 구조가 여전히 존재한다. 애플리케이션 스레드가 PAL(26)에서 순차화되는 함수를 호출할 때마다, 이러한 요청은 비동기 방식으로 구현된다. 즉, (1) 요청은 비동기 요청으로서 PAL 스레드(66)로 전송되고, (2) 요청이 비동기이므로, 제어는 다른 애플리케이션 스레드를 표현하는 다른 활성 개체로 자동 전달되며, (3) 이러한 활성 개체는 그가 또한 비동기 함수 호출에 도달할 때까지 그의 명령들을 수행하고, (4) 비동기 함수가 종료되는 경우에, 대응 비동기 요청을 발행한 활성 개체가 식별되고, (5) 오리지널 활성 개체는 이전 비동기 함수 호출의 결과를 검색하고, (6) 그가 다시 비동기 함수를 호출할 때까지 추가 명령들을 실행한다. 이전 비동기 호출의 결과들이 이용될 수 있는 다수의 활성 개체가 존재하는 경우에, SYMBIAN의 활성 스케쥴러는 간단한 우선 순위에 기초하여 어느 활성 개체가 다음으로 활성화될지를 결정한다.
활성 개체들(68)이 상이한 SYMBIAN 서버들(54)에 대한 접속을 유지하는 동일 스레드(74)에서 생성될 수 있는 경우에 추가 PAL 스레드(66)를 제거하는 것도 가능하다. 이것은 예 1에서 설명된 SYMBIAN 운영 체제(28)의 보안 제한들을 처리하는 또 하나의 가능한 방법이다. 도 5는 대응 아키텍처를 나타낸다.
다음은 SYMBIAN 운영 체제(28)를 실행하는 장치(12) 상에서 가상 실행 시스템(20)을 이용하여 수행된 다수의 구체적인 실험에 기초하는 제안된 최적화들의 평가로부터 수집된 데이터이다. 이러한 실험들은 자신 상에서 실행되는 SYMBIAN에 대한 마이크로소프트의 CLR의 일부를 갖는 하이-엔드, SYMBIAN 인에이블드 스마트폰 상에서 수행되었다.
도 6 및 7은 추가 PAL 스레드(66)에 의해 유발되는 오버헤드를 나타낸다. 특히, 도 6은 시간 대 SYMBIAN 장치(12)를 사용한 인쇄 명령문의 반복 수의 그래프이다. 도 6의 상부 궤적(76)은 추가 PAL 스레드가 없는 SYMBIAN 장치로부터 취해진 데이터를 포함하고, 하부 궤적(78)은 추가 PAL 스레드를 가진 SYMBIAN 장치로부터 취해진 데이터를 포함한다. 도 6과 유사하게, 도 7은 시간 대 SYMBIAN 장치를 사용한 인쇄 명령문보다 덜 복잡한 동작에 대한 반복 수의 그래프이다. 도 7의 상부 궤적(80)은 추가 PAL 스레드가 없는 SYMBIAN 장치로부터 취해진 데이터를 포함하고, 하부 궤적(82)은 추가 PAL 스레드를 갖는 SYMBIAN 장치로부터 취해진 데이터를 포함한다.
알 수 있듯이, 오버헤드, 즉 상부 궤적(76, 80)과 하부 궤적(78, 82) 간의 차이는 각각 수행되는 동작의 복잡성에 의존한다. 예를 들어, 인쇄 명령문은 SYMBIAN에서 아주 복잡한 함수인데, 이는 스트링들이 종종 콘솔 윈도우의 끝에 부착되므로 인쇄 명령문이 종종 전체 스크린이 다시 그려질 것을 요구하기 때문이다. 이 때문에, 인쇄 명령문은 종종 자동 스크롤링을 유발한다. 스크롤링을 수반하지 않는 다른 함수를 취할 경우, 도 7에 도시된 바와 같이, 추가 PAL 스레드(66)를 제거하는 이점이 훨씬 더 명확하다. 후자의 경우에, 추가 PAL 스레드는 함수를 실행하는 전체 성능의 약 20%를 필요로 한다.
우선적으로 스케쥴된 스레드들(64)이 자원 제한 장치들(12) 상에서 상당한 성능 저하를 유발한다는 사실은 다음 실험의 결과들에서도 지원된다. 도 8 및 도 9는 애플리케이션 스레드들(58)의 수에 대해 PAL 스레드(66)에 의해 순차화되는 고정된 수의 PAL 함수들을 실행하기 위해 에뮬레이터(궤적 84 참조) 및 자원 제한 장치(궤적 86 참조)에 의해 요구되는 시간을 나타낸다. 에뮬레이터 및 실제 자원 제한 장치 양자 상에서 모든 스레드는 거의 동일한 양의 함수 호출을 실행하였음에 유의한다. 예를 들어, 실험이 50개의 상이한 애플리케이션 스레드로부터의 100,000개의 PAL 함수 호출을 실행하는 것으로 구성된 경우, 기반 운영 체제(28)는 50개의 애플리케이션 스레드 각각이 약 2,000개의 호출을 발행하도록 호출들을 동일하게 분배하였다. 추가적인 명시적 동기화는 필요하지 않았다. 도 8 및 9로부터 알 수 있듯이, 스레드들의 수의 영향은 에뮬레이터에 대해서는 큰 효과를 갖지 않지만, 실제 자원 제한 장치 상의 스레드 수의 영향은 크다.
도 10을 참조하면, 최종 실험은 운영 체제(28)에서 관리 스레드들의 오버헤드(궤적 88 참조) 대 순수 스레드들의 오버헤드(궤적 90 참조)를 다룬다. 전과 동일한 실험이 수행되었으나, 이번에는 비관리 코드를 사용하는 대신에 자원 제한 장치(12) 상에서 직접 실행되는 C# 프로그램이 작성되었다. 이전 실험에서의 비관리 코드의 사용은 기반 운영 체제의 영향을 평가하기 위해 필요했다. 도 10에서 알 수 있듯이, 관리 스레드들이 일련의 추가 데이터 구조들을 유지하는 것이 필요하다는 사실은 성능에 크게 영향을 미친다. 이것은 효율을 향상시키기 위해 제안된 최적화 기술들을 적용하는 것이 훨씬 더 필요하게 한다.
요컨대, 위의 실험 결과들은 설명된 최적화들이 자원 제한 장치(12) 상의 가상 실행 시스템들(20)의 효율을 크게 향상시키는 잠재력을 갖는다는 아이디어를 지원한다. 이롭게도, 이러한 최적화들은 관리 함수들, 애플리케이션 고유 특성들, 기반 장치의 자원 제한들 및 운영 체제(28)의 특성들 사이의 상관성에 대한 가상 실행 시스템의 인식을 향상시킨다. 즉, 최적화들은 하위 계층들, 예를 들어 운영 체제 계층 상의 호출들의 효과에 대한 정보를 이용하여 관리 코드의 처리를 담당하는 가상 실행 시스템 내의 상위 계층들을 제공함으로써 용이해진다. 이것은 관리 함수들을 플랫폼 적응 계층(26) 및 운영 체제 계층 상의 적절한 호출들 및 데이터 구조들로 맵핑하는 최적화들을 수행하기 위해 가상 실행 시스템에 의해 사용되는 추가 메타데이터를 관리 코드에 주석으로 첨부함으로써 수행된다.
이롭게도, 실시예들은 자원 제한 장치(12)에서 사용되고 애플리케이션 프로그램(14)의 실행 동안 개량들을 제공하도록 구성되는 가상 실행 시스템(20)을 포함한다. 자원 제한 장치는 운영 체제(28) 및 명령들(16)을 포함하는 애플리케이션 프로그램을 포함한다. 가상 실행 시스템은 애플리케이션 프로그램을 실행하도록 구성되는 실행 엔진(24), 및 기반 운영 체제 상에서 실행 엔진으로부터의 호출들을 맵핑하도록 구성되는 PAL(26)을 포함한다. 자원 제한 장치의 운영 체제는 데스크톱 시스템 상에서 초기에 예상된 것과 다른 능력을 제공하고 상이한 제한을 갖는다. 추가 능력을 이용하고, 자원 제한 장치 상의 운영 체제의 제한을 효과적으로 극복하기 위하여, 가상 실행 시스템에 의해 비함수적 양태들이 이용된다. 비함수적 양태들은 애플리케이션 명령들을 특성화하며, 실행 엔진 및 PAL이 기반 운영 체제의 특성들을 이용할 수 있게 한다. 실행 엔진은 PAL과 함께, 비함수적 양태들에 기초하여 애플리케이션 프로그램의 실행 동안 개량들을 구현한다. 개량들은 성능 또는 메모리 수요는 물론, 비함수적 양태들에 의해 표현되는 바와 같은 보안 또는 적시성과 같은 특성들에 영향을 미칠 수 있다.
본 발명은 구조적 특징들 및/또는 방법적 동작들에 고유한 언어로 설명되었지만, 첨부된 청구범위에 정의되는 본 발명은 전술한 특정 특징들 또는 동작들로 제한될 필요는 없음을 이해해야 한다. 오히려, 전술한 특정 특징들 및 동작들은 아래의 청구항들을 구현하는 예시적인 형태로서 개시된다. 더욱이, 여기서 "단계"라는 용어가 이용되는 방법들의 상이한 양태들을 의미하기 위해 사용될 수 있지만, 이 용어는 개별 단계들의 순서가 명시적으로 기술되지 않는 한, 그리고 그러한 때를 제외하고는, 여기에 개시되는 다양한 단계 중에서 임의의 특정 순서를 의미하는 것으로 해석되지 않아야 한다.

Claims (20)

  1. 운영 체제(28) 및 명령들(16)을 갖는 애플리케이션 프로그램(14)을 포함하는 자원 제한 장치(12)에서 사용되도록 구성되는 가상 실행 시스템(20)으로서,
    a. 상기 애플리케이션 프로그램을 실행하고, 상기 애플리케이션 프로그램의 상기 운영 체제와의 호환을 돕도록 구성되는 실행 엔진(24)
    을 포함하고,
    b. i. 비함수적 양태들이 상기 명령들 및 상기 운영 체제를 특성화하고,
    ii. 상기 실행 엔진은 상기 비함수적 양태들에 대한 액세스를 가지며,
    iii. 상기 실행 엔진은 상기 비함수적 양태들에 기초하여 상기 애플리케이션 프로그램의 실행 동안 개량들을 구현하는
    가상 실행 시스템(20).
  2. 제1항에 있어서, 상기 실행 엔진(24)에 의해 구현되는 개량들은 성능에 영향을 미치는 개량들, 메모리 수요에 영향을 미치는 개량들, 보안의 개량들 및 적시성(timeliness)의 개량들로 이루어지는 그룹으로부터 선택되는 가상 실행 시스템(20).
  3. 제1항 또는 제2항에 있어서,
    a. 상기 운영 체제(28)는 애플리케이션 프로그램 인터페이스들 및 실행 시간 구조들(30)을 노출시키고,
    b. 상기 가상 실행 시스템은 프로그래밍 모델을 노출시키며,
    c. 상기 실행 엔진(24)은 상기 비함수적 양태들을 이용하여, 상기 가상 실행 시스템의 프로그래밍 모델에서 상기 운영 체제의 애플리케이션 프로그램 인터페이스들 및 실행시간 구조들로의 맵핑을 돕는
    가상 실행 시스템(20).
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 비함수적 양태들은 적시성 정보, 보안 정보, 함수 호출 정보, 자원 수요 정보, 메모리 제한 정보, 보안 제한 정보, 네트워크 수명 정보, 실시간 정보, 에너지 소비 정보, 실행 모드 정보, 관리 함수들(managed functions) 간의 관계를 기술하는 정보, 애플리케이션 고유 특성들, 상기 장치(12)의 자원 제한들, 및 상기 운영 체제(28)의 특성들로 이루어지는 그룹으로부터 선택되는 가상 실행 시스템(20).
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 비함수적 양태들은 중간 언어로 인코딩되는 메타데이터 내에 기술되는 가상 실행 시스템(20).
  6. 제5항에 있어서,
    a. 상기 가상 실행 시스템은 COMMON LANGUAGE INFRASTRUCTURE 및 JAVA VIRTUAL MACHINE로 이루어지는 그룹으로부터 선택되고,
    b. 상기 중간 언어는 COMMON INTERMEDIATE LANGUAGE 및 JAVA BYTECODE로 이루어지는 그룹으로부터 선택되는
    가상 실행 시스템(20).
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 운영 체제(28)는 SYMBIAN 운영 체제 및 TINYOS 운영 체제로 이루어지는 그룹으로부터 선택되는 가상 실행 시스템(20).
  8. a. 명령들(16)을 갖는 애플리케이션 프로그램(14)을 포함하는 제1 컴퓨터 판독가능 매체(18);
    b. 애플리케이션 프로그램 인터페이스들 및 실행 시간 구조들(30)을 노출시키는 운영 체제(28)를 포함하는 제2 컴퓨터 판독가능 매체(32); 및
    c. 상기 애플리케이션 프로그램의 상기 운영 체제와의 호환을 돕고 프로그램 모델을 노출시키도록 구성되는 가상 실행 시스템(20)
    을 포함하고,
    d. i. 비함수적 양태들이 상기 명령들 및 상기 운영 체제를 특성화하고,
    ii. 상기 가상 실행 시스템은 상기 비함수적 양태들에 대한 액세스를 갖고,
    iii. 상기 가상 실행 시스템은 상기 비함수적 양태들에 기초하여 상기 애플리케이션 프로그램의 실행 동안 개량들을 구현하고,
    iv. 상기 가상 실행 시스템은 상기 비함수적 양태들을 이용하여, 상기 가상 실행 시스템의 프로그래밍 모델에서 상기 운영 체제의 애플리케이션 프로그램 인터페이스들 및 실행 시간 구조들로의 맵핑을 돕는
    자원 제한 장치(12).
  9. 제8항에 있어서, 상기 비함수적 양태들은 적시성 정보, 보안 정보, 함수 호출 정보, 자원 수요 정보, 메모리 제한 정보, 보안 제한 정보, 네트워크 수명 정보, 실시간 정보, 에너지 소비 정보, 실행 모드 정보, 관리 함수들(managed functions) 간의 관계를 기술하는 정보, 애플리케이션 고유 특성들, 상기 장치의 자원 제한들, 및 상기 운영 체제(28)의 특성들로 이루어지는 그룹으로부터 선택되는 자원 제한 장치(12).
  10. 제8항 또는 제9항에 있어서, 상기 자원 제한 장치는 이동 전화, 개인 휴대 단말기, 핸드헬드 컴퓨터, 게임 콘솔, 셋톱 박스, 위성 기반 측위 장치 및 센서 노드로 이루어지는 그룹으로부터 선택되는 자원 제한 장치(12).
  11. 제8항 내지 제10항 중 어느 한 항에 있어서, 상기 비함수적 양태들은 중간 언어로 인코딩되는 메타데이터 내에 기술되는 자원 제한 장치(12).
  12. 운영 체제(28) 및 명령들(16)을 포함하는 애플리케이션 프로그램(14)을 포함 하는 자원 제한 장치(12)에서 가상 실행 시스템(20)의 성능을 향상시키는 방법으로서,
    a. 상기 명령들 및 상기 운영 체제의 비함수적 양태들을 식별하는 단계;
    b. 상기 비함수적 양태들을 상기 가상 실행 시스템에 제공하는 단계; 및
    c. 상기 가상 실행 시스템에 의해 상기 애플리케이션 프로그램의 실행 동안 상기 비함수적 양태들을 이용하는 단계
    를 포함하는 가상 실행 시스템의 성능을 향상시키는 방법.
  13. 제12항에 있어서,
    a. 상기 운영 체제(28)에서 노출되는 애플리케이션 프로그램 인터페이스들 및 실행 시간 구조들(30)을 식별하는 단계;
    b. 상기 애플리케이션 프로그램(14)의 실행 동안 상기 비함수적 양태들은 물론, 상기 애플리케이션 프로그램 인터페이스들 및 실행 시간 구조들을 고려하는 단계; 및
    c. 상기 명령들(16)을 상기 애플리케이션 프로그램 인터페이스들 및 실행 시간 구조들로 맵핑하는 단계
    를 더 포함하는 가상 실행 시스템의 성능을 향상시키는 방법.
  14. 제13항에 있어서, 상기 가상 실행 시스템(20)은 프로그래밍 모델을 노출시키고, 상기 방법은 상기 프로그래밍 모델을 상기 애플리케이션 프로그램 인터페이스 들 및 실행 시간 구조들(30)로 맵핑하는 단계를 더 포함하는 가상 실행 시스템의 성능을 향상시키는 방법.
  15. 제12항 내지 제14항 중 어느 한 항에 있어서,
    a. 상기 운영 체제(28)는 보안 제한을 갖는 보안 모델을 포함하고,
    b. 상기 가상 실행 시스템(20)은 상기 보안 모델을 애플리케이션 프로그래머에게 노출시키며,
    c. 상기 애플리케이션 프로그래머는 상기 보안 제한을 어떻게 처리할지를 사례별로 결정할 수 있는
    가상 실행 시스템의 성능을 향상시키는 방법.
  16. 제12항 내지 제15항 중 어느 한 항에 있어서, 상기 가상 실행 시스템(20)은 스레드들(64)을 제공하고, 상기 운영 체제(28)는 서버들(54)을 제공하며, 상기 방법은 상기 스레드들 모두가 상기 서버들에 액세스할 수 있도록 상기 스레드들을 순차화하는 단계를 더 포함하는 가상 실행 시스템의 성능을 향상시키는 방법.
  17. 제16항에 있어서, 서버 세션을 요구하는 함수에 대한 각각의 액세스에 대해, 그리고 상기 가상 실행 시스템(20) 내의 각각의 스레드에 대해 개별 서버 세션을 생성하는 단계를 더 포함하는 가상 실행 시스템의 성능을 향상시키는 방법.
  18. 제12항 내지 제17항 중 어느 한 항에 있어서, 상기 운영 체제(28)는 서버들(54)을 제공하고, 상기 방법은 상기 서버들에 대한 세션들을 생성하는 단계를 더 포함하고, 상기 가상 실행 시스템(20)은 상기 세션들을 관리하도록 구성되고, 상기 세션들은 상기 가상 실행 시스템의 시동 동안의 모든 서버에 대한 세션들의 생성 및 실행 시간 동안의 상기 서버들에 대한 세션들의 생성으로 이루어지는 그룹으로부터 선택되는 접근법으로 생성되는 가상 실행 시스템의 성능을 향상시키는 방법.
  19. 제12항 내지 제18항 중 어느 한 항에 있어서, 상기 가상 실행 시스템(20)은 우선적인 멀티태스킹을 돕도록 구성되고, 상기 운영 체제(28)는 비우선적 멀티태스킹 모델을 노출시키고, 상기 방법은 상기 가상 실행 시스템에서의 우선적 멀티태스킹을 상기 운영 체제의 비우선적 멀티태스킹 모델로 맵핑하는 단계를 더 포함하는 가상 실행 시스템의 성능을 향상시키는 방법.
  20. 제12항 내지 제19항 중 어느 한 항에 있어서,
    상기 가상 실행 시스템(20)은 태스크들을 실행하기 위해 우선적으로 스케쥴된 스레드들(64)을 제공하고, 어떤 함수들이 상기 운영 체제(28) 내의 비동기 함수 호출들로 맵핑되는지를 인식하도록 구성되고, 상기 운영 체제는 협동 멀티태스킹에 기초하여 스레딩 모델을 구현하고, 경량 스레딩 모델을 제공하도록 구성되며,
    상기 방법은,
    a. 단일 스레드 내에서 둘 이상의 태스크를 실행함으로써 우선적으로 스케쥴 된 스레드들의 수를 줄이는 단계; 및
    b. 상기 경량 스레딩 모델을 이용하여 동시 태스크들의 실행 효율을 향상시키는 단계
    로 이루어지는 그룹으로부터 선택되는 단계를 더 포함하는
    가상 실행 시스템의 성능을 향상시키는 방법.
KR1020087024380A 2006-04-13 2007-03-22 가상 실행 시스템 및 가상 실행 시스템의 성능 향상 방법 KR101366402B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP06270039.8 2006-04-13
EP06270039A EP1845444B1 (en) 2006-04-13 2006-04-13 Virtual execution system for ressource-constrained devices
PCT/US2007/007262 WO2007120436A1 (en) 2006-04-13 2007-03-22 Virtual execution system for resource-constrained devices

Publications (2)

Publication Number Publication Date
KR20080112269A true KR20080112269A (ko) 2008-12-24
KR101366402B1 KR101366402B1 (ko) 2014-02-24

Family

ID=36586235

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087024380A KR101366402B1 (ko) 2006-04-13 2007-03-22 가상 실행 시스템 및 가상 실행 시스템의 성능 향상 방법

Country Status (7)

Country Link
US (1) US8694682B2 (ko)
EP (1) EP1845444B1 (ko)
KR (1) KR101366402B1 (ko)
CN (1) CN101421711B (ko)
AT (1) ATE468556T1 (ko)
DE (1) DE602006014360D1 (ko)
WO (1) WO2007120436A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9417912B2 (en) 2010-03-12 2016-08-16 Samsung Electronics Co., Ltd. Ordering tasks scheduled for execution based on priority and event type triggering the task, selecting schedulers for tasks using a weight table and scheduler priority

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE468556T1 (de) 2006-04-13 2010-06-15 Microsoft Corp Virtuelles ausführungssystem für ressourcen- beschränkte geräte
US8127271B2 (en) * 2007-03-02 2012-02-28 International Business Machines Corporation Method and system for accessing a resource implemented in a computer network
EP2433243A4 (en) * 2009-05-20 2013-12-18 Redcliff Investments L L C SECURE WORKFLOW AND DATA MANAGEMENT APPLICATION
US10185594B2 (en) * 2009-10-29 2019-01-22 International Business Machines Corporation System and method for resource identification
US10089119B2 (en) 2009-12-18 2018-10-02 Microsoft Technology Licensing, Llc API namespace virtualization
US9524179B2 (en) * 2011-05-05 2016-12-20 Microsoft Technology Licensing, Llc Virtual-machine-deployment-action analysis
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US8695021B2 (en) * 2011-08-31 2014-04-08 Microsoft Corporation Projecting native application programming interfaces of an operating system into other programming languages
US8863060B2 (en) * 2011-09-07 2014-10-14 Samsung Electronics Co., Ltd. Programmable intelligent storage architecture based on application and business requirements
US9530156B2 (en) * 2011-09-29 2016-12-27 Amazon Technologies, Inc. Customizable uniform control user interface for hosted service images
US20130212600A1 (en) * 2012-02-15 2013-08-15 Microsoft Corporation Constrained mode for running applications
US9274772B2 (en) * 2012-08-13 2016-03-01 Microsoft Technology Licensing, Llc. Compact type layouts
US9846597B2 (en) * 2013-03-13 2017-12-19 Microsoft Technology Licensing, Llc Durable program execution
JP6364866B2 (ja) * 2014-03-27 2018-08-01 富士通株式会社 端末装置、通信制御システム及び通信制御方法
US9680920B2 (en) 2014-09-08 2017-06-13 International Business Machines Corporation Anticipatory resource allocation/activation and lazy de-allocation/deactivation
US9405581B2 (en) * 2014-09-08 2016-08-02 International Business Machines Corporation Resource allocation/de-allocation and activation/deactivation
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
US9535763B1 (en) 2015-11-30 2017-01-03 International Business Machines Corporation System and method for runtime grouping of processing elements in streaming applications
US9928046B2 (en) * 2016-02-12 2018-03-27 International Business Machines Corporation System and method for dynamic runtime merging of real time streaming operator environments
EP3206148A1 (en) * 2016-02-12 2017-08-16 ABB Schweiz AG Secure code optimization method and system
US9898354B2 (en) * 2016-03-21 2018-02-20 Microsoft Technology Licensing, Llc Operating system layering
CN108345452B (zh) * 2017-01-23 2021-07-23 斑马智行网络(香港)有限公司 一种线程管理方法及装置
KR102120868B1 (ko) * 2017-08-09 2020-06-09 삼성전자주식회사 서비스형 함수(FaaS)를 제공하는 시스템 및 그 동작방법
US10073686B1 (en) * 2017-08-10 2018-09-11 Sap Se Function serialization for inter-thread messaging
US11334364B2 (en) 2019-12-16 2022-05-17 Microsoft Technology Licensing, Llc Layered composite boot device and file system for operating system booting in file system virtualization environments

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5961582A (en) * 1994-10-25 1999-10-05 Acorn Technologies, Inc. Distributed and portable execution environment
US6957427B1 (en) * 1997-10-15 2005-10-18 Sun Microsystems, Inc. Remote object activation in a distributed system
US7200842B1 (en) * 1999-02-02 2007-04-03 Sun Microsystems, Inc. Object-oriented instruction set for resource-constrained devices
US6883163B1 (en) 2000-04-28 2005-04-19 Sun Microsystems, Inc. Populating resource-constrained devices with content verified using API definitions
FR2814257B1 (fr) * 2000-09-20 2002-12-06 Palmware Architecture de microprocesseur virtuel multiplate-forme et son systeme d'exploitation complementaire, notamment pour le domaine de l'informatique embarquee et mobile
US7581231B2 (en) * 2001-07-10 2009-08-25 Microsoft Corporation Computing system and method for allowing plurality of applications written in different programming languages to communicate and request resources or services via a common language runtime layer
US6990662B2 (en) * 2001-10-31 2006-01-24 Hewlett-Packard Development Company, L.P. Method and system for offloading execution and resources for resource-constrained networked devices
US7194543B2 (en) * 2001-11-12 2007-03-20 Mci, Llc System and method for creating and managing survivable, service hosting networks
EP1331565B1 (en) * 2002-01-29 2018-09-12 Texas Instruments France Application execution profiling in conjunction with a virtual machine
US7536181B2 (en) * 2002-02-15 2009-05-19 Telefonaktiebolaget L M Ericsson (Publ) Platform system for mobile terminals
US7246346B2 (en) * 2002-09-17 2007-07-17 Microsoft Corporation System and method for persisting dynamically generated code in a directly addressable and executable storage medium
US7082600B1 (en) * 2002-11-04 2006-07-25 Savaje Technologies, Inc. Method and apparatus for integrating a computer application programming language runtime environment with an operating system kernel
US7707563B2 (en) * 2003-01-10 2010-04-27 Nexaweb Technologies Inc System and method for network-based computing
US7155703B2 (en) * 2003-07-18 2006-12-26 Microsoft Corporation Virtual method protection
US7487498B2 (en) * 2003-11-12 2009-02-03 Microsoft Corporation Strategy for referencing code resources
US7454542B2 (en) * 2004-06-08 2008-11-18 Dartdevices Corporation System device and method for configuring and operating interoperable device having player and engine
GB0426736D0 (en) * 2004-12-06 2005-01-12 Omnifone Ltd MyFone
WO2006077481A1 (en) * 2005-01-19 2006-07-27 Truecontext Corporation Policy-driven mobile forms applications
ATE468556T1 (de) 2006-04-13 2010-06-15 Microsoft Corp Virtuelles ausführungssystem für ressourcen- beschränkte geräte

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9417912B2 (en) 2010-03-12 2016-08-16 Samsung Electronics Co., Ltd. Ordering tasks scheduled for execution based on priority and event type triggering the task, selecting schedulers for tasks using a weight table and scheduler priority

Also Published As

Publication number Publication date
US8694682B2 (en) 2014-04-08
KR101366402B1 (ko) 2014-02-24
WO2007120436A1 (en) 2007-10-25
CN101421711B (zh) 2012-10-10
ATE468556T1 (de) 2010-06-15
EP1845444B1 (en) 2010-05-19
EP1845444A1 (en) 2007-10-17
CN101421711A (zh) 2009-04-29
US20090307308A1 (en) 2009-12-10
DE602006014360D1 (de) 2010-07-01

Similar Documents

Publication Publication Date Title
KR101366402B1 (ko) 가상 실행 시스템 및 가상 실행 시스템의 성능 향상 방법
US7203941B2 (en) Associating a native resource with an application
JP4514105B2 (ja) 拡張ランタイムホスティング
US8104034B2 (en) Purpose domain for in-kernel virtual machine for low overhead startup and low resource usage
US9176713B2 (en) Method, apparatus and program storage device that provides a user mode device interface
KR101795844B1 (ko) 런타임 시스템
US8739119B2 (en) Method for inserting code into .net programs and apparatus therefor
US9417931B2 (en) Unified metadata for external components
JP2008501173A (ja) 一般アプリケーションプログラムインタフェースを実装するためのシステム及び方法
US8650537B2 (en) Optimizing an object-oriented program by transforming invocations of synthetic accessor methods
US7730492B1 (en) Method and system for running multiple virtual machines in a single process
US11595299B2 (en) System and method of suppressing inbound payload to an integration flow of an orchestration based application integration
US20080222607A1 (en) Extending Portability of Java Code Through the Use of AOP
US20220214931A1 (en) System and method for exposing features of integration platform adapters as first-class actions in an orchestration template
US8464226B2 (en) System and method for interoperating with foreign objects from a host computing environment
US8732811B2 (en) Systems and methods for implementing security services
EP1949228B1 (en) Asynchronous just-in-time compilation
CN113835748B (zh) 基于html5的应用程序的打包方法、系统和可读介质
US8631480B2 (en) Systems and methods for implementing security services
CN106843895B (zh) 用于处理请求的方法、系统和可读存储介质
US10375206B1 (en) Entity-component architecture with components having multiple configurations
US7673051B2 (en) Resource usage conflict identifier
US9063758B2 (en) Population of dynamic objects representing static namespace hierarchies
US10603583B1 (en) Entity-component architecture with components having multiple configurations
US7926068B2 (en) Printing interface for a computer platform

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
FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20200115

Year of fee payment: 7