KR101455433B1 - 폐쇄된 시스템용의 프로그래밍 프레임워크 - Google Patents

폐쇄된 시스템용의 프로그래밍 프레임워크 Download PDF

Info

Publication number
KR101455433B1
KR101455433B1 KR1020097021328A KR20097021328A KR101455433B1 KR 101455433 B1 KR101455433 B1 KR 101455433B1 KR 1020097021328 A KR1020097021328 A KR 1020097021328A KR 20097021328 A KR20097021328 A KR 20097021328A KR 101455433 B1 KR101455433 B1 KR 101455433B1
Authority
KR
South Korea
Prior art keywords
programming framework
operating system
command
computing device
device operating
Prior art date
Application number
KR1020097021328A
Other languages
English (en)
Other versions
KR20100015532A (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 KR20100015532A publication Critical patent/KR20100015532A/ko
Application granted granted Critical
Publication of KR101455433B1 publication Critical patent/KR101455433B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

프로그래밍 프레임워크를 이용하여 컴퓨팅 플랫폼의 플랫폼 추상화를 허가하는 메커니즘들이 개시된다. 프로그래밍 프레임워크는 애플리케이션 프로그램들이 플랫폼을 추상화함으로써 동일한 방식으로 상이한 플랫폼들과 상호작용하는 것을 가능하게 한다. 애플리케이션은 상이한 플랫폼들에 걸쳐 프로그래밍 프레임워크에 대해 동일한 명령들을 사용하며, 프로그래밍 프레임워크는 플랫폼 고유 요건들에 맞도록 명령들을 수정한다. 프로그래밍 프레임워크는 또한 애플리케이션을 대신하여 플랫폼에 고유한 예상되는 애플리케이션 거동을 에뮬레이트한다. 프로그래밍 프레임워크는 또한 플랫폼에 대한 추가 보안 계층을 제공하여 애플리케이션 프로그램의 액세스를 제한할 수 있다.
Figure R1020097021328
폐쇄된 시스템, 프로그래밍 프레임워크, 컴퓨팅 플랫폼, 애플리케이션 프로그램, 에뮬레이션, 추상화

Description

폐쇄된 시스템용의 프로그래밍 프레임워크{PROGRAMMING FRAMEWORK FOR CLOSED SYSTEMS}
하나의 컴퓨팅 플랫폼 상에서 잘 동작하는 소프트웨어 애플리케이션의 개발은 복잡한 작업이지만, 다수의 플랫폼 상에서 잘 동작하는 애플리케이션의 개발은 훨씬 더 어렵다. 개발자가 원하는 결과들을 산출하도록 컴퓨팅 플랫폼의 하드웨어 및 운영 체제를 제어하기 위해 수행하고 관리해야 할 많은 작업이 존재하며, 이러한 작업들을 완수하는 방법들은 플랫폼들 간에 크게 다를 수 있다. 플랫폼들 간에 다른 애플리케이션 거동의 예측들도 존재한다. 전문적인 소프트웨어 개발자에게, 상이한 플랫폼 상에서 요구되는 모든 작업을 올바르게 수행하는 코드를 작성하고, 그러한 플랫폼들의 예상되는 거동에 따르는 새로운 애플리케이션을 생성하는 것은 플랫폼 제조자의 충분한 지원에도 불구하고 매우 시간 소모적이고 복잡하다. 애호가, 연구생 개발자 또는 제조자의 공인된 개발자들의 집단 밖의 다른 프로그래머에게, 이러한 애플리케이션 개발의 양태는 훨씬 더 도전적이다.
이것은 특히 게임 콘솔과 같은 폐쇄된 시스템들에서 사실이다. 게임 콘솔들은 일반적으로 제조자에 의해 제어되는 "서명된" 또는 인증된 게임들만이 그러한 콘솔들 상에서 실행되는 것을 허가한다. 이러한 제한은 발행자들을 위해 엄격히 제어되는 환경을 유지하는 비즈니스 모델의 보존, 지적 재산권 침해의 방지, 또는 사기에 대한 잠재성의 제어를 포함하는 다양한 이유로 행해질 수 있다. 그러나, 더 개방된 플랫폼들은 물론, 폐쇄된 시스템들 용의 자신의 프로그램들을 생성하고 싶어하는 자가(homebrew) 개발자들 및 애호가들의 급성장하는 시장이 존재한다. 이러한 개발자들은 게임 콘솔들 상에서 서명되지 않은 코드를 실행하기 위해 게임 콘솔들을 해킹하는 데에 시간과 노력을 들인다. 그러한 개발자들이 폐쇄 시스템들을 침해하지 않고 그들의 콘텐츠를 생성하면서 그러한 시스템들에 대한 보호 레벨을 계속 유지하기 위한 합법적인 방법을 갖는 것이 바람직할 것이다.
따라서, 개발자들이 상이한 플랫폼들 및 운영 체제들에 대해 그들의 소프트웨어를 맞춤화해야 할 필요가 없게 하는 방법이 필요하다. 이것은 개발자들이 상이한 기반 소프트웨어 또는 하드웨어를 처리하도록 애플리케이션 코드를 맞춤화하지 않고 프로그램이 상이한 플랫폼들 상에서 실행될 수 있게 하는 운영 체제 또는 프로그래밍 프레임워크에 대한 표준 인터페이스를 이용하여 프로그램들을 작성할 수 있는 경우에 개발자들의 작업을 크게 단순화할 것이다. 그러한 프레임워크는 개발자들이 동일한 방식으로 다양한 컴퓨팅 장치의 운영 체제들과 상호작용하여 프로그래밍 프레임워크가 기반 코드 및 하드웨어에서의 차이들을 처리하게 하는 것을 가능하게 하는 것이 필요할 것이다. 인터페이스는 또한, 제공되는 개발자 코드가 플랫폼의 제한들 및 요구들을 고수하는 것을 보증하는 검사들 및 검증들을 포함함으로써 기반 플랫폼을 보호할 것이다. 이것은 개발자가 상이한 운영 체제들 및 하드웨어를 이용하여 프로그램 작업을 수행하는 더 지루한 작업들에 대해 걱정할 필요 없이 그의 프로그램의 독창적인 양태들에 그의 프로그래밍 노력들을 자유롭게 집중하게 할 것이다.
<발명의 요약>
개발자 코드가 기반 플랫폼을 추상화하는 프로그래밍 프레임워크를 통해 컴퓨팅 시스템의 자원들에 액세스하는 것을 가능하게 하는 메커니즘들이 제공된다. 다수의 플랫폼에 걸쳐 일관된 프레임워크를 제공함으로써, 제조자는 운영 체제 자원들 및 하드웨어에 액세스하는 것을 더 쉽게 함으로써 제삼자의 소프트웨어 개발을 도울 수 있다. 현재 개시되는 발명의 일 양태에서는, 플랫폼의 운영 체제 계층과 애플리케이션 소프트웨어 사이에 프로그래밍 프레임워크가 제공된다. 이 프레임워크는 애플리케이션 소프트웨어를 대신하여 그래픽 계층, 오디오 계층, 입력 계층 및 저장 계층과 같은 다양한 시스템 계층과 통신하는 중간 계층을 형성한다. 이러한 시스템 계층들은 플랫폼 운영 체제 및 하드웨어와 함께 작업하여 플랫폼 상에서 애플리케이션 소프트웨어를 구현하는 데 필요한 작업들을 완수한다.
프로그래밍 프레임워크는 컴퓨팅 플랫폼에 대한 표준 인터페이스를 제공하여, 개발자 콘텐츠가 운영 체제 및 관련 자원들의 양태들을 제어할 수 있게 한다. 이것은 동일한 애플리케이션 코드를 이용하여 다양한 플랫폼을 제어하는 방법을 제공하며, 따라서 개발자가 특정 하드웨어 및 운영 체제 자원들을 그의 애플리케이션과 함께 작업하게 만드는 것에 대해 걱정할 필요가 없게 한다. 프로그래밍 프레임워크는 플랫폼 추상화를 생성하며, 따라서 개발자 코드는 코드가 실행되고 있는 실제 플랫폼에 관계없이 동일한 방식으로 컴퓨팅 플랫폼의 단일의 추상화된 버전과 상호작용한다. 이러한 프레임워크는 개발자 애플리케이션을 구현하는 데 필요한 작업들을 수행하도록 운영 체제 및 하드웨어에 지시하는 플랫폼 고유 양태들을 구현하여, 개발자가 그러한 작업을 할 필요가 없게 한다. 또한, 프레임워크는 애플리케이션이 플랫폼 상에서 성공적으로 실행될 수 있도록 플랫폼에 의해 예상되는 적절한 거동을 제공하며, 애플리케이션 코드와 플랫폼 사이에 추가적인 보안 계층을 추가한다.
본 요약은 아래의 상세한 설명에서 더 설명되는 개념들의 선택을 간단한 형태로 소개하기 위해 제공된다는 점에 유의해야 한다. 본 요약은 청구 발명의 중요한 특징들 또는 필수적인 특징들을 식별하고자 하는 의도도 없고, 청구 발명의 범위를 결정하는 것에 대한 보조물로서 사용되는 것을 의도하지도 않는다.
위의 요약은 물론, 아래의 상세한 설명은 첨부된 도면들과 관련하여 읽을 때 더 잘 이해된다. 본 발명을 설명하기 위하여, 발명의 다양한 양태들이 도시된다. 그러나, 본 발명은 설명되는 특정 양태들로 한정되지 않는다. 아래의 도면들이 포함된다.
도 1은 개발자 소프트웨어가 운영 체제 계층들과 직접 상호작용하는 종래 기술의 시스템을 나타내는 도면.
도 2는 개발자 소프트웨어가 운영 체제 계층들과 통신하기 위한 하나의 방법으로서 프로그래밍 프레임워크와 상호작용하는 예시적인 시스템을 나타내는 도면.
도 3은 프로그래밍 프레임워크가 개발자 소프트웨어 요청을 운영 체제 그래픽 계층에 의해 예상되는 포맷으로 변환함으로써 플랫폼 추상화를 제공하는 예시적 인 방법을 나타내는 도면.
도 4는 프로그래밍 프레임워크가 개발자 소프트웨어 요청을 상이한 운영 체제 그래픽 계층에 의해 예상되는 다른 포맷으로 변환함으로써 플랫폼 추상화를 제공하는 예시적인 방법을 도시하는 도면.
도 5는 프로그래밍 프레임워크가 개발자 코드로부터의 요청을 운영 체제 그래픽 계층에 통신할 때 적절한 코드 거동을 에뮬레이트함으로써 플랫폼 추상화를 제공하는 예시적인 방법을 도시하는 도면.
도 6은 현재 개시되는 발명에 따라 프로그래밍 프레임워크가 구현될 수 있는 예시적인 비제한적인 컴퓨팅 시스템 환경을 나타내는 블록도.
도 7은 현재 개시되는 발명의 다른 양태에 따라 프로그래밍 프레임워크가 구현될 수 있는 예시적인 비제한적인 멀티미디어 콘솔 장치를 나타내는 블록도.
개요
일반적으로, 컴퓨터 플랫폼 상에서 실행되는 애플리케이션은 운영 체제와 직접 상호작용한다. 애플리케이션은 작업들을 완료하는 것이 필요할 때 운영 체제를 통해 플랫폼 하드웨어 및 자원들을 조작한다. 애플리케이션은 일반적으로 애플리케이션 프로그램 인터페이스들(APIs)을 이용하여 운영 체제의 개별 요소들과 통신함으로써 그가 필요로 하는 시스템 레벨 작업들을 달성할 것이다. 그러한 작업들의 예는 모니터 상의 그래픽 이미지들의 렌더링, 스피커 상의 오디오 출력 생성, 장치(예를 들어, 키보드, 마우스 또는 게임 제어기)를 통한 사용자로부터의 입력 수신, 메모리에 대한 액세스 및 저장 장치들(예를 들어, 하드 디스크 드라이브, 플로피 디스크 드라이브 또는 플래시 드라이브)에 대한 액세스를 포함한다. API들 및 이들을 사용하는 방법은 부득이 플랫폼마다 다른데, 이는 플랫폼마다 하드웨어 및 운영 체제가 다르기 때문이다. 따라서, 플랫폼 상에서 실행되는 각각의 애플리케이션은 의도한 대로 작업하려면 해당 플랫폼의 특정 운영 체제 및 그와 관련된 API들과 적절히 상호작용해야 한다. 더욱이, 컴퓨터 플랫폼들 상에서 실행되는 애플리케이션들의 예상되는 거동들이 존재한다. 이러한 예상되는 거동들도 플랫폼에 따라 크게 다르다. 애플리케이션이 플랫폼 예상들에 따라 동작하지 않는 것은 애플리케이션이 실패하거나 부정확하게 수행되지 못하게 할 수 있다.
한편, 컴퓨터 플랫폼들 상에서 실행되는 대다수의 애플리케이션 소프트웨어는 그가 플랫폼 자원들로부터 필요로 하고 기대하는 것들과 관련하여 유사한 요구들을 가질 것이다. 즉, 애플리케이션 소프트웨어는 메모리, 비주얼 디스플레이, 제어기 등과 같은 대다수의 컴퓨팅 플랫폼들의 대표적인 하드웨어 및 소프트웨어의 사용을 가장 자주 필요로 할 것이다. 따라서, 플랫폼을 추상화하는 애플리케이션들에 대한 인터페이스를 제공하는 것이 가능하며, 따라서 애플리케이션은 플랫폼에 관계없이 플랫폼에 대한 동일한 인터페이스를 보게 되며, 대다수의 애플리케이션들에 의해 요구되는 자원들에 대한 액세스가 계속 제공된다. 이러한 인터페이스를 제공함으로써, 개발자들은 그들의 애플리케이션들의 플랫폼 고유 양태들에 집중할 필요가 없으며, 다수의 플랫폼과 성공적으로 상호작용하는 단일 프로그램을 생성할 수 있다.
본 발명의 하나의 예시적이고 비제한적인 양태에서는 플랫폼 추상화를 수행하기 위한 프로그래밍 프레임워크가 제공된다. 프로그래밍 프레임워크는 개별 플랫폼 자원에 대한 API와 유사한 플랫폼에 대한 인터페이스를 제공하지만, 프로그래밍 프레임워크는 전체 플랫폼에 대한 인터페이스일 수 있으며, 따라서 그의 여러 자원에 대한 액세스를 허가할 수 있다. 애플리케이션 소프트웨어는 추상화된 플랫폼 버전과 함께 작업하고 있으므로, 애플리케이션 소프트웨어는 프레임워크의 기반인 하드웨어 또는 소프트웨어에 관계없이 프로그래밍 프레임워크를 통해 동일 액션을 수행하여 작업을 완수한다. 프로그래밍 프레임워크는 애플리케이션으로부터 플랫폼 자원에 대한 요청을 받고, 이 요청을 수정하고 포맷팅하여 자원으로 전송하며, 따라서 요청은 자원에 의해 요구되는 특정 방식으로 올바르게 수신되며, 따라서 요청의 올바른 실행이 보증된다. 또한, 애플리케이션 소프트웨어를 목적으로 하는 시스템 자원들로부터의 정보 및 요청들은 프로그래밍 프레임워크를 통해 애플리케이션 소프트웨어로 통신된다.
프로그래밍 프레임워크는 또한 애플리케이션을 대신하여 예상되는 거동들을 플랫폼에 제공하며, 따라서 애플리케이션은 플랫폼에 대해 "양호하게 거동하는" 것으로 보인다. 이것은 개발자가 다양한 플랫폼의 예상되는 거동들의 차이들을 수용해야 할 필요가 없게 한다.
프로그래밍 프레임워크는 플랫폼에 대한 추가적인 보안 계층을 제공한다. 플랫폼에 대한 표준화된 인터페이스를 제공함으로써, 프레임워크는 애플리케이션 소프트웨어로부터의 통신 및 요청들이 플랫폼 자원들에 도달하는 방식을 제어한다. 이것은 제한된 플랫폼 자원들에 액세스하거나 플랫폼 또는 플랫폼 제조자에게 안전하지 않거나 바람직하지 않은 액션들을 수행할 수 있는 애플리케이션 개발자 코드에 대한 추가 검사를 제공한다. 프로그래밍 인터페이스는 또한, 애호가 또는 자가 개발자에게 플랫폼 자원들에 액세스하기 위한 더 쉽고 더 효율적인 방법을 제공함으로써 컴퓨팅 시스템들, 특히 게임 콘솔들과 같은 폐쇄된 시스템들을 해킹하기 위한 인센티브를 줄이며, 따라서 그러한 해킹에 대한 필요를 제거한다.
프로그래밍 프레임워크의 양태들
현재 개시되는 발명의 본 섹션은 플랫폼 추상화를 제공하기 위한 프로그래밍 프레임워크의 양태들에 집중한다. 현재 개시되는 발명은 소프트웨어 개발자들이 장치의 자원들 중 적어도 하나에 액세스하는 애플리케이션 소프트웨어를 생성하는 것을 허가하는 것이 바람직할 수 있는 임의의 컴퓨팅 장치에 적용된다. 이러한 프레임워크에 대한 보다 양호한 이해를 얻기 위해, 종래 기술에 주목하는 것이 도움이 된다.
도 1은 개발자 코드(102)가 원하는 결과들을 얻기 위해 운영 체제의 다양한 계층과 직접 상호작용하는 플랫폼(150) 상의 종래 기술의 시스템을 나타낸다. 플랫폼(150)은 운영 체제 및 게임 소프트웨어를 실행하도록 구성되는 게임 콘솔과 같은 폐쇄된 컴퓨팅 장치이거나, 다양한 소프트웨어를 실행하도록 구성되는 개인용 컴퓨터와 같은 더 개방된 플랫폼일 수 있다. 통상적인 플랫폼(150) 상에서 이용 가능할 수 있는 예시적인 계층들이 도시되어 있다. 이들은 그래픽 계층(110), 오디오 계층(115), 입력 계층(120), 저장 계층(125), 네트워크 계층(130) 및 수학 계산 계층(135)을 포함한다. 이러한 층들 각각은 상이한 작업을 담당한다. 예를 들어, 그래픽 계층(110)은 그래픽들의 렌더링(플랫 쉐이딩(flat shading), 정상 맵핑, 텍스처 맵핑 등을 포함하지만 이에 한정되지 않음)을 담당할 수 있고, 오디오 계층(115)은 그 명칭이 시사하듯이 폐쇄된 시스템 상의 오디오를 담당할 수 있고, 입력 계층(120)은 제어기 버튼 선택, 입력 장치들을 이용한 클릭킹 등과 같은 사용자들로부터의 입력의 처리를 담당할 수 있고, 저장 계층(125)은 소정 콘텐츠의 저장 또는 소정 콘텐츠의 소환을 담당할 수 있고, 네트워크 계층(130)은 애플리케이션이 인터넷을 통해 서버와 접촉하는 것을 허가하는 것과 같이 네트워크 액세스를 허가할 수 있으며, 수학 계산 계층(135)은 예를 들어 (그래픽들이 수반되는 경우) 더 효율적인 맵 렌더링을 허가하기 위해 소정의 수학 계산 기능들의 수행을 허가할 수 있다.
이러한 계층들(110, 115, 120, 125, 130, 135) 각각은 애플리케이션에 대해 플랫폼(150) 자원들에 대한 액세스를 제공하는 데 도움이 된다. 이들은 또한, 사용자 모드와 개발자 코드(102)가 안전한 컴퓨팅을 보증하기 위해 수행할 필요가 있을 수 있는 관리자(예를 들어, 커널) 모드 사이에 안전한 게이트를 제공한다(즉, 이에 따라 개발자 코드는 플랫폼 제조자 또는 다른 관련자들에 의해 의도되지 않은 목적들을 위해 기반 고유 OS 계층(103) 및 임의의 관련 플랫폼(150) 자원들을 점거하지 않는다).
계층들(110, 115, 120, 125, 130, 135)은 통상적으로 플랫폼, 운영 체제 또는 하드웨어에 고유하다. 예를 들어, 32 GB의 하드 드라이브를 갖춘 플랫폼에 대한 저장 계층(125)을 구성하는 소프트웨어는 64 GB의 하드 드라이브를 갖춘 플랫폼 상에서 사용되는 소프트웨어와 다를 것이다. 또한, 플랫폼 운영 체제의 한 버전은 이전 버전과 다르게 저장 계층(125)을 구현할 수 있다. 이것은 반드시 그러한데, 이는 상이한 하드웨어는 그를 제어할 상이한 소프트웨어를 필요로 하기 때문이다. 또한, 기반 운영 체제의 상이한 버전들은 시스템 작업들을 완수하는 상이한 소프트웨어 및 상이한 방법들을 가질 것이다.
통상적으로, 계층들(110, 115, 120, 125, 130, 135)은 API들에 의해 애플리케이션 액세스 계층(104)을 통해 액세스될 것이다. 이러한 API들은 계층들을 구성하는 소프트웨어가 변경됨에 따라 변경될 것이다. 따라서, 애플리케이션 코드는 이것을 허가해야 하고, 애플리케이션 소프트웨어가 적절히 실행되는 것이 요구되는 모든 플랫폼 상에 존재하는 다양한 API에 적절한 입력을 검출 및 제공하거나, 단일 플랫폼으로 한정되어야 한다. 이것은 규칙적으로 전문 개발자들에 의해 이해되고 처리되지만, 개발자들은 그들의 코드가 다수의 플랫폼과 호환되는 것을 보증하는 데에 시간을 소비할 필요가 없도록 하기 위해 작업할 공통 프레임워크를 갖는 것이 훨씬 더 쉬울 것이다. 초보 개발자들 및 애호가들에게, 다중 플랫폼 지원은 훨씬 더 큰 도전이다.
더욱이, 계층들(110, 115, 120, 125, 130, 135)에 액세스하는 데 사용되는 API들은 매우 고유하고 복잡하여, 그들의 요구들 및 그들이 계층들과 함께 기능하는 방식에 대한 철저한 이해를 필요로 할 수 있다. 작업을 요청할 때 완전하고 정확한 데이터를 API에 제공하지 못하면, 작업의 실패 또는 에러 상황이 발생할 수 있다. API는 또한, 적절히 기능하기 위해 애플리케이션들로부터 소정의 거동들을 기대할 수 있다. 이러한 거동들에 대한 지식은 비전문적인 개발자들 또는 플랫폼 제조자와 함께 또는 플랫폼 제조자의 승인 하에 직접 작업하지 않은 사람들에게는 쉽게 액세스 가능하지 않을 수 있다. 또한, 이것은 일반적으로 전문적인 개발자들에 의해 처리되지만, 소프트웨어 개발의 이러한 양태들의 처리는 초보 개발자에게는 매우 두려운 작업일 수 있다.
도 1과 달리, 도 2는 개발자 코드(202)와 플랫폼(250)의 요소들 간의 통신을 용이하게 하기 위해 프로그래밍 프레임워크(205)를 사용하는 시스템을 나타낸다. 플랫폼(250)은 게임 콘솔과 같은 폐쇄된 컴퓨팅 장치 또는 개인용 컴퓨터와 같은 더 개방된 플랫폼일 수 있으며, 컴퓨팅 장치는 프로그래밍 프레임워크(205)를 구현하는 운영 체제 소프트웨어 컴포넌트들을 실행하도록 구성된다. 애플리케이션 액세스 계층(204) 내의 계층들(210, 215, 220, 225, 230, 235)은 도 1에 대해 전술한 것들과 기능적으로 유사하다. 프로그래밍 프레임워크(205)는 계층들(210, 215, 220, 225, 230, 235)에 액세스하는 데 사용되는 API들을 추상화한다. 본 발명의 예시적이고 비제한적인 양태에서, 프로그래밍 프레임워크(205)는 계층들(210, 215, 220, 225, 230, 235)과 같은 플랫폼 자원들에게 간단한 인터페이스를 제공한다. 여기서 사용되는 "인터페이스"라는 용어는 소프트웨어에 의해 통상적으로 사용되는 임의의 입력들 및 출력들의 넓은 정의를 의도한다.
도 3 및 4는 프로그래밍 프레임워크가 애플리케이션 소프트웨어의 개발을 돕고 플랫폼 추상화를 제공하는 방식에 대한 매우 간단한 예를 나타낸다. 여기에 설명되는 예들은 표시된 컴퓨팅 시스템의 부품들에서 매우 제한되며, 본 발명의 설명의 목적을 위해 크게 간략화된다는 점에 유의한다. 또한, 여기서 사용되는 명령들의 예들은 단지 설명 목적을 위한 간단한 명령들이며, 어떠한 실제 명령들이 사용될 수 있는지를 전혀 시사하지 않거나 본 발명을 한정하지 않는다는 점에 유의한다.
도 3은 비디오 카드(355), 고유 운영 체제(303), 그래픽 계층(310) 및 프로그래밍 프레임워크(305)를 갖춘 플랫폼(350) 상의 예시적인 시스템을 나타낸다. 비디오 카드(355)를 통해 플랫폼(350)에 접속되는 CRT(음극선관) 모니터(360)가 존재한다. 플랫폼(350) 상에서 실행되는 개발자 코드(302)는 플랫폼(350)이 디스플레이 상에 문자 세트를 표시하도록 요청할 수 있다. 이 예에서, 개발자 코드(302)는 모니터(360) 상에 문자들 "ABC"의 표시를 요청하고 있다. 이러한 요청은 명령(340) "표시 {ABC}"를 이용하여 프로그래밍 프레임워크로 전송된다. 프로그래밍 프레임워크(305)는 이 요청을 수신하고, 이를 그래픽 계층(310)의 요구들에 맞도록 수정하여, 이를 그래픽 계층(310)에 제출한다. 이 예에서는, 그래픽 계층(310)이 명령을 명령(340) "GraphicsAPI{printCRT [ABC][50][60][10]}"에 나타난 바와 같이 포맷팅할 것을 요구하는 것으로 가정한다. 이러한 도시된 예에서, 그래픽 계층(310)은 표시될 문자들 외에 다른 표시 특성들을 위한 필드들을 필요로 하는데, 이는 프로그래밍 프레임워크(305)에 의해 제공되며, 애플리케이션 개발자 코드(302)가 그래픽 계층(310)의 특정 요구들에 대해 알아야 하는 부담을 덜어준다. 이어서, 그래픽 계층(310)은 운영 체제 계층(303)과 함께 작업하며, 운영 체제 계층은 비디오 카드(355)를 제어하고, 또한 비디오 카드는 CRT 모니터(360)에게 문자들을 표시하도록 지시한다.
도 3과 도 4를 비교하는데, 도 4에는 플랫폼(450), 비디오 카드(455), 고유 운영 체제(403), 그래픽 계층(410) 및 프로그래밍 프레임워크(405)를 갖는 시스템이 도시되어 있다. 비디오 카드(455)를 통해 플랫폼(450)에 접속되는 LCD(액정 디스플레이) 모니터(460)가 존재한다. 여기서, 동일한 개발자 코드(302)가 이 플랫폼(450) 상에서 실행되고 있으며, 도 3에서와 동일한 명령 "Display {ABC}"을 이용하여 프로그래밍 프레임워크(405)에 대해 동일한 요청을 행한다. 프로그래밍 프레임워크(405)는 이러한 요청을 수신하고, 이를 그래픽 계층(410)을 위해 적절히 포맷팅하지만, 이 사례에서는 플랫폼(450)이 도 3에 도시된 플랫폼(350)과 다른 자원들을 가지므로, 그래픽 계층(410)의 명령 요구들은 그래픽 계층(310)의 요구들과 상이하다. 따라서, 프로그래밍 프레임워크(405)는 그래픽 계층(410)에 대해 명령 "GraphicsAPI {printLCD [10][50][60][ABC]}"를 발행한다. 그러나, 애플리케이션 개발자 코드(302)는 기반 플랫폼들(350, 450)의 차이들에 대해 완전히 불가지론적일 수 있으며, 동일 명령(340)으로 동일한 결과를 계속 얻을 수 있다. 이어서, 그래픽 계층(410)은 운영 체제 계층(403)과 함께 작업하며, 운영 체제 계층은 비디오 카드(455)를 제어하고, 또한 비디오 카드는 LCD 모니터(460)에게 문자들을 표시하도록 지시한다.
이 예는 프로그래밍 프레임워크가 플랫폼 추상화를 어떻게 제공하는지를 보여준다. 도 3 및 도 4에 도시된 두 예에서, 개발자 코드(302)는 기반 소프트웨어 및 하드웨어의 차이에도 불구하고 프로그래밍 프레임워크들(305, 405)에 동일한 명령(340)을 전송할 수 있었다. 개발자 코드(302)는 그래픽 계층 API들과 함께 작업하기 위한 상이한 요구들을 포함하는 플랫폼들 간의 차이들을 해결하지 않고도 플랫폼들(350, 450)과 상호작용할 수 있었다. 개발자 코드와 별개로 플랫폼을 추상화하는 이러한 능력은 다중 플랫폼 호환 애플리케이션들을 생성하는 작업을 크게 단순화한다. 코드가 플랫폼들에 걸쳐 실행 가능한 것을 보증하는 데 필요한 많은 양의 지루한 작업이 여기에 설명되는 바와 같은 프로그래밍 프레임워크를 이용함으로써 제거된다.
도 5는 프로그래밍 프레임워크(505)가 어떻게 개발자 코드가 플랫폼(550)과의 상호작용에서 적절한 거동을 보이는 것을 보증하는데 도움이 될 수 있는지를 보여준다. 도 3 및 4와 유사하게, 개발자 코드(302)는 명령(340) 형태의 요청을 프로그래밍 프레임워크(505)로 통신한다. 프레임워크(505)는 요청(340)을 수신하고, 그 명령이 기반 하드웨어 및 소프트웨어에서 구현되게 하는 단계들을 취한다. 이 예에서, 그래픽 계층(510)이 표시될 문자들을 위한 메모리 공간을 요청하는 명령(570)이 문자들의 표시를 요청하는 명령(530)과 같은 명령에 항상 선행할 것을 요구하는 경우, 프로그래밍 프레임워크(505)는 이러한 추가 요청(570)을 제공할 것이다. 프레임워크(505)는 플랫폼 추상화에 대한 그의 임무의 일부로서 임의의 필요한 추가 명령들을 발행하고, 개발자 코드(302)가 운영 체제 계층들의 관점에서 올바르게 거동하는 것으로 보이는 것을 가능하게 하는 데 필요한 추가 액션들을 수행하며, 따라서 개발자 코드(302)가 의도대로 실행되는 것을 보장하는 것을 도울 것이다. 이것은 또한, 개발자가 상이한 플랫폼들에 의해 기대되는 다양한 거동을 수용하기 위해 코드 거동의 상이한 변화들을 애플리케이션 코드(302) 내에 포함시켜야 하는 필요를 없앤다.
프로그래밍 프레임워크는 또한 플랫폼에 대한 추가 보안 계층을 제공할 수 있다. 도 2를 다시 참조하면, 개발자 코드(202)가 그가 액세스하지 않아야 하는 자원들에 대한 액세스를 위한 요청을 프로그래밍 프레임워크(205)에 대해 발행하거나, 플랫폼 제조자에 의해 허가 또는 요구되지 않은 작업을 제어 또는 수행하려고 시도하는 경우, 프로그래밍 프레임워크(205)는 추가 방어물로서 사용될 것이다. 프로그래밍 프레임워크(205)는 또한 그러한 금지된 거동을 허가하는 그의 인터페이스 명령들 또는 프로그램 호출들을 통해 간단히 이용 가능하지 않게 될 수 있다. 그래픽 계층(210) 또는 저장 계층(225)과 같은 플랫폼(250) 내의 시스템들은 통상적으로 내장된 보호 장치들을 갖지만, 프로그래밍 프레임워크(205)의 추가는 이러한 자원들을 더 안전하게 하는데 이용된다. 예를 들어, 개발자 코드(202)가 커널 또는 고유 운영 체제 소프트웨어(203)의 일부로서 현재 사용되고 있는 메모리에 기입하기 위한 요청을 발행하는 경우, 프로그래밍 프레임워크(205)는 그러한 요청에 대한 제1 방어선일 것이다. 프레임워크(205)는 개발자 코드(202)로부터의 메모리 요청들을 검사하기 위해 그가 사용하는 저장 계층(225)으로부터 수신된 제한된 메모리 위치들의 리스트를 가질 수 있다. 다른 사례들에서, 프로그래밍 프레임워크(205)는 디스크 포맷팅 또는 패스워드 변경과 같이 개발자 코드(202)에게 엄격히 허가되지 않는 소정의 명령들 또는 기능들의 정적 리스트를 가질 수 있다.
프로그래밍 프레임워크의 추가적인, 덜 직접적인 보안 특징은 특히 게임 콘솔들과 같은 폐쇄된 시스템들과 관련하여 플랫폼을 해킹하기 위한 인센티브의 감소이다. 여기에 설명되는 것과 같은 프로그래밍 프레임워크가 애호가들 및 초보 개발자들에게 이용 가능하게 되어, 이들이 프레임워크에 의해 제공되는 한계 내에서 소프트웨어를 쉽게 생성할 수 있게 되는 경우, 그러한 개발자들은 아마도 플랫폼을 해킹하는 대신에 프로그래밍 프레임워크를 사용하기로 결정할 것이다. 프로그래밍 프레임워크는 그러한 개발자들이 그들의 소프트웨어를 개발하는 창조적 양태들에 그들의 노력을 집중할 수 있게 할 것이다. 그들은 폐쇄된 시스템들의 제한들 및 필요한 소프트웨어 서명을 피하는 방법을 찾는 데에 시간과 에너지를 소비할 필요가 없을 것이다. 개방 시스템들에서도, 액세스 가능하고 사용하기 쉬운 프로그래밍 프레임워크의 존재는 개발자들이 플랫폼에서 이용 가능한 자원들을 더 효율적으로 이용하는 것을 허가하고, 새로운 소프트웨어의 사용자 개발을 자극할 것이다.
예시적인 컴퓨팅 장치
전술한 바와 같이, 현재 개시되는 발명은 소프트웨어 개발자들이 장치의 자원들 중 적어도 하나에 액세스하는 애플리케이션 소프트웨어를 생성하는 것을 허가하는 것이 바람직할 수 있는 임의의 컴퓨팅 장치에 적용된다. 그러나, 애플리케이션 소프트웨어의 콘텐츠와 균등한 다른 콘텐츠도 현재 개시되는 프로그래밍 프레임워크와 함께 작업할 수 있으며, 현재 개시되는 발명은 여기에 설명되는 예들로 한정되지 않는 모든 종류의 컴퓨팅 장치들 상에서 구현될 수 있다는 것을 이해해야 한다. 따라서, 아래 도 6에서 설명되는 범용 컴퓨팅 장치는 일례일 뿐이며, 본 발명은 독립형이거나 네트워크/버스 연동 및 상호작용을 갖는지에 관계없이 임의의 클라이언트, 서버, 휴대용 또는 비휴대용 장치에서 구현될 수 있다. 따라서, 본 발명은 매우 적은 또는 최소의 클라이언트 자원들이 관련되는 네트워킹된 호스팅되는 서비스들의 환경, 예를 들어 클라이언트 장치가 설비 내에 배치되는 객체와 같이 네트워크/버스에 대한 인터페이스로서만 사용되는 네트워킹된 환경에서 구현될 수 있다.
요구되지는 않지만, 본 발명은 장치 또는 객체에 대한 서비스들 또는 소프트웨어의 개발자에 의해 사용하기 위해 운영 체제를 통해 부분적으로 구현되고, 그리고/또는 본 발명과 관련하여 동작하는 애플리케이션 소프트웨어 내에 포함될 수 있다. 소프트웨어는 클라이언트 워크스테이션, 서버 또는 다른 장치와 같은 하나 이상의 컴퓨터에 의해 실행되는 프로그램 모듈들과 같은 컴퓨터 실행 가능 명령어들과 일반적으로 관련하여 설명될 수 있다. 이 분야의 기술자들은 본 발명이 다른 컴퓨터 시스템 구성들 및 프로토콜들에서도 실시될 수 있다는 것을 알 것이다.
따라서, 도 6은 도 1-5를 참조하여 설명된 다양한 양태가 구현될 수 있는 적절한 컴퓨팅 시스템 환경(600)의 일례를 도시하지만, 위에서 명백해진 바와 같이, 컴퓨팅 시스템 환경(600)은 현재 개시되는 발명의 구현을 위한 적절한 컴퓨팅 환경의 일례일 뿐이며, 본 발명의 그러한 다양한 양태들의 이용 및 기능의 범위에 대한 어떠한 제한도 암시하는 것을 의도하지 않는다. 컴퓨팅 환경(600)은 예시적인 운영 환경(600) 내에 도시되는 컴포넌트들 중 어느 하나 또는 조합에 관하여 어떠한 의존성 또는 요구를 갖는 것으로도 해석되지 않아야 한다.
도 6을 참조하면, 전술한 양태들을 구현하기 위한 예시적인 컴퓨팅 장치는 위에서 플랫폼으로도 참조된 컴퓨터(610) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(610)의 컴포넌트들은 처리 유닛(620), 시스템 메모리(630) 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 처리 유닛(620)에 결합하는 시스템 버스(621)를 포함할 수 있지만, 이에 한정되지 않는다. 시스템 버스(621)는 메모리 버스 또는 메모리 제어기, 주변 버스, 및 다양한 버스 아키텍처 중 어느 하나를 이용하는 로컬 버스를 포함하는 여러 타입의 버스 구조들 중 어느 하나일 수 있다.
컴퓨터(610)는 통상적으로 다양한 컴퓨터 판독 가능 매체를 포함한다. 컴퓨터 판독 가능 매체는 컴퓨터(610)에 의해 액세스될 수 있는 임의의 이용 가능 매체일 수 있다. 제한이 아니라 예로서, 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 명령어들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체 양자를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CDR0M, 디지털 다기능 디스크(DVD) 또는 다른 광학 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨터(610)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이에 한정되지 않는다. 통신 매체는 통상적으로 반송파 또는 다른 운반 메커니즘과 같은 피변조 데이터 신호 내에 컴퓨터 판독 가능 명령어들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다.
시스템 메모리(630)는 판독 전용 메모리(ROM; 632) 및/또는 랜덤 액세스 메모리(RAM; 634)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함할 수 있다. 시동 등의 동안에 컴퓨터(610) 내의 요소들 간의 정보 전송을 돕는 기본 루틴들을 포함하는 기본 입출력 시스템(BIOS)이 메모리(630)에 저장될 수 있다. 메모리(630)는 통상적으로, 처리 유닛(620)에 의해 즉시 액세스될 수 있고, 그리고/또는 처리 유닛(620) 상에서 현재 동작하고 있는 데이터 및/또는 프로그램 모듈들도 포함한다. 제한이 아니라 예로서, 메모리(630)는 운영 체제, 애플리케이션 프로그램, 다른 프로그램 모듈 및 프로그램 데이터도 포함할 수 있다.
컴퓨터(610)는 또한 다른 이동식/비이동식 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 예를 들어, 컴퓨터(610)는 비이동식 비휘발성 자기 매체에 대해 판독 및 기록을 행하는 하드 디스크 드라이브, 이동식 비휘발성 자기 디스크에 대해 판독 및 기록을 행하는 자기 디스크 드라이브, 및/또는 CD-ROM 또는 다른 광학 매체와 같은 이동식 비휘발성 광 디스크에 대해 판독 및 기록을 행하는 광 디스크 드라이브를 포함할 수 있다. 예시적인 운영 환경에서 사용될 수 있는 다른 이동식/비이동식 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 반도체 RAM, 반도체 ROM 등을 포함하지만 이에 한정되지 않는다. 하드 디스크 드라이브는 통상적으로 인터페이스(680)와 같은 비이동식 메모리 인터페이스를 통해 시스템 버스(621)에 접속되며, 자기 디스크 드라이브 또는 광 디스크 드라이브는 통상적으로 인터페이스(690)와 같은 이동식 메모리 인터페이스를 통해 시스템 버스(621)에 접속된다.
사용자가 제어기들을 통해 폐쇄된 컴퓨팅 장치에 입력을 제공할 수 있는 것에 더하여, 사용자는 키보드 및 마우스, 트랙볼 또는 터치 패드로서 일반적으로 참조되는 포인팅 장치와 같은 입력 장치들을 통해 명령들 및 정보를 컴퓨터(610)에 입력할 수 있다. 그러한 주변 장치들에 더하여, 다른 입력 장치들은 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 장치들은 종종, 시스템 버스(621)에 결합되는 사용자 입력(640) 및 관련 인터페이스(들)를 통해 처리 유닛(620)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 시리얼 버스(USB)와 같은 다른 인터페이스 및 버스 구조들을 통해 접속될 수도 있다. 그래픽 서브시스템도 시스템 버스(621)에 접속될 수 있다. 모니터 또는 다른 타입의 디스플레이 장치도 비디오 메모리와 통신할 수 있는 출력 인터페이스(650)와 같은 인터페이스를 통해 시스템 버스(621)에 접속된다. 모니터 외에도, 컴퓨터들은 출력 인터페이스(650)를 통해 접속될 수 있는 스피커 및 프린터와 같은 다른 주변 출력 장치들도 포함할 수 있다.
컴퓨터(610)는 장치(610)와 다른 매체 능력들을 가질 수 있는 원격 컴퓨터(670)와 같은 하나 이상의 다른 원격 컴퓨터에 대한 논리적 접속들을 이용하여 네트워킹된 또는 분산된 환경에서 동작할 수 있다. 원격 컴퓨터(670)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공통 네트워크 노드, 또는 임의의 다른 원격 매체 소비 또는 전송 장치일 수 있으며, 컴퓨터(610)와 관련하여 전술한 요소들 중 임의 또는 모든 요소를 포함할 수 있다. 도 6에 도시된 논리 접속들은 네트워크(671)를 포함하며, 네트워크의 예는 근거리 네트워크(LAN) 또는 광역 네트워크(WAN)를 포함하지만, 다른 네트워크들/버스들도 포함할 수 있다. 그러한 네트워킹 환경들은 가정, 사무실, 기업 범위의 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적이다.
컴퓨터(610)는, LAN 네트워킹 환경에서 사용될 때, 네트워크 인터페이스 또는 어댑터를 통해 네트워크(671)에 접속된다. 컴퓨터(610)는, WAN 네트워킹 환경에서 사용될 때, 통상적으로 인터넷과 같은 WAN을 통해 통신을 설정하기 위한 모뎀 또는 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀은 입력(640)의 사용자 입력 인터페이스 또는 다른 적절한 메커니즘을 통해 시스템 버스(621)에 접속될 수 있다. 네크워킹된 환경에서, 컴퓨터(610) 또는 그의 부분들과 관련하여 설명된 프로그램 모듈들은 원격 메모리 저장 장치에 저장될 수 있다. 도시되고 설명되는 네트워크 접속들은 예시적이며, 컴퓨터들 사이에 통신 링크를 설정하기 위한 다른 수단들이 사용될 수 있다는 것을 이 분야의 기술자들은 이해할 것이다.
예시적인 폐쇄된 시스템 또는 콘솔 환경
이어서, 다른 예시적인 비제한적인 컴퓨팅 장치, 즉 폐쇄될 수 있고, 폐쇄된 장치 제조자 또는 게임 소프트웨어 발행자와 같은 소정의 서명 권한자에 의해 서명된 제한된 양의 소프트웨어 컴포넌트들에게만 액세스가 허용될 수 있는 예시적인 멀티미디어 콘솔을 나타내는 블록도를 도시하는 도 7을 참조한다. 도 7은 현재 개시되는 발명의 양태들이 구현될 수 있는 멀티미디어 콘솔(700)의 기능 컴포넌트들을 도시한다. 멀티미디어 콘솔(700)은 레벨 1(L1) 캐시(702), 레벨 2(L2) 캐시(704) 및 플래시 ROM(706)을 갖는 중앙 처리 유닛(CPU; 701)을 구비한다. 레벨 1 캐시(702) 및 레벨 2 캐시(704)는 데이터를 일시적으로 저장하며, 따라서 메모리 액세스 사이클들의 수를 감소시켜, 처리 속도 및 처리량을 개선한다. 플래시 ROM(706)은 멀티미디어 콘솔(700)이 전력을 공급받는 부트 프로세스의 초기 단계 동안 로딩되는 실행 가능 코드를 저장할 수 있다. 대안으로, 초기 부트 단계 동안 로딩되는 실행 가능 코드는 플래시 메모리 장치(도시되지 않음)에 저장될 수 있다. 또한, ROM(706)은 CPU(701)와 별개로 배치될 수 있다.
이러한 콘솔은 그래픽 처리 유닛(GPU; 708) 및 비디오 인코더/비디오 코덱(코더/디코더)(714)과 같은 다양한 이용 가능 자원들을 가질 수 있다. 이러한 구성에서, 데이터는 버스를 통해 그래픽 처리 유닛(708)에서 비디오 인코더/비디오 코덱(714)으로 전송된다. 비디오 처리 파이프라인은 텔레비전 또는 다른 디스플레이로의 전송을 위해 데이터를 A/V(오디오/비디오) 포트(740)로 출력한다. 메모리 제어기(710)가 GPU(708) 및 CPU(701)에 접속되어, RAM과 같은, 그러한 이에 한정되지 않는, 다양한 타입의 메모리(712)에 대한 프로세서 액세스를 돕는다.
멀티미디어 콘솔(700)은 모듈(718) 상에 바람직하게 구현되는 I/O 제어기(720), 시스템 관리 제어기(722), 오디오 처리 유닛(723), 네트워크 인터페이스 제어기(724), 제1 USB 호스트 제어기(726), 제2 USB 호스트 제어기(728) 및 프론트 패널 I/O 서브어셈블리(730)를 포함한다. USB 제어기들(726, 728)은 주변 제어기들 742(1)-742(2), 무선 어댑터(748) 및 외부 메모리 유닛(746)(예를 들어, 플래시 메모리, 외부 CD/DVD ROM 드라이브, 이동식 매체 등)에 대한 호스트들로서 사용된다. 네트워크 인터페이스(724) 및/또는 무선 어댑터(748)는 네트워크(예를 들어, 인터넷, 홈 네트워크 등)에 대한 액세스를 제공하며, 이더넷 카드, 모뎀, 블루투스 모듈, 케이블 모뎀 등을 포함하는 다양한 유선 또는 무선 인터페이스 컴포넌트 중 어느 하나일 수 있다.
시스템 메모리(743)는 부트 프로세스 동안 로딩되는 애플리케이션 데이터를 저장하기 위해 제공된다. 매체 드라이브(744)가 제공되며, DVD/CD 드라이브, 하드 드라이브, 또는 다른 이동식 매체 드라이브 등을 포함할 수 있다. 매체 드라이브(744)는 멀티미디어 콘솔(700)의 내부 또는 외부에 있을 수 있다. 애플리케이션 데이터는 멀티미디어 콘솔(700)에 의한 실행, 재생 등을 위해 매체 드라이브(744)를 통해 액세스될 수 있다. 매체 드라이브(744)는 시리얼 ATA 버스 또는 다른 고속 접속(예를 들어, IEEE 1394)와 같은 버스를 통해 I/O 제어기(720)에 접속된다.
시스템 관리 제어기(722)는 멀티미디어 콘솔(700)의 이용 가능성을 보증하는 것과 관련된 다양한 서비스 기능을 제공한다. 오디오 처리 유닛(723) 및 오디오 코덱(732)은 높은 충실도 및 스테레오 처리 능력을 갖는 대응 오디오 처리 파이프라인을 형성한다. 오디오 데이터는 통신 링크를 통해 오디오 처리 유닛(723)과 오디오 코덱(732) 사이에 전송된다. 오디오 처리 파이프라인은 오디오 능력을 갖춘 외부 오디오 플레이어 또는 장치에 의한 재생을 위해 데이터를 A/V 포트(740)로 출력한다.
프론트 패널 I/O 서브어셈블리(730)는 전력 버튼(750) 및 배출 버튼(752)은 물론, 멀티미디어 콘솔(700)의 외면 상에 노출된 임의의 LED(발광 다이오드)들 또는 다른 지시기들의 기능을 지원한다. 시스템 전원 모듈(736)은 멀티미디어 콘솔(700)의 컴포넌트들에 전력을 공급한다. 팬(738)은 멀티미디어 콘솔(700) 내의 회로를 냉각시킨다.
멀티미디어 콘솔(700) 내의 CPU(701), GPU(708), 메모리 제어기(710) 및 다양한 다른 컴포넌트는 직렬 및 병렬 버스, 메모리 버스, 주변 버스, 및 임의의 다양한 버스 아키텍처를 사용하는 프로세서 또는 로컬 버스를 포함하는 하나 이상의 버스를 통해 상호접속된다.
멀티미디어 콘솔(700)이 급전되거나 재부팅될 때, 애플리케이션 데이터가 시스템 메모리(743)로부터 메모리(712) 및/또는 캐시들(702, 704)로 로딩되고, CPU(701) 상에서 실행될 수 있다. 애플리케이션은 멀티미디어 콘솔(700) 상에서 이용 가능한 다른 매체 타입들을 네비게이트할 때 일관된 사용자 경험을 제공하는 그래픽 사용자 인터페이스를 제시할 수 있다. 동작에 있어서, 매체 드라이브(744) 내에 포함된 애플리케이션 및/또는 다른 매체가 매체 드라이브(744)로부터 개시되거나 재생되어 멀티미디어 콘솔(700)에 추가 기능들을 제공할 수 있다.
멀티미디어 콘솔(700)은 텔레비전 또는 다른 디스플레이에 간단히 접속함으로써 독립 시스템으로서 동작할 수 있다. 이러한 독립 모드에서, 멀티미디어 콘솔(700)은 하나 이상의 사용자가 시스템과 상호작용하여, 영화를 보고, 음악을 듣는 것 등을 행하는 것을 가능하게 할 수 있다. 그러나, 네트워크 인터페이스(724) 또는 무선 어댑터(748)를 통해 이용 가능하게 되는 광대역 접속의 통합을 통해, 멀티미디어 콘솔(700)은 더 큰 네트워크 공동체의 참여자로서 더 동작할 수 있다.
도 7에 도시된 멀티미디어 콘솔은 게임과 같은 멀티미디어 애플리케이션을 실행하는 데 사용될 수 있는 대표적인 멀티미디어 콘솔이다. 멀티미디어 애플리케이션들은 예를 들어 시스템 설정들, 음성 채팅, 네트워킹된 게임, 네트워크, 이메일, 브라우저 애플리케이션을 통해 다른 사용자들과 상호작용하는 능력 등을 포함하는 시스템 특징들을 이용하여 향상될 수 있다. 그러한 시스템 특징들은 상이한 위치의 플레이어들이 인터넷을 통해 공동 게임을 실행하는 능력을 갖는 것과 같은 멀티미디어 콘솔(700)의 향상된 기능을 가능하게 할 수 있다.
또한, 시간이 지남에 따라, 시스템 특징들은 갱신되거나, 멀티미디어 애플리케이션에 추가될 수 있다. 이러한 시스템 특징들을 제공하기 위해 멀티미디어 개발자에게 멀티미디어 애플리케이션에 대해 상당한 수정을 행하도록 요구하는 것이 아니라, 여기에 설명되는 시스템들 및 방법들은 멀티미디어 개발자가 멀티미디어 애플리케이션과 관련하여 동작하는 개별 시스템 애플리케이션들을 통해 시스템 특징들을 제공하는 것을 가능하게 한다. 예를 들어, 시스템 애플리케이션은 네트워킹된 능력들과 관련된 기능을 구현하여, 멀티미디어 애플리케이션이 멀티미디어(예를 들어, 게임) 개발자에 의한 더 적은 작업을 갖는 네트워킹된 능력들을 제공하도록 쉽게 적응될 수 있게 한다. 그러한 하나의 능력은 다수의 네트워킹된 사용자들에 대한 시스템 레벨 통지들의 능력이다. 시스템 상에서 실행되는 게임들과 같은 개별 멀티미디어 애플리케이션들에 의해 처리되는 것이 아니라, 시스템 레벨 통지들을 시스템 애플리케이션의 일부가 되게 하는 것은 멀티미디어 애플리케이션 개발자들을 위한 개발 프로세스 밖의 게임 초대와 같은 통지의 표시를 처리하며, 개발자들이 멀티미디어 애플리케이션 자체에 집중할 수 있게 한다.
전술한 바와 같이, 본 발명의 실시예들은 다양한 컴퓨팅 장치 및 네트워크 아키텍처와 관련하여 설명되었지만, 기본 개념들은 개발자 애플리케이션 소프트웨어가 로딩되어 실행될 수 있는 임의의 컴퓨팅 장치 또는 시스템에 적용될 수 있다. 예를 들어, 설명된 양태들의 알고리즘(들) 및 하드웨어 구현들은 컴퓨팅 장치의 운영 체제에 적용되고, 장치 상의 개별 객체로서, 다른 객체의 일부로서, 재사용 가능한 제어로서, 서버로부터 다운로드 가능한 객체로서, 장치 또는 객체와 네트워크 사이의 "미들맨"으로서, 분산 객체로서, 하드웨어로서, 메모리 내에, 위의 것들의 임의의 조합 등으로 제공될 수 있다. 여기서는 예시적인 프로그래밍 언어들, 명칭들 및 예들이 다양한 선택의 전형으로서 선택되지만, 이러한 언어들, 명칭들 및 예들은 한정을 의도하지 않는다.
여기에 설명되는 다양한 기술은 하드웨어 또는 소프트웨어와 관련하여, 또는 적절한 경우에 이 둘의 조합과 관련하여 구현될 수 있다. 따라서, 본 발명의 방법들 및 장치들, 또는 그들의 소정 양태들 또는 부분들은 플로피 디스크, CD-ROM, 하드 드라이브, 또는 임의의 다른 기계 판독 가능 저장 매체와 같은 유형 매체 내에 구현되는 프로그램 코드(즉, 명령어들)의 형태를 가질 수 있으며, 프로그램 코드가 컴퓨터와 같은 기계에 로딩되어 실행될 때, 기계는 현재 개시되는 양태들을 실시하기 위한 장치가 된다. 프로그램 가능한 컴퓨터들 상에서의 프로그램 코드 실행의 경우, 컴퓨팅 장치는 일반적으로 프로세서, 프로세서에 의해 판독 가능한 저장 매체(휘발성 및 비휘발성 메모리 및/또는 저장 요소들을 포함함), 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치를 포함한다. 이러한 양태들에 따라 제공되는 임의의 소프트웨어를 구현하거나 사용할 수 있는 하나 이상의 프로그램은 컴퓨터 시스템과 통신하기 위해 하이 레벨 절차 또는 객체 지향 프로그래밍 언어로 바람직하게 구현된다. 그러나, 프로그램(들)은 원할 경우에 어셈블리 또는 기계 언어로 구현될 수 있다. 어느 경우에나, 언어는 컴파일된 또는 해석된 언어이고, 하드웨어 구현들과 결합될 수 있다.
현재 개시되는 양태들의 방법들 및 장치들은 소정의 전송 매체를 통해, 예를 들어 전기 와이어링 또는 케이블링을 통해, 광섬유를 통해, 또는 임의의 다른 형태의 전송 등을 통해 전송되는 프로그램 코드의 형태로 구현되는 통신들을 통해 실시될 수도 있으며, 프로그램 코드가 EPROM, 게이트 어레이, 프로그램 가능 논리 장치(PLD), 클라이언트 컴퓨터 등과 같은 기계에 로딩되어 실행될 때, 기계는 현재 개시되는 발명을 실시하기 위한 장치가 된다. 범용 프로세서 상에서 실행될 때, 프로그램 코드는 프로세서와 결합하여 본 발명의 기능을 호출하도록 동작하는 고유 장치를 제공한다. 또한, 본 양태들과 관련하여 사용되는 임의의 저장 기술들은 항상 하드웨어 및 소프트웨어의 결합일 수 있다.
전술한 양태들은 다양한 도면들의 바람직한 실시예들과 관련하여 설명되었지만, 다른 유사한 실시예들이 이용되거나, 설명된 실시예로부터 벗어나지 않고, 동일한 기능을 수행하도록 설명된 실시예에 대한 변경 및 추가가 행해질 수 있다는 것을 이해해야 한다. 예를 들어, 이 분야의 기술자는 본 출원에서 설명되는 바와 같은 방법들이 유선 또는 무선에 관계없이 게임 콘솔, 핸드헬드 컴퓨터, 휴대용 컴퓨터 등과 같은 임의의 컴퓨팅 장치 또는 환경에 적용될 수 있으며, 통신 네트워크를 통해 접속되고 네트워크를 통해 상호작용하는 임의 수의 그러한 컴퓨팅 장치들에 적용될 수 있다는 것을 인식할 것이다.
또한, 특히 무선 네트워킹된 장치들의 수가 계속 증가함에 따라, 핸드헬드 장치 운영 체제들 및 다른 애플리케이션 고유 운영 체제들을 포함하는 다양한 컴퓨터 플랫폼들이 고려된다는 점이 강조되어야 한다. 더욱이, 본 발명의 기능은 복수의 처리 칩들 또는 장치들에서 또는 이들에 걸쳐 구현될 수 있으며, 저장 또한 마찬가지로 복수의 장치들에 걸쳐 실시될 수 있다. 따라서, 현재 설명되는 양태들은 임의의 단일 실시예로 한정되는 것이 아니라, 첨부된 청구항들에 따라 폭 및 범위가 해석되어야 한다.

Claims (20)

  1. 컴퓨팅 시스템에서 프로그래밍 프레임워크를 이용하여 플랫폼 추상화(platform abstraction)를 생성하기 위한 방법으로서,
    프로그래밍 프레임워크 상에서 적어도 하나의 애플리케이션 프로그램으로부터 적어도 하나의 명령을 수신하는 단계,
    상기 프로그래밍 프레임워크 내에서, 상기 컴퓨팅 시스템에서 허용되지 않는 작업을 상기 적어도 하나의 명령이 제어 또는 수행하지 못하게 하도록 구성된 보안 정책을 유지하는 단계- 상기 보안 정책은 허용되지 않는 커맨드 및 기능 중 하나를 식별함 -,
    상기 프로그래밍 프레임워크 내에서, 상기 적어도 하나의 명령이 상기 보안 정책에 위배되는지를 판정하는 단계,
    상기 적어도 하나의 명령이 상기 보안 정책에 위배된다는 판정에 응답하여, 상기 적어도 하나의 명령에 대응하는 커맨드가 컴퓨팅 장치 운영 체제에 전송되지 않도록 하는 단계,
    상기 적어도 하나의 명령이 상기 보안 정책에 위배되지 않는다는 판정에 응답하여,
    상기 컴퓨팅 장치 운영 체제의 요구들에 부합하도록 상기 프로그래밍 프레임워크 내에서 상기 적어도 하나의 명령을 수정하는 단계, 및
    상기 프로그래밍 프레임워크로부터, 상기 수정된 적어도 하나의 명령을 상기 컴퓨팅 장치 운영 체제로 전송하는 단계
    를 포함하고,
    상기 프로그래밍 프레임워크는 다양한 운영 체제 및 하드웨어를 갖는 적어도 2개의 컴퓨팅 장치 상에 구성될 수 있고, 상기 프로그래밍 프레임워크는 상기 적어도 2개의 컴퓨팅 장치의 운영 체제 및 하드웨어의 상이한 요구들에 관계없이 상기 적어도 2개의 컴퓨팅 장치 상에서 동일한 방식으로 상기 적어도 하나의 애플리케이션 프로그램으로부터 상기 적어도 하나의 명령을 수신하는
    플랫폼 추상화 생성 방법.
  2. 제1항에 있어서,
    상기 컴퓨팅 장치 운영 체제는 적어도 하나의 자원 계층을 가지며, 상기 프로그래밍 프레임워크는 상기 적어도 하나의 명령을 상기 컴퓨팅 장치 운영 체제의 적어도 하나의 자원 계층으로 전송하는
    플랫폼 추상화 생성 방법.
  3. 제2항에 있어서,
    상기 컴퓨팅 장치 운영 체제는 적어도 그래픽 계층, 오디오 계층, 입력 계층 및 저장 계층을 포함하는 자원 계층들을 구비하는
    플랫폼 추상화 생성 방법.
  4. 제2항에 있어서,
    상기 프로그래밍 프레임워크는 적어도 하나의 애플리케이션 프로그래밍 인터페이스(API)를 통해 상기 적어도 하나의 명령을 상기 컴퓨팅 장치 운영 체제의 적어도 하나의 자원 계층으로 전송하는
    플랫폼 추상화 생성 방법.
  5. 제1항에 있어서,
    상기 프로그래밍 프레임워크는 상기 컴퓨팅 장치 운영 체제 내에 통합되는
    플랫폼 추상화 생성 방법.
  6. 제1항에 있어서,
    상기 프로그래밍 프레임워크가 상기 운영 체제로부터 적어도 하나의 명령을 수신하고, 상기 운영 체제로부터의 상기 적어도 하나의 명령을 상기 애플리케이션 프로그램의 요구들에 부합하도록 수정하며, 상기 운영 체제로부터의 상기 적어도 하나의 명령을 상기 애플리케이션 프로그램으로 전송하는
    플랫폼 추상화 생성 방법.
  7. 제1항에 있어서,
    상기 프로그래밍 프레임워크 상에서 상기 적어도 하나의 애플리케이션 프로그램으로부터 수신되는 상기 적어도 하나의 명령은 상기 컴퓨팅 장치 운영 체제에 의해 제어되는 자원들에 대한 적어도 하나의 요청을 포함하는
    플랫폼 추상화 생성 방법.
  8. 컴퓨팅 시스템에서 프로그래밍 프레임워크를 이용하여 플랫폼 추상화를 생성하기 위한 컴퓨터 실행가능 명령들이 저장되어 있는 컴퓨터 판독가능 저장 매체로서, 상기 컴퓨터 실행가능 명령들은,
    프로그래밍 프레임워크 상에서 적어도 하나의 애플리케이션 프로그램으로부터 적어도 하나의 명령을 수신하는 컴퓨터 실행가능 명령들,
    상기 프로그래밍 프레임워크 내에서, 상기 컴퓨팅 시스템에서 허용되지 않는 작업을 상기 적어도 하나의 명령이 제어 또는 수행하지 못하게 하도록 구성된 보안 정책을 유지하는 컴퓨터 실행가능 명령들- 상기 보안 정책은 허용되지 않는 커맨드 및 기능 중 하나를 식별함 -,
    상기 프로그래밍 프레임워크 내에서, 상기 적어도 하나의 명령이 상기 보안 정책에 위배되는지를 판정하는 컴퓨터 실행가능 명령들,
    상기 적어도 하나의 명령이 상기 보안 정책에 위배된다는 판정에 응답하여, 상기 적어도 하나의 명령에 대응하는 커맨드가 컴퓨팅 장치 운영 체제에 전송되지 않도록 하는 컴퓨터 실행가능 명령들,
    상기 적어도 하나의 명령이 상기 보안 정책에 위배되지 않는다는 판정에 응답하여,
    상기 컴퓨팅 장치 운영 체제의 요구들에 부합하도록 상기 프로그래밍 프레임워크 내에서 상기 적어도 하나의 명령을 수정하는 컴퓨터 실행가능 명령들, 및
    상기 프로그래밍 프레임워크로부터, 상기 수정된 적어도 하나의 명령을 상기 컴퓨팅 장치 운영 체제로 전송하는 컴퓨터 실행가능 명령들
    을 포함하고,
    상기 프로그래밍 프레임워크는 다양한 운영 체제 및 하드웨어를 갖는 적어도 2개의 컴퓨팅 장치상에 구성될 수 있고, 상기 프로그래밍 프레임워크는 상기 적어도 2개의 컴퓨팅 장치의 운영 체제 및 하드웨어의 상이한 요구들에 관계없이 상기 적어도 2개의 컴퓨팅 장치상에서 동일한 방식으로 상기 적어도 하나의 애플리케이션 프로그램으로부터 상기 적어도 하나의 명령을 수신하는, 컴퓨터 판독가능 저장 매체.
  9. 제8항에 있어서,
    상기 컴퓨팅 장치 운영 체제는 적어도 하나의 자원 계층을 가지며, 상기 프로그래밍 프레임워크는 상기 적어도 하나의 명령을 상기 컴퓨팅 장치 운영 체제의 적어도 하나의 자원 계층으로 전송하는, 컴퓨터 판독가능 저장 매체.
  10. 제9항에 있어서,
    상기 컴퓨팅 장치 운영 체제는 적어도 그래픽 계층, 오디오 계층, 입력 계층 및 저장 계층을 포함하는 자원 계층들을 구비하는, 컴퓨터 판독가능 저장 매체.
  11. 제9항에 있어서,
    상기 프로그래밍 프레임워크는 적어도 하나의 애플리케이션 프로그래밍 인터페이스(API)를 통해 상기 적어도 하나의 명령을 상기 컴퓨팅 장치 운영 체제의 적어도 하나의 자원 계층으로 전송하는, 컴퓨터 판독가능 저장 매체.
  12. 제8항에 있어서,
    상기 프로그래밍 프레임워크는 상기 컴퓨팅 장치 운영 체제 내에 통합되는, 컴퓨터 판독가능 저장 매체.
  13. 제8항에 있어서,
    상기 프로그래밍 프레임워크는 상기 운영 체제로부터 적어도 하나의 명령을 수신하고, 상기 운영 체제로부터의 상기 적어도 하나의 명령을 상기 애플리케이션 프로그램의 요구들에 부합하도록 수정하며, 상기 운영 체제로부터의 상기 적어도 하나의 명령을 상기 애플리케이션 프로그램으로 전송하는, 컴퓨터 판독가능 저장 매체.
  14. 프로그래밍 프레임워크를 이용하여 플랫폼 추상화를 생성하기 위한 컴퓨팅 시스템으로서,
    프로세서, 및
    컴퓨터 실행가능 명령들이 저장되어 있는 메모리를 포함하되,
    상기 컴퓨터 실행가능 명령들은,
    프로그래밍 프레임워크 상에서 적어도 하나의 애플리케이션 프로그램으로부터 적어도 하나의 명령을 수신하는 컴퓨터 실행가능 명령들,
    상기 프로그래밍 프레임워크 내에서, 상기 컴퓨팅 시스템에서 허용되지 않는 작업을 상기 적어도 하나의 명령이 제어 또는 수행하지 못하게 하도록 구성된 보안 정책을 유지하는 컴퓨터 실행가능 명령들- 상기 보안 정책은 허용되지 않는 커맨드 및 기능 중 하나를 식별함 -,
    상기 프로그래밍 프레임워크 내에서, 상기 적어도 하나의 명령이 상기 보안 정책에 위배되는지를 판정하는 컴퓨터 실행가능 명령들,
    상기 적어도 하나의 명령이 상기 보안 정책에 위배된다는 판정에 응답하여, 상기 적어도 하나의 명령에 대응하는 커맨드가 컴퓨팅 장치 운영 체제에 전송되지 않도록 하는 컴퓨터 실행가능 명령들,
    상기 적어도 하나의 명령이 상기 보안 정책에 위배되지 않는다는 판정에 응답하여,
    상기 컴퓨팅 장치 운영 체제의 요구들에 부합하도록 상기 프로그래밍 프레임워크 내에서 상기 적어도 하나의 명령을 수정하는 컴퓨터 실행가능 명령들, 및
    상기 프로그래밍 프레임워크로부터, 상기 수정된 적어도 하나의 명령을 상기 컴퓨팅 장치 운영 체제로 전송하는 컴퓨터 실행가능 명령들
    을 포함하고,
    상기 프로그래밍 프레임워크는 다양한 운영 체제 및 하드웨어를 갖는 적어도 2개의 컴퓨팅 장치상에 구성될 수 있고, 상기 프로그래밍 프레임워크는 상기 적어도 2개의 컴퓨팅 장치의 운영 체제 및 하드웨어의 상이한 요구들에 관계없이 상기 적어도 2개의 컴퓨팅 장치상에서 동일한 방식으로 상기 적어도 하나의 애플리케이션 프로그램으로부터 상기 적어도 하나의 명령을 수신하는
    컴퓨팅 시스템.
  15. 제14항에 있어서,
    상기 컴퓨팅 장치 운영 체제는 적어도 하나의 자원 계층을 가지며, 상기 프로그래밍 프레임워크는 상기 적어도 하나의 명령을 상기 컴퓨팅 장치 운영 체제의 적어도 하나의 자원 계층으로 전송하는
    컴퓨팅 시스템.
  16. 제15항에 있어서,
    상기 컴퓨팅 장치 운영 체제는 적어도 그래픽 계층, 오디오 계층, 입력 계층 및 저장 계층을 포함하는 자원 계층들을 구비하는
    컴퓨팅 시스템.
  17. 제15항에 있어서,
    상기 프로그래밍 프레임워크는 적어도 하나의 애플리케이션 프로그래밍 인터페이스(API)를 통해 상기 적어도 하나의 명령을 상기 컴퓨팅 장치 운영 체제의 적어도 하나의 자원 계층으로 전송하는
    컴퓨팅 시스템.
  18. 제14항에 있어서,
    상기 프로그래밍 프레임워크는 상기 컴퓨팅 장치 운영 체제 내에 통합되는
    컴퓨팅 시스템.
  19. 제14항에 있어서,
    상기 프로그래밍 프레임워크는 상기 운영 체제로부터 적어도 하나의 명령을 수신하고, 상기 운영 체제로부터의 상기 적어도 하나의 명령을 상기 애플리케이션 프로그램의 요구들에 부합하도록 수정하며, 상기 운영 체제로부터의 상기 적어도 하나의 명령을 상기 애플리케이션 프로그램으로 전송하는
    컴퓨팅 시스템.
  20. 삭제
KR1020097021328A 2007-04-20 2008-03-20 폐쇄된 시스템용의 프로그래밍 프레임워크 KR101455433B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/737,921 US7949998B2 (en) 2007-04-20 2007-04-20 Programming framework for closed systems
US11/737,921 2007-04-20
PCT/US2008/057729 WO2008130767A1 (en) 2007-04-20 2008-03-20 Programming framework for closed systems

Publications (2)

Publication Number Publication Date
KR20100015532A KR20100015532A (ko) 2010-02-12
KR101455433B1 true KR101455433B1 (ko) 2014-10-27

Family

ID=39873511

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097021328A KR101455433B1 (ko) 2007-04-20 2008-03-20 폐쇄된 시스템용의 프로그래밍 프레임워크

Country Status (8)

Country Link
US (1) US7949998B2 (ko)
EP (1) EP2140369A4 (ko)
JP (1) JP5249315B2 (ko)
KR (1) KR101455433B1 (ko)
CN (1) CN101669111A (ko)
CA (1) CA2681842C (ko)
IL (1) IL201164A (ko)
WO (1) WO2008130767A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1696321A1 (en) 2005-02-23 2006-08-30 Deutsche Thomson-Brandt Gmbh Method and apparatus for executing software applications
JP4849829B2 (ja) 2005-05-15 2012-01-11 株式会社ソニー・コンピュータエンタテインメント センタ装置
US8523666B2 (en) * 2007-05-25 2013-09-03 Microsoft Corporation Programming framework for closed systems
US8752038B1 (en) * 2008-03-17 2014-06-10 Symantec Corporation Reducing boot time by providing quantitative performance cost data within a boot management user interface
US9053295B1 (en) * 2009-02-04 2015-06-09 Sprint Communications Company L.P. Facilitating application development using protected components
US8832855B1 (en) 2010-09-07 2014-09-09 Symantec Corporation System for the distribution and deployment of applications with provisions for security and policy conformance
US9043863B1 (en) 2010-09-07 2015-05-26 Symantec Corporation Policy enforcing browser
US8955152B1 (en) * 2010-09-07 2015-02-10 Symantec Corporation Systems and methods to manage an application
EP2782038A1 (en) 2013-03-19 2014-09-24 STMicroelectronics (Grenoble 2) SAS Resource management in a processor for trusted and untrusted applications
EP2782007A1 (en) 2013-03-19 2014-09-24 STMicroelectronics (Grenoble 2) SAS Launching multiple applications in containers on a processor
EP2782010A1 (en) 2013-03-19 2014-09-24 STMicroelectronics (Grenoble 2) SAS Hierarchical resource management
US9600256B2 (en) * 2013-10-18 2017-03-21 Microsoft Technology Licensing, Llc Incrementally compiling software artifacts from an interactive development environment
US9740593B2 (en) * 2015-01-08 2017-08-22 International Business Machines Corporation Comparative program execution through control of two or more debug sessions to automatically determine execution differences
US10169467B2 (en) * 2015-03-18 2019-01-01 Microsoft Technology Licensing, Llc Query formulation via task continuum
US11900152B1 (en) * 2021-03-30 2024-02-13 Amazon Technologies, Inc. Controlled automatic updates to disk image layers with compatibility verification

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1187017A2 (en) * 2000-03-30 2002-03-13 International Business Machines Corporation File system locking
JP2006508424A (ja) 2002-09-23 2006-03-09 テレフオンアクチーボラゲット エル エム エリクソン(パブル) ミドルウエアにおけるセキュリティ・アクセス・マネージャ
JP2006285870A (ja) 2005-04-04 2006-10-19 Canon Inc 印刷制御装置、印刷制御方法、及びプログラム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5237688A (en) * 1987-11-18 1993-08-17 International Business Machines Corporation Software packaging structure having hierarchical replaceable units
US5388841A (en) * 1992-01-30 1995-02-14 A/N Inc. External memory system having programmable graphics processor for use in a video game system or the like
US5680534A (en) * 1994-10-31 1997-10-21 Nintendo Co., Ltd. Video game/videographics program fabricating system and method with superimpose control
US6115036A (en) * 1994-10-31 2000-09-05 Nintendo Co., Ltd. Video game/videographics program editing apparatus with program halt and data transfer features
US5832264A (en) * 1995-07-19 1998-11-03 Ricoh Company, Ltd. Object-oriented communications framework system with support for multiple remote machine types
US5889990A (en) * 1996-11-05 1999-03-30 Sun Microsystems, Inc. Information appliance software architecture with replaceable service module providing abstraction function between system library and platform specific OS
AUPP149998A0 (en) * 1998-01-27 1998-02-19 Aristocrat Leisure Industries Pty Ltd Multi-platform gaming architecture
US7043641B1 (en) * 2000-03-08 2006-05-09 Igt Encryption in a secure computerized gaming system
US7032227B2 (en) * 2000-08-14 2006-04-18 Twin Communications Of America, Inc. Portable operating environment for information devices
US6884171B2 (en) * 2000-09-18 2005-04-26 Nintendo Co., Ltd. Video game distribution network
GB2370236A (en) * 2000-12-19 2002-06-26 Nokia Mobile Phones Ltd A method of modifying games content
US7165239B2 (en) * 2001-07-10 2007-01-16 Microsoft Corporation Application program interface for network software platform
WO2003023647A1 (en) * 2001-09-10 2003-03-20 Igt Method for developing gaming programs compatible with a computerized gaming operating system and apparatus
US6962530B2 (en) * 2002-04-25 2005-11-08 Igt Authentication in a secure computerized gaming system
US7103914B2 (en) * 2002-06-17 2006-09-05 Bae Systems Information Technology Llc Trusted computer system
US7562353B2 (en) * 2003-05-16 2009-07-14 Hewlett-Packard Development Company, L.P. Methods and systems for transforming Java applications of behalf of another device
US8568225B2 (en) * 2004-09-16 2013-10-29 Bally Gaming, Inc. User interface system and method for creating and verifying signed content

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1187017A2 (en) * 2000-03-30 2002-03-13 International Business Machines Corporation File system locking
JP2006508424A (ja) 2002-09-23 2006-03-09 テレフオンアクチーボラゲット エル エム エリクソン(パブル) ミドルウエアにおけるセキュリティ・アクセス・マネージャ
JP2006285870A (ja) 2005-04-04 2006-10-19 Canon Inc 印刷制御装置、印刷制御方法、及びプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
James Gosling et al. 'The Java Language Environment.' Sun Microsystems White Paper, May 1996, pp. 1-17. *

Also Published As

Publication number Publication date
CN101669111A (zh) 2010-03-10
US7949998B2 (en) 2011-05-24
IL201164A (en) 2015-11-30
KR20100015532A (ko) 2010-02-12
EP2140369A4 (en) 2010-07-07
JP5249315B2 (ja) 2013-07-31
IL201164A0 (en) 2010-05-17
US20080263537A1 (en) 2008-10-23
EP2140369A1 (en) 2010-01-06
WO2008130767A1 (en) 2008-10-30
CA2681842C (en) 2015-10-06
JP2010525450A (ja) 2010-07-22
CA2681842A1 (en) 2008-10-30

Similar Documents

Publication Publication Date Title
KR101455433B1 (ko) 폐쇄된 시스템용의 프로그래밍 프레임워크
US8549288B2 (en) Dynamic creation and hierarchical organization of trusted platform modules
KR101343258B1 (ko) 웹 서비스에 대한 제3자 확장의 안전하고 안정적인 호스팅
JP5058966B2 (ja) オントロジを組み込むリソース・オーサリング
US9135024B2 (en) Playing multimedia content at remote graphics display client
US7856653B2 (en) Method and apparatus to protect policy state information during the life-time of virtual machines
US8819164B2 (en) Versioning management
US20020065946A1 (en) Synchronized computing with internet widgets
US7984438B2 (en) Virtual machine transitioning from emulating mode to enlightened mode
US8799898B2 (en) Methods and apparatus for binding applications to a cloud computing environment
US8490117B1 (en) Bridging script engines
US8203566B2 (en) Fixed function pipeline application remoting through a shader pipeline conversion layer
US20080182659A1 (en) In-play detection of altered game data
KR20060132433A (ko) 원격 경계를 가로질러 컴퓨터 판독가능한 객체들을전달하기 위한 시스템 및 방법
US20170272544A1 (en) Computer System and Method for Sandboxed Applications
US8875271B2 (en) Executing unsigned content and securing access in a closed system
US7587594B1 (en) Dynamic out-of-process software components isolation for trustworthiness execution
US8330764B2 (en) Programming framework for closed systems
EP2150904B1 (en) Programming framework for closed systems
US11640689B1 (en) Emulation pipeline selection and emulation pipeline parameter prediction
US8181039B2 (en) Disc drive counterfeiting countermeasure

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180918

Year of fee payment: 5