KR20230093425A - 다중 운영 체제를 실행하는 컴퓨터 시스템 - Google Patents

다중 운영 체제를 실행하는 컴퓨터 시스템 Download PDF

Info

Publication number
KR20230093425A
KR20230093425A KR1020237012252A KR20237012252A KR20230093425A KR 20230093425 A KR20230093425 A KR 20230093425A KR 1020237012252 A KR1020237012252 A KR 1020237012252A KR 20237012252 A KR20237012252 A KR 20237012252A KR 20230093425 A KR20230093425 A KR 20230093425A
Authority
KR
South Korea
Prior art keywords
driver
user space
kernel
user
common
Prior art date
Application number
KR1020237012252A
Other languages
English (en)
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 KR20230093425A publication Critical patent/KR20230093425A/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/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • 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/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • 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/4406Loading of operating system
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications

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)

Abstract

제1 운영 체제(204) 및 제2 운영 체제(206)는 컴퓨팅 장치(202)의 프로세서에 의해 실행된다. 제1 운영 체제는, 제1 사용자 공간 드라이버(210)가 실행되는 제1 사용자 공간(208)을 갖는다. 제2 운영 체제는, 제2 사용자 공간 드라이버(214)가 실행되는 제2 사용자 공간(212)을 갖는다. 공통 커널 드라이버(226)는, 공통 커널 드라이버에 데해 소정 함수 호출을 수행했는지 결정하고, 해당 결정에 기초하여 소정 함수 호출을 해당 하드웨어 특정 호출로 변환하기 위해 공통 커널(224) 상에서 실행된다. 공통 커널 드라이버는, 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버가 컴퓨팅 장치의 컴퓨터 하드웨어(228)에 동시에 액세스할 수 있도록 한다.

Description

