KR101134816B1 - 운영 체제 초기화 중에 플랫폼 그래픽을 디스플레이하기 위한 방법 및 시스템 - Google Patents

운영 체제 초기화 중에 플랫폼 그래픽을 디스플레이하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR101134816B1
KR101134816B1 KR1020090093290A KR20090093290A KR101134816B1 KR 101134816 B1 KR101134816 B1 KR 101134816B1 KR 1020090093290 A KR1020090093290 A KR 1020090093290A KR 20090093290 A KR20090093290 A KR 20090093290A KR 101134816 B1 KR101134816 B1 KR 101134816B1
Authority
KR
South Korea
Prior art keywords
logic
video frame
platform
video
initialization
Prior art date
Application number
KR1020090093290A
Other languages
English (en)
Other versions
KR20100037012A (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 KR20100037012A publication Critical patent/KR20100037012A/ko
Application granted granted Critical
Publication of KR101134816B1 publication Critical patent/KR101134816B1/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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt

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)
  • Controls And Circuits For Display Device (AREA)
  • Digital Computer Display Output (AREA)

Abstract

운영 체제의 초기화를 인터럽트하고, 운영 체제의 초기화가 인터럽트될 때 비디오 프레임 버퍼를 플랫폼 그래픽 데이터로 업데이트하고, 플랫폼 그래픽 데이터를 운영 체제 초기화 로직에 의해 발생된 그래픽과 병합하는 것을 포함하여, 컴퓨터 시스템의 초기화 동안 플랫폼 그래픽을 디스플레이하는 방법들 및 시스템들이 개시된다. 이 방법들 및 시스템들은 가상화 방법들 및 시스템들과, 시스템 관리 모드 방법들 및 시스템들을 포함한다.
컴퓨터 시스템, 초기화, 가상화, 시스템 관리, 그래픽 데이터

Description

