KR20080067633A - 재부팅 없는 디스플레이 드라이버 업그레이드 - Google Patents

재부팅 없는 디스플레이 드라이버 업그레이드 Download PDF

Info

Publication number
KR20080067633A
KR20080067633A KR1020087010410A KR20087010410A KR20080067633A KR 20080067633 A KR20080067633 A KR 20080067633A KR 1020087010410 A KR1020087010410 A KR 1020087010410A KR 20087010410 A KR20087010410 A KR 20087010410A KR 20080067633 A KR20080067633 A KR 20080067633A
Authority
KR
South Korea
Prior art keywords
display driver
hardware
driver
specific display
starting
Prior art date
Application number
KR1020087010410A
Other languages
English (en)
Other versions
KR101343176B1 (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=37998133&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR20080067633(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20080067633A publication Critical patent/KR20080067633A/ko
Application granted granted Critical
Publication of KR101343176B1 publication Critical patent/KR101343176B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms

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)

Abstract

IHV 디스플레이 드라이버를 재부팅하지 않고 업데이트하는 시스템 및 방법이 개시된다. 첫째, 운영 체제가 드라이버의 실행을 중지한다. 둘째, 시스템은 임시의 또는 일시적인 디스플레이 드라이버를 사용하도록 전환되는데, 이 임시 드라이버는 운영 체제와 함께 제공된 디폴트 드라이버일 수 있다. 셋째로, 새로운 하드웨어 특화 드라이버가 시작된다. 따라서, 하드웨어 특화 디스플레이 드라이버는 재부팅 없이 업데이트될 수 있다.
재부팅, 하드웨어 특화 드라이버, 업데이트, 임시 드라이버,

Description

재부팅 없는 디스플레이 드라이버 업그레이드{REBOOTLESS DISPLAY DRIVER UPGRADES}
하드웨어 특화(hardware-specific) 디스플레이 드라이버(즉, 하나의 하드웨어와 연관된 비디오 그래픽 디스플레이를 제어하는데 사용될 수 있는 디스플레이 드라이버)를 업데이트하기 위해서는 항상 재부팅을 해야만 했다. 이러한 하드웨어 특화 디스플레이 드라이버는 독립 하드웨어 벤더(independent hardware vendor: IHV) 디스플레이 드라이버로 지칭될 수 있다.
종래의 운영체제에서는, 재부팅을 하지 않고 디스플레이 드라이버를 업데이트하는 것이 불가능하였다. 이런 운영 체제 내의 그래픽 아키텍처는 디스플레이 드라이버의 실행을 완전히 "중지"시킨 후 완전히 새로운 디스플레이 드라이버로 동적으로 업데이트하는 기능을 지원하지 못한다. 예를 들어, 새로운 드라이버로 교체되기 위해서는 일반적으로 드라이버 리소스가 릴리스 되어야 한다. 종래에 이용 가능했던 운영 체제에서는 리소스를 릴리스하는 것이 불가능하였다. 결과적으로, 사용자는 리소스를 릴리스하기 위해 종료를 해야만 하였다. 사용자는 운영 체제의 커널(kernel) 측이 새로운 드라이버의 존재를 인식하도록 재부팅을 해야만 할 것이다. 또한, 드라이버는 일반적으로 다수의 클라이언트에 의해 사용된다. 종래에 이용 가능한 운영 체제에서는, 클라이언트의 드라이버 사용을 중지시키는 것이 불 가능하였다. 따라서, 클라이언트의 드라이버 사용을 중지시킬 수 없다면, 드라이버를 교체할 수 없을 것이다. 시스템을 재부팅하게 되면 모든 클라이언트는 드라이버의 사용을 중지해야만(즉, 드라이버로부터의 연결을 끊어야만) 할 것이다.
그러나, 디스플레이 드라이버가 재부팅할 필요없이, 예컨대 2D 같은 일정한 기능 및 운영 체제의 상태를 유지하면서, 업데이트되는 것이 바람직할 것이다.
여기에 개시된 바와 같이, 하드웨어가 여전히 작동하고 있는 동안에, 현재 실행 중인 하드웨어 특화 디스플레이 드라이버가 새로운 디스플레이 드라이버로 동적으로 교체될 수 있다. 이와 같은 방법은 세 단계를 포함할 수 있다. 첫째, 현재 실행 중인 드라이버를 업데이트하라는 요청이 있으면, 운영 체제는 드라이버의 실행을 중지한다. 둘째, 시스템은 임시의 또는 일시적인 디스플레이 드라이버를 사용하도록 전환된다. 임시 디스플레이 드라이버는 (마이크로소프트 윈도우즈(Microsoft WINDOWS) 운영 체제와 함께 제공된 VGA 드라이버와 같은) 운영 체제와 함께 제공된 디폴트 드라이버일 수 있다. 셋째로, 새로운 하드웨어 특화 드라이버가 시작된다. 3D 상태가 복구되고, GPU는 계속하여 모든 기능을 지원하며 정상 동작한다. 따라서, 하드웨어 특화 디스플레이 드라이버는 재부팅 없이 업데이트될 수 있다.
도 1은 재부팅 없이 디스플레이 드라이버를 업그레이드하는 방법에 대한 흐름도
도 2는 현재 실행 중인 하드웨어 특화 디스플레이 드라이버를 중지시키는 방법에 대한 흐름도.
도 3은 새로운 하드웨어 특화 디스플레이 드라이버를 시작시키는 방법에 대한 흐름도.
도 4는 본 발명의 특징이 구현될 수 있는 예시적인 컴퓨팅 환경을 도시하는 흐름도.
도 1은 재부팅을 하지 않고 하드웨어 특화 디스플레이 드라이버를 업그레이드하는 방법에 관한 흐름도이다. 단계(10)에서, 운영 체제는 사용자가 디스플레이 드라이버 업그레이드를 요청하였음을 탐지할 수 있다. 사용자는, 예컨대, 업그레이드된 디스플레이 드라이버를 웹으로부터 호스트 컴퓨터상의 메모리로 다운로드하거나, 업그레이드된 드라이버를 CD로부터 호스트 컴퓨터상의 메모리로 업로드함으로써 이런 요청을 이행할 수 있다.
호스트 컴퓨터상에 업그레이드된 디스플레이 드라이버를 설치하기 위해서, 사용자는 호스트 컴퓨터상에서 이른바 "셋업 엔진"을 실행시킬 수 있다. 단계(20)에서, 셋업 엔진은 업그레이드된 디스플레이 드라이버와 연관된 파일을 호스트 컴퓨터상의 메모리로 복사한다. 종래 시스템에서는, 이런 새로운 디스플레이 드라이버 파일은 메모리 내의 어딘가에 저장되고, 다음번 시동 중에 탐지되고 사용되었다. 여기에 개시된 시스템에서는, 종래 시스템에서와 같이 새로운 파일이 복사되고, (이하에 상세히 기술되는 바와 같이) 새로운 드라이버가 시작될 때까지 메모리 에 저장된다.
단계(30)에서, 현재 실행중인 하드웨어 특화 드라이버는 중지된다. 현재 실행중인 하드웨어 특화 디스플레이 드라이버를 중지시키는 방법은 도 2와 관련하여 이하에 상세하게 기술된다.
단계(40)에서, 임시 디스플레이 드라이버로 제어권이 넘어간다. 임시 디스플레이 드라이버는 (마이크로소프트 윈도우즈 운영 체제와 함께 제공된 VGA 드라이버와 같은) 운영 체제와 함께 제공된 디폴트 드라이버일 수 있다. 현재 실행중인 하드웨어 특화 디스플레이 드라이버가 중지되면, 시스템상에서 실행 중인 디스플레이 드라이버가 존재하지 않게 된다. 그 결과 검은 화면이 나타날 것이고, 사용자에게 불편한 상황이 될 것이다. 이런 상황을 방지하기 위해서, 시스템에 이미 로딩되어 있는 VGA 드라이버가 이제 사용되기 시작한다. 새로운 하드웨어 특화 드라이버가 설치될 때까지, 바탕 화면(desktop)은 VGA 드라이버를 사용하여 디스플레이된다.
하드웨어가 화면에 무엇이든 그리기 위해서는, 하드웨어가 자신에게 할당된 소정의 리소스를 가지고 있어야 한다. 리소스는 운영 체제에 의해 그래픽 하드웨어에 할당된다. 따라서, 단계(30)에서 현재 실행 중인 드라이버가 중지될 때, 여전히 충분한 자원이 할당되어 임시로 디폴트 드라이버를 실행시키는 것이 가능하게 된다. 예를 들어, 일정한 메모리 및 입/출력 리소스가 할당된 상태로 유지될 수 있다. 이런 유지는 대부분의 스택 내에서 일어나는 것과 상이함을 이해하여야 할 것이다. 대부분의 장치에 있어서, 드라이버가 중지된 후에 모든 리소스가 릴리스 되는데, 이 때문에 드라이버가 중지되고 나면 하드웨어의 사용이 금지된다.
단계(50)에서, 업그레이드된 하드웨어 특화 디스플레이 드라이버가 시작된다. 하드웨어 특화 디스플레이 드라이버를 시작시키는 방법은 도 3과 관련하여 이하에 상세하게 기술된다. 따라서, 하드웨어 특화 디스플레이 드라이버는 재부팅 없이 업데이트될 수 있다.
도 2는 현재 실행중인 하드웨어 특화 디스플레이 드라이버를 중지시키는 방법에 대한 흐름도이다. 사용자가 현재 실행중인 디스플레이 드라이버의 업데이트를 시작시켰을 때, 장치를 중지시키고 드라이버를 업데이트하는 시퀀스가 시작된다. 단계(31)에서, 플러그 앤 플레이(Plug-and-Play: PnP) 관리자가 (사용자 초기화(initiation)로부터의, 예컨대 웹으로부터 새로운 드라이버를 다운로드 받는 것 등에 의한) 드라이버 업데이트 요청을 보면, 입/출력 요청 패킷(I/O request packet: IRP)과 같은 통지 메시지를 그래픽 장치 스택으로 전송함으로써 이 프로세스를 시작한다. 통지 메시지는 디스플레이 드라이버 소프트웨어에 대한 모든 의존성을 릴리스하기 위해서 해야되는 것은 무엇이든지 수행할 것을 장치에 명령한다. 이 IRP는 운영 체제 커널(DxgKrnl.sys)의 서브 컴포넌트(DxgPort)에 의해 처리될 수 있다.
두 가지 범주의 클라이언트가 중지되어야 한다. 첫째로, 윈도우즈(GDI) 내의 그래픽 스택의 더 오래된 (2D) 부분인, Win32K가 단계(32)에서 중지된다. 운영 체제 쉘(shell)은 장치의 사용을 중지할 것을 통지받는다. 또한 커널은 모든 클라이언트를 중지시킨다.
단계(33)에서, 두 번째 범주의 클라이언트가 중지된다. 두 번째 범주는 Direct3D 클라이언트를 포함한다. 이 클라이언트들이 중지될 때, 그 클라이언트들을 대표하여 할당된 모든 것들이 삭제된다. 단계(33)가 완료되면, 커널 모드에서 IHV 드라이버와 연관된 것은 아무것도 남아있지 않을 것이다. 이 시점에서, 비디오 메모리 관리자 및 비디오 스케줄러 활동은 존재하지 않는다.
단계(34)에서, PnP 관리자 요청을 보면, DxgPort는 자신의 등록된 "DmStopDevice" DDI를 통하여 IHV 커널 모드 드라이버를 호출할 것이다. 운영 체제는, 예컨대 임의의 메모리 또는 디스플레이 드라이버가 정리(clean up)해야하는 그 밖의 어떤 것을 정리할 것을 디스플레이 드라이버에 통지한다. 이 함수에서 IHV 드라이버는 자신의 상태를 정리할 책임이 있다. IHV 드라이버는 보유한 모든 리소스를 릴리스하고 드라이버가 DmStartDevice 함수에서 시작한 모든 활동을 취소한다.
단계(34) 이후에, 애플리케이션은 그래픽 처리를 요청할 때마다 하드웨어가 이용 불가능하며 애플리케이션이 자신의 리소스를 모두 정리해야한다는 응답을 듣게 된다. 단계(35) 이후에는, DirectX 런타임은 DxgKrnl로부터 "장치를 찾을 수 없음(Device Lost)" 통지를 받게 된다. 이 통지는 단계(36)에서 DirectX 애플리케이션으로 전달된다. 새로운 DirectX9L 애플리케이션들은 자신의 장치 객체를 소멸시킬 것이다. DirectX9 및 이전에 기록된 애플리케이션은 장치를 소멸시킬 수도 있고 그렇지 않을 수도 있다. DirectX는 WINDOWS 3D 그래픽(dxg = directX graphics)을 지칭함을 이해하여야할 것이다.
바람직하게는, 애플리케이션은 그래픽 처리를 요청할 때에만 새로운 드라이버를 통지받을 것이다. 즉, 애플리케이션이 종전 드라이버를 사용하길 원할 때, 종전 드라이버가 이용 불가능하다는 응답을 받을 것이다. 그리고 나서, 새로운 DirectX9L 애플리케이션은 스스로를 새로운 드라이버(업데이트된 IHV 드라이버)로 경로 변경한다. DirectX9 및 이전에 기록된 애플리케이션이 종전 드라이버가 언로딩되었음(unloaded)을 알게 되는 경우, D3D 런타임은 애플리케이션을 속여서, 드라이버가 여전히 존재하는 것처럼 보이게 한다.
도 3은 새로운 하드웨어 특화 디스플레이 드라이버를 시작시키는 방법의 흐름도이다. 드라이버 파일이 성공적으로 복사된 후에, 셋업 엔진은 PnP 관리자에게 알린다. 그러면, PnP 관리자는 새로운 장치 드라이버를 메모리에 로딩한다. 단계(51)에서, PnP 관리자는 그래픽 스택(dxgport)에 통지 메시지를 전송하여 새로운 장치를 추가한다. 그리고 나서 PnP 관리자는 DxgPort 내의 "AddDevice"를 호출하고 후속적으로 IHV 드라이버를 호출할 것이다. 단계(52)에서, PnP 관리자는 그래픽 스택에 통지 메시지(IRP)를 전송하여 새로운 장치를 가동시킨다.
단계(53)에서, 커널(그래픽 스택)은 임시 드라이버를 중지시킨다. 바람직하게는, VGA 드라이버는 현재 실행이 중지된 상태지만 여전히 로딩되어 있다. 순간적으로 검은 화면이 나타날 수도 있다.
단계(54)에서, 그래픽 스택은, 그래픽 하드웨어를 초기화하고 디스플레이 드라이버 리소스를 할당하는 디바이스 드라이버 인터페이스(device-driver interface: "DDI")를 통하여 업데이트된 비디오 디스플레이 드라이버를 호출한다. 그래픽 스택은 새로운 IHV 드라이버에게 시작할 것을 지시한다. 단계(55)에서, 그래픽 스택은 어댑터에 대하여 상응하는 객체를 생성할 것을 통지한다. 이 객체는 장치가 중지될 때 소멸될 것이다.
단계(56)에서, 2D 그래픽이 복구된다. Win32K는 해당 뷰 및 자신의 그래픽 장치 객체를 생성할 것을 통지받는다. 이 시점에서 모니터 객체 또한 커널 그래픽 스택을 통하여 생성된다. 단계(57)에서, 3D 그래픽 객체가 복구된다. 3D 그래픽 소프트웨어는 애플리케이션에 자신의 장치 객체를 재생성할 것을 요청하는데, 재생성 이후에 애플리케이션은 렌더링을 (즉, 업데이트된 새 드라이버의 사용을) 재개할 수 있다.
예시적인 컴퓨팅 환경
도 4 및 이하의 설명은 본 발명의 예시적인 실시예가 구현될 수 있는 적합한 컴퓨팅 환경의 개략적이고 포괄적인 기술의 제공을 제공하는 것을 의도한 것이다. 그러나, 본 발명과 관련하여 핸드헬드, 휴대용 및 모든 종류의 기타 컴퓨팅 장치를 사용하는 것을 예상할 수 있을 것이다. 이하에 범용 컴퓨터가 기술되어 있지만, 하나의 예시에 지나지 않는다. 본 발명은 또한 네트워크 서버 상호 운용성 및 상호 작용을 갖춘 씬 클라이언트 상에서도 동작 가능하다. 따라서, 본 발명의 예시적인 실시예는 극소수의 또는 최소한의 클라이언트 리소스를 필요로 하는 (예를 들어, 클라이언트 장치가 단지 월드 와이드 웹(World Wide Web)으로의 브라우저 또는 인터페이스의 역할만을 하는) 네트워크화되어 호스트된 서비스 환경에서 구현될 수 있다.
필수적인 것은 아니지만, 본 발명은 개발자나 분석자(tester)가 사용하도록 애플리케이션 프로그래밍 인터페이스(API)를 통하여 구현되거나, 프로그램 모듈과 같이 하나 이상의 컴퓨터(예를 들어, 클라이언트 워크스테이션, 서버 또는 다른 장치)에 의해 실행되는 일반적인 컴퓨터 실행가능 명령어의 맥락에서 기술될 네트워크 브라우징 소프트웨어에 포함될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 통상적으로, 프로그램 모듈의 기능은 다양한 실시예에서 필요에 따라 결합되거나 분산될 수 있다. 나아가, 당업자는 본 발명이 다른 컴퓨터 시스템 구성으로 실시될 수 있음을 이해할 것이다. 본 발명에 사용하기에 적합한 다른 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성은 퍼스널 컴퓨터(PC), 현금 자동 입출금기, 서버 컴퓨터, 핸드헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 프로그램가능한 가전 제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하지만, 이에 한정되지 않는다. 본 발명의 일 실시예는 또한 통신 네트워크 또는 다른 데이터 전송 매체를 통하여 연결된 원격 처리 장치에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬 및 원격 컴퓨터 저장 매체 양쪽 모두에 위치할 수 있다.
도 4는 본 발명이 구현되기에 적합한 컴퓨팅 시스템 환경(100)의 일례를 도시하고 있으며, 상기에서 분명히 하였지만, 컴퓨팅 시스템 환경(100)은 적합한 컴퓨팅 환경의 일례에 불과하며, 본 발명의 용도 또는 기능성의 범위에 관해 어떤 제 한을 암시하고자 하는 것이 아니다. 컴퓨팅 환경(100)이 예시적인 운영 환경(100)에 도시된 컴포넌트들 중 임의의 하나 또는 그 컴포넌트들의 임의의 조합과 관련하여 어떤 의존성 또는 요구사항을 갖는 것으로 해석되어서도 안 된다.
도 4와 관련하여, 본 발명을 구현하는 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들은 처리 장치(120), 시스템 메모리(130), 및 시스템 메모리를 비롯한 각종 시스템 컴포넌트들을 처리 장치(120)에 연결시키는 시스템 버스(121)를 포함하지만 이에 제한되는 것은 아니다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스 및 각종 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스를 비롯한 몇몇 유형의 버스 구조 중 임의의 것이 될 수 있다. 예로서, 이러한 아키텍처는 ISA(industry standard architecture) 버스, MCA(micro channel architecture) 버스, EISA(Enhanced ISA) 버스, VESA(video electronics standard association) 로컬 버스, 그리고 (메자닌 버스(mezzanine bus)로도 알려진) PCI(peripheral component interconnect) 버스 등을 포함하지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 통상적으로 각종 컴퓨터 판독가능 매체를 포함한다. 컴퓨터(110)에 의해 액세스 가능한 매체는 그 어떤 것이든지 컴퓨터 판독가능 매체가 될 수 있고, 이러한 컴퓨터 판독가능 매체는 휘발성 및 비휘발성 매체, 착탈식 및 비착탈식 매체를 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하지만 이에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보를 저 장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 착탈식 및 비착탈식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터(110)에 의해 액세스되고 원하는 정보를 저장할 수 있는 임의의 기타 매체를 포함하지만 이에 제한되는 것은 아니다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 변조된 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는, 신호 내에 정보를 인코딩하도록 그 신호의 특성들 중 하나 이상을 설정 또는 변경시킨 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체를 포함한다. 상술된 매체들의 모든 조합들 또한, 컴퓨터 판독가능 매체의 영역 안에 포함되는 것으로 한다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모리(RAM)(132)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동 중과 같은 때에, 컴퓨터(110) 내의 구성요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(133)은 통상적으로 ROM(131)에 저장되어 있다. RAM(132)에는 통상적으로 처리 장치(120)가 즉시 이용 할 수 있고, 또는 현재 동작시키고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예로서, 도 4는 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시하고 있지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 또한 기타 착탈식/비착탈식, 휘발성/비휘발성 컴퓨터 저장매체를 포함한다. 단지 예로서, 도 4는 비착탈식·비휘발성 자기 매체에 기록을 하거나 그로부터 판독을 하는 하드 디스크 드라이브(141), 착탈식·비휘발성 자기 디스크(152)에 기록을 하거나 그로부터 판독을 하는 자기 디스크 드라이브(151), CD-ROM 또는 기타 광 매체 등의 착탈식·비휘발성 광 디스크(156)에 기록을 하거나 그로부터 판독을 하는 광 디스크 드라이브(155)를 도시한다. 예시적인 운영 환경에서 사용될 수 있는 기타 착탈식/비착탈식, 휘발성/비휘발성 컴퓨터 기억 매체로는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고체 상태(solid state) RAM, 고체 상태 ROM 등이 있지만 이에 제한되는 것은 아니다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 비착탈식 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 통상적으로 인터페이스(150)와 같은 착탈식 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
위에서 설명되고 도 4에 도시된 드라이브들 및 이들과 관련된 컴퓨터 저장 매체에는, 컴퓨터(110)에 대한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터가 저장된다. 도 4에서, 예를 들어, 하드 디스크 드라이브(141) 는 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 여기서 주의할 점은 이들 컴포넌트가 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일하거나 그와 다를 수 있다는 것이다. 이와 관련해, 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)에 다른 번호가 부여되어 있다는 것은 적어도 이들이 다른 사본(copy)이라는 것을 나타내기 위한 것이다. 사용자는 키보드(162), 마이크(163) 및 일반적으로 마우스, 트랙볼(trackball) 또는 터치 패드로 지칭되는 포인팅 장치(161) 등의 입력 장치를 통해 명령 및 정보를 컴퓨터(110)에 입력할 수 있다. 다른 입력 장치(도시 생략)로는 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스에 결합된 사용자 입력 인터페이스(160)를 통해 처리 장치(120)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다.
모니터(191) 또는 다른 유형의 디스플레이 장치도 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속될 수 있다. 모니터(191) 외에, 컴퓨터는 스피커(197) 및 프린터(196) 등의 기타 주변 출력 장치를 포함할 수 있고, 이들은 출력 주변장치 인터페이스(195)를 통해 접속될 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있고, 통상적으로 컴퓨터(110)와 관련하여 상술된 구성요소들의 대부분 또는 그 전부를 포함한다. 도 4에 도시된 논리적 접속으로는 LAN(171) 및 WAN(173)이 있지만, 기타 네트워크를 포함할 수도 있다. 이러한 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 통상적으로 인터넷과 같은 WAN(173)을 통해 통신을 설정하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메커니즘을 통해 시스템 버스(121)에 접속된다. 네트워크화된 환경에서, 컴퓨터(110) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치에 저장될 수 있다. 예로서, 도 4는 원격 애플리케이션 프로그램(185)이 원격 컴퓨터(180)에 있는 것으로 도시하고 있지만 이에 제한되는 것은 아니다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사이에 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것을 이해할 것이다.
당업자는 컴퓨터(110) 또는 다른 클라이언트 장치가 컴퓨터 네트워크의 일부로서 배치될 수 있음을 이해할 것이다. 이런 점에서, 본 발명은 임의의 수의 메모리 또는 저장 유닛을 가지고, 임의의 수의 저장 유닛 또는 볼륨에 걸쳐서 나타날 수 있는 애플리케이션 및 프로세스를 가지는 임의의 컴퓨터 시스템에 관련될 수 있다. 본 발명의 일 실시예는 네트워크 환경에 배치된, 원격 또는 로컬 저장 장치를 가지는 서버 컴퓨터 및 클라이언트 컴퓨터를 갖춘 환경에 적용될 수 있다. 본 발명은 또한 프로그래밍 언어 기능, 해석(interpretation) 및 실행 능력을 갖춘 독립 구동형 컴퓨팅 장치에도 적용될 수 있다.
이처럼, 재부팅 없이 비디오 디스플레이 드라이버를 업데이트하는 방법 및 시스템이 기술되었다. 본 발명이 다양한 형태로 서술된 어떤 바람직한 실시예와 관련하여 기술되었지만, 다른 유사한 실시예가 사용될 수 있고, 본 발명을 실시하기 위하여 기술된 실시예에 본 발명의 사상 및 범주를 벗어나지 않는 범위에서 수정 및 부가가 가해질 수 있음을 이해하여야할 것이다. 따라서, 본 발명은 어떤 단일한 실시예로 한정되어서는 안되고, 이하의 청구항에 따른 범위를 가지는 것으로 해석되어야할 것이다.

