KR20110115889A - 부분 가상 머신 및 이를 이용한 디바이스 드라이버 처리 방법 - Google Patents

부분 가상 머신 및 이를 이용한 디바이스 드라이버 처리 방법 Download PDF

Info

Publication number
KR20110115889A
KR20110115889A KR1020100035472A KR20100035472A KR20110115889A KR 20110115889 A KR20110115889 A KR 20110115889A KR 1020100035472 A KR1020100035472 A KR 1020100035472A KR 20100035472 A KR20100035472 A KR 20100035472A KR 20110115889 A KR20110115889 A KR 20110115889A
Authority
KR
South Korea
Prior art keywords
device driver
virtual cpu
driver
virtual
processing
Prior art date
Application number
KR1020100035472A
Other languages
English (en)
Other versions
KR101130781B1 (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 성균관대학교산학협력단
Priority to KR1020100035472A priority Critical patent/KR101130781B1/ko
Publication of KR20110115889A publication Critical patent/KR20110115889A/ko
Application granted granted Critical
Publication of KR101130781B1 publication Critical patent/KR101130781B1/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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

디바이스 드라이버를 처리하는 부분 가상 머신에 있어서, 어플리케이션의 디바이스 드라이버 처리 요청에 따라 가상 CPU 장치를 호출하는 매니징 장치 및 상기 매니징 장치의 호출에 따라, 상기 디바이스 드라이버 처리 요청에 의해 실행될 디바이스 드라이버 명령어를 실행하는 가상 CPU 장치를 포함하되, 상기 매니징 장치는 상기 어플리케이션으로부터 상기 디바이스 드라이버의 고장 분리 기능을 요청 받은 경우 상기 가상 CPU 장치를 호출하는 부분 가상 머신을 제공한다.

Description

부분 가상 머신 및 이를 이용한 디바이스 드라이버 처리 방법 {PARTIAL VIRTUAL MACHINE AND DEVICE DRIVER PROCESSING METHOD USING THE SAME}
본 발명은 디바이스 드라이버 처리에 관한 것으로서, 보다 상세하게는, 어플리케이션의 처리 요청에 따라 디바이스 드라이버 명령어를 실행하는 것에 관한 것이다.
Windows와 Linux 같은 대부분의 모노리딕(monolithic) 운영체제에서는 디바이스를 쉽고 빠르게 제어하기 위해 디바이스 드라이버를 커널 내에 포함하고 있다. 상기 디바이스 드라이버는 운영체제의 대부분을 차지하기 때문에 디바이스 드라이버의 고장은 운영체제에 큰 영향을 준다. 실제로 Windows XP 내에서 발생하는 오류의 85% 이상이 디바이스 드라이버의 고장 때문이라는 연구 결과도 있다. 따라서 디바이스 드라이버의 고장이 운영체제에서 분리된다면, 운영체제의 안정성과 신뢰성은 많이 향상될 것이다.
디바이스 드라이버의 고장 분리 기술은 운영체제의 신뢰도 향상을 위해서 지속적으로 연구되고 있다. 이 연구는 유저 레벨 디바이스 드라이버 프레임워크, 하드웨어 기반 분리 기술, 하이브리드 디바이스 드라이버 프레임워크 및 가상 머신이라는 4개의 카테고리로 나눌 수 있다.
유저 모드 디바이스 드라이버 프레임워크는 디바이스 드라이버를 커널 레벨이 아닌 유저 레벨에서 실행함으로써 커널 사이즈를 줄일 수 있다는 장점이 있으나, 커널 코드의 수정과 디바이스 드라이버의 재작성을 필요로 하며, 유저 레벨과 커널 레벨간의 지속적인 데이터 교환으로 인해 성능의 오버헤드가 심각하게 증가한다는 문제가 있다.
하드웨어 기반 분리 기술은 커널에 서브 시스템을 추가하여 하드웨어 기반 보호 도메인을 제공하는 것으로 성능 오버헤드를 줄인다는 장점이 있으나, 커널 코드의 수정이 필요할 뿐만 아니라 하드웨어에 의존한다는 문제점을 가지고 있다.
하이브리드 디바이스 드라이버 프레임워크는 유저 레벨과 커널 레벨의 디바이스 드라이버를 모두 사용함으로써 성능의 저하가 적고 유저 레벨에서 디바이스 드라이버 구현과 디버깅이 가능하다는 장점이 있으나, 디바이스 드라이버를 유저 레벨과 커널 레벨로 나누어야 하며 그에 따른 재작성이 필요하다는 문제가 있다.
가상 머신은 디바이스 드라이버를 하나의 독립된 가상 머신에 설치하여 디바이스 드라이버의 고장을 완벽히 분리할 수 있다는 장점이 있으나, 디바이스 드라이버를 위한 새로운 가상 머신을 생성해야 하며, 커널과 디바이스 드라이버의 수정이 필요하다는 단점이 있다.
본 발명은 전술한 종래기술의 문제점을 해결하기 위한 것으로, 하드웨어 CPU로부터 직접 처리되던 커널 내 디바이스 드라이버를 가상 CPU를 통해 처리하는 장치를 제공하는 것을 목적으로 한다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면은 디바이스 드라이버를 처리하는 부분 가상 머신에 있어서, 어플리케이션의 디바이스 드라이버 처리 요청에 따라 가상 CPU 장치를 호출하는 매니징 장치 및 상기 매니징 장치의 호출에 따라, 상기 디바이스 드라이버 처리 요청에 의해 실행될 디바이스 드라이버 명령어를 실행하는 가상 CPU 장치를 포함하되, 상기 매니징 장치는 상기 어플리케이션으로부터 상기 디바이스 드라이버의 고장 분리 기능을 요청 받은 경우 상기 가상 CPU 장치를 호출하는 부분 가상 머신을 제공한다.
또한, 본 발명의 제 2 측면은 디바이스 드라이버의 처리 방법에 있어서, 어플리케이션으로부터 디바이스 드라이버의 처리 요청을 감지하는 단계, 상기 처리 요청된 디바이스 드라이버가 상기 어플리케이션으로부터 고장 분리 기능을 요청 받은 경우 가상 CPU 장치를 호출하는 단계, 상기 호출에 의해 상기 가상 CPU 장치가 디바이스 드라이버 명령어를 실행함으로써 상기 디바이스 드라이버를 처리하는 단계 및 상기 가상 CPU 장치의 실행을 감시하여 고장이 감지되는 경우 가상 CPU 장치의 동작을 중단시키는 단계를 포함하는 디바이스 드라이버 처리 방법을 제공한다.
전술한 본 발명의 과제 해결 수단에 의하면, 어플리케이션이 고장 분리 기능을 요청한 디바이스 드라이버에 대해서는 하드웨어 CPU가 아닌 가상 CPU 장치를 이용해 처리한다. 그 결과 어플리케이션의 요청에 따라 하드웨어 CPU 또는 가상 CPU 장치를 선택적으로 이용하여 디바이스 드라이버를 처리할 수 있다.
또한, 전술한 본 발명의 과제 해결 수단에 의하면, 가상 CPU 장치에서 수행되는 디바이스 드라이버의 모든 명령어를 감시하여 고장 또는 잘못된 메모리 접근이 발생할 경우 디바이스 드라이버의 실행을 중지시킨다. 그 결과 디바이스 드라이버에 고장이 발생하더라도 실제 커널에 아무런 영향을 주지 않고 분리할 수 있어 바람직하다.
또한, 전술한 본 발명의 과제 해결 수단에 의하면, 부분 가상 머신의 사용에는 커널 코드의 수정과 디바이스 드라이버의 재작성을 필요로 하지 않는다.
또한, 전술한 본 발명의 과제 해결 수단에 의하면, 디바이스 드라이버가 부분 가상 머신 내에서 실행되기는 하지만, 부분 가상 머신이 커널 내부 함수를 간접적으로 실행시키기 때문에 성능상 오버헤드가 거의 없다.
도 1은 본 발명의 일실시예에 따른 부분 가상 머신을 포함하는 커널을 도시한 블록도이다.
도 2는 본 발명의 일실시예에 따른 부분 가상 머신을 도시한 블록도이다.
도 3은 본 발명의 일실시예에 따라 부분 가상 머신의 동작 흐름을 설명하기 위한 블록도이다.
도 4는 본 발명의 일실시예에 따라 부분 가상 머신을 이용하여 디바이스 드라이버를 처리하기 위한 과정을 설명한 흐름도이다.
도 5a 및 도 5b는 본 발명의 일실시예에 따른 PVM 모드 및 네이티브 모드에서의 처리 속도를 나타낸 도면이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 발명의 일실시예에 따른 부분 가상 머신을 포함하는 커널을 도시한 블록도이다.
도 1을 참조하면, 커널(10)은 가상 파일 시스템(20), 부분 가상 머신(100) 및 디바이스 드라이버(30)를 포함한다. 부분 가상 머신(100)은 매니징 장치(200), 가상 CPU 장치(300) 및 모니터링 장치(400)를 포함하고, 디바이스 드라이버(30)는 복수 개를 가질 수 있다.
커널(10)은 운영체제의 핵심 부분으로서, 운영체제의 다른 부분이나 어플리케이션(40) 수행에 필요한 여러 가지 서비스를 제공한다. 커널(10)은 컴퓨터 하드웨어와 프로세스의 보안을 책임지며, 한정된 시스템 자원을 효율적으로 관리하여 어플리케이션(40)의 실행을 원활하게 한다.
일반적으로 커널(10)은 운영체제의 복잡한 내부를 감추고 깔끔하고 일관성 있는 인터페이스를 하드웨어에 제공하기 위해 몇 개의 추상화 계층으로 구현된다. 같은 종류의 부품에 대해 다양하게 하드웨어를 설계할 수 있기 때문에 어플리케이션(40)이 하드웨어에 직접 접근할 경우 문제가 복잡해질 수 있다. 하드웨어 추상화 계층은 제조사의 장비 규격에 대한 특정한 명령어를 제공하는 디바이스 드라이버(30)에 의지하여 구현된다.
커널(10)은 다양한 서비스 및 높은 수준의 하드웨어 추상화를 하나의 덩어리로 묶은 단일형 커널일 수 있으며, 바람직하게는 리눅스 커널일 수 있다.
가상 파일 시스템(20)은 사용자와 파일 시스템 사이를 이어주는 스위치 구성을 제공한다. 가상 파일 시스템(20)은 실제 파일 시스템 위의 추상 계층으로서, 어플리케이션(40)이 여러 파일 시스템에 같은 방법으로 접근할 수 있게 한다. 그러므로, 가상 파일 시스템(20)을 사용하면 운영체제뿐 아니라 파일 시스템 간의 차이도 느낄 수 없이 접근 가능하다.
가상 파일 시스템(20)은 커널(10)과 실제 파일 시스템과의 인터페이스나 규격을 정의하고 있다. 그러므로 그 규격에 따라 간단히 새로운 파일 시스템을 커널(10)에 추가할 수 있다. 파일 시스템은 새로운 공개 버전과의 호환성을 위해 수정되거나 다시 컴파일되는 수도 있다. 또는 운영체제에서 규격 변경에 대해 하위 호환 모드로 동작한다면 각 파일 시스템은 새로운 버전의 운영체제에서도 그대로 사용될 수 있다.
디바이스 드라이버(30)는 디바이스(50)와 어플리케이션(40) 또는 디바이스(50)와 운영체제 사이의 해석기 역할을 한다. 따라서 디바이스(50) 처리를 위한 많은 명령어들을 포함한다. 대부분의 어플리케이션(40)들은 높은 수준의, 포괄적인 명령어들을 사용하여 디바이스(50)에 접근한다. 디바이스 드라이버(30)는 이러한 포괄적인 명령어들을 받아들이고, 이 명령어들을 장치가 요구하는 낮은 수준의 명령어들로 변환한다.
디바이스 드라이버(30)는 디바이스(50)를 빠르고 쉽게 제어하기 위해서 커널(10) 내에 위치한다. 이러한 디바이스 드라이버(30)는 커널(10)의 대부분을 차지하기 때문에 디바이스 드라이버(30)에 문제가 발생할 경우, 시스템에 중대한 영향을 미친다. 따라서 디바이스 드라이버(30)의 고장 분리 기술은 운영체제의 신뢰성을 향상하기 위해 매우 중요하다. 본 발명에서 커널(10)은 디바이스 드라이버(30)의 고장을 분리하기 위해 부분 가상 머신(100)을 포함한다.
부분 가상 머신(100)은 매니징 장치(200), 가상 CPU 장치(300) 및 모니터링 장치(400)를 포함한다.
매니징 장치(200)는 어플리케이션(40)으로부터 디바이스 드라이버(30) 처리 요청을 받는다. 어플리케이션(40)이 디바이스(50)에 접근하기 위해서는 중간자 역할을 하는 디바이스 드라이버(30)의 처리가 요구되기 때문이다. 매니징 장치(200)가 처리 요청을 받으면, 어플리케이션(40)이 요청한 디바이스 드라이버(30) 정보를 저장할 수 있다. 이 후, 매니징 장치(200)는 저장된 디바이스 드라이버(30) 정보를 이용하여 가상 CPU 장치(300)를 호출한다. 매니징 장치(200)는 어플리케이션(40)으로부터 고장 분리 기능을 요청 받는 경우 구동되도록 구성될 수 있다.
매니징 장치(200)는 명령을 받아 정보를 저장시키고, 다른 장치를 호출할 수 있는 모든 형태의 하드웨어, 소프트웨어 또는 하드웨어 및 소프트웨어의 조합일 수 있다. 한편, 매니징 장치(200)는 새로운 시스템 콜을 더 포함할 수 있다. 이를 통해, 어플리케이션(40)이 매니징 장치(200)에 고장 분리 기능을 요청할 수 있다.
가상 CPU 장치(300)는 매니징 장치(200)의 호출에 의해 디바이스 드라이버(30)를 처리한다. 매니징 장치(200)로부터 디바이스 드라이버(30)의 처리를 요청 받으면, 디바이스 드라이버(30)가 포함하는 많은 명령어를 메모리에 읽거나 쓸 수 있다. 이들 명령어의 처리 과정을 통해 디바이스(50)에 접근하거나 제어할 수 있다.
가상 CPU 장치(300)는 하드웨어 CPU와 동일한 기능을 할 수 있는 장치이다. 따라서 명령의 해독, 산술논리연산 및 데이터 처리를 실행할 수 있다. 가상 CPU 장치(300)는 프로그램 카운터, ALU(Arithmatic Logic Unit), 각종 레지스터, 명령해독부, 스택 및 스택 포인트 등을 포함할 수 있다. 가상 CPU 장치(300)는 하드웨어 CPU와 동일한 기능을 수행할 수 있는 모든 형태의 소프트웨어 또는 소프트웨어 및 하드웨어의 조합일 수 있다.
모니터링 장치(400)는 가상 CPU 장치(300)에서 처리되는 모든 명령어를 감시한다. 만약 모니터링 장치(400)가 디바이스 드라이버(30)의 처리 중에 고장을 발견하면, 가상 CPU 장치(300)를 중지시킬 수 있다. 고장은 메모리 접근 위반, 실행 코드 오류 또는 커널 함수 처리에 있어서의 오류를 포함한다. 모니터링 장치(400)가 가상 CPU 장치(300)를 중지하는 경우 디바이스 드라이버(30)의 처리를 요청한 어플리케이션(40)에 오류 메시지를 보낼 수 있다. 모니터링 장치(400)는 가상 CPU 장치(300)의 처리를 감시하여, 가상 CPU 장치(300)를 중지시키거나 오류 메시지를 보낼 수 있는 모든 형태의 하드웨어, 소프트웨어 또는 하드웨어 및 소프트웨어의 조합일 수 있다.
부분 가상 머신(100)은 하드웨어 CPU로부터 직접 처리되던 커널(10) 내 디바이스 드라이버(30)를 가상 CPU 장치(300)에서 처리한다. 가상 CPU 장치(300)를 이용하기 때문에 디바이스 드라이버(30) 처리 중에 고장이 발생하더라도 실제 커널(10)에 아무런 영향을 주지 않아 바람직하다. 또한, 부분 가상 머신(100)의 사용에는 커널(10) 코드의 수정과 디바이스 드라이버(30)의 재작성을 필요로 하지 않아 바람직하다.
매니징 장치(200) 및 모니터링 장치(400)는 기능에 따라 하위 장치를 포함할 수 있으며, 이는 도 2에서 설명한다.
도 2는 본 발명의 일실시예에 따른 부분 가상 머신을 도시한 블록도이다.
도 2를 참조하면, 부분 가상 머신(100)은 매니징 장치(200), 가상 CPU 장치(300) 및 모니터링 장치(400)를 포함한다. 한편, 매니징 장치(200)는 호 수락부(220), 드라이버 저장부(240) 및 가상 CPU 장치 호출부(260)를 포함하고, 모니터링 장치(400)는 감시부(420), 제동부(440) 및 알람부(460)를 포함한다.
호 수락부(220)는 어플리케이션(40)으로부터 호(call)를 받아들인다. 어플리케이션(40)은 디바이스 드라이버(30)의 고장 분리 기능을 요청하는 호를 호 수락부(220)에 보낼 수 있다. 이 경우 호는 어플리케이션(40)이 특정 디바이스 드라이버(30)를 가상 CPU 장치(300)를 통해 처리하겠다는 요청을 내포한다.
호는 어플리케이션(40) 및 처리 대상 디바이스 드라이버(30)의 정보를 포함한다. 따라서 호 수락부(220)는 어플리케이션(40)의 처리 요청 데이터를 저장할 수 있는 모든 형태의 구성일 수 있다. 복수 개의 어플리케이션(40)으로부터 처리 요청이 있는 경우 먼저 요청된 순서대로 호를 수락한 후 처리하여야 하므로, 스택(stack)보다는 큐(queue) 형태의 자료구조를 취하는 것이 바람직하다. 큐는 FIFO(First In First Out) 방식으로 가장 먼저 삽입된 데이터를 가장 먼저 처리한다.
드라이버 저장부(240)는 호 수락부(220)가 받아들인 호 데이터 중 디바이스 드라이버(30) 정보를 저장한다. 드라이버 저장부(240)에 저장된 디바이스 드라이버(30) 정보는 가상 CPU 장치 호출부(260)에서 가상 CPU 장치(300)의 호출을 위해 사용될 수 있다.
드라이버 저장부(240)는 디바이스 드라이버(30) 정보를 메모리에 쓰기 위한 프로세서 및 정보가 저장되는 메모리를 포함할 수 있다. 필요에 따라 드라이버 저장부(240)는 호 수락부(220)에 포함되어, 호 수락부(220)가 디바이스 드라이버(30)의 처리 요청 데이터를 받아들이는 동시에 디바이스 드라이버(30) 정보를 저장하도록 구성할 수도 있다.
가상 CPU 장치 호출부(260)는 드라이버 저장부(240)에 저장된 디바이스 드라이버(30) 정보를 이용하여 가상 CPU 장치(300)를 호출한다. 어플리케이션(40)이 커널(10) 내 가상 파일 시스템(20)에 디바이스 드라이버(30)의 처리를 요청하면, 요청된 디바이스 드라이버(30)의 정보가 드라이버 저장부(240)에 저장된 것인지 먼저 판단한다. 만약 요청된 디바이스 드라이버(30)의 정보가 드라이버 저장부(240)에 저장된 것으로 판단되면 가상 CPU 장치(300)를 호출한다.
가상 CPU 장치(300)는 가상 CPU 장치 호출부(260)의 호출에 의해 디바이스 드라이버(30)를 처리한다. 가상 CPU 장치 호출부(260)로부터 디바이스 드라이버(30) 처리를 요청 받으면, 디바이스 드라이버(30)가 포함하는 많은 명령어를 메모리에 읽거나 쓸 수 있다. 이들 명령어가 처리됨으로 인해 어플리케이션(40)이 디바이스(50)에 접근하거나 제어할 수 있다.
가상 CPU 장치(300)는 하드웨어 CPU와 동일한 기능을 할 수 있는 장치로서 명령의 해독, 산술논리연산 및 데이터 처리를 실행할 수 있다. 가상 CPU 장치(300)는 프로그램 카운터, ALU(Arithmatic Logic Unit), 각종 레지스터, 명령해독부, 스택 및 스택 포인트 등을 포함할 수 있다. 가상 CPU 장치(300)는 하드웨어 CPU와 동일한 기능을 수행할 수 있는 모든 형태의 소프트웨어 또는 소프트웨어 및 하드웨어의 조합일 수 있다.
만약 디바이스 드라이버(30) 내의 명령어뿐만 아니라 디바이스 드라이버(30)가 호출하는 커널 함수의 명령어까지 모두 가상 CPU 장치(300)가 처리한다면 시스템 오버헤드를 초래할 수 있다. 따라서 커널 함수의 명령어에 대해서는 하드웨어 CPU에서 처리되도록 하고, 가상 CPU 장치(300)는 호출된 커널 함수의 반환 값만을 받도록 구성될 수 있다.
감시부(420)는 가상 CPU 장치(300)에서 처리되는 모든 명령어를 감시한다. 감시부(420)는 가상 CPU 장치(300)의 처리 중 고장이 있는지 여부를 감시할 수 있으며, 고장은 메모리 접근 위반, 실행 코드 오류 및 커널 함수 처리에 있어서의 오류 중 어느 하나 이상일 수 있다. 만약 가상 CPU 장치(300)가 커널 함수의 명령어를 직접 처리하지 않는다면, 감시부(420)도 커널 함수 명령어를 직접 감시하지 않을 수 있다. 이 경우 시스템 오버헤드를 방지할 수 있어 바람직하다.
제동부(440)는 감시부(420)가 가상 CPU 장치(300)의 처리에 있어서 고장을 감지한 경우, 가상 CPU 장치(300)의 동작을 멈춘다. 디바이스 드라이버(30)의 처리에 고장이 있는 경우, 어플리케이션(40)이 디바이스(50)에 접근 또는 제어할 수 없을 뿐만 아니라 가상 CPU 장치(300)가 무한 반복 상태가 되는 등 시스템에 문제를 일으킬 수 있기 때문이다.
알람부(460)는 제동부(440)에 의해 가상 CPU 장치(300)의 동작이 멈추면 디바이스 드라이버(30)의 처리를 요청한 어플리케이션(40)에 오류 메시지를 보낸다. 오류 메시지는 오류를 일으키는 고장의 종류 또는 오류가 발생한 디바이스 드라이버(30)의 코드 위치 정보를 포함할 수 있다.
도 3은 본 발명의 일실시예에 따라 부분 가상 머신의 동작 흐름을 설명하기 위한 블록도이다.
도 3을 참조하면 커널(10)은 가상 파일 시스템(20), 부분 가상 머신(100) 및 디바이스 드라이버(30)를 포함한다. 부분 가상 머신(100)은 매니징 장치(200), 가상 CPU 장치(300) 및 모니터링 장치(400)를 포함하고, 커널(10) 외부에는 어플리케이션(40), 디바이스(50) 및 하드웨어 CPU(60)가 존재한다.
실선 화살표는 부분 가상 머신(100)을 통해 디바이스 드라이버(30)를 처리하는 동작 흐름을 나타낸 것으로 PVM 모드라 지칭하고, 점선 화살표는 하드웨어 CPU(60)를 통해 디바이스 드라이버(30)를 처리하는 동작 흐름을 나타낸 것으로 네이티브 모드라 지칭한다. 모든 동작 흐름은 어플리케이션(40)이 디바이스(50)에 접근하기 위한 과정이며, 각 장치의 구성 및 기능은 기본적으로 도 1 및 도 2에서 설명한 것과 동일하다.
네이티브 모드에서의 동작 흐름을 살펴 보면, 디바이스 드라이버(30)의 처리 과정이 기존 커널(10)에서의 동작 흐름과 동일하다.
먼저 어플리케이션(40)이 커널(10) 내 가상 파일 시스템(20)에 디바이스 드라이버(30)의 처리를 요청한다. 처리 요청 받은 가상 파일 시스템(20)은 요청된 디바이스 드라이버(30)를 찾는다. 이 후, 가상 파일 시스템(20)이 요청된 디바이스 드라이버(30)를 찾으면 하드웨어 CPU(60)를 통해 디바이스 드라이버(30)를 처리한다. 하드웨어 CPU(60)가 디바이스 드라이버(30)의 명령어를 처리하면서 어플리케이션(40)이 결국 디바이스(50)에 접근할 수 있다.
PVM 모드에서의 동작 흐름을 살펴 보면, 네이티브 모드와 동작 흐름이 상이한 것을 알 수 있다.
먼저 어플리케이션(40)이 매니징 장치(200)에 디바이스 드라이버(30)를 PVM 모드에서 수행하도록 요청한다. 디바이스 드라이버(30)를 PVM 모드에서의 수행하도록 요청한다는 것은 도 2에서 설명한 디바이스 드라이버(30)의 고장 분리 기능을 요청한다는 것과 같은 의미이다. 구체적으로, 이 호를 수락하는 장치는 매니징 장치(200) 중 호 수락부(220)이다. 매니징 장치(200) 중 드라이버 저장부(240)는 요청된 디바이스 드라이버(30)의 정보를 저장한다.
다음으로 어플리케이션(40)이 커널(10) 내 가상 파일 시스템(20)에 디바이스 드라이버(30)의 처리를 요청한다. 처리 요청이 있다면 매니징 장치(200) 중 가상 CPU 장치 호출부(260)는 수행 요청된 디바이스 드라이버(30) 정보가 드라이버 저장부(240)에 저장되어 있는지 확인한다. 수행 요청된 디바이스 드라이버(30) 정보가 드라이버 저장부(240)에 저장된 것이라면 가상 CPU 장치 호출부(260)는 가상 CPU 장치(300)를 호출한다. 그 후, 호출된 가상 CPU 장치(300)가 디바이스 드라이버(30)의 명령어를 처리하면서 어플리케이션(40)이 디바이스(50)에 접근할 수 있다. 이 경우 모니터링 장치(400)는 가상 CPU 장치(300)의 처리를 감시하여, 고장이 발견된 경우 가상 CPU 장치(300)의 동작을 중단시키고 어플리케이션(40)에 오류 메시지를 보낼 수 있다.
어플리케이션(40)이 고장 분리 기능을 요청한 디바이스 드라이버(30)에 대해서는 하드웨어 CPU(60)가 아닌 가상 CPU 장치(300)를 이용해 처리한다. 그 결과 어플리케이션(40)의 요청에 따라 하드웨어 CPU(60) 또는 가상 CPU 장치(300)를 선택적으로 이용하여 디바이스 드라이버(30)를 처리할 수 있어 바람직하다.
또한, 네이티브 모드와 달리 PVM 모드에서는 가상 CPU 장치(300)에서 수행되는 디바이스 드라이버(30)의 모든 명령어를 감시하여 고장 또는 잘못된 메모리 접근이 발생할 경우 디바이스 드라이버(30)의 실행을 중지시킨다. 그 결과 디바이스 드라이버(30)에 고장이 발생하더라도 실제 커널(10)에 아무런 영향을 주지 않고 분리할 수 있어 바람직하다.
또한, PVM 모드와 네이티브 모드가 선택적으로 동작할 수 있도록 PVM 모드의 구현에 디바이스 드라이버(30)의 재작성이나 커널(10) 내 다른 부분의 수정을 수반하지 않아 바람직하다.
도 4는 본 발명의 일실시예에 따라 부분 가상 머신을 이용하여 디바이스 드라이버를 처리하기 위한 과정을 설명한 흐름도이다.
먼저, 디바이스 드라이버(30)의 처리 요청을 감지한다(S410). 이 요청은 어플리케이션(40)이 커널(10) 내 가상 파일 시스템(20)에 하는 것이다. 상기 단계(S410) 이전에 어플리케이션(40)이 특정 디바이스 드라이버(30)를 PVM 모드에서 수행하도록 요청하는 단계 및 특정 디바이스 드라이버(30) 정보를 저장하는 단계를 더 포함할 수 있다. 디바이스 드라이버(30)의 처리 요청이 복수개인 경우, 즉 하나 또는 복수개의 어플리케이션(40)으로부터 복수개의 처리 요청이 들어온 경우 각각의 처리 요청을 별도의 쓰레드(thread)로 처리하도록 할 수 있다.
다음으로 저장된 디바이스 드라이버(30)인가 판단한다(S420). 수행 요청된 디바이스 드라이버(30) 정보가 드라이버 저장부(240)에 저장된 것인지 확인한다. 만약 저장된 것이라면 다음 단계로 넘어가고, 저장된 디바이스 드라이버(30)가 아니라면 네이티브 모드에서 실행되어야 하므로 종료한다. 상기 단계(S420)는 매니징 장치(200) 중 가상 CPU 장치 호출부(260)에 의해 수행될 수 있다.
다음으로 가상 CPU 장치(300)를 호출한다(S430). 가상 CPU 장치(300)를 호출하면서 처리 대상인 디바이스 드라이버(30) 정보 및 처리를 요청한 어플리케이션(40) 정보를 함께 보낼 수 있다. 상기 단계(S430)도 매니징 장치(200) 중 가상 CPU 장치 호출부(260)에 의해 수행될 수 있다.
다음으로 디바이스 드라이버 명령어를 실행한다(S440). 디바이스 드라이버(30)는 디바이스(50) 처리와 관련된 많은 명령어들을 내포하고 있다. 가상 CPU 장치(300)가 디바이스 드라이버 명령어를 실행함으로 인해 어플리케이션(40)이 디바이스(50)에 접근 또는 제어할 수 있다. 가상 CPU 장치(300)는 명령의 해독, 산술논리연산 및 데이터 처리를 실행하기 위해 프로그램 카운터, ALU(Arithmatic Logic Unit), 각종 레지스터, 명령해독부, 스택 및 스택 포인트 등을 포함할 수 있다.
PVM 모드에서 가상 CPU 장치(300)가 실제 디바이스 드라이버(30) 내의 명령어뿐만 아니라 디바이스 드라이버(30)가 호출하는 커널 함수의 명령어까지 모두 실행한다면 성능 저하를 초래할 수 있다. 커널 함수는 이미 검증되어 있으므로 가상 CPU 장치(300)가 직접 처리하거나 모니터링 장치(400)의 감시를 받을 필요가 없다. 따라서 디바이스 드라이버(30)가 호출하는 명령어 중 커널 함수 명령어에 대해서는 하드웨어 CPU(60)에서 실행되도록 하고, 가상 CPU 장치(300)는 호출된 커널 함수의 반환 값만을 받도록 구성할 수 있다. 이를 위해, 디바이스 드라이버 명령어 실행 단계(S440)는 명령어가 커널 함수의 명령어인지 판단하는 단계 및 커널 함수의 명령어인 경우 하드웨어 CPU(60)에서 실행되도록 하고 가상 CPU 장치(300)는 하드웨어 CPU(60)에서 처리된 값만 반환 받는 단계를 더 포함할 수 있다.
다음으로 모니터링 장치(400)가 가상 CPU 장치(300)를 감시한다(S450). 디바이스 드라이버(30)에 고장이 있는지 감시하며, 고장은 메모리 접근 위반, 실행 코드 오류 및 커널 함수 처리에 있어서의 오류 중 어느 하나 이상일 수 있다. 감시는 명령어 단위별로 할 수 있고, 일정 시간 단위로 주기적으로 할 수도 있다.
다음으로 디바이스 드라이버(30)에 고장이 감지되는지 판단한다(S460). 만약 고장이 감지된 경우 다음 단계로 넘어가고, 고장이 감지되지 않은 경우 디바이스 드라이버 명령어 실행이 완료되었는지 판단하는 단계(S470)로 넘어간다. 고장을 일으키는 종류 중 특정 종류에 대해서만 상기 분기를 실행하게 할 수도 있다.
고장이 감지되지 않는 경우 디바이스 드라이버 명령어 실행이 완료되었는지 판단한다(S470). 디바이스 드라이버(30) 처리가 완료된 것인지 검사하는 것이다. 만약 모든 명령어를 처리하였다면 종료하고, 아직 처리되지 않은 명령어가 남았다면 남은 디바이스 드라이버 명령어를 실행하는 단계(S440)로 회귀한다. 상기 회귀 루프를 통해, 디바이스 드라이버(30)가 처리 완료될 때까지 가상 CPU 장치(300)가 감시될 수 있다.
고장이 감지된 경우 가상 CPU 장치(300)를 중단시키고 오류 보고한다(S480). 고장이 있는 경우, 어플리케이션(40)이 디바이스(50)에 접근 또는 제어할 수 없을 뿐만 아니라 가상 CPU 장치(300)가 무한 반복 상태가 되는 등 시스템에 문제를 일으킬 수 있기 때문이다. 오류 보고에서 오류 메시지는 어플리케이션(40)에 할 수 있으며, 오류를 일으키는 고장의 종류 또는 오류가 발생한 디바이스 드라이버(30)의 코드 부분을 포함할 수 있다.
도 5a 및 도 5b는 본 발명의 일실시예에 따른 PVM 모드 및 네이티브 모드에서의 처리 속도를 나타낸 도면이다.
도 5a 및 도 5b 모두 속도 성능의 측정을 위해 IOzone3 벤치마크를 사용하였다. x축은 처리 되는 용량(Byte)을 나타내고, y축은 처리 속도(KB/sec)를 단위로 나타낸다.
도 5a는 512MB 크기의 파일을 8KB씩 읽어왔을 때, 1초에 얼마나 많은 양을 읽어오는지 보여준다. 도면에 나타난 결과에 따르면, PVM 모드와 네이티브 모드 간에는 큰 속도 차이가 나타나지 않는다.
도 5b는 512MB 크기의 파일을 8KB씩 기록할 때, 1초에 얼마나 많은 양을 기록하는지 보여준다. 도면에 나타난 결과에 따르면, 기록하는 경우 역시 PVM 모드와 네이티브 모드 간에 큰 속도 차이가 나타나지 않음을 알 수 있다.
PVM 모드와 네이티브 모드 간에 큰 속도 차이가 나지 않는 이유는 가상 CPU 장치(300)가 디바이스 드라이버 명령어를 실행할 때, 디바이스 드라이버(30)가 호출하는 커널 함수의 명령어에 대해서는 하드웨어 CPU(60)에서 처리되도록 하고, 가상 CPU 장치(300)는 호출된 커널 함수의 반환 값만을 받도록 구성했기 때문이다.
참고로, 본 발명의 일실시예에 따른 도 1 내지 도 3에 도시된 구성 요소들은 소프트웨어 또는 FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)와 같은 하드웨어 구성 요소를 의미하며, 소정의 역할들을 수행한다.
그렇지만 '구성 요소들'은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, 각 구성 요소는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다.
따라서, 일 예로서 구성 요소는 소프트웨어 구성 요소들, 객체지향 소프트웨어 구성 요소들, 클래스 구성 요소들 및 태스크 구성 요소들과 같은 구성 요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다.
구성 요소들과 해당 구성 요소들 안에서 제공되는 기능은 더 작은 수의 구성 요소들로 결합되거나 추가적인 구성 요소들로 더 분리될 수 있다.
본 발명의 일실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
본 발명의 방법 및 장치는 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.
도 1 내지 도 5에서의 하드웨어 CPU(60) 및 가상 CPU 장치(300)는 프로세서, 캐쉬, 메모리 및 상술한 기능에 관련된 하나 이상의 소프트웨어 어플리케이션(40) 및 드라이버를 포함할 수 있다.
추가적으로, 하드웨어 CPU(60) 및 가상 CPU 장치(300)는 고성능 입/출력(I/O) 버스 및 표준 I/O 버스를 포함할 수 있다. 호스트 브릿지는 프로세서를 고성능 I/O 버스에 결합시키고, I/O 버스 브릿지는 두 개의 버스를 상호 결합시킨다. 시스템 메모리 및 네트워크/통신 인터페이스는 고성능 I/O 버스에 결합된다. 하드웨어 시스템은 비디오 메모리 및 그 비디오 메모리에 결합된 디스플레이 장치를 더 포함할 수 있다. 대용량 기억장치 및 I/O 포트는 표준 I/O 버스에 결합된다. 하드웨어 CPU(60) 및 가상 CPU 장치(300)는 키보드 및 포인팅 디바이스, 그리고 표준 I/O 버스에 결합된 디스플레이 장치를 선택적으로 포함할 수 있다. 총괄적으로, 이러한 요소들은 넓은 범위의 컴퓨터 하드웨어 시스템을 표현하도록 의도되며, 인텔사에 의해 제조된 펜티엄 프로세서뿐만 아니라 다른 적절한 프로세서에 기반하는 범용 컴퓨터 시스템을 포함하나 이에 제한되지는 않는다.
하드웨어 CPU(60) 및 가상 CPU 장치(300)는 다양한 종류의 시스템 아키텍쳐를 포함할 수 있고, 다양한 구성요소가 재배치될 수 있다. 또한, 본 발명의 특정한 실시예는 상술한 구성 요소의 전부를 요구하거나 포함하지 않을 수 있다. 이하에서 논의되는 것처럼, 본 발명의 일 실시예의 동작은 하드웨어 시스템에 의해 구동되는 일련의 소프트웨어 루틴으로서 실시될 수 있다. 이러한 소프트웨어 루틴들은 프로세서와 같은 하드웨어 시스템에서 프로세서에 의하여 실행될 수 있는 복수의 또는 일련의 명령들을 포함한다. 우선, 일련의 명령들은 대용량 기억 장치와 같은 기억 장치에 저장된다. 그러나 일련의 명령들은 디스켓, CD-ROM, ROM, EEPROM 등과 같은 임의의 적절한 기억 매체에 저장될 수 있다. 더욱이, 일련의 명령들은 국소적으로 저장될 필요가 없고, 네트워크/통신 인터페이스를 통하여 네트워크 상의 서버 등과 같은 원격 기억 장치로부터 수신될 수 있다. 그 명령들은 대용량 기억 장치와 같은 기억 장치로부터 시스템 메모리로 복사되고, 프로세서에 의하여 액세스되고 실행된다.
운영 시스템은, 소프트웨어 어플리케이션(40)과의 데이터 입/출력을 포함하는 하드웨어 CPU(60) 및 가상 CPU 장치(300)의 동작을 관리하고 제어한다. 운영 시스템은 시스템 상에서 실행되는 소프트웨어 어플리케이션(40)과 시스템의 하드웨어 구성 요소 사이의 인터페이스를 제공한다. 본 발명의 일 실시예에 따른 운영 시스템은 유닉스(UNIX) 운영 시스템, 리눅스(LINUX) 운영 시스템일 수 있다. 그러나 본 발명은 마이크로소프트사의 Windows 95/98/NT/XP/VISTA, 애플 컴퓨터사의 애플 맥킨토시 운영 시스템 등과 같은 다른 적절한 운영 시스템에서도 사용될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: 커널 20: 가상 파일 시스템
30: 디바이스 드라이버 40: 어플리케이션
50: 디바이스 60: 하드웨어 CPU
100: 부분 가상 머신
200: 매니징 장치 220: 호 수락부
240: 드라이버 저장부 260: 가상 CPU 장치 호출부
300: 가상 CPU 장치
400: 모니터링 장치 420: 감시부
440: 제동부 460: 알람부