다중 운영 체제를 실행하는 컴퓨터 시스템
본 발명은 다수의 운영 체제들을 실행하는 컴퓨팅 장치에 관한 것이다. 또한, 본 발명은 동일한 컴퓨팅 장치에서 다수의 운영 체제들의 동시 실행을 용이하게 하기 위한 방법에 관한 것이다.
운영 체제(operating system)는 컴퓨터 자원의 제어와 관리를 담당하는 시스템 소프트웨어이다. 일반적으로, 운영 체제는 컴퓨팅 장치의 애플리케이션 소프트웨어와 컴퓨터 하드웨어 사이의 통신을 가능하게 한다. 구체적으로, 운영 체제는 애플리케이션 소프트웨어가 컴퓨터 하드웨어에 액세스하여 디스크 액세스, 메모리 관리, 작업 스케줄링, 사용자 인터페이스와 같은 컴퓨팅 장치의 기본적인 시스템 작업을 수행할 수 있도록 한다. 또한, 운영 체제는 네트워크 연결을 제공하는 역할을 한다.
특히, 모든 운영 체제에는 고유한 기능과 단점이 있다. 일부 운영 체제는 광범위한 기능을 갖춘 완전한 기능을 갖추고 있는 반면, 다른 운영 체제는 더 빠른 처리가 가능할 수 있다. 추가적으로, 다양한 응용 프로그램들은 하나의 운영 체제 내에서 실행되도록 작성될 수 있지만, 다른 운영 체제에 의해 지원되지 않을 수도 있다. 운영 체제의 이러한 다양한 기능 때문에, 사용자는 동일한 컴퓨터 하드웨어에 있는 두 개 이상의 운영 체제들의 기능에 액세스하기를 원할 수 있다.
도 1(종래 기술)은 컴퓨팅 장치(102) 상에서 두 개의 운영 체제, 즉, 제1 운영 체제(104)와 제2 운영 체제(106)를 실행하는 종래의 방식을 나타내는 블록도이다. 여기서, 제1 운영 체제(104)는, 제1 사용자 공간(108) 및 제1 커널(116)을 가지며, 갖디며, 상기 제1 사용자 공간(108)은 제1 사용자 공간 드라이버(110)를 갖고, 상기 제1 커널(116)은 제1 커널 드라이버(118)를 갖는다. 유사하게, 제2 운영 체제(106)는 제2 사용자 공간(112) 및 제2 커널(120)을 가지며, 상기 제2 사용자 공간(112)은 제2 사용자 공간 드라이버(114)를 갖고, 상기 제2 커널(120)은 제2 커널 드라이버(122)를 갖는다. 제1 커널 드라이버(118)는, 컴퓨팅 장치(102)와 관련된 컴퓨터 하드웨어(124)에 대한 액세스를 제1 사용자 공간 드라이버(110)에 제공하도록 구성된다. 제2 커널 드라이버(122)는 컴퓨팅 장치(102)와 관련된 컴퓨터 하드웨어(124)에 대한 액세스를 제2 사용자 공간 드라이버(114)에 제공하도록 구성된다. 특히, 제1 사용자 공간(108) 및 제2 사용자 공간(112)과 같은 사용자 공간은 제1 커널(116) 및 제2 커널(120)과 각각 통신한다. 사용자 공간 드라이버와 커널 공간 드라이버는 소정 운영 체제에 특유하고 다른 운영 체제의 드라이버와 호환되지 않는다는 것이 이해될 것이다. 들어, 제1 커널 드라이버(118)는 제2 사용자 공간 드라이버(114)와 호환되지 않으며, 제2 커널 드라이버(122)는 제1 사용자 공간 드라이버(110)와 호환되지 않는다.
전통적으로, 듀얼 부트, 가상 머신, 에뮬레이터, 컨테이너와 같은 기술들은 동일한 컴퓨터 하드웨어에 있는 두 개 이상의 운영 체제의 기능에 액세스하기 위해 사용되어 왔다. 그러나 이러한 종래 기술은 운영 체제에 하드웨어 기능의 동시 액세스를 제공하면서 하드웨어 가속을 지원하지 않는다. 또한 듀얼 부트와 같은 기술은 하나의 컴퓨터 하드웨어에서 두 운영 체제의 기능을 허용하지만 두 운영 체제에 동시 액세스를 제공하지는 않는다. 호스트된 가상 머신을 사용하는 컴퓨팅 장치.에서, 게스트 운영 체제는 호스트 운영 체제의 가상 머신에서 실행되므로 두 운영 체제 모두에 대한 컴퓨터 하드웨어의 동시 액세스를 허용한다. 그러나 게스트 운영 체제의 하드웨어 리소스 가상화로 인해 호스트 가상 시스템을 사용하는 컴퓨팅 장치의 성능이 크게 저하된다. 컴퓨터 하드웨어에 대한 액세스을 여러 운영 체제에 제공하는 또 다른 방법은 래퍼 또는 드라이버 간의 프로세스 간 통신(IPC)을 사용하는 것이다. 그러나, 이러한 방법은 많은 사용자 공간 드라이버가 이진 형식으로만 제공되고 변경할 수 없기 때문에 복잡성을 크게 증가시키고 성능을 종종 크게 저하시킨다.
따라서, 전술한 논의에 비추어 볼 때, 동일한 컴퓨터 하드웨어 상에서 둘 이상의 운영 체제들의 기능에 액세스하기 위한 종래의 방법들과 관련된 전술한 단점들을 극복할 필요가 있다.
본 발명은 다수의 운영 체제의 동시 실행을 용이하게 하는 컴퓨팅 장치를 제공한다. 본 발명은 또한, 동일한 컴퓨팅 장치 상에서 다수의 운영 체제들의 동시 실행을 용이하게 하는 방법을 제공한다. 본 발명은 동일한 컴퓨팅 장치 상에서 다수의 운영 체제들을 사용하기 위한 종래의 해법에서 드라이버 비호환성, 제한된 하드웨어 액세스 및 상당한 성능 오버헤드의 기존 문제에 대한 해결책을 제공하고자 한다. 본 발명의 목적은, 종래 기술에서 직면한 문제점들을 적어도 부분적으로 극복하는 해결책을 제공하는 것이다.
제1 양태에서, 본 발명의 일 실시예는,
컴퓨터 실행가능한 명령이 저장된 메모리; 및 메모리에 결합된 프로세를 포함하고, 프로세서에서 실행될 때, 컴퓨터 실행가능한 명령은, 프로세서가,
- 각각 제1 사용자 공간 및 제2 사용자 공간을 갖고, 그들 사이에 공유되는 공통 커널을 갖는, 제1 운영 체제 및 제2 운영 체제를 실행하도록 하고;
- 각각 제1 사용자 공간 및 제2 사용자 공간에 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버를 실행하도록 하고;
공통 커널에서 공통 커널 드라이버가,
- 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나가 공통 커널 드라이버에 소정 함수 호출을 했는지 결정하고,
공통 커널 드라이버에 소정 함수 호출을 수행한 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나의 결정에 기초하여 소정 함수 호출을 해당 하드웨어 특정 호출로 변환하고, 그에 의해 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나가 컴퓨팅 장치에 액세스하도록, 실행하도록 하고,
상기 공통 커널 드라이버는 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버가 컴퓨터 하드웨어에 동시에 액세스할 수 있도록 하는, 컴퓨팅 장치를 제공한다.
제2 양태에서, 본 발명의 실시예는,
컴퓨팅 장치에서 각각, 제1 사용자 공간 및 제2 사용자 공간을 각각 갖는 제1 운영 체제 및 제2 운영 체제를 실행하는 단계로, 상기 제1 운영 체제 및 상기 제2 운영 체제는 이들 사이에 공유되는 공통 커널을 갖는, 단계;
- 제1 사용자 공간 및 제2 사용자 공간에서 각각, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버를 실행하는 단계; 및
- 공통 커널에서 공통 커널 드라이버를 실행하여,
제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나가 이 공통 커널 드라이버에 대해 소정 함수 호출을 행했는지 결정하고;
공통 커널 드라이버에 대해 소정 함수 호출을 수행한 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나의 결정에 기초하여, 소정 함수 호출을 대응하는 하드웨어 특정 호출로 변환하고, 그에 의해 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나가 컴퓨팅 장치의 하드웨어에 액세스할 수 있도록 하는, 단계를 포함하고,
상기 공통 커널 드라이버는, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버가 컴퓨터 하드웨어에 동시에 액세스할 수 있도록 하는, 방법을 제공한다.
본 발명의 실시예들은 전술한 종래 기술의 문제점들을 실질적으로 제거하거나 적어도 부분적으로 해결하고, 동일한 컴퓨팅 장치 상에서 다수의 운영 체제들의 동시 실행을 가능하게 하며, 별다른 큰 성능 저하 없이, 컴퓨팅 장치의 컴퓨터 하드웨어를 상기 운영 체제들의 상이한 사용자 공간 드라이버들에 대한 동시 액세스를 용이하게 한다.
본 발명의 추가적인 양태, 이점, 특징 및 목적들은 이하의 첨부된 청구항들과 함께 추구된 예시적인 실시예들의 상세한 설명 및 도면으로부터 명백해질 것이다.
본 발명의 특징들은 첨부된 청구항들에 의해 정의되는 본 발명의 범위를 벗어나지 않고 다양한 조합으로 결합될 수 있다는 것이 이해될 것이다.
상기 설명 및 이하의 구체적인 실시예들에 대한 상세한 설명은 첨부된 도면들네 따라 보다 잘 이해될 수 있다. 본 발명을 예시하기 위한 목적으로, 본 발명의 예시적인 구성이 도면에 도시되어 있다. 그러나, 본 발명은 본 명세서에 개시된 특정 방법들 및 도구들에 한정되지 않는다. 더욱이, 당업자는 도면이 스케일에 따른 것이 아니라는 것을 이해할 것이다. 가능한 경우, 동일한 요소는 동일한 번호로 표시된다.
본 발명의 실시예들은 다음의 도면을 참조하여, 단지 예시적으로 기술될 것이다:
도 1(종래 기술)은, 컴퓨팅 장치 상에서 2개의 운영 체제를 실행하는 종래의 방식을 나타내는 블록도이다;
도 2a는, 컴퓨팅 장치를 예시한 블록도이고, 도 2b는, 본 발명의 일 실시예에 따른 제1 커널 드라이버의 기능과 제2 커널 드라이버의 기능의 병합을 도시한 블록도이다
도 3은, 본 발명의 일 실시예에 따른 동일한 컴퓨팅 장치 상에서 다수의 운영 체제들의 동시 실행을 용이하게 하기 위한 방법의 단계들을 나타낸 흐름도이다.
첨부된 도면에서, 밑줄 친 번호는 밑줄 친 번호가 위치하는 항목 또는 밑줄 친 번호가 인접한 항목을 나타내기 위해 사용된다. 밑줄이 쳐지지 않은 숫자는, 밑줄이 쳐지지 않은 숫자와 항목을 연결하는 선으로 식별되는 항목과 관련이 있다. 숫자가 밑줄이 없고 관련된 화살표가 있는 경우, 밑줄이 없는 숫자는 화살표가 가리키는 일반 항목을 식별하도록 사용된다.
이하의 상세한 설명은, 본 발명의 실시예들 및 그들이 구현될 수 있는 방법들을 예시한다. 본 발명을 수행하는 일부 모드가 개시되었지만, 당업자는 본 발명을 수행하거나 실행하기 위한 다른 실시예들도 가능하다는 것을 인식할 것이다.
제1 양태에서, 본 발명의 실시예는,
컴퓨터 실행가능한 명령이 저장된 메모리; 및 메모리에 결합된 프로세를 포함하고, 프로세서에서 실행될 때, 컴퓨터 실행가능한 명령은, 프로세서가,
- 각각 제1 사용자 공간 및 제2 사용자 공간을 갖고, 그들 사이에 공유되는 공통 커널을 갖는, 제1 운영 체제 및 제2 운영 체제를 실행하도록 하고;
- 각각 제1 사용자 공간 및 제2 사용자 공간에 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버를 실행하도록 하고;
- 공통 커널에서 공통 커널 드라이버가,
- 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나가 공통 커널 드라이버에 소정 함수 호출을 했는지 결정하고
- 공통 커널 드라이버에 소정 함수 호출을 수행한 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나의 결정에 기초하여 소정 함수 호출을 해당 하드웨어 특정 호출로 변환하고, 그에 의해 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나가 컴퓨팅 장치에 액세스하도록, 실행하도록 하고,
상기 공통 커널 드라이버는 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버가 컴퓨터 하드웨어에 동시에 액세스할 수 있도록 하는, 컴퓨팅 장치를 제공한다.
제2 양태에서, 본 발명의 실시예는,
컴퓨팅 장치에서 각각, 제1 사용자 공간 및 제2 사용자 공간을 각각 갖는 제1 운영 체제 및 제2 운영 체제를 실행하는 단계로, 상기 제1 운영 체제 및 상기 제2 운영 체제는 이들 사이에 공유되는 공통 커널을 갖는, 단계;
- 제1 사용자 공간 및 제2 사용자 공간에서 각각, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버를 실행하는 단계; 및
- 공통 커널에서 공통 커널 드라이버를 실행하여,
- 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나가 이 공통 커널 드라이버에 대해 소정 함수 호출을 행했는지 결정하고;
- 공통 커널 드라이버에 대해 소정 함수 호출을 수행한 제1 사용자 공 간 드라이버와 제2 사용자 공간 드라이버 중 하나의 결정에 기초하여, 소정 함수 호출을 대응하는 하드웨어 특정 호출로 변환하고, 그에 의해 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나가 컴퓨팅 장치의 하드웨어에 액세스할 수 있도록 하는, 단계를 포함하고,
상기 공통 커널 드라이버는, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버가 컴퓨터 하드웨어에 동시에 액세스할 수 있도록 하는, 방법을 제공한다.
제1 사용자 공간 드라이버에 의한 함수 호출과 제2 사용자 공간 드라이버에 의한 함수 호출을 결정하고 변환함으로써, 상기 공통 커널 드라이버는 사용자 공간 드라이버와 제2 사용자 공간 드라이버에 대해 컴퓨터 하드웨어에 대한 동시 액세스를 제공할 수 있도록 한다. 이러한 방식으로, 공통 커널 드라이버는 컴퓨팅 장치가 다수의 운영 체제들(예룰 들어, 제1 운영 체제 및 제2 운영 체제)를 동시에(즉, 함께) 실행할 수 있도록 한다. 본 발명의 실시예들에 따르면, 사용자는 제1 운영 체제와 제2 운영 체제 사이를 즉시 전환할 수 있다. 더욱이, 공통 커널 드라이버는 제1 운영 체제와 제2 운영 체제에 큰 성능 저하 없이 컴퓨터 하드웨어에 대한 액세스을 제공한다. 게다가, 공통 커널 드라이버는 컴퓨터 하드웨어의 가상화를 요구하지 않고, 기존의 컴퓨터 하드웨어 드라이버 위에 래퍼를 사용할 필요 없이 컴퓨터 하드웨어에 대한 액세스을 제공한다.
더욱이, 공통 커널 드라이버는, 소정 운영 체제의 소정 기능에 대해 하드웨어 가속 액세스를 제공하여, 컴퓨터 하드웨어 상에서 소정 기능을 구현한다. 소정 기능은 하드웨어 특정 기능일 수 있다. 이러한 하드웨어 특정 기능의 예로는, 그래픽 처리, 오디오 처리, 통신 촉진, 입력 획득, 출력 제공 등이 있으나, 이에 한정되는 것은 아니다. 이러한 하드웨어 가속 액세스를 제공하는 것은 지연 시간을 줄이고 컴퓨팅 장치의 성능을 향상시킨다.
일부 구현예에서, 제1 운영 체제 및 제2 운영 체제는 기존의 운영 체제이다. 이러한 구현들에서, 공통 커널 드라이버는 제1 커널 드라이버의 기능과 제2 커널 드라이버의 기능을 병합함으로써 생성되며, 제1 커널 드라이버 및 제2 커널 드라이버는 각각 제1 운영 체제 및 제2 운영 체제에서 사용되는 것으로 알려진 기존의 커널 드라이버들이다. 요컨대, 제1 커널 드라이버 및 제2 커널 드라이버는, 본 발명에 의해 제공되는 해법이 아닌, 종래의 제1 운영 체제 및 제2 운영 체제에서 사용되는 것으로 알려진 기존의 커널 드라이버들인 것이다. 제1 커널 드라이버와 제2 커널 드라이버는 상이한 드라이버 애플리케이션 인터페이스(API)들을 갖는다. 따라서, 공통 커널 드라이버는, 제1 커널 드라이버와 제2 커널 드라이버의 다른 드라이버 API와 호환되는 드라이버 API로서 구현된다.
본 발명 전반에 걸쳐, 용어 "공통 커널(common kernel)"은 제1 운영 체제와 제2 운영 체제 사이에 공유되는 커널을 지칭하고, 용어 "공통 커널 드라이버"는 공통 커널 상에서 실행되고 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 사이에 공유되어 하드웨어 액세스 기능을 제공하도록 하는 커널 드라이버를 지칭한다.
본 발명의 실시예들에 따르면, 컴퓨팅 장치의 시스템 메모리는 제1 사용자 공간, 제2 사용자 공간 및 공통 커널 사이에 분할된다. 본 발명에 의해 제공된 현재의 해결책이 없으면, 시스템 메모리는 제1 운영 체제와 제2 운영 체제 사이에서 분할되어야 할 것이고, 제1 사용자 공간 및 제2 사용자 공간과 별도로, 시스템 메모리의 다른 부분들이 제1 운영 체제 및 제2 운영 체제의 서로 다른 커널들에 이용되어야 할 것이다. .
제1 커널 드라이버의 기능과 제2 커널 드라이버의 기능은, 공통 커널 드라이버가 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 모두와 호환되는 방식으로 효과적으로 병합된다. 선택적으로, 제1 커널 드라이버의 기능은, 제1 커널 드라이버와 제2 커널 드라이버에서 행해지는 함수 호출에 사용되는 것으로 알려진 호출 규약(calling convention) 레벨에서 제2 커널 드라이버의 기능과 병합된다. "호출 규약 레벨에서 기능을 병합"함으로써, 이는, 공통 커널 드라이버가, 제1 사용자 공간 드라이버에 행해진 함수 호출과 제2 사용자 공간 드라이버에 의해 행해진 함수 호출 사이를 이해하고 구별하여 그에 따라 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버를 제공하도록 구성된다는 것을 의미한다.
하드웨어 액세스를 제공하기 위해 변환되어야 하는 함수 호출과는 별도로, 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버는 컴퓨터 하드웨어에 즉각적인 영향을 미치지 않는 커널 드라이버에 다른 함수 호출을 할 수 있다는 것이 이해될 것이다. 들어, 다른 함수 호출들은, 공통 커널에서 파라미터들을 설정하기 위해 행해질 수 있으며, 이는 다음, 공통 커널 드라이버에 대해 행해지는 추가 함수 호출에 사용될 수 있다.
또한, 선택적으로, 공통 커널 드라이버는 제2 커널 드라이버의 기능을 포함하도록 제1 커널 드라이버를 변경함으로써 생성된다. 다른 커널 드라이버의 기능을 포함하도록 기존 커널 드라이버를 변경하는 것은, 처음부터 공통 커널 드라이버를 생성하는 것에 비해, 공통 커널 드라이버를 생성하기 위한 보다 쉬운 방법이라는 것이 이해될 것이다.
본 발명의 실시예들에 따르면, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버는 변경될 필요가 없다. 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버는, 본 해법이 없이도, 종래에 제1 커널 드라이버 및 제2 커널 드라이버와 유사한 방식으로 공통 커널 드라이버에 대해 함수 호출을 수행한다.
제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버는 일반적으로 이진형태로 제공되며, 변경될 수 없다는 것이 이해될 것이다. 그러나, 소정 커널 드라이버는, 소정 커널 드라이버의 소프트웨어 코드에 액세스할 수 있는 개발자에 의해 변경될 수 있다. 오픈 소스 운영 체제의 경우, 커널 드라이버의 소프트웨어 코드를 자유롭게 사용할 수 있으므로 누구나 변경할 수 있다. 반면에, 클로즈 소스 운영 체제의 경우, 커널 드라이버의 소프트웨어 코드를 자유롭게 사용할 수 없기 때문에 소프트웨어 코드에 액세스하고 변경할 권한이 있는 소프트웨어 개발자만 변경할 수 있다.
본 발명 전반에 걸쳐, 용어 "컴퓨팅 장치"는 데이터를 처리할 수 있는 전자 장치를 의미한다. 컴퓨팅 장치는 휴대용일 수도 있고 아닐 수도 있다. 컴퓨팅 장치의 예로는 데스크톱 컴퓨터, 노트북 컴퓨터, 태블릿 컴퓨터, 패블릿 컴퓨터, 개인용 디지털 보조기, 스마트폰 및 스마트 디바이스( 들어, 스마트 워치, 스마트 락, 스마트 텔레비전)를 들 수 있으나 이에 한정되는 것은 아니다.
컴퓨팅 장치는 제1 운영 체제 및 제2 운영 체제를 저장하는 적어도 하나의 저장 매체를 포함할 수 있다. 적어도 하나의 저장 매체는 비휘발성 저장 매체일 수 있다. 선택적으로, 적어도 하나의 저장 매체는 컴퓨팅 장치의 하드 디스크 드라이브로 구현된다. 일부 실시예에서, 하드 디스크 드라이브는 컴퓨팅 장치의 내부 구성요소로서 배치되는 반면, 다른 실시예에서 하드 디스크 드라이브는 컴퓨팅 장치의 외부 구성요소로서 배치된다.
본 발명 전반에 걸쳐, 용어 "컴퓨터 하드웨어"는 컴퓨팅 장치의 하드웨어 구성요소들을 의미한다. 컴퓨터 하드웨어의 예로는, 그래픽 카드, 사운드 카드, 스피커, 모니터, 입력 장치(예룰 들어, 마우스, 키보드, 스타일러스 등), 컴퓨터 데이터 스토리지(예룰 들어, 디스크 드라이브, USB(Universal Serial Bus) 드라이브, 메모리 카드 등), 파워 서플라이 유닛, 및 프린터 중 적어도 하나를 들 수 있다.
본 발명 전반에 걸쳐, "운영 체제"라는 용어는 사용자가 컴퓨팅 장치 상에서 애플리케이션을 실행할 수 있도록 하는 소프트웨어를 의미한다. 소정의 운영 체제는, 파일 관리, 장치 관리, 메모리 관리, 프로세스 관리 등의 작업을 수행함으로써 컴퓨팅 장치의 하드웨어, 소프트웨어 및 애플리케이션을 관리한다. 소정 운영 체제는 사용자와 컴퓨터 하드웨어 사이의 인터페이스 역할을 한다.
본 발명의 실시예들에 따르면, 제1 운영 체제 및 제2 운영 체제는 완전한 POSIX 준수 또는 대부분 POSIX로 될 수 있으며, 상기 POSIX는 Portable Operating System Interface(POSIX)를 의미한다, 이러한 운영 체제의 예로는, Microsoft Windows® 운영 체제, Apple Macintosh® 운영 체제(macOS), Linux® 운영 체제, Linux 기반 운영 체제, Android® 운영 체제 및 Apple iOS® 운영 체제가 있다.
본 발명 전반에 걸쳐, "제1 운영 체제" 및 "제2 운영 체제"라는 용어는, 컴퓨팅 장치 상에서 실행되는 상이한 운영 체제들을 구별하기 위해 본 명세서에서 사용된다. 일부 구현예에서, 다른 운영 체제는 애플리케이션 이진 인터페이스(ABI)와 호환되지 않는다. 다른 구현들에서, 다른 운영 체제들은 특정 운영 체제의 다른 다운스트림 버전들을 포함할 수 있다. 들어, 제1 운영 체제는 통상적으로 커널 드라이버 'A'가 실행되는 제1 다운스트림 Linux® 커널을 가질 수 있는 반면, 제2 운영 체제는 커널 드라이버 'B'가 실행되는 제2 다운스트림 Linux® 커널을 가질 수 있다. 이 경우, 공통 커널은 제1 다운스트림 Linux® 커널 또는 제2 다운스트림 Linux® 커널로 구현될 수 있으며, 공통 커널 드라이버는 커널 드라이버 'A'와 커널 드라이버 'B'를 병합하여 생성된다.
다른 예로서, 제1 운영 체제는 Linux® 기반 운영 체제( 들어, Sailfish 운영 체제)일 수 있고, 제2 운영 체제는 Android® 운영 체제일 수 있다. 이러한 예에서, 공통 커널은 동일한 컴퓨팅 장치에서 안드로이드 애플리케이션과 세일피시(Sailfish) 애플리케이션을 모두 사용할 수 있도록 한다. 따라서, 컴퓨팅 장치는 여러 운영 체제에서 소프트웨어 응용 프로그램의 프로토타이핑 및 시연을 위해 유익하게 사용될 수 있다.
일 실시예에 따르면, 컴퓨터 실행 명령들은 실행될 때, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버가 동일한 경로를 통해 공통 커널 드라이버에 액세스할 때, 제1 파라미터의 속성들과 제2 파라미터의 속성들의 차이에 기초하여, 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나가 공통 커널 드라이버에 소정 함수 호출을 수행했는지를 결정하기 위해 프로세서가 공통 커널 드라이버의 핸들러를 사용하도록 하고, 상기 제1 파라미터 및 제2 파라미터는, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버에 의해, 각각 공통 커널 드라이버로 전달된다.
상기 "핸들러"라는 용어는, 특정 작업에 특화된 소프트웨어 루틴을 의미한다. 공통 커널의 핸들러는, 들어, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버로부터 각각 함수 호출을 수신할 때, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버에 의해 전달되는 파라미터를 선택하는 이벤트 핸들러일 수 있다. 이러한 함수 호출은, 제1 사용자 공간과 제2 사용자 공간에서 실행되는 애플리케이션이 공통 커널 드라이버로부터 서비스를 요청하는 인터페이스로서 작용한다.
제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버가 동일한 경로를 통해 공통 커널 드라이버에 액세스할 때, 함수 호출은 일반적으로 장치 관리 서비스에 관련된다. 이러한 디바이스 관리 서비스는, 들어, 하드웨어 자원의 요청, 하드웨어 자원의 특정한 방식으로의 운용 등의 하드웨어 관리 서비스를 포함한다. 들어, 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버는 모두 소정 사용자 공간 경로(/dev/driver path)를 통해 공통 커널 드라이버에 액세스한다.
제1 사용자 공간 드라이버로부터의 함수 호출과 제2 사용자 공간 드라이버로부터의 함수 호출은 핸들러에 의해 쉽게 구별될 수 있는데, 제1 사용자 공간 드라이버에 의해 공통 커널 드라이버에 전달된 제1 파라미터의 속성은, 종종, 전달된 제2 파라미터의 속성과 다르기 때문이다 제2 사용자 공간 드라이버에서 공통 커널 드라이버로 이동한다.
선택적으로, 제1 파라미터의 속성과 제2 파라미터의 속성은 데이터 크기, 데이터 유형, 데이터 순서 중 적어도 하나를 포함한다.
소정 파라미터의 데이터 크기는, 들어 4비트, 8비트, 16비트, 32비트, 64비트 등이 될 수 있다. 들어, 제1 파라미터의 데이터 크기는 16비트인 반면, 제2 파라미터의 데이터 크기는 32비트일 수 있다. 따라서, 제1 파라미터의 데이터 크기와 제2 파라미터의 데이터 크기의 차이는 핸들러가 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 어느 하나가 소정 함수 호출을 했는지를 결정할 수 있도록 한다.
마찬가지로, 데이터 유형의 차이는 핸들러가 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 어느 하나가 소정 함수 호출을 했는지를 결정할 수 있도록 한다. 소정 파라미터의 데이터 유형은, 기본 데이터 유형 또는 복합 데이터 유형일 수 있다. 기본 데이터 유형의 예로는, 정수 데이터 유형, 플로트 데이터 유형 및 문자 데이터 유형을 들 수 있으나, 이에 한정되는 것은 아니다. 복합 데이터유형의 예로는, 포인터 데이터형, 어레이 데이터형, 구조 데이터형, 유니온 데이터형, 함수 데이터형 등이 있으나, 이에 한정되는 것은 아니다.
또한, 제1 사용자 공간 드라이버에 의해 제1 파라미터가 전달되는 순서는 제2 사용자 공간 드라이버에 의해 제2 파라미터가 전달되는 순서와 다를 수 있다. 따라서, 데이터 순서의 차이는 핸들러가 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 어느 하나가 소정 함수 호출을 했는지를 결정할 수 있도록 한다. 들어, 제1 사용자 공간 드라이버는, 파라미터 A와 B를 공통 커널 드라이버 A, B 순서로 전달할 수 있다. 그러나, 제2 사용자 공간 드라이버는 동일한 파라미터 A와 B를 공통 커널 드라이버에 전달할 수 있지만, 순서는 B, A이다. 이러한 경우, 상기 제1 사용자 공간 드라이버에 의해 전달된 파라미터들의 데이터 순서는 상기 제2 사용자 공간 드라이버에 의해 전달된 파라미터들의 데이터 순서와 상이하다. 이 경우, 시스템 스택에서 파라미터 A와 B가 팝업되는 방식은 핸들러에 의한 파라미터의 선택에 달려 있다. 핸들러가 제1 사용자 공간 드라이버에 의해 전달된 파라미터 A와 B를 선택하면, 해당 파라미터는 시스템 스택에서 A, B 순서로 팝업된다. 달라, 핸들러가 제2 사용자 공간 드라이버에 의해 전달된 파라미터 A와 B를 선택하면, 해당 파라미터는 시스템 스택에서 B, A 순서로 팝업된다.
다른 실시예에 따르면, 컴퓨터 실행 가능한 명령들은, 실행될 때, 프로세서는, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버가 각각 제1 경로 및 제2 경로를 통해 공통 커널 드라이버에 액세스할 때, 소정 경로에 제공된 적어도 하나의 심볼릭 링크 또는 바인드 마운트에 기초하여, 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 어느 하나가 공통 커널 드라이버에 대해 소정 함수 호출을 수행했는지를 결정하기 위해 공통 커널 드라이버의 핸들러를 이용하도록 한다.
제1 경로가 제2 경로와 다를 때, 소정의 심볼릭 링크 또는 소정 경로의 소정 바인드 마운트는, 핸들러가 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 어느 하나가 소정 함수 호출을 행했는지를 결정할 수 있도록 한다. 즉, 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버는, 서로 다른 경로를 통해 공통 커널 드라이버에 액세스하도록 등록된다. 특히, 적어도 하나의 심볼릭 링크 또는 바인드 마운트는 다음 중 하나를 나타낸다: 제1 사용자 공간의 제1 사용자 공간 드라이버로부터 공통 커널의 공통 커널 드라이버로의 링크, 제2 사용자 공간의 제2 사용자 공간 드라이버로부터 공통 커널의 공통 커널 드라이버로의 링크. 요컨대, 적어도 하나의 심볼릭 링크 또는 바인드 마운트는 서로 다른 사용자 공간(예룰 들어, 제1 사용자 공간 및 제2 사용자 공간)을 공통 커널과 연결하기 위해 사용된다.
일례로서, 1차 디바이스 노드 및 2차 디바이스 노드는 각각 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버에 노출된다. 제1 사용자 공간 드라이버가 1차 디바이스 노드를 사용하는 반면, 제2 사용자 공간 드라이버는 2차 디바이스 노드를 심볼릭 또는 바인드 마운트함으로써 2차 디바이스 노드를 사용한다.
다른 예로서, 공통 커널 드라이버는 두 개의 서로 다른 인터페이스, 들어 /dev/driver 및 /dev/driver_u2를 각각 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버에 제공한다. 제1 사용자 공간 드라이버는, 처음 의도한 대로 공통 커널 드라이버로부터 기본 인터페이스 /dev/driver에 액세스하는 반면, 제2 사용자 페이스 드라이버는 바인드 마운트 또는 심볼릭 링크를 통해 보조 인터페이스 /dev/driver_u2에 액세스하므로, 제2 사용자 공간 드라이버에 대한 변경이 필요하지 않다. 그 다음, 공통 커널 드라이버는 두 개의 인터페이스(즉, /dev/driver 또는 /dev/driver_u2) 중 어느 하나가 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나에 의해 호출되는지 확인함으로써, 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나가 공통 커널 드라이버에 대해 소정 함수 호출을 수행했는지를 결정한다.
다른 실시예에 따르면, 컴퓨터 실행 가능한 명령들은, 실행될 때, 프로세서가, 각각, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버에 의해 사용되는 제1 드라이버 구성 및 제2 드라이버 구성에 기초하여, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버의 하나가 공통 커널 드라이버에 대해 소정 함수 호출을 수행했는지를 결정하기 위해 공통 커널 드라이버의 핸들러를 사용하도록 한다. 이와 같이, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버는, 그들을 변경함이 없이, 각각, 제1 드라이버 구성 및 제2 드라이버 구성을 통해 디바이스 노드들의 선택을 지원한다.
본 발명은 또한 전술한 방법에 관한 것이다. 전술한 제1 양태와 관련하여, 위에 개시된 다양한 실시예들 및 변형예들은 상기 방법에 필요한 부분만 약간 수정하여 적용된다.
선택적으로, 상기 방법에서, 제1 운영 체제 및 제2 운영 체제는 기존의 운영 체제이고, 공통 커널 드라이버는, 제1 커널 드라이버의 기능과 제2 커널 드라이버의 기능을 병합함으로써 생성되며, 상기 제1 커널 드라이버의 기능과 제2 커널 드라이버는, 각각 달리 제1 운영 체제와 제2 운영 체제에서 사용되는 것으로 알려져 있는 기존의 커널 드라이버들이다.
선택적으로, 상기 방법에서, 공통 커널 드라이버는 제2 커널 드라이버의 기능을 포함하도록 제1 커널 드라이버를 변경함으로써 생성된다.
또한, 선택적으로, 제1 커널 드라이버의 기능은 제1 커널 드라이버 및 제2 커널 드라이버에서 행해진 함수 호출에 사용되는 것으로 알려진 호출 규약의 레벨로 제2 커널 드라이버의 기능과 병합된다.
일 실시예에 따르면, 상기 방법은, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버가 동일한 경로를 통해 공통 커널 드라이버에 액세스할 때, 제1 파라미터의 속성 및 제2 파라미터의 속성의 차이에 기초하여, 상기 제1 사용자 공간 드라이버 및 상기 제2 사용자 공간 드라이버 중 어느 하나가 상기 공통 커널 드라이버에 대해 상기 소정의 함수 호출을 수행했는지를 결정하기 위해 상기 공통 커널 드라이버의 핸들러를 사용하는 것을 더 포함하고, 상기 제1 파라미터 및 제2 파라미터는 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버에 의해, 각각 공통 커널 드라이버로 전달된다.
선택적으로, 이와 관련하여, 제1 파라미터의 속성 및 제2 파라미터의 속성은 데이터 크기, 데이터 유형, 데이터 순서 중 적어도 하나를 포함한다.
다른 실시예에 따르면, 상기 방법은, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버가 각각 제1 경로 및 제2 경로를 통해 공통 커널 드라이버에 액세스할 때, 소정 경로에 제공된 적어도 하나의 심볼릭 링크 및 바인드 마운트에 기초하여, 상기 제1 사용자 공간 드라이버 및 상기 제2 사용자 공간 드라이버 중 어느 하나가 상기 공통 커널 드라이버에 대해 함수 호출을 수행했는지를 결정하기 위해 상기 공통 커널 드라이버의 핸들러를 사용하는 것을 더 포함한다.
또 다른 실시예에 따르면, 상기 방법은, 각각 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버에 의해 사용되는 제1 드라이버 구성 및 제2 드라이버 구성의 차에 기초하여, 상기 제1 사용자 공간 드라이버와 상기 제2 사용자 공간 드라이버 중 어느 하나가 상기 공통 커널 드라이버에 대해 함수 호출을 수행했는지를 결정하기 위해 상기 공통 커널 드라이버의 핸들러를 사용하는 것을 더 포함한다.
실시예들
실시예 1. 이하에, 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버가 동일한 경로를 통해 공통 커널 드라이버에 액세스하는 실시예에 따른 예시적인 프로그램(C 프로그래밍 언어)이 제공된다.
Figure pct00001
Figure pct00002
Figure pct00003
실시예 2. 이하에, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버가, 각각 제1 경로 및 제2 경로를 통해 공통 커널 드라이버에 액세스하는 실시예에 따른 예시적인 프로그램(C 프로그래밍 언어)이 제공된다.
Figure pct00004
Figure pct00005
Figure pct00006
도 2a를 참조하면, 본 발명의 일 실시예에 따른 컴퓨팅 장치(202)를 나타내는 블록도가 도시되어 있다. 제1 운영 체제(204)와 제2 운영 체제(206)는 컴퓨팅 장치(202)의 프로세서에 의해 실행된다. 제1 운영 체제(204)는 제1 사용자 공간 드라이버(210)가 실행되는 제1 사용자 공간(208)을 갖는다. 제2 운영 체제(206)는 제2 사용자 공간 드라이버(214)가 실행되는 제2 사용자 공간(212)를 가지고 있다. 공통 커널 드라이버(226)은 공통 커널(224)에서,
- 제1 사용자 공간 드라이버(210) 및 제2 사용자 공간 드라이버(214) 중 하나가 공통 커널 드라이버(226)에 소정 함수 호출을 했는지를 결정하고;
- 공통 커널 드라이버(210)에 대해 소정 함수 호출을 수행한 제1 사용자 공간 드라이버(210) 및 제2 사용자 공간 드라이버(214) 중 하나의 결정에 기초하여, 소정 함수 호출을 해당 하드웨어 특정 호출로 변환하고, 그에 의해 제1 사용자 공간 드라이버(210) 및 제2 사용자 공간 드라이버(214) 중 하나가 컴퓨팅 장치(202)의 컴퓨터 하드웨어(228)에 액세스할 수 있도록, 실행된다.
이러한 방식으로, 공통 커널 드라이버(226)는 제1 사용자 공간 드라이버(210) 및 제2 사용자 공간 드라이버(214)가 컴퓨터 하드웨어(228)에 동시에 액세스할 수 있도록 한다.
도 2b를 참조하면, 제1 운영 체제(204) 및 제2 운영 체제(206)가 기존 운영 체제인 구현예가 도시되어 있다. 공통 커널 드라이버(226)는 제1 커널 드라이버(218)의 기능과 제2 커널 드라이버(222)의 기능을 병합함으로써 생성되는데, 이들은 달리 제1 운영 체제(204) 및 제2 운영 체제(206)에서 각각 사용되는 것으로 알려진 기존의 커널 드라이버들이다. 공통 커널(224)은, 각각 제1 운영 체제(204)와 제2 운영 체제(206)에서 사용되는 것으로 알려진 기존 커널인 제1 커널(216)과 제2 커널(220) 중 하나일 수 있다.
도 3을 참조하면, 본 발명의 일 실시예에 따른, 동일한 컴퓨팅 장치 상에서 다수의 운영 체제들의 동시 실행을 용이하게 하기 위한 방법의 단계들을 나타낸 흐름도가 도시되어 있다. 단계 302에서, 제1 사용자 공간 및 제2 사용자 공간을 각각 갖는 제1 운영 체제 및 제2 운영 체제가 컴퓨팅 장치 상에서 실행되고, 제1 운영 체제 및 제2 운영 체제는 이들 사이에 공유되는 공통 커널을 갖는다. 단계 304에서, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버는 각각 제1 사용자 공간 및 제2 사용자 공간 상에서 실행된다. 단계 306에서, 공통 커널 드라이버가 공통 커널에서 실행된다. 상기 단계 306에서, 공통 커널 드라이버에 의해 소정 함수 호출이 수신되면, 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 어느 하나가 소정 함수 호출을 했는지가 결정된다. 이후, 공통 커널 드라이버에 대해 소정 함수 호출을 행한 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나의 결정에 기초하여, 소정 함수 호출은 대응하는 하드웨어 특정 호출로 변환되고, 이에 의해 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나가 컴퓨터 장치의 컴퓨터 하드웨어에 액세스할 수 있도록 된다. 이러한 방식으로, 공통 커널 드라이버는 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버가 컴퓨터 하드웨어에 동시에 액세스할 수 있도록 한다.
상기 단계들(302, 304, 306)은 예시적인 것일 뿐, 본 명세서의 청구범위를 벗어나지 않고, 하나 이상의 단계가 추가되거나, 하나 이상의 단계가 제거되거나, 하나 이상의 단계가 서로 다른 순서로 제공되는 경우, 다른 대안예들도 제공될 수 있다.
전술한 본 발명의 실시예들에 대한 변경은 첨부된 청구항들에 의해 정의되는 본 발명의 범위를 벗어나지 않고 가능하다. 본 발명을 설명하고 주장하기 위해 사용되는 "포함", "구비", "사용", "갖다", "있다"와 같은 표현은 비배타적인 방식으로 해석하기 위한 것으로, 즉 명시적으로 설명되지 않은 항목, 구성 요소 또는 요소들이 존재하도록 하는 것이다. 단수에 대한 참조는 또한 복수에 관련된 것으로 해석된다.