Claims (20)

  1. 호스트 컴퓨터상의 하드웨어 특화 디스플레이 드라이버를 재부팅 없이 업그레이드하는 방법으로서,
    현재 실행 중인 하드웨어 특화(hardware-specific) 디스플레이 드라이버를 중지시키는 단계; 및
    업그레이드된 하드웨어 특화 디스플레이 드라이버를 시작시키는 단계를 포함하고, 상기 시작시키는 단계는 상기 현재 실행 중인 하드웨어 특화 디스플레이 드라이버를 중지시키는 단계와 상기 업그레이드된 하드웨어 특화 디스플레이 드라이버를 시작시키는 단계 사이의 재부팅 없이 수행되는, 방법.
  2. 제1항에 있어서,
    디스플레이 드라이버 업그레이드 요청을 탐지하는 단계; 및
    상기 업그레이드 요청에 응답하여 상기 현재 실행 중인 하드웨어 특화 디스플레이 드라이버를 중지시키는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    셋업 엔진이 상기 업그레이드된 디스플레이 드라이버와 연관된 파일들을 상기 호스트 컴퓨터상의 메모리로 복사하는, 방법.
  4. 제1항에 있어서,
    상기 호스트 컴퓨터상의 임시 디스플레이 드라이버를 시작시키는 단계를 더 포함하는 방법.
  5. 제4항에 있어서,
    상기 임시 비디오 디스플레이 드라이버는 상기 운영 체제와 함께 제공된 디폴트 드라이버인, 방법.
  6. 제5항에 있어서,
    상기 현재 실행 중인 드라이버가 중지된 후에, 충분한 리소스들이 할당된 채로 유지되어서 상기 디폴트 드라이버가 임시로 실행되는 것이 가능한, 방법.
  7. 제1항에 있어서,
    상기 현재 실행 중인 하드웨어 특화 디스플레이 드라이버를 중지시키는 단계는 플러그 앤 플레이(PnP) 관리자가 상기 비디오 디스플레이 드라이버 소프트웨어에 대한 의존성을 릴리스하라는 통지를 그래픽 장치 스택에 전송하는 단계를 포함하는, 방법.
  8. 제1항에 있어서,
    상기 현재 실행 중인 하드웨어 특화 디스플레이 드라이버를 중지시키는 단계 는 비디오 디스플레이 클라이언트를 중지시키는 단계를 포함하는, 방법.
  9. 제1항에 있어서,
    상기 현재 실행 중인 하드웨어 특화 디스플레이 드라이버를 중지시키는 단계는 상기 디스플레이 드라이버에 자신의 상태를 정리할 것을 통지하는 단계를 포함하는, 방법.
  10. 제1항에 있어서,
    상기 업그레이드된 하드웨어 특화 디스플레이 드라이버를 시작시키는 단계는 플러그 앤 플레이(PnP) 관리자가 그래픽 장치 스택에 새로운 장치를 추가하고 시작시키라는 통지를 전송하는 단계를 포함하는, 방법.
  11. 제4항에 있어서,
    상기 업그레이드된 하드웨어 특화 디스플레이 드라이버를 시작시키는 단계는 상기 임시 드라이버를 중지시키는 단계를 포함하는, 방법.
  12. 호스트 컴퓨터상의 업그레이드된 하드웨어 특화 디스플레이 드라이버로 재부팅 없이 전환(transition)하는 방법으로서,
    제1 하드웨어 특화 디스플레이 드라이버의 상기 호스트 컴퓨터상에서의 실행을 중지시키는 단계;
    상기 하드웨어와 연관된 제2 디스플레이 드라이버를 시작시키는 단계;
    애플리케이션으로부터 상기 제1 디스플레이 드라이버와 연관된 그래픽 동작을 수행하라는 요청(call)을 수신하는 단계; 및
    상기 애플리케이션에 하드웨어가 이용 불가능 하다는 것을 통지하는 단계를 포함하고, 상기 하드웨어가 이용 불가능하다는 상기 통지에 응답하여, 상기 애플리케이션이 자신을 상기 제2 디스플레이 드라이버로 경로 수정하는, 방법.
  13. 제12항에 있어서,
    상기 제1 디스플레이 드라이버가 중지된 후에 상기 애플리케이션으로부터의 상기 요청이 수신되는, 방법.
  14. 제12항에 있어서,
    상기 제2 디스플레이 드라이버를 시작시키는 단계 전에 상기 하드웨어와 연관된 임시 디스플레이 드라이버를 시작시키는 단계를 더 포함하는 방법.
  15. 제12항에 있어서,
    상기 제2 비디오 디스플레이 드라이버를 시작시키는 단계 이후에 상기 하드웨어와 연관된 제3 비디오 디스플레이 드라이버를 시작시키는 단계를 더 포함하는, 방법.
  16. 제15항에 있어서,
    상기 애플리케이션으로부터의 상기 요청이 수신되는 단계 이후에 상기 제3 비디오 디스플레이 드라이버가 시작되는, 방법.
  17. 제12항에 있어서,
    상기 애플리케이션이 자신을 상기 제2 디스플레이 드라이버로 경로 변경할 때까지 상기 애플리케이션에 대하여 상기 제1 디스플레이의 실체를 속이는(spoofing) 단계를 더 포함하는 방법.
  18. 호스트 컴퓨터상의 하드웨어 특화 디스플레이 드라이버를 재부팅 없이 업그레이드하는 방법으로서,
    현재 실행 중인 하드웨어 특화 디스플레이 드라이버를 중지시키는 단계;
    임시 비디오 디스플레이 드라이버를 시작시키는 단계; 및
    그 후에 업그레이드된 하드웨어 특화 디스플레이 드라이버를 시작시키는 단계
    를 포함하는 방법.
  19. 제18항에 있어서,
    상기 임시 디스플레이 드라이버는 상기 호스트 컴퓨터상에서 실행 중인 운영 체제와 함께 제공된 디폴트 드라이버인, 방법.
  20. 제18항에 있어서,
    상기 현재 실행 중인 드라이버가 중지된 후에, 충분한 리소스들이 할당되어서 상기 임시 드라이버가 실행되는 것을 가능하게 하는, 방법.