Claims (13)

  1. 디바이스 드라이버를 처리하는 부분 가상 머신에 있어서,
    어플리케이션의 디바이스 드라이버 처리 요청에 따라 가상 CPU 장치를 호출하는 매니징 장치 및
    상기 매니징 장치의 호출에 따라, 상기 디바이스 드라이버 처리 요청에 의해 실행될 디바이스 드라이버 명령어를 실행하는 가상 CPU 장치를 포함하되,
    상기 매니징 장치는 상기 어플리케이션으로부터 상기 디바이스 드라이버의 고장 분리 기능을 요청 받은 경우 상기 가상 CPU 장치를 호출하는 부분 가상 머신.
  2. 제 1 항에 있어서,
    상기 부분 가상 머신은 운영체제의 동작과 독립적으로 상기 디바이스 드라이버를 처리하는 부분 가상 머신.
  3. 제 1 항에 있어서,
    상기 매니징 장치는 상기 어플리케이션으로부터 상기 디바이스 드라이버의 고장 분리 기능을 요청 받는 호 수락부,
    상기 고장 분리 기능이 요청된 디바이스 드라이버의 정보를 저장하는 드라이버 저장부 및
    상기 저장된 디바이스 드라이버의 정보를 이용하여 상기 가상 CPU 장치를 호출하는 가상 CPU 장치 호출부
    를 포함하는 부분 가상 머신.
  4. 제 1 항에 있어서,
    상기 가상 CPU 장치는 하드웨어 CPU와 동일하게 명령 해독 또는 산술논리연산 처리할 수 있도록, 프로그램 카운터, ALU(Arithmatic Logic Unit), 레지스터, 스택 및 스택 포인트를 포함하는 부분 가상 머신.
  5. 제 1 항에 있어서,
    상기 가상 CPU 장치는 상기 디바이스 드라이버 명령어 중 상기 디바이스 드라이버가 호출하는 커널 함수 명령어에 대해서는 하드웨어 CPU에서 처리되도록 하고, 상기 하드웨어 CPU에서 처리된 커널 함수 값만 반환 받는 부분 가상 머신.
  6. 제 1 항에 있어서,
    상기 가상 CPU 장치에서 처리되는 상기 디바이스 드라이버 명령어를 감시하는 모니터링 장치를 더 포함하는 부분 가상 머신.
  7. 제 6 항에 있어서,
    상기 모니터링 장치는 상기 가상 CPU 장치가 상기 디바이스 드라이버 명령어를 실행하는 것을 감시하는 감시부 및
    상기 가상 CPU 장치의 실행 중 고장을 일으키는 경우 상기 가상 CPU 장치의 동작을 멈추는 제동부를 포함하되,
    상기 고장은 메모리 접근 위반, 실행 코드 오류 및 커널의 주요 함수에서 발생하는 오류 중 하나 이상인 것인 부분 가상 머신.
  8. 제 7 항에 있어서,
    상기 모니터링 장치는 상기 제동부에 의해 상기 가상 CPU 장치의 동작이 멈추면 상기 디바이스 드라이버의 처리를 요청한 상기 어플리케이션에 오류 메시지를 보내는 알람부를 더 포함하는 부분 가상 머신.
  9. 제 1 항에 있어서,
    복수개의 상기 어플리케이션으로부터 복수개의 상기 디바이스 드라이버 처리 요청이 존재하는 경우, 각각의 처리 요청을 별도의 쓰레드(thread)로 처리하는 부분 가상 머신.
  10. 디바이스 드라이버의 처리 방법에 있어서,
    어플리케이션으로부터 디바이스 드라이버의 처리 요청을 감지하는 단계,
    상기 처리 요청된 디바이스 드라이버가 상기 어플리케이션으로부터 고장 분리 기능을 요청 받은 경우 가상 CPU 장치를 호출하는 단계,
    상기 호출에 의해 상기 가상 CPU 장치가 디바이스 드라이버 명령어를 실행함으로써 상기 디바이스 드라이버를 처리하는 단계 및
    상기 가상 CPU 장치의 실행을 감시하여 고장이 감지되는 경우 가상 CPU 장치의 동작을 중단시키는 단계
    를 포함하는 디바이스 드라이버 처리 방법.
  11. 제 10 항에 있어서,
    상기 디바이스 드라이버를 처리하는 단계는 상기 실행되는 디바이스 드라이버 명령어 중 커널 함수 명령어에 대해서는 하드웨어 CPU에서 처리되도록 하고, 상기 가상 CPU 장치는 상기 하드웨어 CPU에서 처리된 커널 함수 값만 반환 받는 디바이스 드라이버 처리 방법.
  12. 제 10 항에 있어서,
    상기 가상 CPU 장치의 동작을 중단시키는 단계는 메모리 접근 위반, 실행 코드 오류 및 커널의 주요 함수에서 발생하는 오류 중 어느 하나가 발생한 경우 상기 고장이 감지된 것으로 판단하는 디바이스 드라이버 처리 방법.
  13. 제 10 항에 있어서,
    상기 가상 CPU 장치의 동작을 중단시키는 단계는 상기 디바이스 드라이버의 처리를 요청한 상기 어플리케이션에 오류 메시지를 보내는 단계를 포함하는 디바이스 드라이버 처리 방법.