Claims (16)

  1. 컴퓨팅 장치(202)로서,
    컴퓨터 실행가능한 명령이 저장된 메모리; 및 메모리에 결합된 프로세를 포함하고, 프로세서에서 실행될 때, 컴퓨터 실행가능한 명령은, 프로세서가,
    - 각각 제1 사용자 공간(208) 및 제2 사용자 공간(212)을 갖고, 그들 사이에 공유되는 공통 커널(224)을 갖는, 제1 운영 체제(1800) 및 제2 운영 체제(1800)를 실행하도록 하고;
    - 각각 제1 사용자 공간 및 제2 사용자 공간에 제1 사용자 공간 드라이버(210) 및 제2 사용자 공간 드라이버(214)를 실행하도록 하고;
    - 공통 커널에서 공통 커널 드라이버(226)가,
    - 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 어느 하나가 공통 커널 드라이버에 소정 함수 호출을 했는지를 결정하고
    - 공통 커널 드라이버에 소정 함수 호출을 수행한 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나의 결정에 기초하여 소정 함수 호출을 해당 하드웨어 특정 호출로 변환하고, 그에 의해 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나가 컴퓨팅 장치에 액세스하도록, 실행하도록 하고,
    상기 공통 커널 드라이버는 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버가 컴퓨터 하드웨어에 동시에 액세스할 수 있도록 하는, 컴퓨팅 장치(202).
  2. 제1항에 있어서, 상기 제1 운영 체제(204) 및 상기 제2 운영 체제(206)는, 기존의 운영 체제로서, 상기 공통 커널 드라이버(226)는 제1 커널 드라이버(218)의 기능과 제2 커널 드라이버(222)의 기능이 병합되어 생성되고, 상기 제2 커널 드라이버는 제1 운영 체제와 제2 운영 체제에서 각각 사용되는 것으로 알려진 기존의 커널 드라이버인, 컴퓨팅 장치(202).
  3. 제2항에 있어서, 상기 공통 커널 드라이버(226)는 상기 제2 커널 드라이버(222)의 기능을 포함하도록 상기 제1 커널 드라이버(218)를 변경함으로써 생성되는, 컴퓨팅 장치(202).
  4. 제2항 또는 제3항에 있어서, 상기 제1 커널 드라이버(218)의 기능은 상기 제1 커널 드라이버 및 상기 제2 커널 드라이버에서 행해지는 함수 호출에 사용되는 것으로 알려진 호출 규약의 레벨로 상기 제2 커널 드라이버(222)의 기능과 병합되는, 컴퓨팅 장치(202).
  5. 앞선 청구항들 중 어느 한 항에 있어서, 상기 컴퓨터 실행 가능한 명령들이, 실행될 때, 상기 프로세서는, 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버가 동일한 경로를 통해 공통 커널 드라이버에 액세스할 때, 제1 파라미터의 속성 및 제2 파라미터의 속성에 기초하여, 상기 제1 사용자 공간 드라이버(210) 및 상기 제2 사용자 공간 드라이버(214) 중 어느 하나가 상기 공통 커널 드라이브에 대해 상기 함수 호출을 수행했는지를 결정하기 위해 상기 공통 커널 드라이버(226)의 핸들러를 사용하도록 하고, 상기 제1 파라미터 및 제2 파라미터는 상기 공통 커널 드라이브에 대해, 각각, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버에 의해 패스되는, 컴퓨팅 장치(202).
  6. 제5항에 있어서, 상기 제1 파라미터의 속성 및 상기 제2 파라미터의 속성은, 데이터 크기, 데이터 형태, 데이터 순서 중 적어도 하나를 포함하는, 컴퓨팅 장치.
  7. 앞선 청구항들 중 어느 한 항에 있어서, 상기 컴퓨터 실행 가능한 명령들이 실행될 때, 상기 프로세서는, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버가 각각 제1 경로 및 제2 경로를 통해 공통 커널 드라이버에 액세스할 때, 소정 경로에 제공된 적어도 하나의 심볼릭 링크 또는 바인드 마운트에 기초하여, 상기 제1 사용자 공간 드라이버(210) 및 상기 제2 사용자 공간 드라이버(214) 중 어느 하나가 상기 공통 커널 드라이브에 대해 소정의 함수 호출을 수행했는지를 결정하기 위해 상기 공통 커널 드라이버(226)의 핸들러를 사용하도록 하는, 컴퓨팅 장치(202).
  8. 앞선 청구항들 중 어느 한 항에 있어서, 상기 컴퓨터 실행 가능한 명령들이, 실행될 때, 상기 프로세서는, 각각 상기 제1 사용자 공간 드라이버 및 상기 제2 사용자 공간 드라이버에 의해 사용되는 제1 드라이버 구성과 제2 드라이버 구성의 차이에 기초하여, 상기 제1 사용자 공간 드라이버(210) 및 상기 제2 사용자 공간 드라이버(214) 중 어느 하나가 상기 공통 커널 드라이브에 대해 함수 호출을 수행했는지를 결정하기 위해 상기 공통 커널 드라이버(226)의 핸들러를 사용하도록 하는 것을 특징으로 하는, 컴퓨팅 장치(202).
  9. - 컴퓨팅 장치(202)에서 각각, 제1 사용자 공간(202) 및 제2 사용자 공간(222)을 각각 갖는 제1 운영 체제(222) 및 제2 운영 체제(222)를 실행하는 단계로, 상기 제1 운영 체제 및 상기 제2 운영 체제는 이들 사이에 공유되는 공통 커널(224)을 갖는, 단계;
    - 제1 사용자 공간 및 제2 사용자 공간에서 각각, 제1 사용자 공간 드라이버(210) 및 제2 사용자 공간 드라이버(214)를 실행하는 단계; 및
    - 공통 커널에서 공통 커널 드라이버(226)를 실행하여,
    제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 어느 것이 공통 커널 드라이버에 대해 소정 함수 호출을 행했는지를 결정하고;
    공통 커널 드라이버에 대해 소정 함수 호출을 수행한 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나의 결정에 기초하여, 소정 함수 호출을 대응하는 하드웨어 특정 호출로 변환하고, 그에 의해 제1 사용자 공간 드라이버와 제2 사용자 공간 드라이버 중 하나가 컴퓨팅 장치의 하드웨어(228)에 액세스할 수 있도록 하는, 단계를 포함하고,
    상기 공통 커널 드라이버는, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버가 컴퓨터 하드웨어에 동시에 액세스할 수 있도록 하는, 방법.
  10. 제9항에 있어서, 상기 제1 운영 체제(204) 및 상기 제2 운영 체제(206)는 기존 운영 체제이고, 상기 공통 커널 드라이버(226)는 제1 커널 드라이버(218)의 기능과 상기 제2 커널 드라이버(222)의 기능을 병합함으로써 생성되고, 상기 제1 커널 드라이버 및 제2 커널 드라이버는, 각각 제1 운영 체제와 제2 운영 체제에 사용되는 것으로 알려진 기존 커널 드라이버인, 방법.
  11. 제10항에 있어서, 상기 공통 커널 드라이버(226)는 상기 제2 커널 드라이버(222)의 기능을 포함하도록 상기 제1 커널 드라이버(218)를 변경함으로써 생성되는, 방법.
  12. 제10항 또는 제11항에 있어서, 상기 제1 커널 드라이버(218)의 기능은, 상기 제1 커널 드라이버 및 상기 제2 커널 드라이버에서 행해지는 함수 호출에 사용되는 것으로 알려진 호출 규약 레벨로 상기 제2 커널 드라이버(222)의 기능과 병합되는, 방법.
  13. 제9항 내지 제12항 중 어느 한 항에 있어서, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버가 동일한 경로를 통해 공통 커널 드라이버에 액세스할 때, 제1 파라미터의 속성 및 제2 파라미터의 속성의 차이에 기초하여, 상기 제1 사용자 공간 드라이버(210) 및 상기 제2 사용자 공간 드라이버(214) 중 어느 하나가 상기 공통 커널 드라이버에 대해 상기 소정의 함수 호출을 수행했는지를 결정하기 위해 상기 공통 커널 드라이버(226)의 핸들러를 사용하는 것을 더 포함하고, 상기 제1 파라미터 및 제2 파라미터는 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버에 의해, 각각 공통 커널 드라이버로 전달되는, 방법.
  14. 제13항에 있어서, 상기 제1 파라미터의 속성 및 상기 제2 파라미터의 속성은, 데이터 크기, 데이터 유형, 데이터 순서 중 적어도 하나를 포함하는, 방법.
  15. 제9항 내지 제14항 중 어느 한 항에 있어서, 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버가 각각 제1 경로 및 제2 경로를 통해 공통 커널 드라이버에 액세스할 때, 소정 경로에 제공된 적어도 하나의 심볼릭 링크 및 바인드 마운트에 기초하여, 상기 제1 사용자 공간 드라이버(210) 및 상기 제2 사용자 공간 드라이버(214) 중 어느 하나가 상기 공통 커널 드라이버에 대해 함수 호출을 수행했는지를 결정하기 위해 상기 공통 커널 드라이버(226)의 핸들러를 사용하는 것을 더 포함하는, 방법.
  16. 제9항 내지 제15항 중 어느 한 항에 있어서, 각각 제1 사용자 공간 드라이버 및 제2 사용자 공간 드라이버에 의해 사용되는 제1 드라이버 구성 및 제2 드라이버 구성의 차에 기초하여, 상기 제1 사용자 공간 드라이버(210)와 상기 제2 사용자 공간 드라이버(214) 중 어느 하나가 상기 공통 커널 드라이버에 대해 함수 호출을 수행했는지를 결정하기 위해 상기 공통 커널 드라이버(226)의 핸들러를 사용하는 것을 더 포함하는, 방법.