KR1020087010410A 2005-10-31 2008-04-29 재부팅 없는 디스플레이 드라이버 업그레이드 KR101343176B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/263,765 2005-10-31
US11/263,765 US8056072B2 (en) 2005-10-31 2005-10-31 Rebootless display driver upgrades
PCT/US2006/039128 WO2007053260A1 (en) 2005-10-31 2006-10-03 Rebootless display driver upgrades

Publications (2)

Publication Number Publication Date
KR20080067633A true KR20080067633A (ko) 2008-07-21
KR101343176B1 KR101343176B1 (ko) 2013-12-19

Family

ID=37998133

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087010410A KR101343176B1 (ko) 2005-10-31 2008-04-29 재부팅 없는 디스플레이 드라이버 업그레이드

Country Status (8)

Country Link
US (2) US8056072B2 (ko)
EP (1) EP1946221A4 (ko)
JP (1) JP5038321B2 (ko)
KR (1) KR101343176B1 (ko)
CN (1) CN101297284B (ko)
BR (1) BRPI0617793A2 (ko)
RU (1) RU2397539C2 (ko)
WO (1) WO2007053260A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8056072B2 (en) * 2005-10-31 2011-11-08 Microsoft Corporation Rebootless display driver upgrades
US8561050B2 (en) * 2005-11-10 2013-10-15 Hewlett-Packard Development Company, L.P. Method and system for updating an application
US8127310B1 (en) * 2007-03-26 2012-02-28 Celio Corporation Method and apparatus for dynamically switching display drivers in mobile device operating system
JP5007154B2 (ja) * 2007-05-25 2012-08-22 クラリオン株式会社 情報処理装置
US8234488B1 (en) * 2007-11-12 2012-07-31 Nvidia Corporation System and method for controlling mode switches in hardware
CN101520757A (zh) * 2009-04-07 2009-09-02 深圳华为通信技术有限公司 设备驱动方法、装置及通信系统
CN101655801B (zh) * 2009-09-11 2013-12-18 华为技术有限公司 驱动软件升级的方法及装置
US8505003B2 (en) * 2010-04-28 2013-08-06 Novell, Inc. System and method for upgrading kernels in cloud computing environments
CN102004655B (zh) * 2010-11-25 2013-06-19 飞天诚信科技股份有限公司 自动安装驱动程序的装置及方法
US8830228B2 (en) * 2010-12-20 2014-09-09 Microsoft Corporation Techniques for enabling remote management of servers configured with graphics processors
US9053201B2 (en) 2012-02-29 2015-06-09 Microsoft Technology Licensing, Llc Communication with a web compartment in a client application
US8972964B2 (en) * 2012-07-26 2015-03-03 Unisys Corporation Dynamic firmware updating system for use in translated computing environments
CN103761126B (zh) * 2014-01-07 2017-03-15 中国神华能源股份有限公司 应用程序的升级方法和装置
KR20150102376A (ko) * 2014-02-28 2015-09-07 한국전자통신연구원 운영 환경의 변화에 적응하는 시스템 업그레이드와 진화 기법 및 그 시스템
CN105760242B (zh) * 2015-06-19 2018-12-11 深圳怡化电脑股份有限公司 自助设备的驱动程序自适应方法及装置
US10831394B2 (en) 2018-08-27 2020-11-10 International Business Machines Corporation Live upgrade of storage device driver using shim application

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5654738A (en) 1993-05-17 1997-08-05 Compaq Computer Corporation File-based video display mode setup
GB2282245B (en) 1993-09-23 1998-04-15 Advanced Risc Mach Ltd Execution of data processing instructions
US5682529A (en) 1994-03-14 1997-10-28 Apple Computer, Inc. System for dynamically accommodating changes in display configuration by notifying changes to currently running application programs to generate information by application programs to conform to changed configuration
JP3451499B2 (ja) 1994-08-29 2003-09-29 日本電信電話株式会社 入出力装置制御システム構成の変更処理方法
US5831639A (en) 1995-07-05 1998-11-03 Symantec Corporation Scanning display driver
US6009274A (en) * 1996-12-13 1999-12-28 3Com Corporation Method and apparatus for automatically updating software components on end systems over a network
US6009480A (en) * 1997-09-12 1999-12-28 Telxon Corporation Integrated device driver wherein the peripheral downloads the device driver via an I/O device after it is determined that the I/O device has the resources to support the peripheral device
US5889965A (en) * 1997-10-01 1999-03-30 Micron Electronics, Inc. Method for the hot swap of a network adapter on a system including a dynamically loaded adapter driver
JP3287295B2 (ja) 1998-01-16 2002-06-04 日本電気株式会社 オペレーティングシステム
US6035355A (en) * 1998-04-27 2000-03-07 International Business Machines Corporation PCI system and adapter requirements following reset
US6282646B1 (en) 1998-05-08 2001-08-28 Apple Computer, Inc. System for real-time adaptation to changes in display configuration
TW385408B (en) 1998-08-26 2000-03-21 Inventec Corp Configuration method for installing plug-and-play device
RU2237275C2 (ru) 1999-02-18 2004-09-27 Ситрикс Системз, Инк. Сервер и способ (варианты) определения программного окружения клиентского узла в сети с архитектурой клиент/сервер
US6832312B1 (en) 1999-12-22 2004-12-14 Evga.Com Process for automatically installing video display software upon detecting new video display controller
US6658489B1 (en) 2000-03-29 2003-12-02 International Business Machines Corporation Method for replacing a device driver during system operation
US6880086B2 (en) * 2000-05-20 2005-04-12 Ciena Corporation Signatures for facilitating hot upgrades of modular software components
AU2001267916B2 (en) 2000-07-06 2004-09-09 Daiichi Sankyo Company, Limited Hydropyridine derivative acid addition salts
KR100520058B1 (ko) 2000-12-13 2005-10-11 삼성전자주식회사 디바이스드라이버 업그레이드 시스템 및 디바이스드라이버업그레이드 방법
US7080247B2 (en) 2000-12-22 2006-07-18 Evga Corporation System and method for automated display driver management
JP3984895B2 (ja) 2001-10-03 2007-10-03 キヤノン株式会社 情報処理装置およびサーバ装置およびドライバ更新方法およびコンピュータが読み取り可能な記憶媒体およびプログラム
US7506147B2 (en) * 2002-02-04 2009-03-17 Sonus Networks, Inc. Policy distribution point for setting up network-based services
US20040019896A1 (en) 2002-07-23 2004-01-29 Wen-Chu Yu Method of automatic program installation for computer device
US7007049B2 (en) 2002-11-18 2006-02-28 Innopath Software, Inc. Device memory management during electronic file updating
US7197751B2 (en) 2003-03-12 2007-03-27 Oracle International Corp. Real-time collaboration client
US7457831B2 (en) 2003-03-31 2008-11-25 Microsoft Corporation Peripheral device driver maintenance scheme for networked peripheral device clients
US7810089B2 (en) * 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US8056072B2 (en) * 2005-10-31 2011-11-08 Microsoft Corporation Rebootless display driver upgrades