KR1020100035472A 2010-04-16 2010-04-16 부분 가상 머신 및 이를 이용한 디바이스 드라이버 처리 방법 KR101130781B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100035472A KR101130781B1 (ko) 2010-04-16 2010-04-16 부분 가상 머신 및 이를 이용한 디바이스 드라이버 처리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100035472A KR101130781B1 (ko) 2010-04-16 2010-04-16 부분 가상 머신 및 이를 이용한 디바이스 드라이버 처리 방법

Publications (2)

Publication Number Publication Date
KR20110115889A true KR20110115889A (ko) 2011-10-24
KR101130781B1 KR101130781B1 (ko) 2012-03-28

Family

ID=45030420

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100035472A KR101130781B1 (ko) 2010-04-16 2010-04-16 부분 가상 머신 및 이를 이용한 디바이스 드라이버 처리 방법

Country Status (1)

Country Link
KR (1) KR101130781B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101387986B1 (ko) * 2012-05-24 2014-04-22 성균관대학교산학협력단 가상화 장치
WO2021138284A1 (en) * 2019-12-30 2021-07-08 UiPath, Inc. Method and apparatus for remote native automation decoupling

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101006433B (zh) 2004-08-25 2012-01-11 日本电气株式会社 信息通信装置和程序执行环境控制方法
KR20100073085A (ko) * 2008-12-22 2010-07-01 삼성전자주식회사 다중 코어 플랫폼에서의 하드웨어 디바이스 드라이버 추상화 방법 및 장치

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101387986B1 (ko) * 2012-05-24 2014-04-22 성균관대학교산학협력단 가상화 장치
WO2021138284A1 (en) * 2019-12-30 2021-07-08 UiPath, Inc. Method and apparatus for remote native automation decoupling
US11453131B2 (en) 2019-12-30 2022-09-27 UiPath, Inc. Method and apparatus for remote native automation decoupling