KR1020237012252A 2020-10-29 2021-10-28 다중 운영 체제를 실행하는 컴퓨터 시스템 KR20230093425A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP20204596.9 2020-10-29
EP20204596.9A EP3992795A1 (en) 2020-10-29 2020-10-29 Computer system executing multiple operating systems
PCT/FI2021/050731 WO2022090631A1 (en) 2020-10-29 2021-10-28 Computer system executing multiple operating systems

Publications (1)

Publication Number Publication Date
KR20230093425A true KR20230093425A (ko) 2023-06-27

Family

ID=73039835

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237012252A KR20230093425A (ko) 2020-10-29 2021-10-28 다중 운영 체제를 실행하는 컴퓨터 시스템

Country Status (5)

Country Link
US (1) US20240004670A1 (ko)
EP (2) EP3992795A1 (ko)
JP (1) JP2023547345A (ko)
KR (1) KR20230093425A (ko)
WO (1) WO2022090631A1 (ko)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9098437B2 (en) * 2010-10-01 2015-08-04 Z124 Cross-environment communication framework
US7496495B2 (en) * 2005-05-12 2009-02-24 Microsoft Corporation Virtual operating system device communication relying on memory access violations
US20070074192A1 (en) * 2005-08-30 2007-03-29 Geisinger Nile J Computing platform having transparent access to resources of a host platform
WO2012044558A2 (en) * 2010-10-01 2012-04-05 Imerj, Llc Cross-environment communication framework
US20140366022A1 (en) * 2013-06-07 2014-12-11 American Megatrends, Inc. Methods, Devices and Computer Readable Storage Devices for Emulating a Magnetometer in a Guest Operating System from a Host Operating System
US20200183729A1 (en) * 2019-10-31 2020-06-11 Xiuchun Lu Evolving hypervisor pass-through device to be consistently platform-independent by mediated-device in user space (muse)