Also Published As

Publication number Publication date
CN101297284A (zh) 2008-10-29
BRPI0617793A2 (pt) 2011-08-09
US8302089B2 (en) 2012-10-30
JP5038321B2 (ja) 2012-10-03
JP2009514122A (ja) 2009-04-02
EP1946221A1 (en) 2008-07-23
US8056072B2 (en) 2011-11-08
RU2397539C2 (ru) 2010-08-20
CN101297284B (zh) 2012-07-18
US20070101343A1 (en) 2007-05-03
RU2008117123A (ru) 2009-11-10
US20110321027A1 (en) 2011-12-29
EP1946221A4 (en) 2009-01-14
KR101343176B1 (ko) 2013-12-19
WO2007053260A1 (en) 2007-05-10

Similar Documents

Publication Publication Date Title
KR101343176B1 (ko) 재부팅 없는 디스플레이 드라이버 업그레이드
KR100961349B1 (ko) Vex - 가상 확장물을 고립시키는 방법
JP4921384B2 (ja) メモリを1台のバーチャル・マシンからもう一方へダイナミックに再割り当てする方法、装置及びシステム
EP2189901B1 (en) Method and system to enable fast platform restart
JP4887150B2 (ja) コプロセッサを監視及びリセットするための方法及び装置
KR101292429B1 (ko) 오프 상태로부터의 운영 체제의 고속 부팅
US6487608B2 (en) Method for automatically configuring network interface card and capable of randomizing a media access controller address of the network interface card
JP5387415B2 (ja) 仮想計算機システム、ポリシ強制システム、ポリシ強制方法及び仮想計算機制御用プログラム
US20010039612A1 (en) Apparatus and method for fast booting
US8131986B2 (en) System and method for boot loading of programs within a host operating environment having one or more linked guest operating systems
KR20130107313A (ko) 운영 시스템(os)이 없는 서비스 환경에서 펌웨어를 프로비저닝하는 방법
KR20060063643A (ko) 운영 체제의 성능을 향상시키는 방법 및 시스템
JP2011096013A (ja) プリンタードライバー、プリンターの制御方法及びプリンターの制御プログラム
US20070214345A1 (en) System and method for porting an operating system
US20130097412A1 (en) Performing A Boot Sequence In A Multi-Processor System
US11294691B2 (en) Dynamic memory layouts for firmware updates based on OEM memory subsystem
US8612737B2 (en) System and method for supporting multiple hardware platforms with a single disk image
JP5275456B2 (ja) ハイパーバイザーを使用したディスクレスクライアント
US6915418B2 (en) Interrupt 21h ROM client loader and payload delivery method
JP2004133627A (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
FPAY Annual fee payment

Payment date: 20161123

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171117

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181115

Year of fee payment: 6