Also Published As

Publication number Publication date
KR101130781B1 (ko) 2012-03-28

Similar Documents

Publication Publication Date Title
US8327083B2 (en) Transparent hypervisor pinning of critical memory areas in a shared memory partition data processing system
US20070011507A1 (en) System and method for remote system support
US9317360B2 (en) Machine check summary register
US7426661B2 (en) Method and system for minimizing loss in a computer application
US10394645B2 (en) Correcting operational state and incorporating additional debugging support into an online system without disruption
US7917811B2 (en) Virtual computer system
US9495233B2 (en) Error framework for a microprocesor and system
US10489232B1 (en) Data center diagnostic information
US7971104B2 (en) Apparatus and methods for stabilization of processors, operating systems and other hardware and/or software configurations
KR102025078B1 (ko) 단일 스텝 실행을 이용한 코드 진단
JP7351933B2 (ja) エラーリカバリ方法及び装置
US7765526B2 (en) Management of watchpoints in debuggers
JP2010086181A (ja) 仮想計算機システム及びその管理方法、プログラム並びに記録媒体
CN101236512A (zh) 在微处理器上使能多指令流/多数据流扩展
JP6288275B2 (ja) 仮想化基盤管理装置、仮想化基盤管理システム、仮想化基盤管理方法、及び、仮想化基盤管理プログラム
CN105404559B (zh) 在数据处理装置中进行除错
KR101130781B1 (ko) 부분 가상 머신 및 이를 이용한 디바이스 드라이버 처리 방법
JP2006164185A (ja) デバッグ装置
US8171345B2 (en) Disablement of an exception generating operation of a client system
US20180095815A1 (en) Trace hub logic with automatic event triggering
Deconinck et al. Fault tolerance in massively parallel systems
JP5832408B2 (ja) 仮想計算機システム及びその制御方法
KR100206472B1 (ko) 전전자교환기에서 시스템 장애관리 및 복구방법
KR20230052207A (ko) 스토리지 장치의 장치 프로그램에 액세스하는 시스템, 방법, 및 장치
Cao et al. Evaluating Linux Kernel Crash Dumping Mechanisms

Legal Events

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

Payment date: 20150115

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160113

Year of fee payment: 5