Also Published As

Publication number Publication date
US20240004670A1 (en) 2024-01-04
JP2023547345A (ja) 2023-11-10
EP4237946A1 (en) 2023-09-06
WO2022090631A1 (en) 2022-05-05
EP3992795A1 (en) 2022-05-04

Similar Documents

Publication Publication Date Title
US10057364B2 (en) Method and apparatus for remotely running application program
JP5496683B2 (ja) カスタマイズ方法及びコンピュータシステム
EP3123316B1 (en) Supporting dynamic behavior in statically compiled programs
EP2843552B1 (en) Method and system for executing callback functions delivered via a communication between a user-space application and the operating system kernel
US20140089910A1 (en) Dynamically building locale objects or subsections of locale objects based on historical data
US20190108038A1 (en) Method and system for starting up application
US9189300B2 (en) Dynamic service discovery
WO2012131507A1 (en) Running a plurality of instances of an application
US20160077850A1 (en) Methods, systems, and media for binary compatibility
EP2941696A1 (en) Software interface for a hardware device
WO2019236261A2 (en) Annotating dynamic libraries for multi-os applications
CN113778612A (zh) 基于微内核机制的嵌入式虚拟化系统实现方法
CN114047960A (zh) 操作系统运行方法及装置、电子设备和存储介质
KR20060063642A (ko) 서브시스템 간의 자원 공유를 가능하게 하는 방법 및시스템
EP2941694B1 (en) Capability based device driver framework
KR20060063643A (ko) 운영 체제의 성능을 향상시키는 방법 및 시스템
US9141353B2 (en) Dynamically building locale objects at run-time
Ming Analysis and a case study of transparent computing implementation with UEFI
CN112256421A (zh) 通信处理方法、装置、存储介质及电子设备
CN116257320B (zh) 一种基于dpu虚拟化配置管理方法、装置、设备及介质
US10579373B2 (en) Seamless extension porting
KR20230093425A (ko) 다중 운영 체제를 실행하는 컴퓨터 시스템
EP2941695B1 (en) High throughput low latency user mode drivers implemented in managed code
US20220308930A1 (en) Provisioning pluggable smart services for browser-based smart editing tools
Drozdov et al. An Approach to Cross-Platform Drivers Development