운영 체제 초기화 중에 플랫폼 그래픽을 디스플레이하기 위한 방법 및 시스템{METHODS AND SYSTEMS TO DISPLAY PLATFORM GRAPHICS DURING OPERATING SYSTEM INITIALIZATION}
본 발명은 운영 체제 초기화 중에 플랫폼 그래픽을 디스플레이하기 위한 방법 및 시스템에 관한 것이다.
파워-온 리셋에 이어서 컴퓨터 시스템을 초기화하는 것은, 운영 체제(OS)의 초기화 또는 OS 부팅에 선행하는, 기본 입력/출력 시스템(BIOS) 부팅이라고도 지칭되는 플랫폼 초기화를 포함한다. BOIS 부팅에는 대략 2 내지 3초가 걸릴 수 있다. OS 부팅은 대략 10 내지 20초가 걸릴 수 있다.
BIOS 부팅 중에 제공된 서비스들에 따라서, OS 부트 로직은 OS 부팅 중에 비교적 간단한 그래픽을 디스플레이 상에 나타낼 수 있다. 그래픽이 OS 로직과 관련되기 때문에, 그래픽은 통상 OS 판매자와 관련된다.
본 명세서에는 운영 체제의 초기화 중에 플랫폼 그래픽을 디스플레이하기 위 한 방법들 및 시스템들이 개시된다. 플랫폼 그래픽은 BIOS 부팅 중에, 또는 그 일부분 중에 디스플레이될 수 있다.
본 명세서에서 사용되는 바와 같이, "플랫폼 그래픽"라는 용어는, 운영 체제 초기화 로직에 의해 생성되는 OS 초기화 그래픽 이외의 그래픽을 지칭한다.
플랫폼 그래픽은 오디오, 비디오, 정지 사진들, 텍스트, 월페이퍼들(wallpapers), 및 스킨들(skins) 중 하나 이상을 포함할 수 있다. "플랫폼 그래픽" 및 "플랫폼 비디오"라는 용어들은, 본 명세서에서 상호 교환가능하게 사용될 수 있다.
플랫폼 그래픽은, 한정적이지 않게, 제3자 제품들 또는 서비스들에 관련된 그래픽을 포함할 수 있고, 이것은 광고 그래픽, 컴퓨터 플랫폼 판매자나 제조업자에 의해 제공된 그래픽, 관리되는 호스팅 제공자를 포함하여 컴퓨터 시스템에 대한 제어를 갖거나 행사하는 개체(entity)와 관련된 그래픽, 및 개인 그래픽을 포함할 수 있다.
플랫폼 그래픽은 OS 초기화 그래픽을 대신하여 디스플레이될 수 있다. 대안적으로, OS 초기화 그래픽은 플랫폼 그래픽과 병합될 수 있다.
도 1은 컴퓨터 시스템 초기화 프로세스(100) 중에 플랫폼 비디오를 디스플레이하는 그래픽 예시이다. 초기화 프로세스(100)는 플랫폼 초기화(102)와 OS 초기화(104)를 포함한다. OS 런타임(106)이 초기화 프로세스(100)에 후속한다. 플랫폼 초기화(102)는 파워-온 리셋에 후속할 수 있고, 하나 이상의 파워 온 셀프 테스트들 및 시스템 부트 프로시져들을 포함할 수 있으며, 여기에서는 기본 입력/출력 시스템(BIOS) 부트 프로시져(108)로서 예시된다. 플랫폼 초기화(102)는 컴퓨터 시스템의 물리적 리소스들에 대응하는 하나 이상의 디바이스 드라이버를 식별하고 초기화할 수 있다.
OS 초기화(104)는 운영 체제 로직을 식별하고 인스톨하는 단계를 포함할 수 있다.
플랫폼 비디오는 OS 초기화(104) 중에 110에서 디스플레이될 수 있고, 플랫폼 초기화(102)의 적어도 일부분 중에 디스플레이될 수 있다.
플랫폼 초기화(102) 및 OS 초기화(104) 중 하나 이상은, 도 2와 관련하여 이하에서 설명되는 바와 같이, EFI(extensible firmware interface) 또는 UEFI(uniform EFI)를 포함할 수 있다.
도 2는 컴퓨터 시스템 초기화 프로세스(200) 중에 비디오를 디스플레이하는 그래픽 예시이고, 여기서 플랫폼 초기화(102) 및 OS 초기화(104)는 EFI 모듈을 개시하는 것을 포함한다. 도 2의 예에서, 플랫폼 비디오(110)는 드라이버 실행 환경(DXE)(202) 중에 개시되고, 부팅 장치 선택(BDS) 환경(204) 및 트랜지언트 시스템 로드(TSL) 환경 중에 디스플레이된다.
도 3은 OS 초기화 중에 플랫폼 비디오를 디스플레이하는 예시적인 방법(300)의 프로세스 흐름도이다.
302에서, 컴퓨터 시스템은 컴퓨터 시스템의 부팅을 개시하기 위한 파워-온 리셋 또는 그 밖의 리셋 등에 의해 리셋된다.
304에서, 하나 이상의 파워 온 셀프 테스트들이 컴퓨터 시스템 내에서 수행 될 수 있다.
306에서, 도 1 및 도 2 중 하나 이상에서 예시된 플랫폼 초기화(102)와 같이, 플랫폼 초기화가 수행된다. 플랫폼 초기화는 비디오 디스플레이와 관련된 비디오 드라이버와 같은, 하나 이상의 드라이버들을 인스톨하는 것을 포함할 수 있다.
308에서, 도 1 및 도 2 중 하나 이상에서 예시된 OS 초기화(104)와 같이, 운영 체제가 초기화된다.
310에서는, 308에서의 OS 초기화(308) 중에 플랫폼 비디오가 디스플레이된다. 플랫폼 비디오는 306에서의 플랫폼 초기화 중에 개시될 수 있다.
도 3의 예에서, 310에서 플랫폼 비디오를 디스플레이하는 것은, 312에서 OS 초기화가 완료되었는지의 여부를 판정하고, OS 초기화가 완료되지 않은 경우 314에서 비디오 프레임 버퍼를 플랫폼 비디오 데이터로 업데이트하는 것을 포함한다.
314에서 비디오 프레임 버퍼를 업데이트하는 것은 플랫폼 비디오의 비디오 프레임에 대응하는 데이터를 검색하고 디코딩하는 것을 포함할 수 있다. 314에서 비디오 프레임 버퍼를 업데이트하는 것은, 이전에 디스플레이된 비디오 프레임과는 상이한 플랫폼 비디오 프레임 데이터의 서브세트 등으로, 비디오 프레임 버퍼의 일부를 업데이트 하는 것을 포함할 수 있다.
310에서 플랫폼 비디오를 디스플레이하는 것은, 310에서 비디오 프레임 버퍼를 업데이트하기 위해 308에서 OS 초기화를 인터럽트(interrupt)하는 것을 포함할 수 있다. 인터럽트는 주기적인 간격으로 수행될 수 있다. 대안적으로, 또는 추가 적으로, 예를 들어, 프로세서가 기억 장치와 같은 다른 장치로부터 응답을 기다리고 있는 경우에 발생할 수 있는, 프로세서 아이들 타임에 응답하는 것과 같은 하나 이상의 조건에 응답하여, 인터럽트가 수행될 수 있다.
OS 초기화를 수행하기 위한 비교적 많은 시간이, 기억 장치 액세스와 같은 비교적 느린 입력/출력 채널들에 대해 대기하는 것을 포함하기 때문에, 310에서 플랫폼 비디오를 디스플레이하는 것은 OS 초기화(308)를 완료하는 시간에 실질적으로 영향을 주지 않고 수행될 수 있다.
도 4는, OS 초기화를 반복적으로 인터럽트하는 것과, 인터럽트 중에 비디오 프레임 버퍼를 플랫폼 비디오 프레임 데이터로 업데이트하는 것을 포함하여, OS 초기화 중에 플랫폼 비디오를 디스플레이하는 예시적인 방법(400)의 프로세스 흐름도이다.
402에서, 302에 관하여 전술한 바와 같이, 컴퓨터 시스템이 리셋된다.
404에서, 304에 관하여 전술한 바와 같이, 하나 이상의 파워 온 셀프 테스트들이 컴퓨터 시스템 내에서 수행될 수 있다.
406에서, 306에 관하여 전술한 바와 같이, 컴퓨터 시스템의 물리적 리소스들이 초기화된다.
408에서, 플랫폼 비디오 서비스가 개시된다. 플랫폼 비디오 서비스의 개시는 명령어들을 메모리로 로딩하여, 후속하는 이벤트의 발생 시에 프로세서가 비디오 프레임 버퍼를 플랫폼 비디오 프레임 데이터로 업데이트하게 할 수 있다. 후속하는 이벤트는 주기적인 타이머 이벤트를 포함할 수 있고 플랫폼 비디오 서비스는, 운영 체제 초기화를 주기적으로 인터럽트하고, 인터럽트 중에 비디오 프레임 버퍼를 업데이트하기 위해 타이머를 개시하는 것을 포함할 수 있다.
410에서, OS 초기화가 개시된다.
412에서, 운영 체제의 초기화는 이벤트에 응답하여 인터럽트되고, 플랫폼 비디오 서비스가 호출된다.
414에서, 동작 환경의 초기화가 완료되지 않으면, 플랫폼 비디오 프레임 데이터가 416에서 디코딩되고 비디오 프레임 버퍼는 418에서 업데이트된다.
414에서 동작 환경의 초기화가 완료되는 경우, 420에서 플랫폼 비디오 서비스들이 정지되고 런타임 또는 동작 환경은 422로 들어간다.
플랫폼 비디오를 디스플레이하는 것은 플랫폼 비디오를 OS 초기화 그래픽과 병합하는 것과 비디오 프레임 버퍼를 병합된 비디오 프레임 데이터로 업데이트하는 것을 포함할 수 있다.
병합은 OS 초기화 로직으로부터의 텍스트를 플랫폼 비디오 위에 중첩하는 것을 포함할 수 있다. 도 5는, OS 초기화 비디오 프레임 버퍼(502), 플랫폼 비디오 디코드 버퍼(504), 및 비디오 프레임 버퍼(506)를 포함하는, 예시적인 비디오 병합 환경(500)의 그래픽 예시이다. 운영 체제 초기화 그래픽(510)로부터의 텍스트(508)는 운영 체제의 비디오 프레임 버퍼(502)에 저장된다. 플랫폼 비디오 프레임 데이터(514)로부터의 플랫폼 비디오 프레임 이미지(512)는 플랫폼 비디오 프레임 버퍼(504)에 저장된다. 텍스트(508)와 이미지(512)는 병합되어 디스플레이를 위해 비디오 프레임 버퍼(506)에 저장된다.
병합은 픽처 인 픽처(picture-in-picture)와 같이 하나 이상의 다른 그래픽 윈도우 위에 하나 이상의 그래픽 윈도우를 중첩하는 것을 포함할 수 있다. 이것은, 예를 들어, 플랫폼 초기화 및/또는 OS 초기화 중에, BIOS 셋업 구성에 액세스하거나 OS 초기화로 진행하는 유저 선택가능 옵션과 같은 유저 선택가능 옵션들을 디스플레이하는 데에 유용할 수 있다. 도 6은 OS 초기화 비디오 프레임 버퍼(602), 복수의 플랫폼 비디오 프레임 버퍼들(604 내지 606), 및 비디오 프레임 버퍼(608)를 포함하는 예시적인 비디오 병합 환경(600)의 그래픽 예시이다. 도 6의 예에서, 플랫폼 비디오 프레임 버퍼(604 내지 606)에 각각 대응하는 플랫폼 비디오(610 내지 612)는 OS 초기화 비디오 프레임 버퍼(602)로부터 OS 초기화 그래픽 내에 병합되고 대응하는 병합된 그래픽으로 비디오 프레임 버퍼(608)가 업데이트된다.
본원에 개시된 하나 이상의 특징은 하나 이상의 집적 회로 및 컴퓨터 프로그램 제품 로직을 포함할 수 있는 로직에 구현될 수 있다.
도 7은 명령어, 코드 및 소프트웨어로도 알려진 컴퓨터 프로그램 제품 로직을 실행하는, 본원에서 프로세서(702)로 도시한, 하나 이상의 컴퓨터 명령어 처리 유닛을 포함하는 예시적인 컴퓨터 시스템(700)의 블록도이다.
컴퓨터 시스템(700)은 컴퓨터 판독가능한 매체에 저장되고, 이에 응답하여 프로세서(702)로 하여금 하나 이상의 기능을 실행하게 하는 하나 이상의 집적 회로 로직 및 컴퓨터 프로그램 제품 로직을 포함할 수 있는 로직(704)을 포함한다.
도 7의 예에서, 로직(704)은 프로세서(702)로 하여금 컴퓨터 시스템(700)의 구성 요소들을 초기화시키게 하는 플랫폼 초기화 로직(710)을 포함하며, 이는 기본 입출력 시스템(BIOS) 로직을 포함할 수 있고, 확장가능한 펌웨어 인터페이스(EFI) 로직을 포함할 수 있다.
로직(704)은 또한 프로세서(702)로 하여금 하나 이상의 운영 환경을 초기화시키게 하는 운영 체제(OS) 초기화 로직(714)을 포함한다. OS 초기화 로직(714)은 부트 관리자 로직, OS 로더 로직 및 OS 로직 중 하나 이상을 포함할 수 있다.
로직(704)은 또한 프로세서(702)로 하여금 OS 초기화 로직(714)의 개시 중에 플랫폼 비디오를 디스플레이하게 하는 플랫폼 비디오 디스플레이 로직(712)을 포함한다. 플랫폼 비디오 디스플레이 로직(712)은 프로세서(702)로 하여금 플랫폼 초기화 로직(710)의 적어도 일부의 개시 중에 플랫폼 비디오를 디스플레이하게 하는 로직을 포함할 수 있다. 플랫폼 비디오 디스플레이 로직(712) 또는 그 일부는 플랫폼 초기화 로직(710) 내에 구현될 수 있다.
컴퓨터 시스템(700)은 또한 로직(704)의 실행 시에 프로세서(702)가 이용하고/하거나, 로직(704)의 실행에 응답하여 프로세서(702)가 생성하는 데이터(708)를 저장하는 메모리/저장소(706)를 포함한다. 도 7의 예에서, 데이터(708)는 플랫폼 비디오 프레임 데이터(716), 플랫폼 비디오 프레임 디코드 버퍼(718), OS 초기화 비디오 프레임 버퍼(720), 및 비디오 프레임 버퍼(722)를 포함한다. 비디오 프레임 버퍼(722)는 프로세서(702)가 디스플레이(724)에 비디오 프레임 데이터를 보내는 최종 비디오 프레임 버퍼를 나타낼 수 있다.
메모리/저장소(706)는 로직(704)을 저장하는 컴퓨터 판독가능한 매체를 포함 할 수 있다.
컴퓨터 시스템(700)은 하나 이상의 통신 네트워크와 인터페이스하는 네트워크 인터페이스 디바이스 또는 카드(NIC)(726)를 포함할 수 있다. 컴퓨터 시스템(700)은 하나 이상의 다른 디바이스와 인터페이스하는, 범용 직렬 버스(USB) 인터페이스와 같은, 하나 이상의 다른 인터페이스를 포함할 수 있다.
컴퓨터 시스템(700)은 프로세서(702), 메모리/저장소(706), 디스플레이(724), NIC(726), 다른 인터페이스 디바이스들 사이에서 통신하는 통신 인프라스트럭처(728)를 포함할 수 있다.
플랫폼 비디오 프레임 데이터(716)는 NIC(726) 등을 통해 네트워크 상에서 수신 및/또는 업데이트될 수 있으며, OS 초기화 로직(714)에 대해 안전하게 또는 그것에 상관없이 수신 및/또는 업데이트될 수 있다.
플랫폼 비디오 프레임 데이터(716)는 펌웨어, 플래시 및 하드 디스크 저장 디바이스 중 하나 이상에 저장될 수 있다.
비디오 프레임 데이터(716)는, 가상화 로직 또는 시스템 관리 모드 로직 등을 통해, OS 초기화 로직(714)으로부터 안전하게 수신 및/또는 업데이트되고 숨겨진 파티션에 저장될 수 있으며, 이것의 예들은 후술된다. 예를 들어, 가상화 머신 관리자(VMM)는 프로세서(702)로 하여금 IDE(integrated drive electronics) 컨트롤러 입력/출력 액세스들을 인터셉트하게 할 수 있어서, 운영 체제 로직이 다시 인스톨되더라도 플랫폼 비디오 프레임 데이터(716)가 이용가능한 것을 보장하는 숨겨진 디스크 파티션을 취득한다. 숨겨진 파티션은 컴퓨터 시스템(700)의 AHCI(advanced host controller interface) 모드에서도 취득될 수 있다.
플랫폼 비디오 디스플레이 로직(712)은 프로세서(702)로 하여금 비디오 프레임 버퍼(722) 및 비디오 인터페이스들 중 하나 이상을 운영 체제 초기화 환경으로 가상화하게 하는 가상화 로직을 포함할 수 있다. 도 8, 9, 10에 관하여 예시적인 가상화 방법 및 시스템을 후술한다.
도 8은 예시적인 컴퓨터 시스템(800)의 블록도로, 도 7과 관련하여 전술한 특징들과 유사한 컴퓨터 시스템(800)의 특징들에 대해서는 유사한 최하위 2 숫자를 가진 참조 번호를 붙였다. 도 9 및 도 10과 관련하여 컴퓨터 시스템(800)을 후술한다. 도 9는 컴퓨터 시스템(800)의 예시적인 OS 초기화 환경(900)의 그래픽 예시이다. 도 10은 컴퓨터 시스템(800)의 OS 초기화의 예시적인 방법의 프로세스 흐름도이다.
도 8에서, 로직(804)은 프로세서(802)로 하여금 OS 초기화 가상 머신(VM)(904)을 호스트하는, 도 9의 가상 머신 관리자(VMM)(902)를 생성하게 하는 VMM 로직(830)을 포함한다. VMM 로직(830)은 프로세서(802)로 하여금 플랫폼 개시 중에 개시된 드라이버들 및 어플리케이션들을 드라이버들 및 어플리케이션들(906)로서 VM(904)으로 전달하게 하는 로직을 포함한다. VMM 로직(830)은 또한 프로세서(802)로 하여금 OS 초기화(908)로 예시된 바와 같이 VM(904) 내의 OS 초기화 로직(814)을 초기화하게 하는 로직을 포함한다. VMM 로직(830)은 또한 프로세서(802)로 하여금 도 9의 가상 비디오 프레임 버퍼(820)를 초기화하게 하는 비디오 프레임 버퍼 가상화 로직(834)을 포함한다.
로직(804)은 프로세서(802)로 하여금 VM(904)과 가상 비디오 프레임 버퍼(820) 사이에서 인터페이스하는, 도 9의 하나 이상의 비디오 인터페이스(910)를 초기화하게 하는 비디오 인터페이스 로직(836)을 포함하는 가상 디스플레이 로직(832)을 포함한다. 가상 디스플레이 인터페이스(910)는 드라이버들 및 어플리케이션들(906)과 인터페이스하는 그래픽 출력 프로토콜 인터페이스(912), OS 초기화(908)와 인터페이스하는 비디오 프레임 버퍼 인터페이스(914), 레거시 타입 OS 로더 로직으로부터 Int10 비디오 서비스 인터럽트와 같은 레거시 타입 비디오 서비스 인터럽트를 수신하는 레거시 타입 서비스(916) 중에서 하나 이상을 포함할 수 있다.
가상 디스플레이 로직(832)은 또한 프로세서(802)로 하여금 플랫폼 비디오 프레임 데이터(816)를 디코드하게 하고, 디코드된 플랫폼 비디오 프레임 데이터를 플랫폼 비디오 프레임 디코드 버퍼(818)에 저장하게 하는 플랫폼 비디오 디코드 로직(838)을 포함한다.
가상 디스플레이 로직(832)은 또한 프로세서(802)로 하여금 디코드 버퍼(818) 내의 디코드된 플랫폼 비디오 프레임 데이터를 가상 비디오 프레임 버퍼(820) 내의 OS 초기화 비디오 프레임 데이터와 병합하게 하고, 병합된 비디오 프레임 데이터로 비디오 프레임 버퍼(822)를 업데이트하게 하는 버퍼 병합 로직(840)을 포함한다.
도 9의 예에서, 가상 인터페이스(910), 디코드 로직(838) 및 버퍼 병합 로직(840)은 가상 디스플레이 환경(918) 내에 있는 것으로 도시하였다. 가상 디스플 레이 환경(918) 또는 그 일부는 VM(904)과 같이 VMM(902)이 호스트하는 VM 내에 존재하거나 그 VM에 해당할 수 있다. 이와 달리 또는 추가적으로, 가상 디스플레이 환경(918) 또는 그 일부는 VMM(902) 내에 구현될 수도 있다.
VMM 로직(830)은 또한 도 10과 관련하여 후술하는 바와 같이, 프로세서(802)로 하여금, 주기적으로 프로세서로 하여금 VM(904)을 나가고 디코드 로직(840) 및 병합 로직(838)을 불러내게 하는 타이머(920)를 유지하게 하는 타이머 로직(842)을 포함한다. VM(904)을 나올 때에, VM(904)에 대응하는 상태 값들이 추후 VM(904)으로의 재진입을 위해 세이브될 수 있다.
도 10에서, 1002에서, 컴퓨터 시스템(800)은 플랫폼 리세트에 이어서 하나 이상의 파워 온 셀프 테스트를 실행한다.
1004에서, 플랫폼 초기화를 실행한다. 플랫폼 초기화는 도 8의 플랫폼 초기화 로직(810)에 응답하여 실행될 수 있다.
1006에서, 가상 디스플레이 로직(832)을 호출하여, 프로세서(802)로 하여금 가상 인터페이스(910) 및 플랫폼 비디오 디코드 버퍼(818)를 초기화하게 한다.
1008에서, VMM 로직(830)을 호출하여, 프로세서(802)로 하여금 드라이버들 및 어플리케이션들(906)을 VM(904)으로 전달하는 VMM(902) 및 VM(904)을 개시하게 하고, 타이머(920)를 개시하게 한다.
1010에서, 컴퓨터 시스템(800)의 초기화를 VM(904)으로 전달한다. 이것은 1012에서 플랫폼 초기화 로직(810) 내의 남은 로직을 개시하는 것과, 1014에서 VM(904) 내의 OS 초기화 로직(814)을 개시하는 것을 포함할 수 있다.
1010에서의 초기화 중에, VM(904)으로부터 비디오 서비스들이 요청되면, 하나 이상의 가상 디스플레이 인터페이스(910)를 이용하여 1016에서 가상 비디오 프레임 버퍼(820)를 업데이트한다. 이것은 1018에서 비디오 서비스 요청을 수신 또는 인터셉트하는 것과, 1020에서 가상 인터페이스로 요청을 처리하는 것과, 1022에서 가상 비디오 프레임 버퍼(820)를 업데이트하는 것을 포함할 수 있다. 1024에서, 1010으로 되돌아가서 VM(904) 내의 OS 초기화를 계속한다.
또한 1010에서의 초기화 중에, 타이머(920)가 종료하면, 1025에서 플랫폼 비디오 프레임 데이터(816)로 비디오 프레임 버퍼(822)를 업데이트한다. 이것은 1026에서 타이머가 종료되었는지를 판정하는 것과, 1028에서 VM(904)을 나가는 것과, 1030에서 플랫폼 비디오 프레임 데이터(816)를 디코딩하고 디코드된 비디오 프레임 데이터를 플랫폼 비디오 디코드 버퍼(818)에 저장하는 것과, 1032에서 플랫폼 비디오 프레임 버퍼(818)의 내용과 가상 비디오 프레임 버퍼(820)의 내용을 병합하는 것과, 1034에서 병합된 데이터로 비디오 프레임 버퍼(822)를 업데이트하는 것을 포함할 수 있다. 1036에서, 1010으로 되돌아가서 VM(904) 내의 초기화를 계속한다.
1010에서의 운영 체제의 초기화 완료 시에, 1038에서의 런타임 환경으로 진행하여, 플랫폼 비디오 프레임 데이터(816)의 디스플레이를 정지할 수 있다. 도 10의 예에서, 이것은 1040에서 비디오 프레임 버퍼 페이지 오류를 검출하는 것과, 1042에서 가상 비디오 프레임 버퍼(820)로 어드레스를 변경하는 것으로 예시되어 있다.
하나 이상의 가상 디스플레이 로직(840) 및 VMM 로직(830)의 다수의 인스턴스들, 또는 그의 일부분들은, 예를 들어, 도 6과 관련하여 전술한 바와 같이 픽쳐-인-픽쳐 특징들을 제공하기 위해서, 호출될 수 있다.
플랫폼 초기화 로직(810)이 단일화된 EFI(UEFI) 로직을 포함하는 경우, 플랫폼 초기화 로직(810)은 {Boot00X, Sound_File, Video_File, Background_Image}의 n-투플을 관리하는 로직을 포함할 수 있다.
환경(900)은 VMM(902)에 의해 호스팅되는 랩퍼들 또는 가상화 컨테이너들 내에 하나 이상의 OS 성능 드라이버들을 포함할 수 있다. 이에 의해, 코더/디코더의 사용 및 스케일링이 추가 멀티미디어 특징들을 제공할 수 있다.
도 7을 다시 참조하면, 플랫폼 비디오 디스플레이 로직(712)은 프로세서(702)로 하여금 동작의 시스템 관리 모드(system management mode; SMM) 내에서와 같이, 정상 프로세서 환경의 외부에서의 플랫폼 비디오 서비스들을 포함하는 비디오 서비스들을 제공하게 하는 로직을 포함할 수 있다.
후술하는 바와 같이, SMM은 펌웨어 기반 플랫폼 초기화가 OS 초기화로 이전된 후에라도 비디오 서비스들을 제공할 수 있다. 플랫폼 비디오에 이용되는 비디오 디바이스에 OS 초기화가 액세스하지 못하게 하기 위해서, 플랫폼 초기화는 본원에서 플랫폼 비디오 서비스들이라고 부르는 종래의 비디오 서비스들을 SMM 비디오 서비스들로 대체하는 것을 포함할 수 있다. 예를 들어, 시뮬레이트된 펌웨어 기반 비디오 드라이버는 비디오 서비스 호출들을 SMM에 이전하기(transfer) 위해 종래의 OS 로더 시스템들에 의해 이용되는 INT 10H 서비스들을 제공할 수 있다.
SMM은 시스템 관리 인터럽트(system management interrupt; SMI)에 의해 호출된다. SMI시, 프로세서는 대응하는 SMI 핸들러 코드를 실행하는데, SMI 핸들러 코드는 시스템 펌웨어에 저장될 수 있으며, 응용 소프트웨어 또는 운영 체제 소프트웨어에 대해 이용 불가능하게 되고/되거나 그로부터 분리될 수 있다.
종래의 컴퓨터 시스템들에서, SMI 핸들러는 최대 4G 바이트의 메모리를 어드레싱할 수 있고, 모든 또는 실질적으로 모든 입출력(I/O) 및 적용가능한 시스템 명령어들을 실행할 수 있다. 비디오 프레임 버퍼가 VGA 모드에 대해 A0000-BFFFF 세그먼트를 포함하고, SVGA 모드에 대해 32 비트 물리적 어드레스를 포함하는 하나 이상의 장소에 맵핑될 수 있다. SMM은 SVGA의 비디오 메모리 공간에 직접 액세스할 수 있다.
컴퓨터 시스템은, 본원에서 타이머 SMI라고 부르는, SMI를 발생하기 위한 SMM 소프트웨어 타이머를 포함한 SMI 자원들을 인에이블시키고 제어하는 시스템 관리 디바이스를 갖는 I/O 컨트롤러 허브를 포함할 수 있다. SMM 소프트웨어 타이머가 인에이블되면, 타이머 SMI는 주기적으로 발생된다. SMM 소프트웨어 타이머는 예를 들어, 0.9ms(밀리초) 내지 2.1ms, 12ms 내지 20ms, 28ms 내지 36ms, 및 60ms 내지 68ms의 범위를 포함하여, 0.9ms 내지 68ms의 범위의 간격들로 타이머 SMI를 발생시키도록 프로그램될 수 있다. 타이머 SMI에 응답하여, SMM의 대응하는 타이머 SMI 핸들러가, 펌웨어가 OS 초기화로 이전된 후에라도 호출될 수 있다.
컴퓨터 시스템의 이용가능한 하드웨어 디바이스들에 따라, 플랫폼 초기화가 OS 초기화로 제어를 이전한 후에라도, SMI 기반 비디오 드라이버가 모든 또는 실질 적으로 모든 비디오 프레임 버퍼에 직접 액세스할 수 있다.
예시적인 SMM 방법들 및 시스템들이 도 11 및 도 12와 관련하여 후술된다.
도 11은 예시적인 컴퓨터 시스템(1100)의 블록도이고, 도 7과 관련하여 전술한 특징들과 유사한 컴퓨터 시스템(1100)의 특징들에는 유사한 최하위 2-디지트 참조 번호들이 붙는다.
컴퓨터 시스템(1100)은 도 12와 관련하여 후술된다. 도 12는 정상 동작 모드(1250) 및 SMM(1254)을 포함한, 초기화 환경의 그래픽도에 덧붙여진, 컴퓨터 시스템(1100)의 초기화 동안 플랫폼 비디오를 디스플레이하는 예시적인 방법(1200)의 프로세스 흐름도이다.
도 11에서, 로직(1104)은 프로세서(1102)로 하여금 컴퓨터 시스템(1100)의 초기화 동안 SMM(1254) 내로부터 플랫폼 비디오 프레임 데이터(1116)를 디스플레이하게 하는 SMM 비디오 로직(1130)을 포함한다.
SMM 비디오 로직(1130)은 프로세서(1102)로 하여금 인터럽트들에 응답하여 SMM(1254)의 기능들을 수행하게 하는 SMI 핸들러 로직(1132)을 포함한다. 도 11의 예에서, SMI 핸들러 로직(1132)은 프로세서(1102)로 하여금 도 12의 APM(advance processing management) SMI 핸들러(1255)를 인스톨하게 하는, APM SMI 핸들러 로직(1134)이라고도 부르는 SMI 핸들러 로직(1134)을 포함한다.
SMI 핸들러 로직(1132)은 프로세서(1102)로 하여금 후술하는 도 12의 타이머 SMI 핸들러(1256)를 인스톨하게 하는 타이머 SMI 핸들러 로직(1136)을 더 포함한다.
SMM 비디오 로직(1130)은 프로세서(1102)로 하여금 후술하는 도 12의 비디오 서비스 디스패처(1258)를 인스톨하게 하는 비디오 서비스 디스패치 로직(1138)을 더 포함한다.
SMM 비디오 로직(1130)은 프로세서(1102)로 하여금 후술하는 SMM(1204)의 소프트웨어 기반 SMM 타이머(1258)를 인스톨하게 하는 SMM 타이머 로직(1140)을 더 포함한다.
플랫폼 초기화 로직(1110)은 프로세서(1102)로 하여금 SMM 비디오 로직(1130)을 로드 또는 인스톨하게 하는 SMM 비디오 로드 로직(1142)을 포함한다.
플랫폼 초기화 로직(1110)은 플랫폼 비디오 드라이버 로직(1146)을 포함한, 여기서 BIOS/EFI 로직(1144)으로 예시된, 하나 이상의 기본 입출력 시스템(BIOS) 로직 및 확장가능한 펌웨어 인터페이스(extensible firmware interface; EFI) 로직을 더 포함한다.
플랫폼 초기화 로직(1110)은 플랫폼 초기화 동안 APM SMI 핸들러(1254)를 호출하기 위해 도 12의 APM SMI(1260)를 발생시키는 APM SMI 발생 로직(1148)을 더 포함한다.
컴퓨터 시스템(1100)의 예시적인 초기화가 이제 방법(1200)을 참조하여 설명된다.
1202에서, 플랫폼 초기화가 시스템 리셋 다음에 수행된다. 도 12의 예에서, 플랫폼 초기화는 SMM 비디오 로드 로직(1146)에 응답하여 1204에서 SMM 비디오 로직(1130)을 인스톨하는 것, 1206에서 플랫폼 비디오 드라이버 로직(1134)을 개시하 는 것, 및 MP SMI 발생 로직(1148)에 응답하여 1208에서 APM SMI(1260)를 발생시키는 것을 포함한다.
APM SMI(1260)에 응답하여, 프로세서(1102)는 정상 프로세싱 모드(1250)를 중지하고 SMM(1252) 내의 APM SMI 핸들러(1254)를 호출한다. 이것은 시스템 상태 맵에 정상 프로세싱 모드(1250)의 상태를 세이브(save)하는 것을 포함할 수 있다.
1210에서, 타이머(1258)가 개시된다. 1212에서, 비디오 디바이스 정보가 디스플레이(1124)에 대응하여 검색된다. 1214에서, 예비 픽셀이 비디오 프레임 버퍼(1122)에서 미리 결정된 값으로 설정될 수 있다. SMM 비디오 로직(1130)은 예비 픽셀에 플랫폼 비디오 프레임 데이터(1116)를 기입하지 못하도록 구성된다. 예비 픽셀은 추후에 1232와 관련하여 후술되는 바와 같이, OS 비디오 드라이버가 활성인지 여부를 결정하는 데 이용된다.
1216에서, 플랫폼 비디오 디코드 버퍼(1118) 및 OS 초기화 버퍼(1120)가 초기화된다. 1218에서, 프로세싱이 정상 프로세싱 모드(1250)로 돌아간다. 이것은 상태맵으로부터 정상 프로세싱 모드(1250)에 대응하는 상태 값들을 검색하는 것을 포함할 수 있다.
정상 프로세싱 모드(1250)로 돌아가면, 플랫폼 초기화는 1202에서 재개되어, 그 다음에 1220에서 OS 초기화를 진행할 수 있거나, 또는 프로세싱은 1220에서 OS 초기화로 직접 진행할 수 있다.
1220에서 OS 초기화 동안, 비디오 서비스 요청(1262)이 비디오 서비스 디스패처(1258)에 의해 인터셉트되며, 비디오 서비스 디스패처(1258)는 비디오 서비스 SMI(1264)를 개시하여 프로세싱 모드(1250)를 인터럽트하고, 프로세서(1102)로 하여금, APM SMI 핸들러(1254)의 부분으로서 여기에 예시된, 비디오 서비스 SMI 핸들러를 호출하게 한다.
1222에서, OS 초기화 비디오 프레임 버퍼(1120)는 APM SMI 핸들러(1254)의 제어하에서 비디오 서비스 요청(1262)에 응답하여 업데이트된다. 1224에서, 프로세싱은 프로세싱 모드(1250)로 돌아간다.
또한 OS 초기화(1220) 동안, 타이머(1258)의 만료시, 타이머 SMI(1266)가 1230에서 발생되어 정상 프로세싱 모드(1250)를 인터럽트하고, 프로세서(1102)로 하여금, SMM(1252) 내의 타이머 SMI 핸들러(1256)를 호출하게 한다.
1232에서, 비디오 프레임 버퍼(1122)의 예비 픽셀은 1214에서 기입된 값과 비교된다. 예비 픽셀이 변경되지 않았다면, 플랫폼 비디오 프레임 데이터(1116)는 1234에서 디코드되고 플랫폼 비디오 디코드 버퍼(1118)에 저장된다. 1236에서, 플랫폼 비디오 디코드 버퍼(1118) 및 OS 초기화 비디오 프레임 버퍼(1120)의 내용들은 병합된다. 1238에서, 비디오 프레임 버퍼(1122)는 병합된 비디오 프레임 데이터로 업데이트된다. 1240에서, 타이머(1258)가 리셋될 수 있다. 대안적으로, 타이머(1258)는 계속해서 순환할 수 있다.
1242에서, 프로세싱은 정상 프로세싱 모드(1250)에서 OS 초기화(1220)로 돌아간다. 1220에서 OS 초기화의 완료시, 프로세싱은 1246에서 런타임 환경으로 진행된다. 런타임 환경과 관련된 비디오 드라이버가 개시되면, 런타임 환경은 비디오 프레임 버퍼(1122)의 예비 픽셀에 겹쳐 쓰기할 수 있다. 1232로 돌아가서, 예 비 픽셀이 변경되었다면, 플랫폼 비디오의 디스플레이가 정지될 수 있다. 정지는 타이머(1258)를 정지시키는 것, 및 비디오 서비스 디스패처(1258)를 플랫폼 비디오 서비스들로 대체하는 것을 포함할 수 있다.
가상화 및 시스템 관리 모드와 관련하여 전술한 하나 이상의 특징은 다른 특징과의 다양한 조합으로 구현될 수 있다.
방법들 및 시스템들은 본원에서 그의 기능들, 특징들, 및 관계들을 예시하는 기능 확립(building) 블록들의 도움으로 개시된다. 이 기능 확립 블록들의 경계들의 적어도 일부는 본원에서 설명의 편의를 위해 임의적으로 정의되었다. 그의 특정된 기능들 및 관계들이 적절하게 수행되는 한, 다른 경계들이 정의될 수 있다.
이 기술분야의 통상의 기술자는, 이러한 기능 확립 블록들이 개별 컴포넌트들, 애플리케이션 특정 집적 회로들, 적절한 소프트웨어를 실행하는 프로세서들, 및 그의 조합들에 의해 구현될 수 있음을 인식할 것이다.
도 1은 컴퓨터 시스템의 초기화 중에 플랫폼 그래픽을 디스플레이하는 그래픽 예시.
도 2는 컴퓨터 시스템의 초기화 중에 플랫폼 그래픽을 디스플레이하는 다른 그래픽 예시.
도 3은 컴퓨터 시스템의 초기화 중에 플랫폼 그래픽을 디스플레이하는 예시적인 방법의 프로세스 흐름도.
도 4는 컴퓨터 시스템의 초기화 중에 플랫폼 그래픽을 디스플레이하는 다른 예시적인 방법의 프로세스 흐름도.
도 5는 예시적인 비디오 병합 환경의 그래픽 예시.
도 6은 다른 예시적인 비디오 병합 환경의 그래픽 예시.
도 7은 예시적인 컴퓨터 시스템의 블록도.
도 8은 다른 예시적인 컴퓨터 시스템(800)의 블록도.
도 9는 컴퓨터 시스템(800)의 예시적인 OS 초기화 환경의 그래픽 예시.
도 10은 컴퓨터 시스템(800)의 초기화 중에 플랫폼 비디오를 디스플레이하는 예시적인 방법의 프로세스 흐름도.
도 11은 다른 예시적인 컴퓨터 시스템(1100)의 블록도.
도 12는 컴퓨터 시스템(1100)의 초기화 환경의 그래픽 예시 위에 중첩된, 컴퓨터 시스템(1100)의 초기화 중에 플랫폼 비디오를 디스플레이하는 예시적인 방법의 프로세스 흐름도.
도면들 중에서, 참조 번호의 가장 왼쪽의 숫자(들)는 그 참조 번호가 처음으로 나타나는 도면을 식별한다.
<도면의 주요 부분에 대한 부호의 설명>
100: 컴퓨터 시스템 초기화 프로세스
102: 플랫폼 초기화
104: OS 초기화
106: OS 런타임
108: 기본 입력/출력 시스템(BIOS) 부트 프로시져

Claims (21)

  1. 비디오 드라이버 개시 단계를 포함하는 컴퓨터 시스템 초기화 단계;
    상기 컴퓨터 시스템 상에서 운영 체제를 초기화하는 단계;
    상기 운영 체제의 초기화를 반복적으로 인터럽트(interrupt)하는 단계;
    상기 운영 체제의 초기화가 인터럽트되는 경우에 비디오 프레임 버퍼를 플랫폼 비디오 프레임 데이터로 업데이트하는 단계; 및
    상기 비디오 프레임 버퍼의 업데이트 후에 상기 운영 체제의 초기화를 재개하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 운영 체제의 초기화와 관련된 운영 체제 비디오 서비스 요청들 및 대응하는 그래픽을 인터셉트(intercept)하는 단계; 및
    상기 그래픽을 상기 플랫폼 비디오 프레임 데이터와 병합하는 단계
    를 더 포함하고,
    상기 비디오 프레임 버퍼를 업데이트하는 단계는 상기 비디오 프레임 버퍼를 병합된 비디오 프레임 데이터로 업데이트하는 단계를 포함하는 방법.
  3. 제1항에 있어서,
    상기 운영 체제의 초기화가 완료되는 경우에 상기 플랫폼 비디오 프레임 데이터의 디스플레이를 정지(halt)하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 컴퓨터 시스템 상에서 가상 머신을 초기화하는 단계;
    플랫폼 초기화 드라이버들 및 어플리케이션들을 상기 가상 머신에 전달하는 단계; 및
    상기 가상 머신 내에서 상기 운영 체제의 초기화를 수행하는 단계
    를 더 포함하고,
    상기 반복적으로 인터럽트하는 단계는 상기 가상 머신을 반복적으로 중지(suspend)하는 단계를 포함하고,
    상기 비디오 프레임 버퍼를 업데이트하는 단계는 상기 가상 머신이 중지되는 경우에 상기 비디오 프레임 버퍼를 업데이트하는 단계를 포함하는 방법.
  5. 제4항에 있어서,
    상기 가상 머신 내에서 상기 운영 체제의 초기화를 수행하는 단계는,
    상기 가상 머신에 대하여 상기 비디오 프레임 버퍼를 가상화하는 단계; 및
    상기 가상 머신과 상기 가상화된 비디오 프레임 버퍼 사이를 인터페이스하는 단계를 포함하고,
    상기 비디오 프레임 버퍼의 업데이트 단계는,
    상기 플랫폼 비디오 프레임 데이터를 플랫폼 비디오 디코드 버퍼에 디코딩하는 단계;
    상기 가상 비디오 프레임 버퍼 및 상기 플랫폼 비디오 디코드 버퍼로부터의 비디오 프레임 데이터를 병합하는 단계; 및
    상기 비디오 프레임 버퍼를 병합된 비디오 프레임 데이터로 업데이트하는 단계를 포함하는 방법.
  6. 제1항에 있어서,
    상기 인터럽트 단계는 타이머 인터럽트에 응답하여 정상 프로세서 환경을 인터럽트하는 단계를 포함하고,
    상기 비디오 프레임 버퍼의 업데이트 단계는 상기 정상 프로세서 환경이 중지되는 동안 상기 타이머 인터럽트에 응답하여 상기 플랫폼 비디오 프레임 데이터를 디코딩하고 상기 비디오 프레임 버퍼의 업데이트를 수행하는 단계, 및 상기 비디오 프레임 버퍼의 업데이트에 이어 상기 정상 프로세서 환경을 재개하는 단계를 포함하는 방법.
  7. 제6항에 있어서,
    상기 정상 프로세서 환경에서 상기 운영 체제의 초기화에 관련된 비디오 서비스 요청 및 대응하는 그래픽을 인터셉트하고, 상기 비디오 서비스 요청에 응답하여 비디오 서비스 인터럽트를 생성하는 단계;
    상기 비디오 서비스 인터럽트에 응답하여 상기 정상 프로세서 환경을 인터럽트하는 단계;
    상기 정상 프로세서 환경이 중지되는 동안 운영 체제 초기화 비디오 프레임 버퍼를 상기 그래픽으로 업데이트하는 단계; 및
    상기 운영 체제 초기화 비디오 프레임 버퍼의 업데이트에 이어 상기 정상 프로세서 환경을 재개하는 단계
    를 더 포함하고,
    상기 비디오 프레임 버퍼의 업데이트 단계는 상기 운영 체제 초기화 비디오 프레임 버퍼 내의 그래픽을 상기 플랫폼 비디오 프레임 디코드 버퍼 내의 디코딩된 플랫폼 비디오 프레임 데이터와 병합하는 단계, 및 상기 비디오 프레임 버퍼를 병합된 비디오 프레임 데이터로 업데이트하는 단계를 포함하는 방법.
  8. 제6항에 있어서,
    상기 컴퓨터 시스템의 초기화 동안 상기 비디오 프레임 버퍼의 위치에 값을 기입하는 단계;
    상기 위치에 플랫폼 비디오 데이터를 기입하는 것을 막는 단계;
    상기 타이머 인터럽트에 응답하여 상기 값과 상기 위치의 내용들을 비교하는 단계; 및
    상기 위치의 내용들이 상기 값과 다른 경우에 상기 플랫폼 비디오 프레임 데이터의 디스플레이를 정지하는 단계
    를 더 포함하는 방법.
  9. 컴퓨터 프로그램 로직을 저장하는 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 프로그램 제품 로직은,
    프로세서로 하여금 컴퓨터 시스템을 초기화하게 하는 플랫폼 초기화 로직;
    상기 프로세서로 하여금 동작 환경을 초기화하게 하는 운영 체제 초기화 로직; 및
    상기 프로세서가 상기 운영 체제 초기화 로직의 처리를 반복적으로 인터럽트하고, 상기 운영 체제 초기화 로직의 처리가 인터럽트되는 경우에 비디오 프레임 버퍼를 플랫폼 비디오 프레임 데이터로 업데이트하게 하는 플랫폼 그래픽 비디오 디스플레이 로직
    을 포함하는 컴퓨터 프로그램 제품.
  10. 제9항에 있어서,
    상기 프로세서로 하여금 상기 운영 체제 초기화 로직과 관련된 비디오 서비스 요청들 및 대응하는 그래픽을 인터셉트하게 하는 인터셉트 로직; 및
    상기 프로세서로 하여금 상기 그래픽을 상기 플랫폼 비디오 프레임 데이터와 병합하게 하는 병합 로직
    을 더 포함하고,
    상기 플랫폼 그래픽 비디오 디스플레이 로직은, 상기 프로세서로 하여금 상기 비디오 프레임 버퍼를 병합된 비디오 프레임 데이터로 업데이트하게 하는 로직을 포함하는 컴퓨터 프로그램 제품.
  11. 제9항에 있어서,
    상기 프로세서로 하여금 상기 동작 환경의 초기화 후에 상기 플랫폼 그래픽 비디오 디스플레이 로직을 정지하게 하는 플랫폼 비디오 디스플레이 종료 로직을 더 포함하는 컴퓨터 프로그램 제품.
  12. 제9항에 있어서,
    상기 플랫폼 그래픽 비디오 디스플레이 로직은,
    상기 프로세서로 하여금 가상 머신을 호스팅하게 하고, 플랫폼 초기화 드라이버들 및 어플리케이션들을 상기 가상 머신에 전달하게 하고, 상기 가상 머신 내에서 상기 운영 체제 초기화 로직을 호출하게 하는 가상 머신 관리자 로직; 및
    상기 프로세서로 하여금 상기 가상 머신을 반복적으로 중지하게 하고, 상기 가상 머신이 중지되는 경우에 상기 비디오 프레임 버퍼를 상기 플랫폼 비디오 프레임 데이터로 업데이트하게 하는 인터럽트 로직
    을 포함하는 컴퓨터 프로그램 제품.
  13. 제12항에 있어서,
    상기 가상 머신 관리자 로직은, 상기 프로세서로 하여금 상기 가상 머신에 대하여 상기 비디오 프레임 버퍼를 가상화하게 하는 로직을 포함하고, 상기 플랫폼 그래픽 비디오 디스플레이 로직은 가상 디스플레이 로직을 더 포함하고, 상기 가상 디스플레이 로직은,
    상기 프로세서로 하여금 상기 가상 머신과 상기 가상화된 비디오 프레임 버퍼 사이의 하나 이상의 비디오 인터페이스들을 제공하게 하는 비디오 인터페이스 로직;
    상기 프로세서로 하여금 상기 플랫폼 비디오 프레임 데이터를 플랫폼 비디오 디코드 버퍼에 디코딩하게 하는 플랫폼 비디오 디코드 로직; 및
    상기 프로세서로 하여금 상기 가상 비디오 프레임 버퍼 및 상기 플랫폼 비디오 디코드 버퍼로부터의 비디오 프레임 데이터를 병합하게 하고, 상기 비디오 프레임 버퍼를 병합된 비디오 프레임 데이터로 업데이트하게 하는 버퍼 병합 로직
    을 포함하는 컴퓨터 프로그램 제품.
  14. 제9항에 있어서,
    상기 플랫폼 그래픽 비디오 디스플레이 로직은 펌웨어 내에 저장된 시스템 관리 모드 로직을 포함하고, 상기 프로세서는 인터럽트에 응답하여 정상 프로세서 환경을 중지하고, 상기 정상 프로세서 환경의 상태를 저장하고, 상기 시스템 관리 모드 로직을 호출하도록 구성되고, 상기 시스템 관리 모드 로직은,
    타이머 인터럽트를 반복적으로 생성하는 타이머 로직; 및
    상기 프로세서로 하여금 상기 타이머 인터럽트에 응답하여 상기 플랫폼 비디오 프레임 데이터를 디코딩하고 상기 비디오 프레임 버퍼를 상기 플랫폼 비디오 프레임 데이터로 업데이트하게 하고, 상기 비디오 프레임 버퍼의 업데이트에 이어 상기 정상 프로세서 환경을 재개하게 하는 타이머 인터럽트 핸들러 로직
    을 포함하는 컴퓨터 프로그램 제품.
  15. 제14항에 있어서,
    상기 시스템 관리 모드 로직은,
    상기 프로세서로 하여금 상기 정상 프로세서 환경에서 비디오 디스패치(dispatch) 서비스를 개시하게 하여 상기 프로세서로 하여금 상기 운영 체제 초기화 로직과 관련된 비디오 서비스 요청 및 대응하는 그래픽을 인터셉트하게 하고, 상기 비디오 서비스 요청에 응답하여 비디오 서비스 인터럽트를 생성하게 하는 비디오 서비스 디스패치 로직; 및
    상기 프로세서로 하여금 상기 비디오 서비스 인터럽트에 응답하여 운영 체제 초기화 비디오 프레임 버퍼를 상기 그래픽으로 업데이트하게 하고, 상기 운영 체제 초기화 비디오 프레임 버퍼의 업데이트에 이어 상기 정상 프로세서 환경을 재개하게 하는 비디오 서비스 인터럽트 핸들러 로직
    을 더 포함하고,
    상기 타이머 인터럽트 핸들러 로직은, 상기 프로세서로 하여금 상기 운영 체제 초기화 비디오 프레임 버퍼 내의 상기 운영 체제 초기화 그래픽을 상기 디코딩된 플랫폼 비디오 프레임 데이터와 병합하게 하고, 상기 비디오 프레임 버퍼를 병 합된 비디오 프레임 데이터로 업데이트하게 하는 병합 로직을 포함하는 컴퓨터 프로그램 제품.
  16. 제14항에 있어서,
    상기 시스템 관리 모드 로직은 플랫폼 비디오 디스플레이 종료 로직을 더 포함하고, 상기 플랫폼 비디오 디스플레이 종료 로직은,
    상기 프로세서로 하여금 상기 시스템 관리 모드 로직의 개시 시 상기 비디오 프레임 버퍼의 위치에 값을 기입하게 하는 로직;
    상기 프로세서가 플랫폼 비디오 데이터를 상기 위치에 기입하지 못하게 하는 로직;
    상기 프로세서로 하여금 상기 타이머 인터럽트에 응답하여 상기 값과 상기 위치의 내용을 비교하게 하는 로직; 및
    상기 프로세서로 하여금 상기 위치의 내용이 상기 값과 다른 경우에 상기 플랫폼 그래픽 비디오 디스플레이 로직을 정지하게 하는 로직
    을 포함하는 컴퓨터 프로그램 제품.
  17. 컴퓨터 시스템;
    상기 컴퓨터 시스템을 초기화하는 플랫폼 초기화 로직;
    상기 컴퓨터 시스템의 동작 환경을 초기화하는 운영 체제 초기화 로직; 및
    상기 운영 체제 초기화 로직을 반복적으로 인터럽트하고, 상기 운영 체제 초 기화 로직이 인터럽트되는 경우에 비디오 프레임 버퍼를 플랫폼 비디오 프레임 데이터로 업데이트하는 플랫폼 그래픽 비디오 디스플레이 로직
    을 포함하는 시스템.
  18. 제17항에 있어서,
    상기 운영 체제의 초기화와 관련된 비디오 서비스 요청 및 대응하는 그래픽을 인터셉트하는 인터셉트 로직; 및
    상기 그래픽을 상기 플랫폼 비디오 프레임 데이터와 병합하는 병합 로직
    을 더 포함하고,
    상기 플랫폼 그래픽 비디오 디스플레이 로직은 상기 비디오 프레임 버퍼를 병합된 비디오 프레임 버퍼로 업데이트하는 로직을 포함하는 시스템.
  19. 제17항에 있어서,
    상기 동작 환경의 초기화 후에 상기 플랫폼 그래픽 비디오 디스플레이 로직을 정지하는 플랫폼 비디오 디스플레이 종료 로직을 더 포함하는 시스템.
  20. 제17항에 있어서,
    상기 플랫폼 그래픽 비디오 디스플레이 로직은,
    가상 머신을 호스팅하고, 플랫폼 초기화 드라이버들 및 어플리케이션들을 상기 가상 머신에 전달하고, 상기 가상 머신 내에서 상기 운영 체제 초기화 로직을 호출하는 가상 머신 관리자 로직; 및
    상기 가상 머신을 반복적으로 중지하고, 상기 가상 머신이 중지되는 경우에 상기 비디오 프레임 버퍼를 상기 플랫폼 비디오 프레임 데이터로 업데이트하는 인터럽트 로직
    을 포함하는 시스템.
  21. 제17항에 있어서,
    상기 플랫폼 그래픽 비디오 디스플레이 로직은 펌웨어 내에 저장된 시스템 관리 모드 로직을 포함하고, 상기 컴퓨터 시스템은 인터럽트에 응답하여 정상 컴퓨터 시스템 환경을 중지하고, 상기 정상 컴퓨터 시스템 환경의 상태를 저장하고, 상기 시스템 관리 모드 로직을 호출하도록 구성되고, 상기 시스템 관리 모드 로직은,
    타이머 인터럽트를 반복적으로 생성하는 타이머 로직; 및
    상기 타이머 인터럽트에 응답하여 상기 플랫폼 비디오 프레임 데이터를 디코딩하고, 상기 비디오 프레임 버퍼를 상기 플랫폼 비디오 프레임 데이터로 업데이트하고, 상기 비디오 프레임 버퍼의 업데이트에 이어 상기 정상 컴퓨터 시스템 환경을 재개하는 타이머 인터럽트 핸들러 로직
    을 포함하는 시스템.
KR1020090093290A 2008-09-30 2009-09-30 운영 체제 초기화 중에 플랫폼 그래픽을 디스플레이하기 위한 방법 및 시스템 KR101134816B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/242,217 US20100079472A1 (en) 2008-09-30 2008-09-30 Method and systems to display platform graphics during operating system initialization
US12/242,217 2008-09-30

Publications (2)

Publication Number Publication Date
KR20100037012A KR20100037012A (ko) 2010-04-08
KR101134816B1 true KR101134816B1 (ko) 2012-04-13

Family

ID=41429669

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090093290A KR101134816B1 (ko) 2008-09-30 2009-09-30 운영 체제 초기화 중에 플랫폼 그래픽을 디스플레이하기 위한 방법 및 시스템

Country Status (5)

Country Link
US (1) US20100079472A1 (ko)
EP (2) EP2169548A1 (ko)
JP (1) JP2011028712A (ko)
KR (1) KR101134816B1 (ko)
CN (1) CN101714091B (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103282854B (zh) * 2010-12-21 2016-08-10 英特尔公司 用于功率管理的系统和方法
US9110678B1 (en) 2011-05-17 2015-08-18 Phoenix Technologies Ltd. Automated BIOS enhancements and upgrades
US10262309B1 (en) 2011-05-26 2019-04-16 Phoenix Technologies Ltd. Augmenting a BIOS with new programs
US8560822B1 (en) * 2011-05-26 2013-10-15 Phoenix Technologies Ltd. Pre-boot operating environment
US8874892B1 (en) 2011-05-26 2014-10-28 Phoenix Technologies Ltd. Assessing BIOS information prior to reversion
US9110679B1 (en) 2011-06-03 2015-08-18 Phoenix Technologies Ltd. Pre-boot management of drivers and programs
KR20130022091A (ko) * 2011-08-24 2013-03-06 주식회사 케이티 클라우드 컴퓨팅 서버 시스템의 가상머신 제어 장치 및 방법
JP5876161B2 (ja) * 2011-11-30 2016-03-02 インテル・コーポレーション オペレーティングシステムの初期化中にマルチメディアデータを表示する技術
CN103975315B (zh) * 2011-12-06 2017-04-12 英特尔公司 用于提高车辆计算平台中的响应性的方法和系统
CN104040501A (zh) * 2011-12-26 2014-09-10 英特尔公司 显示控制器中断寄存器
US20190056828A1 (en) * 2012-09-06 2019-02-21 Google Inc. User interface transitions
GB2513660B (en) * 2013-05-03 2018-11-14 Displaylink Uk Ltd System for connecting a display over a general-purpose data transport
WO2016095091A1 (en) * 2014-12-15 2016-06-23 Intel Corporation Instrumentation of graphics instructions
FR3048293B1 (fr) * 2016-02-29 2018-07-06 Sagemcom Broadband Sas Procede de programmation d'une animation lors de la phase de demarrage d'un dispositif electronique et dispositif electronique associe
US10162643B2 (en) * 2016-06-29 2018-12-25 Wipro Limited Method and system for booting automotive electronics in an electronic control unit of an automobile
WO2022196997A1 (en) * 2021-03-15 2022-09-22 Samsung Electronics Co., Ltd. Method and electronic device for boosting graphics performance
CN113051118A (zh) * 2021-03-26 2021-06-29 联想企业解决方案(新加坡)有限公司 用于促进系统信息的早期显示的信息处理设备和方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001056719A (ja) 1999-06-18 2001-02-27 Fiinikkusu Technologies Ltd Biosブートアップ中にメディア出力を生成する方法
JP2001075812A (ja) * 1999-06-18 2001-03-23 Fiinikkusu Technologies Ltd コンピュータプリ−ブート作動の際にアプリケーションを実行する方法と装置
US20030065850A1 (en) 2001-09-28 2003-04-03 Saw-Chu Kim L. Enabling communication between video BIOS and graphics drivers

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2708608B2 (ja) * 1990-05-25 1998-02-04 富士通株式会社 仮想計算機のipl処理方式
US5890190A (en) * 1992-12-31 1999-03-30 Intel Corporation Frame buffer for storing graphics and video data
JP2579886B2 (ja) * 1993-10-29 1997-02-12 株式会社マキエンタープライズ パーソナルコンピュータのモニターテレビ出力を家庭用テレビ用に変更する方法
US5943064A (en) * 1997-11-15 1999-08-24 Trident Microsystems, Inc. Apparatus for processing multiple types of graphics data for display
US6560702B1 (en) * 1997-12-10 2003-05-06 Phoenix Technologies Ltd. Method and apparatus for execution of an application during computer pre-boot operation
US6791572B1 (en) * 1999-06-18 2004-09-14 Phoenix Technologies Ltd. Generating media output during BIOS boot-up
US6477642B1 (en) * 1999-06-18 2002-11-05 Phoenix Technologies Ltd. Method and apparatus for extending BIOS control of screen display beyond operating system boot process
JP2003516580A (ja) * 1999-12-08 2003-05-13 インサイド ソフトウェア インク オペレーティング・システムのローディング前にコンテンツを配信、検索及び表示するシステム及び方法
KR20020015848A (ko) * 2000-08-23 2002-03-02 윤종용 운영 체제를 기반으로 한 텔레비젼 및 이 장치의 초기화면 디스플레이 방법
JP4275611B2 (ja) * 2004-12-02 2009-06-10 ソニー株式会社 再生装置、再生方法および再生プログラム、記録媒体、ならびに、データ構造体
TWI286703B (en) * 2005-07-22 2007-09-11 Mitac Technology Corp Method using foreground image data to display and background program to load and execute computer program
US7721082B2 (en) * 2007-01-08 2010-05-18 Arssov Paul Plamen Method for advertising using the BIOS of a peripheral card, a software program based on the said method, and a hardware peripheral card using the said method and program
US8045828B2 (en) * 2007-07-09 2011-10-25 Kabushiki Kaisha Toshiba Apparatus for processing images, and method and computer program product for detecting image updates

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001056719A (ja) 1999-06-18 2001-02-27 Fiinikkusu Technologies Ltd Biosブートアップ中にメディア出力を生成する方法
JP2001075812A (ja) * 1999-06-18 2001-03-23 Fiinikkusu Technologies Ltd コンピュータプリ−ブート作動の際にアプリケーションを実行する方法と装置
US20030065850A1 (en) 2001-09-28 2003-04-03 Saw-Chu Kim L. Enabling communication between video BIOS and graphics drivers

Also Published As

Publication number Publication date
EP2479666A3 (en) 2012-11-07
KR20100037012A (ko) 2010-04-08
EP2479666B1 (en) 2017-11-22
JP2011028712A (ja) 2011-02-10
CN101714091B (zh) 2013-08-14
CN101714091A (zh) 2010-05-26
EP2479666A2 (en) 2012-07-25
EP2169548A1 (en) 2010-03-31
US20100079472A1 (en) 2010-04-01

Similar Documents

Publication Publication Date Title
KR101134816B1 (ko) 운영 체제 초기화 중에 플랫폼 그래픽을 디스플레이하기 위한 방법 및 시스템
CN109478135B (zh) 计算机系统和用于重新引导计算机系统的方法
EP2189901B1 (en) Method and system to enable fast platform restart
US10162655B2 (en) Hypervisor context switching using TLB tags in processors having more than two hierarchical privilege levels
US10255090B2 (en) Hypervisor context switching using a redirection exception vector in processors having more than two hierarchical privilege levels
US8533735B2 (en) System for execution context isolation in response to invoking a BIOS kernel function during a driver execution environment (DXE) phase of boot-up of a computer
JP4921384B2 (ja) メモリを1台のバーチャル・マシンからもう一方へダイナミックに再割り当てする方法、装置及びシステム
US8416253B2 (en) Apparatus, method, and recording medium for detecting update of image information
US20100023942A1 (en) Accelerating virtual machine resume time using a pre-cached working set
JP2011100431A (ja) 仮想マシン制御装置及び仮想マシン制御方法
US9959134B2 (en) Request processing using VM functions
US7581037B2 (en) Effecting a processor operating mode change to execute device code
CN111522670A (zh) 一种用于Android系统的GPU虚拟化方法、系统及介质
US7111200B2 (en) Apparatus and method for debugging a logical partition
US9471357B2 (en) Monitoring virtual machine interface and local graphical user interface on a thin client and alternating therebetween
US7231512B2 (en) Technique for reconstituting a pre-boot firmware environment after launch of an operating system
JP2012098972A (ja) コンピュータを短時間で起動する方法およびコンピュータ
US20110066836A1 (en) Operating system booting method, computer, and computer program product
JP2002132741A (ja) プロセッサ追加方法、計算機及び記録媒体
US6907521B2 (en) Enabling video BIOS and display drivers to leverage system BIOS platform abstract
Sun et al. Supporting Multiple OSes with OS Switching.
US20230101885A1 (en) Reliable device assignment for virtual machine based containers
US10387187B2 (en) Saving data for virtual machine (VM) sessions upon update of host operating system
WO2016014017A1 (en) Operating system device access using a virtual machine
JP5343489B2 (ja) コンピュータシステム、およびレガシーアプリケーション実行方法、およびプログラム

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
LAPS Lapse due to unpaid annual fee