KR101614920B1 - 다수 개의 컴퓨팅 시스템 및/또는 환경들에서의 입출력 자원들의 공유 - Google Patents

다수 개의 컴퓨팅 시스템 및/또는 환경들에서의 입출력 자원들의 공유 Download PDF

Info

Publication number
KR101614920B1
KR101614920B1 KR1020090087595A KR20090087595A KR101614920B1 KR 101614920 B1 KR101614920 B1 KR 101614920B1 KR 1020090087595 A KR1020090087595 A KR 1020090087595A KR 20090087595 A KR20090087595 A KR 20090087595A KR 101614920 B1 KR101614920 B1 KR 101614920B1
Authority
KR
South Korea
Prior art keywords
input
output
computing
devices
output devices
Prior art date
Application number
KR1020090087595A
Other languages
English (en)
Other versions
KR20100122431A (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 KR20100122431A publication Critical patent/KR20100122431A/ko
Application granted granted Critical
Publication of KR101614920B1 publication Critical patent/KR101614920B1/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

다수개의 컴퓨팅 시스템 및/또는 환경(예를 들어, 컴퓨팅 장치)를 통해서 입력 및 출력(I/O) 연합을 달성하는 기술이 개시된다. 입출력 연합은 제1 컴퓨팅 장치의 하나 이상의 내부 입출력 장치가 제2 컴퓨팅 장치와 유효하게 공유되도록 하는 한편, 제2 컴퓨팅 장치의 하나 이상의 입출력 장치가 제1 컴퓨팅 장치와 유효하게 공유되도록 함으로써 달성된다. 입출력 연합 관리(IOCM) 시스템은 각각의 컴퓨팅 장치에 제공되어 그들 사이에 입출력 연합이 손쉽게되도록 할 수 있다. 입출력 연합 관리(IOCM) 시스템은 가상 입출력 컴퓨팅 환경(VIOCE)로서 제공될 수 있다. 예를 들어, 하나 이상의 가상 머신(VM)이 하나 이상의 가상 디바이스 드라이버(VDD)를 효율적으로 지원하도록 제공될 수 있다. IOCM 시스템은 운영체제로서 그리고/또는 운영체제에 의해서 제공될 수도 있다. 또한, 제1 컴퓨팅 장치의 IOCM 시스템은 (i) 제1 컴퓨팅 장치의 제1 입출력 장치의 이용, (ii) 제2 컴퓨팅 장치의 제2 입출력 장치의 이용 및 (iii) 제3 컴퓨팅 장치의 제3 입출력 장치의 이용 사이를 스위칭하도록 동작될 수 있다.
컴퓨팅 시스템, 입출력 자원, 공유, 운영체제

Description

다수 개의 컴퓨팅 시스템 및/또는 환경들에서의 입출력 자원들의 공유{Sharing input/output(I/O) resources across multiple computing systems and/or environments}
컴퓨팅 시스템 및 컴퓨팅 환경에 관한 것으로, 더욱 상세하게는, 입출력(I/O) 자원들을 공유하기 위한 기술에 관한 것이다.
개념적으로, 컴퓨팅 시스템(예를 들어, 컴퓨팅 장치, 개인용 컴퓨터, 랩탑, 스마트폰, 이동 전화)은 정보(콘텐트 또는 데이터)를 수용하고 그 정보를 조작하여 정보를 처리하는 방법을 유효하게 기술한 일련의 명령어들(또는 컴퓨터 프로그램)에 기초한 결과를 얻거나 결정한다. 통상적으로, 그 정보는 이진 형태로 컴퓨터 판독가능 매체에 저장된다. 더 복잡한 컴퓨팅 시스템들은 컴퓨터 프로그램 자체를 포함하는 콘텐트를 저장할 수 있다. 컴퓨터 프로그램은 예를 들어 마이크로프로세서들 또는 컴퓨터 칩들에 제공된 논리 회로로서 컴퓨터(또는 컴퓨팅) 장치에 내장되거나 불변(invariable)하거나 둘 다일 수 있다. 오늘날 범용 컴퓨터들은 2종류의 프로그래밍을 가질 수 있다. 또한, 컴퓨팅 시스템은 다른 것들 중에서, 다양한 자원(예를 들어, 메모리, 주변 장치) 및 서비스(예를 들어, 오프닝 파일들과 같은 기본 기능들)을 관리하고, 자원들이 다수 개의 프로그램들 사이에 공유되도록 하는 지원 시스템을 가질 수 있다. 이러한 하나의 지원 시스템은 일반적으로 이들 자원 및 서비스에 액세스하는데 이용되는 인터페이스를 프로그래머에게 제공하는 OS(Operating System)로 알려져 있다.
오늘날, 다양한 형태의 컴퓨팅 장치들이 이용가능하다. 이들 컴퓨팅 장치는 크기, 비용, 저장 용량 및 프로세싱 능력의 면에서 광범위하다. 오늘날 이용가능한 컴퓨팅 장치들은 비싸고 강력한 서버, 상대적으로 저렴한 개인용 컴퓨터(PC's) 및 랩탑과, 저장 장치, 자동차 및 가전 제품에 제공되는 더욱 덜 비싼 마이크로프로세서(또는 컴퓨터 칩)을 포함한다.
최근에, 컴퓨팅 시스템은 더 휴대가능하고 이동가능하게 되고 있다. 그 결과, 다양한 이동 및 핸드헬드(handheld) 장치가 이용가능하게 만들어지고 있다. 그 예로, 오늘날, 무선 전화, 미디어 플레이어, PDA(Personal Digital Assistants)가 널리 이용된다. 일반적으로, (핸드헬드 컴퓨터 또는 단순히 핸드헬드로도 알려진) 이동 장치 또는 핸드헬드 장치는 통상적으로 사용자 출력을 위하여 작은 시각적 디스플레이 화면과 사용자 입력을 위해 축소된 키보드를 이용하는 포켓 크기의 컴퓨팅 장치일 수 있다. PDA의 경우에, 입력 및 출력이 터치 스크린 인터페이스에 결합될 수 있다.
일반적으로, 입출력(I/O) 장치 및 입출력 동작은 컴퓨팅 장치들의 중요한 부분이다. 입출력 장치는 하나 이상의 입력 및/또는 출력 기능 및/또는 엔티티(예를 들어, 사람, 컴퓨팅 장치 또는 프로세싱 시스템)에 단순한 데이터 통신 동작을 포 함하는 태스크를 수행할 수 있다.
일부 입출력 장치들은 수년동안 현재까지 이용되고 있다. 이들 입출력 장치들은 일반적으로 개인용 컴퓨터에 모두 제공되는 마우스, 키보드 및 프린터를 포함한다. 더 최근에, 모뎀 및 다양한 다른 네트워크 장치를 포함하는 다른 입출력 장치들이 널리 이용되고 있다. GPS(Global Positioning System) 및 바코드 판독기를 포함하는 일부 다른 입출력 장치들은 다양한 컴퓨팅 장치들에서 이용이 더 증가하고 있다. 미래에는, 더 많은 입출력 장치들은 더 향상된 성능이 제공될 수 있으므로 특히 무선 이동 장치(예를 들어, 스마트 폰, 휴대 전화)에 제공될 가능성이 높다.
컴퓨팅 시스템의 인기는 컴퓨팅 시스템의 일상 생활에서 이용의 증가로 증명된다. 따라서, 컴퓨팅 시스템을 개선할 수 있는 기술들이 매우 유용할 것이다.
넓게 말하면, 본 발명은 컴퓨팅 시스템 및 컴퓨팅 자원에 관한 것이다. 더욱 상세하게는, 본 발명은 입출력 자원들을 공유하기 위한 기술에 관한 것이다.
일 측면에 따르면, 제1 컴퓨팅 시스템 및/또는 환경(예를 들어, 제1 컴퓨팅 장치)의 하나 이상의 내부 입출력 장치들은 하나 이상의 다른 컴퓨팅 시스템 및/또는 환경(예를 들어, 하나 이상의 다른 컴퓨팅 장치)와 유효하게 공유될 수 있는 한편, 다른 컴퓨팅 시스템 및/또는 환경들의 하나 이상의 외부 자원들은 제1 컴퓨팅 시스템 및/또는 환경과 유효하게 공유될 수 있다.
일 실시예에 따르면, 컴퓨팅 장치는 컴퓨팅 장치의 하나 이상의 내부 입출력 장치를 하나 이상의 다른 컴퓨팅 장치와 공유를 손쉽게 하도록 동작할 수 있는 입출력 연합 관리(Input-Ouput Coalition Management; IOCM) 시스템을 포함할 수 있다. 또한, 입출력 연합 관리(IOCM) 시스템은 다른 컴퓨팅 장치의 하나 이상의 외부 입출력 장치를 컴퓨팅 장치 및/또는 또 다른 컴퓨팅 장치와 공유하는 것을 손쉽게 하도록 동작할 수 있다.
입출력 연합 관리(IOCM) 시스템은 예를 들어 가상 입출력 컴퓨팅 환경(Virtual Input-Output Computing Environment; VIOCE)으로서 제공되는 것이 알려질 것이다. 당업자에게 인식될 바와 같이, 예를 들어, 하나 이상의 가상 머신(VM)이 하나 이상의 가상 디바이스 드라이버(VDD)를 유효하게 지원하도록 제공될 수 있다. 당업자는 입출력 연합 관리(IOCM) 시스템이 운영체제(OS)로서 그리고/또는 운영체제(OS)에 의하여도 제공될 수 있음을 알 것이다. 또한, 입출력 연합 관리(IOCM) 시스템은 (i) 컴퓨팅 장치의 제1 내부 입출력 장치의 이용, (ii) 제1 외부 장치의 제1 외부 입출력 장치의 이용, 및 (iii) 제2 외부 장치의 제2 외부 입출력 장치의 이용 사이를 스위칭하도록 동작할 수 있다.
본 발명은 예를 들어, 방법, 장치, 컴퓨터 판독가능(그리고/또는 저장가능) 매체, 및 컴퓨팅 시스템(예를 들어, 컴퓨팅 장치)를 포함한 수많은 방식으로 구현될 수 있다. 컴퓨터 판독가능 매체는 예를 들어, 실제적인 형태로 저장되는 적어도 실행가능한 컴퓨터 프로그램 코드를 포함할 수 있다. 본 발명의 여러 실시예들 이 후술된다.
첨부 도면과 결합하여 본 발명의 원리를 예시적인 방식으로 설명하여, 본 발명의 다른 측면들 및 이점들이 다음의 상세한 설명으로부터 명백해질 것이다.
다수 개의 컴퓨팅 시스템 또는 컴퓨팅 환경에서 입출력 자원들을 효율적으로 공유할 수 있다.
배경 기술에서 설명한 바와 같이, 입력/출력은 컴퓨팅 시스템 및 환경의 중요한 부분이다. 따라서, 컴퓨팅 시스템 및 환경에서 입력/출력을 이용하기 위한 개선된 기술은 매우 유용할 것이다.
본 발명은 컴퓨팅 시스템 및 환경에서 입출력을 공유하기 위한 기술에 관한 것이다. 발명의 일 양상에 따르면, 제1 컴퓨팅 시스템 및/또는 환경(예를 들어, 제1 컴퓨팅 장치)의 하나 이상의 내부 입출력 장치는 하나 이상의 다른 컴퓨팅 시스템 및/또는 환경(예를 들어, 하나 이상의 다른 컴퓨팅 장치)와 유효하게 공유될 수 있는 한편, 다른 컴퓨팅 시스템 및/또는 환경의 하나 이상의 외부 자원들은 제1 컴퓨팅 시스템 및/또는 환경과 유효하게 공유될 수 있다.
일 실시예에 따르면, 컴퓨팅 장치는 컴퓨팅 장치의 하나 이상의 내부 입출력 장치를 하나 이상의 다른 컴퓨팅 장치와 공유하는 것을 손쉽게 하도록 동작할 수 있는 입출력 연합 관리(IOCM) 시스템을 포함할 수 있다. 또한, 입출력 연합 관리(IOCM) 시스템은 다른 컴퓨팅 장치의 하나 이상의 외부 입출력 장치를 컴퓨팅 장 치 및/또는 또 다른 컴퓨팅 장치와 공유하는 것을 손쉽게 하도록 동작할 수 있다.
입출력 연합 관리(IOCM) 시스템은 예를 들어 가상 입력 출력 컴퓨팅 환경(VIOCE)으로서 제공될 수 있음이 인식될 것이다. 예를 들어, 하나 이상의 가상 머신(VM)은 하나 이상의 가상 디바이스 드라이버(VDD)를 유효하게 지원하도록 제공될 수 있다. 또한, 당업자는 입출력 연합 관리(IOCM) 시스템이 운영체제(OS)로서 그리고/또는 운영체제(OS)에 의해 제공될 수 있음을 인식할 것이다. 또한, 입출력 연합 관리(IOCM) 시스템은 (i) 컴퓨팅 장치의 제1 내부 입출력 장치의 이용, (ii) 제1 외부 컴퓨팅 장치의 제1 외부 입출력 장치의 이용 및 (iii) 제2 외부 장치의 제2 외부 입출력 장치의 이용 사이를 스위칭하도록 동작될 수 있다.
도 1a 내지 도 8의 이들 실시예들이 후술된다. 그러나, 당업자는 이들 도면에 대한 상세한 설명이 예시 목적으로 기술된 것이며, 본 발명은 이들 실시예를 넘어 확장될 수 있음을 인식할 것이다.
도 1a는 본 발명의 일 실시예에 따른 컴퓨팅 장치(100A)를 나타낸다.
도 1a를 참조하면, 컴퓨팅 장치(100A)는 예를 들어, 실행가능 컴퓨터 코드(예를 들어, 컴퓨터 애플리케이션 프로그램)(104)에 의해 효율적으로 이용될 수 있는 하나 이상의 입력 및/또는 출력 기능을 제공하도록 동작할 수 있는 하나 이상의 입출력 장치(또는 내부 입출력 장치(102A))를 포함한다. 즉, 컴퓨팅 장치(100A)는 실행 시간 동안 실행가능 컴퓨터 코드(104)를 유효하게 실행하고 하나 이상의 내부 입출력 장치(102A)의 다양한 입력 및/또는 출력 기능을 실행가능 컴퓨터 코드(104)에 유효하게 제공하도록 동작할 수 있다. 당업자는 컴퓨팅 장치(100A)가 예를 들 어 실행 코드(104)의 실행을 유효하게 지원할 수 있는 하나 이상의 프로세서 및 메모리(도시되지 않음)을 포함할 수 있음을 인식할 것이다.
더욱이, 컴퓨팅 장치(100A)는 하나 이상의 컴퓨팅 장치에 의하여 하나 이상의 내부 입출력 장치(102A)를 이용하도록 하거나 이용을 유효하게 손쉽게 하도록 또는 둘 다를 수행하도록 동작할 수 있다. 즉, 입출력 연합 관리(IOCM) 시스템(106A)은 다른 컴퓨팅 장치와 입출력 장치(102A)의 공유를 유효하게 손쉽게 할 수 있다. 도 1a를 참조하면, 컴퓨팅 장치(100A)의 입출력 연합 관리(IOCM) 시스템(106A)은 컴퓨팅 장치(100A) 및/또는 컴퓨팅 장치(100B)에 의하여 내부 입출력 장치(102A)를 유효하게 이용하거나, 이용을 허용하거나 또는 이용을 일으키도록 동작될 수 있다.
또한, 컴퓨팅 장치(100A)의 입출력 연합 관리(IOCM) 시스템(106A)은 하나 이상의 외부 장치의 하나 이상의 외부 입출력 장치를 유효하게 이용하도록 동작할 수 있다. 도 1a를 참조하면, 입출력 연합 관리(IOCM) 시스템(106A)은 컴퓨팅 장치(100B)의 하나 이상의 외부 입출력 장치(102B)를 유효하게 이용하거나 컴퓨팅 장치(100C)의 하나 이상의 외부 입출력 장치(102C)를 유효하게 이용하거나 또는 둘 다를 유효하게 이용하도록 동작할 수 있다.
도 1a에 도시된 바와 같이, 입출력 연합 관리(IOCM) 시스템(106B)은 컴퓨팅 장치(100B)에 의해 유효하게 제공될 수 있다. 그 결과, 컴퓨팅 장치(100B)는 컴퓨팅 장치(100A)와 그 내부 입출력 장치 즉, 입출력 장치(102B)의 공유를 유효하게 손쉽게 하고, 컴퓨팅 장치(100A)의 입출력 장치(102A)를 유효하게 이용하도록 동작 할 수 있다.
입출력 연합 관리(IOCM) 시스템(106A)은 전체적으로 내부 입출력 장치 및 외부 입출력 장치를 통해서 하나 이상의 입력 및/또는 출력 기능을 유효하게 제공하도록 동작할 수 있다. 즉, 입출력 연합 관리(IOCM) 시스템(106A)은 컴퓨팅 장치(100A)가 다양한 내부 입출력 장치(102A) 및 확장을 위한 외부 자원으로서 다른 컴퓨팅 장치에 의해 제공되는 외부 입출력 장치(102B 및 102C)의 다양한 조합을 이용할 수 있도록 동작할 수 있다. 외부 자원은 컴퓨팅 장치(100A)에 이용가능하게 되거나 이동가능하도록 만들어지거나 둘 다일 수 있다.
그러나, 특별한(particular) 또는 특정한(specific) 입출력 요청이 주어진 시간에 내부 입출력 장치 또는 외부 입출력 장치를 이용하여 유효하게 제공될 수 있음을 유의한다. 즉, 입출력 연합 관리(IOCM) 시스템(106A)은 내부 입출력 장치(102A)를 통해서 하나 이상의 입력 및/또는 출력 기능을 제공할지 또는 외부 입출력 장치(102B 및 102C)를 통해서 하나 이상의 입력 및/또는 출력 기능을 제공할지 여부를 결정하고 및 그에 따라 입출력 기능을 유효하게 제공하도록 동작할 수 있다.
도 1b는 본 발명의 일 실시예에 따른 하나 이상의 입력 및/또는 출력 기능을 제공하기 위한 예시적인 방법(150)을 나타낸다.
예를 들어, 방법(150)은 도 1a에 도시된 컴퓨팅 장치(100A)에 의해 이용될 수 있다. 도 1b를 참조하면, 내부 입출력 장치를 통해서 하나 이상의 입력 및/또는 출력 기능을 제공할지 또는 외부 입출력 장치를 통해서 하나 이상의 입력 및/또 는 출력 기능을 제공할지 여부가 초기에 결정된다. 내부 입출력 장치를 통해서 하나 이상의 입력 및/또는 출력 기능을 유효하게 제공하는 것으로 결정되면(152), 방법(150)이 끝나기 전에 내부 입출력 장치를 이용하여 하나 이상의 입출력 기능이 제공된다(154). 그러나, 외부 입출력 장치를 통해서 하나 이상의 입력 및/또는 출력 기능을 유효하게 제공하는 것으로 결정되면(152), 방법(150)이 끝나기 전에 하나 이상의 기능이 외부 입출력 장치를 이용하여 제공된다(156).
도 1c 및 도 1d는 본 발명의 다른 실시예에 따른 하나 이상의 입력 및/또는 출력 기능을 제공하기 위한 예시적인 방법(160)을 나타낸다.
방법(160)은 예를 들어 도 1a에 도시된 컴퓨팅 장치(100A)에 의해서 이용될 수 있다. 또한, 방법(160)은 도 1b에 나타난 방법(150)의 동작들을 더 상세하게 나타낼 수도 있다. 도 1c를 참조하면, 입력 및/또는 출력 요청이 실행가능 컴퓨터 코드(예를 들어, 애플리케이션 프로그램)으로부터 수신되었는지 여부가 결정된다(162). 통상적으로, 컴퓨팅 장치에서 실행되는 애플리케이션 프로그램으로부터 요청이 수신된다. 일반적으로, 이 요청은 지역적으로 실행되거나 또는 다른 컴퓨팅 장치에서 원격으로 실행되는 다양한 타입의 실행가능 컴퓨터 코드로부터 수신될 수 있다. 실제로, 방법(160)은 입력 및/또는 출력 요청을 수신하도록 기다릴 수 있다. 도 1c를 다시 참조하면, 입력 및/또는 출력 요청이 수신되는 것이 결정되는 때(162), 방법(160)은 하나 이상의 요청된 입출력 기능이 내부 입출력 장치에 의해 지원되는지 여부를 결정하기 단계 164로 진행한다. 하나 이상의 요청된 입출력 기능이 내부 입출력 장치에 의해서 지원되는 것이 결정되면(164), 내부 입출력 장치 를 이용할지가 결정된다(166). 이 결정(166)은 예를 들어, 내부 입출력 장치가 많은 애플리케이션 프로그램을 서비스하는 "비지(busy)"로 간주되는지 여부, 내부 입출력 장치를 이용하는 것과 관련된 재정적 비용 대한 외부 입출력 장치를 이용하는 것과 관련된 상대적 비용, 외부 입출력 장치를 액세스하기 위한 현재 네트워크 대역폭 등을 포함하는 하나 이상의 요소에 기초할 수 있다. 내부 입출력 장치를 이용하여 요청된 입출력 기능을 제공하는 것으로 결정되면, 내부 입출력 장치의 이용이 시작된다(168). 다음으로, 외부 입출력 장치로 스위칭할 것인지가 결정된다(170). 결정(170)는 예를 들어, 상술한 하나 이상의 예시적인 요소에 기초할 수 있다. 즉, 하나 이상의 입출력 기능을 제공하기 위하여 내부 입출력 장치 대신에 외부 입출력 장치를 이용할지 여부가 결정될 수 있다(170). 따라서, 외부 입출력 장치를 스위칭하는 것으로 결정되면(170), 방법(160)은 요청된 입출력 기능(도 1d에 도시됨)을 제공하기 위하여 외부 입출력 장치의 이용을 개시하는 단계(172)로 진행한다. 도 1d를 참조하면, 외부 장치의 이용을 개시한 후(172), 하나 이상의 요청된 입출력 기능을 제공하기 위하여 내부 입출력 장치를 스위칭할지 여부가 결정될 수 있다(174). 결과적으로, 입출력 기능을 요청하는 실행가능 컴퓨터 코드는 내부 입출력 장치 및 외부 입출력 장치를 이용하여 동적인 방식으로 서비스될 수 있다.
다시 도 1c를 참조하면, 하나 이상의 요청된 기능이 내부 입출력 장치에 의해 지원되지 않는 것으로 결정되거나(164), 외부 입출력 장치를 이용하지 않는 것으로 결정되면(166), 방법(160)은 하나 이상의 요청된 기능을 제공할 수 있는 외부 장치를 유효하게 검색할 수 있다. 예를 들어, "발견(discovery)" 동작이 당업자에게 인식될 수 있는 바와 같이 수행될 수 있다. 도 1d를 참조하면, 하나 이상의 요청된 입출력 기능이 외부 입출력 장치에 의해 지원되고 제공될 수 있는지가 결정될 수 있다(176). 하나 이상의 입출력 기능이 외부 입출력 장치에 지원되거나 제공될 수 없다고 결정되면(176), 방법(160)은 외부 장치가 이용가능하게 되도록 유효하게 기다릴 수 있다(178). 결정(178)은 디자인 선택을 나타낼 수 있고 또는 예를 들어 외부 입출력 장치가 이용가능하게 되도록 결정된 시간을 기다리는 것을 포함하여 다양한 요소에 기초하여 수행될 수 있다. 결과적으로, 에러(예를 들어, 에러 메시지)가 방법(160)이 끝나기 전에 출력될 수 있다(180). 그러나, 하나 이상의 입출력 기능이 외부 입출력 장치에 의해 지원되고 제공될 수 있는지가 결정되면(178), 외부 장치의 이용은 실행가능 컴퓨터 코드로 하나 이상의 요청된 입출력 기능들을 유효하게 제공하기 위하여 개시된다(172). 요청된 입출력 기능이 더 이상 필요하지 않게 되어 입출력 장치의 유효한 이용이 종료되는 것이 결정될 때(182A 또는 182B), 방법(160)이 끝난다.
입출력 연합 관리(IOCM)(예를 들어, 도 1a에 나타난 IOCM(106A))가 외부 입출력 장치가 내부 입출력 장치 대신에 이용될 때 내부 입출력 장치를 유효하게 시뮬레이션하도록 동작하는 가상 입출력 컴퓨팅 환경(VIOCE)을 제공하거나 가상 입출력 컴퓨팅 환경(VIOCE)로서 제공될 수 있거나 둘 다를 수행할 수 있다. 부가하여 또는 선택적으로, 가상 입출력 컴퓨팅 환경(VIOCE)은 제1 컴퓨팅 장치의 내부 입출력 장치를 이용하는 외부 컴퓨팅 장치에 대한 입출력 환경을 유효하게 시뮬레이션 하기 위하여 제1 컴퓨팅 장치상에서 동작될 수 있다.
도 2는 본 발명의 다른 실시예에 따른 컴퓨팅 장치(200A)를 나타낸다.
도 2를 참조하면, 컴퓨팅 장치(200A)의 입출력 연합 관리(IOCM) 시스템(202A)은 가상 입출력 컴퓨팅 환경(VIOCE)(204A)를 포함한다. 외부 컴퓨팅 장치(200B)의 외부 입출력 장치(208B)가 컴퓨팅 장치(200A)의 내부 입출력 장치(208A)(입출력 장치(208A1 및 208A2)) 대신에 실행가능 코드(206A)에 의해 이용될 때, VIOCE(204A)는 실행가능 코드(206A)에 대한 내부 입출력 환경을 유효하게 시뮬레이션하도록 동작할 수 있다. 더 상세하게는, 외부 입출력 장치(208B)가 실제 입력 및 출력 기능 및/또는 서비스를 실행가능 코드(206A)에 제공하더라도, 가상 입출력 컴퓨팅 환경(VIOCE)은 실행가능 코드(206A)에 대한 내부 장치 컴퓨팅 환경을 유효하게 시뮬레이션하도록 동작할 수 있는 제1 가상 장치 컴퓨팅 환경(VDCE1)을 개시할 수 있다. 예를 들어, 제1 가상 장치 컴퓨팅 환경(VDCE1)(210)은 가상 디바이스 드라이버로서 제공될 수 있다. 어떤 경우에, 가상 장치 컴퓨팅 환경(VDCE1)(210)는 실행가능 컴퓨터 코드(206A)가 컴퓨팅 장치(200A)의 내부 입출력 장치(208A1 및 208A2)를 이용하는 것과 동일한 방식으로, 실행가능 코드(206A)에게 인터페이스로서 서비스하여 외부 입출력 장치(208B)의 이용을 허용할 수 있다. 결과적으로, 제1 실행가능 컴퓨터 코드(206A)(예를 들어, 제1 컴퓨터 애플리케이션 프로그램)은 외부 입출력 장치(208B)를 이용하기 위하여 기존의 입출력 인터페이스를 변경하거나 새로운 인터페이스를 부가하는 것을 요구하지 않을 것이다. 또한, 제1 실행가능 컴퓨터 코드(206A)는 외부 장치의 이용을 명시적으로 요청하거 나 특정 외부 장치를 위한 특정적으로 요청하지 않아야 할 것이다.
도 2에 도시된 바와 같이, 컴퓨팅 장치(200B)는 입출력 연합 관리(IOCM) 시스템(202B)도 포함할 수 있다. IOCM 시스템(202B)은 컴퓨팅 장치(200B 및 200A) 사이에 입출력 장치(208B 및 208A)를 공유하는 것을 손쉽게 하도록 IOCM 시스템(202A)과 유효하게 연합할 수 있다. IOCM 시스템(202A)과 유사하게, IOCM 시스템(202B)은 가상 입출력 컴퓨팅 환경(VIOCE) 시스템(204B)를 제공하거나 가상 입출력 컴퓨팅 환경(VIOCE) 시스템(204B)에 의해 지원될 수 있거나, 둘 다가 수행될 수 있다.
도 2를 참조하면, 컴퓨팅 장치(200A)의 가상 입출력 컴퓨팅 환경(VIOCE)(204A)은 또한 컴퓨팅 장치(200C)에 의해 실행되는 실행가능 코드(206C)에 의하여 이용하기 위한 장치 컴퓨팅 환경을 유효하게 시뮬레이션하도록 동작할 수 있는 제2 가상 디바이스 컴퓨팅 환경(VDCE2)(212)를 제공할 수 있다. 그러나, 제2 가상 디바이스 컴퓨팅 환경(VDCE2)(212)이 컴퓨팅 장치(200C)(도 2에서 VIOCE3(212C))에 의해 제공될 수 있음을 알아야 한다.
또한 입출력 연합 관리(IOCM) 시스템(예를 들어, 도 1a에 도시된 IOCM 시스템(106A))이 컴퓨팅 장치(예를 들어, 도 1a에 도시된 컴퓨팅 장치(100A))에서 동작하는 운영체제(OS)로서 또는 운영체제(OS)에 의해 유효하게 제공될 수 있다. 즉, 운영체제(OS)는 가상 입출력 컴퓨팅 환경(VIOCE)에 의해 제공되는 것과 유사하게 제공되도록 동작할 수 있다.
도 3은 본 발명의 또 다른 실시예에 따른 컴퓨팅 장치(300A)를 나타낸다.
도 3을 참조하면, 입출력 연합 관리(IOCM) 가능 운영체제(또는 IOCM-가능 OS)(302A)는 OS 공간에서 운영체제 기반(또는 OS-기반) 입출력 연합 관리(IOCM)(304A)를 유효하게 제공할 수 있다. 당업자는 운영체제 기반 입출력 연합 관리(IOCM)(304A)가 예를 들어, 도 2에 도시된 장치 컴퓨팅 환경(VDCEs)(210 및 212)을 포함하는 가상 컴퓨팅 환경에 의해 제공될 수 있는 것과 유사한 기능을 제공하도록 동작될 수 있음을 알 것이다.
입출력 연합 관리(IOCM) 시스템(예를 들어, 도 1a에 나타낸 IOCM(106A))의 적어도 일부는 운영체제(OS)에 의해 제공될 수 있다. 도 3을 다시 참조하면, 입출력 연합 관리(IOCM) 시스템은 OS 공간에서의 운영체제 기반 입출력 연합 관리(IOCM)(304A) 및 컴퓨팅 장치(300A)의 사용자 공간에서 동작하는 하나 이상의 사용자 기반 입출력 연합 관리(IOCM)(306)에 의해 집합적으로 제공될 수 있다. 입출력 연합 관리(IOCM)(306) 기반 사용자 공간은 실행가능 컴퓨터 코드(310A)로의 인터페이스로서 유효하게 동작하고 OS에 저장되거가 OS에 의해 제공될 필요 없는 다양한 기능(예를 들어, 발견)을 제공하고 및 데이터(예를 들어, 테이블)을 저장할 수 있다. 실행가능 코드(310A)는 사용자 기반 입출력 연합 관리(IOCM)(306)를 통하여 하나 이상의 입출력 기능을 유효하게 요청할 수 있다. IO 기능은 컴퓨팅 장치(300A)의 내부 입출력 장치(312A1 및 312A2) 대신에, 외부 입출력 장치, 즉, 컴퓨팅 장치(300C)의 입출력 장치(312C)를 이용하여 OS 기반 입출력 연합 관리(IOCM)(304A)를 통하여 제공될 수 있다. 도 3을 참조하면, 컴퓨팅 장치(300C)는 입출력 연합 관리(IOCM) 시스템(304C)를 유효하게 제공하도록 동작할 수 있다. 입 출력 기능 또는 입출력 장치(312C)는 OS 기반 IOCM 시스템으로서 또는 가상 입출력 컴퓨팅 환경(VIOCE)으로서 제공될 수 있는 입출력 연합 관리(IOCM) 시스템(304C)을 통하여 제공될 수 있다.
도 3을 참조하면, 컴퓨팅 장치(300B)는 컴퓨팅 장치(300A)와 유사하게, 사용자 기반 IOCM 컴포넌트(314) 및 OS 기반 IOCM 컴포넌트(316)를 집합적으로 제공하여 IOCM 시스템을 유효하게 제공할 수 있다. 실행가능 컴퓨터 코드(310B)는 사용자 기반 IOCM 컴포넌트(314)를 유효하게 이용하여 컴퓨팅 장치(300A)의 하나 이상의 입출력 장치 즉, 입출력 장치(312A1 및 312A2)에 액세스할 수 있다. 이 액세스는 컴퓨팅 장치(300A)의 사용자 기반 IOCM 컴포넌트(308)와 통신하여 시작될 수 있다. 입출력 기능 및/또는 서비스는 컴퓨팅 장치(300B)에서 실행되는 실행가능 컴퓨터 코드(310B)가 컴퓨팅 장치(300A)의 입출력 장치(312A1 및 312A2)를 유효하게 이용하도록 OS 기반 IOCM 컴포넌트(304A)를 통해서 제공될 수 있다.
입출력 연합 관리(IOCM) 시스템은 입출력 장치 및 특히 입출력 장치 드라이버를 관리할 수 있다. 예를 들어, 이는 존재하는 가상 소프트웨어 및/또는 존재하는 네이티브 운영체제(OS)로 입출력 관리 소프트웨어를 제공함으로써 달성될 수 있다.
당업자는 가상 입출력 컴퓨팅 환경(VIOCE)이 예를 들어, 하나 이상의 가상 머신(VMs) 및/또는 가상 머신 모니터(VMM)에 의해서 제공될 수 있는 것을 쉽게 인식할 것이다. VIOCE는 실제(또는 물리적) 디바이스 드라이버(ADD)와 인터페이스하기 위하여 하나 이상의 가상 디바이스 드라이버(VDDs)를 이용할 수 있다.
도 4는 본 발명의 일 실시예에 따른 컴퓨팅 환경(400)을 나타낸다.
도 4를 참조하면, 입출력 연합 관리 (IOCM) 계층(시스템 또는 시스템 컴포넌트)(402A)은 장치(401A)에 대한 서비스 가상 머신(SVM)(404A)에 제공된다. 도 4에 도시된 바와 같이, IOCM 계층(402A)은 컴퓨팅 장치(401A)의 실제 디바이스 드라이버(ADD)의 위에 유효하게 제공될 수 있다. 컴퓨터 애플리케이션 프로그램은 입출력 자원에 액세스하려고 노력할 때 입출력 기능 및/또는 서비스에 대한 요청(입출력 요청)을 유효하게 전송할 수 있다. 이 입출력 요청은 "전단(front-end)"으로서 동작할 수 있는 가상 머신(408A)에서 동작하는 가상 디바이스 드라이버(VDD)(406A)에 의해 처리될 수 있다. 가상 디바이스 드라이버(VDD)(406A)는 서비스 가상 머신(SVM)(404A)의 IOCM 계층(402A)로 입출력 요청을 전달할 수 있다. IOCM 계층(402A)은 컴퓨팅 장치(401A)의 내부(또는 로컬) 입출력 장치를 이용하여 입출력 요청을 제공할지 또는 외부(또는 원격) 입출력 장치를 이용하여 원격으로 입출력 요청을 제공할 지를 결정할 수 있다. 예를 들어, IOCM 계층(402A)은 다른 컴퓨팅 장치, 즉, 컴퓨팅 장치(401B)의 IOCM 계층(402B)으로 입출력 요청을 유효하게 전달할 수 있다. 결과적으로, 입출력 요청은 컴퓨팅 장치(401A)의 입출력 장치 대신에 컴퓨팅 장치(401B)의 입출력 장치에 의해 실제적으로 서비스될 수 있다.
IOCM 시스템은 (i) 하나 이상의 실제 디바이스 드라이버(ADD)와 "백엔드" VM 사이의 컴포넌트의 2 이상의 별개의 소프트웨어 계층, 모듈, (ii) 함께 유효하게 혼합되는 "백엔드" VM과의 컴포넌트의 단일(또는 통합된) 소프트웨어 계층, 모듈, (iii) SVM 없이 VMM(또는 하이퍼바이저)의 일부로서, (iv) 실제 디바이스 드라이 버(ADD)를 유효하게 호스트하는 장치와 다른 장치에 대한 전용 VM의 일부로서 중 하나 이상으로서 제공될 수 있다. 전술한 관점에서, 당업자에 의해서 다른 변형예 및 결합예가 쉽게 알려지고 인식될 것이다.
상술한 바와 같이, IOCM 시스템은 비가상화된(non-virtualized) 플랫폼에서의 "네이티브" OS 및 가상화된(virtualized) 플랫폼내의 OS를 포함하는 운영체제(OS)에 의해서 유효하게 또는 그 운영체제(OS)의 일부로서 제공될 수도 있음이 당업자에게 알려져서 인식될 것이다. OS 기반 IOCM 시스템은 도 4에 도시된 컴퓨팅 환경(400)에서 가상화 기술에 대하여 전술한 바와 유사한 방식으로 제공될 수 있다. 일 실시예에서 "논리" 계층이 기존의 OS에 부가되어 OS에서 입출력 연합을 유효하게 처리할 수 있다. 이 "논리" 계층은 예를 들어, OS의 다양한 기존의 구현예에서 새로운 계층으로서 구현되거나, OS의 구조적 구성내에서 하나 이상의 존재하는 소프트웨어 계층 및/또는 소프트웨어 모듈에 통합(incorporated), 혼합(blended) 그리고/또는 묶음으로(bundled) 구현될 수 있다.
도 5는 본 발명의 일 실시예에 따른 리눅스 OS에 대한 예시적인 OS 기반 IOCM 시스템을 나타낸다.
도 5를 참조하면, OS 기반 IOCM 시스템은 연합 관리 계층(Coalition Management Layer; CML)(502) 및 연합 관리 사용자 데몬(Coalition Management User Daemon; CMUD)(504)에 의해 제공된다. 도 5에 도시된 바와 같이, 연합 관리 계층(CML)(502)은 예를 들어, 커널 내부에서 블록, 캐릭터 및 인터페이싱(IF) 디바이스 드라이버들을 포함하는 다양한 디바이스 드라이버(DD)위에 유효하게 제공될 수 있다. CMUD(504)는 커널 내부에 제공될 필요가 없는 다양한 기능(예를 들어, 발견, 저장 및/또는 테이블 액세스)을 제공하고 사용자 공간내에서 동작할 수 있다.
당해 기술분야에 일반적으로 알려진 바와 같이, 블록 디바이스 드라이버상의 동작은 리눅스 운영 환경에서 상대적으로 많은 수의 커널 컴포넌트들을 관여시킬 수 있다.
도 6은 본 발명의 다른 실시예에 따른 연합 관리 계층(CML)(602)을 나타낸다.
도 6을 참조하면, 연합 관리 계층(CML)(602)은 리눅스 입출력 스케줄러 계층 및 디바이스 드라이버들 사이에 제공된다. 연합 관리 계층(CML)(602)은 예를 들어, 디바이스 드라이버의 위에 별개의 계층으로서 제공되거나 디바이스 드라이버들에 유효하게 통합될 수 있다.
입출력 연합에 대하여 더 많은 동적 해법을 제공하기 위하여, 입출력 장치들이 이용가능하게 되거나 유효하게 그 서비스를 철회하는 때에는, 연합 관리 계층(CML)은 입출력 장치들에 대한 변화를 상위 계층들에 알리도록 동작할 수 있다. 결과적으로, 상위 계층들은 더욱 동적인 방식으로 입출력 연합을 허용하도록 하기 위하여 변경되어야 할 수 있다. 즉, 연합 관리 계층(CML)은 다수개의 계층들 사이에 유효하게 분포될 수 있다.
도 7은 본 발명의 또 다른 실시예에 따른 연합 관리 계층(CML)(702)을 나타낸다.
도 7을 참조하면, 연합 관리 계층(CML)(702)은 다수 개의 소프트웨어 계층들에 의해 유효하게 제공될 수 있다.
도 8은 본 발명의 또 다른 실시예에 따른 입출력 연합 관리(IOCM) 시스템(800)을 나타낸다.
더 상세하게는, 도 8은 장치(800)에 제공될 수 있는 IOCM 시스템의 많은 예시적인 컴포넌트들을 나타낸다. 도 8을 참조하면, 연합 관리 계층(CML) 통신 프로토콜 모듈(또는 컴포넌트)(802)는 장치(800)와 다양한 다른 장치들 사이에서 입출력 연합과 관련된 메시지들의 교환을 처리하도록 동작할 수 있다. 이러한 메시지들은 예를 들어, WiFi 네트워크, 블루투스, 이더넷 접속 등을 통해 전달될 수 있다. CML 통신 프로토콜 모듈(802)은 장치(800)의 로컬 통신 장치(예를 들어, 무선 어댑터, 블루투스 어댑터)에 의존한다. 로컬 자원 핸들러(804)는 장치(800)에 물리적으로 존재하고 로컬 디바이스 드라이버들에 유효하게 직접 액세스되는 장치 컴포넌트들을 조작하도록 동작될 수 있다. 자원 발견 매니저(RDM)(806)는 다른 장치들과 통신하고 장치(800)에 의한 이용을 위한 이용 가능한 다른 장치들의 컴포넌트들에 관련된 데이터를 수집하도록 동작할 수 있다. 수집된 데이터는 자원 임포터(RI)(808)로 전달될 수 있다. 자원 임포터(RI)(808)는 RDM(806)으로부터 이용가능한 원격 컴포넌트들에 관련된 수집된 데이터를 수신하고 스마트 결정 메이커(SDM)(810)로 이들 컴포넌트들의 리스트를 제공하도록 동작할 수 있다. 또한, 자원 임포터(RI)(808)는 원격 장치로의 액세스를 처리하고 RDM(806)와 상호작용하여 정보를 수집하도록 동작할 수 있다. SDM(810)는 정보를 보고하고 입출력 요청 을 수신할 수 있다. 또한, SDM(810)은 보안 및 신뢰 모니터(8110)와 상호작용하여 어떤 원격 컴포넌트들이 이용될 수 있는지를 결정할 수 있다. 자원 임포터(RI)(808)는 네트워크 트랙픽에 관한 통계와 RDM(806)의 보조에 대한 지연을 수집하도록 동작할 수도 있다. 보안 및 신뢰 모니터(811)는 공유 정책 및/또는 규칙을 실시하고(enforce) CML 통신 프로토콜 모듈(802)를 이용하여 하나 이상의 입출력 자원의 임포팅(importing)을 허용할지 또는 익스포팅(exporting)을 허용할지 여부에 대하여 결정하고, 또는 원격 장치와의 통신의 허용할지 여부까지 결정하도록 동작할 수 있다. 또한, 보안 및 신뢰 모니터(811)는 자원 임포터(Resource Importer; 808), 자원 익스포터(Resource Exporter; 814), 자원 발견 매니저(806), 원격 요청 핸들러(816), CML 통신 프로토콜(802) 및 스마트 결정 메이커(810)와 상호작용하도록 동작할 수 있다. 원격 요청 핸들러(816)는 원격 장치로부터 액세스 요청을 수신하고 자원 익스포터(814)로 허여된(granted) 요청을 전달하도록 동작할 수 있다. 자원 익스포터(814)는 (i) 원격 요청 핸들러(RRH)(816)로부터 수신된 원격 요청을 서비스하고, (ii) 익스포트 컨트롤러 모니터(ECM)(819), 자원 이용 프로버(Resource Utilizing Prober; RUP)(820) 및/또는 스마트 결정 메이커(SDM)을 이용하여 주어진 시간에 어떤 입출력 자원을 익스포트할 지를 결정하는데 대한 보조하도록 동작할 수 있다.
스마트 결정 메이커(SDM)(810)는 상대적으로 복잡할 수 있다. 로컬 자원 및 원격 자원의 이용을 최적화하는 것에 관한 결정을 내리기 위하여, 이용가능한 원격 컴포넌트들, 로컬 이용, 네트워크 지연등을 포함하는 다양한 정보를 수집할 수 있 다. 스마트 결정 메이커(SDM)(810)는 로컬 요청 핸들러(LRH)(805)로부터의 로컬 요청을 수신하고, 로컬 입출력 자원 또는 원격 입출력 자원이 수집된 데이터(또는 통계)에 기초하여 입출력 요청을 서비스해야 하는지를 결정할 수 있다. 또한, 스마트 결정 메이커(SDM)(810)는 어떤 로컬 자원들을 임시적으로 공유하는 것을 허용하지 않도록(예를 들어, 자원의 이용이 더 낮은 레벨로 떨어질때까지 공유를 허용하지 않도록) 자원 익스포터(814)와도 상호작용할 수 있다. SDM(810)은 전반적으로 입출력의 연합 관리에 관련하는 주요 동작들을 모두 가상적으로 관리하고 또는 조정하고(ochestrate) 또는 둘 다를 수행할 수 있다. 로컬 요청 핸들러(LRH)(805)는 로컬 프로세스의 요청을 수신하고 로컬 프로세스들을 SDM(810)에 전달하도록 동작할 수 있다. 당업자는 상술한 하나 이상의 예시적인 컴포넌트(또는 모듈)을 제공할 필요가 없을 수 있음을 인식할 수 있을 것이다. 또한, 디자인 요구사항 및/또는 특정 상황에 관한 다른 요소들(비용, 이용가능한 자원)에 기초하여 다양한 모듈에 걸쳐 2 이상의 컴포넌트들을 결합하고 그리고/또는 기능들을 확장할 수 있다.
본 발명의 다양한 측면들, 특징들, 실시예들 또는 구현예들이 단독으로 또는 다양한 결합형태로 이용될 수 있다. 본 발명의 많은 특징들 및 이점들은 기재된 설명으로부터 명백하며, 따라서, 본 발명의 이러한 모든 특징들 및 이점들을 포괄하는 첨부된 청구범위에 의해 의도된다. 또한, 다양한 변형 및 변화가 당업자에게 쉽게 일어날 수 있으며, 본 발명은 설명되고 기술된 바와 같은 정확한 구성 및 동작에 한정되어서는 안된다. 따라서, 모든 적당한 변형예들 및 균등물들이 본 발명의 범위에 포함된다.
본 발명은 상세한 설명과 함께 첨부의 도면으로 쉽게 이해될 것이며, 여기에서 유사한 참조 번호는 유사한 구조의 구성요소를 나타낸다.
도 1a는 본 발명의 일 실시예에 따른 컴퓨팅 장치를 나타낸다.
도 1b는 본 발명의 일 실시예에 따른 하나 이상의 입력 및/또는 출력 기능을 제공하는 예시적인 방법을 나타낸다.
도 1c 및 도 1d는 본 발명의 다른 실시예에 따른 하나 이상의 입력 및/또는 출력 기능을 제공하는 예시적인 방법을 나타낸다.
도 2는 본 발명의 다른 실시예에 따른 컴퓨팅 장치를 나타낸다.
도 3은 본 발명의 또 다른 실시예에 따른 컴퓨팅 장치를 나타낸다.
도 4는 본 발명의 일 실시예에 따른 컴퓨팅 환경을 나타낸다.
도 5는 본 발명의 일 실시예에 따른 리눅스 OS에 대한 예시적인 OS 기반 입출력 연합 관리(IOCM) 시스템을 나타낸다.
도 6은 본 발명의 다른 실시예에 따른 연합 관리 계층(CML)을 나타낸다.
도 7은 본 발명의 또 다른 실시예에 따른 연합 관리 계층(CML)을 나타낸다.
도 8은 본 발명의 또 다른 실시예에 따른 입출력 연합 관리(IOCM) 시스템을나타낸다.

Claims (20)

  1. 컴퓨팅 장치로서,
    하나 이상의 내부 입출력 장치; 및
    입출력 시스템을 포함하고,
    상기 입출력 시스템은 하나 이상의 다른 컴퓨팅 장치와 상기 하나 이상의 내부 입출력 장치를 유효하게 공유하고, 상기 컴퓨팅 장치와 상기 하나 이상의 다른 컴퓨팅 장치의 하나 이상의 외부 입출력 장치를 유효하게 공유하도록 동작하고, 상기 내부 또는 외부 입출력 장치의 적어도 하나의 컴퓨팅 요소를 포함하는 기준에 기초하여 (i) 상기 하나 이상의 내부 입출력 장치의 제1 내부 입출력 장치의 이용과 (ii) 상기 하나 이상의 외부 입출력 장치의 제1 외부 입출력 장치의 이용 사이를 유효하게 스위칭하도록 동작하는 컴퓨팅 장치.
  2. 제1항에 있어서,
    상기 입출력 시스템은 상기 컴퓨팅 장치에 의하여 상기 하나 이상의 외부 입출력 장치를 이용하기 위하여 내부 입출력 환경을 유효하게 시뮬레이션하도록 동작하는 가상 환경을 포함함으로써, 상기 컴퓨팅 장치상에서 동작하는 제1 실행가능 컴퓨터 코드가 상기 컴퓨팅 장치의 상기 하나 이상의 내부 입출력 장치를 이용하는 방식과 동일한 방식으로, 상기 제1 실행가능 컴퓨터 코드가 상기 하나 이상의 다른 컴퓨팅 장치의 상기 하나 이상의 외부 입출력 장치를 유효하게 이용하도록 하는 컴퓨팅 장치.
  3. 제2항에 있어서,
    상기 가상 환경은 상기 제1 실행가능 컴퓨터 코드가 상기 하나 이상의 외부 입출력 장치도 이용하기 위하여 상기 하나 이상의 내부 입출력 장치에 액세스하기 위한 제1 인터페이스를 유효하게 이용하도록 함으로써, 상기 하나 이상의 외부 입출력 장치를 이용하기 위하여 제2 인터페이스를 부가하거나 상기 제1 인터페이스의 변형을 요구하지 않으면서 상기 제1 실행가능 컴퓨터 코드가 상기 하나 이상의 외부 입출력 장치를 유효하게 이용하도록 동작하는 컴퓨팅 장치.
  4. 제3항에 있어서,
    상기 가상 환경은 상기 제1 실행가능 컴퓨터 코드가 상기 하나 이상의 외부 입출력 장치에 대해 요청하는 것을 요구하지 않으면서, 상기 제1 실행가능 컴퓨터 코드가 상기 하나 이상의 외부 입출력 장치를 유효하게 이용하게 하도록 동작하는 컴퓨팅 장치.
  5. 제2항에 있어서,
    상기 가상 환경은 상기 컴퓨팅 장치의 물리적 장치 드라이버를 유효하게 에뮬레이션하고 상기 제1 실행가능 컴퓨터 코드와 인터페이스하도록 동작하는 가상 디바이스 드라이버(VDD)를 포함하는 컴퓨팅 장치.
  6. 제2항에 있어서,
    상기 가상 환경은 상기 하나 이상의 다른 컴퓨팅 장치에 의해서 상기 하나 이상의 내부 입출력 장치를 이용하기 위하여 외부 입출력 컴퓨팅 환경을 유효하게 시뮬레이션함으로써, 상기 하나 이상의 다른 컴퓨팅 장치에서 동작하는 하나 이상의 제2 실행가능 컴퓨터 프로그램 코드가 상기 컴퓨팅 장치의 상기 하나 이상의 내부 입출력 장치를 그 자신들의 내부 입출력 장치로서 유효하게 이용하도록 동작하는 컴퓨팅 장치.
  7. 제6항에 있어서,
    상기 가상 환경은 상기 컴퓨팅 장치의 상기 하나 이상의 내부 입출력 장치를 이용하기 위하여 각각 제공되는 하나 이상의 가상 드라이브 드라이버(VDD)를 포함하는 컴퓨팅 장치.
  8. 컴퓨팅 장치로서,
    하나 이상의 내부 입출력 장치; 및
    입출력 시스템을 포함하고,
    상기 입출력 시스템은 하나 이상의 다른 컴퓨팅 장치와 상기 하나 이상의 내부 입출력 장치를 유효하게 공유하고, 상기 컴퓨팅 장치와 상기 하나 이상의 다른 컴퓨팅 장치의 하나 이상의 외부 입출력 장치를 유효하게 손쉽게 공유하도록 동작하고,
    상기 입출력 시스템은 IOCM-가능 운영체제가 상기 하나 이상의 외부 입출력 장치를 이용하기 위한 내부 입출력 환경을 유효하게 시뮬레이션하도록 동작함으로써, 상기 컴퓨팅 장치에서 동작하는 제1 실행가능 컴퓨터 코드가 상기 컴퓨팅 장치의 상기 하나 이상의 내부 입출력 장치를 이용하는 방식과 동일한 방식으로 상기 제1 실행가능 컴퓨터 코드가 상기 하나 이상의 다른 컴퓨팅 장치의 상기 하나 이상의 외부 입출력 장치를 유효하게 이용하도록, 상기 컴퓨팅 장치의 IOCM-운영체제로서 동작하거나 상기 IOCM-운영체제내에 제공되는 컴퓨팅 장치.
  9. 제8항에 있어서,
    상기 IOCM-가능 운영체제는 상기 제1 실행가능 컴퓨터 코드가 상기 하나 이상의 외부 입출력 장치에 액세스하기 위한 제1 인터페이스를 유효하게 이용하도록 함으로써, 상기 제1 실행가능 컴퓨터 코드가 상기 제1 인터페이스를 변경하거나 상기 외부 입출력 장치를 이용하기 위한 제2 인터페이스를 부가하는 것을 요구하지 않으면서 상기 하나 이상의 외부 입출력 장치를 유효하게 이용하도록 동작하는 컴퓨팅 장치.
  10. 제9항에 있어서,
    상기 IOCM-가능 운영체제는 상기 제1 실행가능 컴퓨터 코드가 상기 하나 이상의 외부 입출력 장치에 대해 요청하는 것을 요구하지 않으면서, 상기 제1 실행가능 컴퓨터 코드가 상기 하나 이상의 외부 입출력 장치를 유효하게 이용하도록 동작하는 컴퓨팅 장치.
  11. 제1항에 있어서, 상기 입출력 시스템은,
    하나 이상의 입력 및/또는 출력 기능을 이용하기 위하여 제1 컴퓨터 애플리케이션 프로그램으로부터 입력 및/또는 출력 요청을 수신하고,
    상기 컴퓨팅 장치의 상기 하나 이상의 내부 입출력 장치를 통하여 상기 하나 이상의 입력 및/또는 출력 기능을 유효하게 제공할지 또는 상기 하나 이상의 다른 컴퓨팅 장치의 상기 하나 이상의 외부 입출력 장치를 통하여 상기 하나 이상의 입력 및/또는 출력 기능을 유효하게 제공할지를 결정하고,
    상기 하나 이상의 내부 입출력 장치를 통하여 상기 하나 이상의 입력 및/또는 출력을 유효하게 제공하는 것으로 결정할 때, 상기 하나 이상의 내부 입출력 장치를 통하여 상기 하나 이상의 입력 및/또는 출력 기능을 유효하게 제공하고,
    상기 하나 이상의 외부 입출력 장치를 통하여 상기 하나 이상의 입력 및/또는 출력을 유효하게 제공하는 것으로 결정할 때, 상기 하나 이상의 외부 입출력 장치를 통하여 상기 하나 이상의 입력 및/또는 출력 기능을 유효하게 제공하도록 동작하는 컴퓨팅 장치.
  12. 삭제
  13. 제1항에 있어서,
    상기 입출력 시스템은 (i) 상기 하나 이상의 내부 입출력 장치의 제1 내부 입출력 장치의 이용, (ii) 상기 하나 이상의 외부 입출력 장치의 제1 외부 입출력 장치의 이용 및 (iii) 상기 하나 이상의 외부 입출력 장치의 제2 외부 입출력 장치의 이용 사이를 유효하게 스위칭하도록 동작하는 컴퓨팅 장치.
  14. 제11항에 있어서,
    상기 컴퓨팅 장치의 상기 하나 이상의 내부 입출력 장치를 통해서 상기 하나 이상의 입력 및/또는 출력 기능을 유효하게 제공할지 또는 상기 하나 이상의 다른 컴퓨팅 장치의 상기 하나 이상의 외부 입출력 장치를 통해서 상기 하나 이상의 입력 및/또는 출력 기능을 유효하게 제공할지를 결정하는 것은,
    상기 하나 이상의 내부 입출력 장치가 상기 컴퓨팅 장치의 상기 하나 이상의 내부 입출력 장치에 의해 지원되는지 여부에 대한 결정;
    상기 컴퓨팅 장치의 상기 하나 이상의 내부 입출력 장치에 의해 상기 하나 이상의 내부 입출력 장치가 지원되는 것으로 결정할 때, 상기 하나 이상의 내부 입출력 장치를 통해서 상기 하나 이상의 내부 입출력 장치를 제공할지 여부에 대한 결정; 및
    상기 컴퓨팅 장치의 상기 하나 이상의 내부 입출력 장치에 의해 상기 하나 이상의 내부 입출력 장치가 지원되지 않는 것으로 결정할 때, 상기 하나 이상의 내부 입출력 장치가 상기 하나 이상의 다른 컴퓨팅 시스템에 의해서 지원되는지 여부에 대한 결정 중 하나 이상을 포함하는 컴퓨팅 장치.
  15. 제14항에 있어서,
    상기 하나 이상의 내부 입출력 장치를 통해서 상기 하나 이상의 내부 입출력 장치를 제공할지 여부에 대한 결정은,
    상기 하나 이상의 내부 입출력 장치를 이용하는 것과 관련된 재정적 비용;
    상기 하나 이상의 내부 입출력 장치의 현재 이용; 및
    상기 하나 이상의 외부 입출력 장치에 액세스하기 위한 현재 네트워크 대역폭 중 하나 이상에 기반하여 결정되는 컴퓨팅 장치.
  16. 제1항에 있어서,
    상기 컴퓨팅 장치는 전자제품이고, 상기 하나 이상의 다른 컴퓨팅 장치는 다른 전자 제품인 컴퓨팅 장치.
  17. 하나 이상의 내부 입출력 장치를 포함하는 컴퓨팅 시스템에서, 실행가능 컴퓨터 코드로 하나 이상의 입력 및/또는 출력 기능들을 제공하는 컴퓨터 구현 방법으로서,
    상기 실행가능 컴퓨터 코드로부터 상기 하나 이상의 입출력 기능에 대한 입출력 요청을 수신하는 단계 - 상기 입출력 요청은 다른 컴퓨팅 장치의 외부 입출력 장치 또는 다른 컴퓨팅 장치로 명시적으로 어드레스 지정되지 않음-;
    상기 내부 또는 외부 입출력 장치의 적어도 하나의 컴퓨팅 요소를 포함하는 기준에 기초하여 상기 컴퓨팅 시스템의 상기 하나 이상의 내부 입출력 장치를 통해서 상기 하나 이상의 입력 및/또는 출력 기능을 유효하게 제공할지 또는 하나 이상의 다른 컴퓨팅 시스템의 하나 이상의 외부 입출력 장치를 통해서 상기 하나 이상의 입력 및/또는 출력 기능을 유효하게 제공할지 여부를 결정하는 단계;
    상기 하나 이상의 내부 입출력 장치를 통해서 상기 하나 이상의 입력 및/또는 출력 기능을 유효하게 제공하는 것으로 결정할 때, 상기 하나 이상의 내부 입출력 장치를 통해서 상기 하나 이상의 입력 및/또는 출력을 유효하게 제공하는 단계; 및
    상기 하나 이상의 외부 입출력 장치를 통해서 상기 하나 이상의 입력 및/또는 출력 기능들을 유효하게 제공하는 것으로 결정할 때, 상기 하나 이상의 외부 입출력 장치를 통해서 상기 하나 이상의 입력 및/또는 출력을 유효하게 제공하는 단계를 포함하는 컴퓨터 구현 방법.
  18. 제17항에 있어서,
    상기 컴퓨팅 시스템은 하나 이상의 컴퓨팅 장치를 포함하고, 상기 하나 이상의 다른 컴퓨팅 시스템은 하나 이상의 다른 컴퓨팅 장치를 포함하는 컴퓨터 구현 방법.
  19. 제18항에 있어서,
    상기 컴퓨팅 시스템은 제1 컴퓨팅 장치를 포함하고,
    상기 실행가능 컴퓨터 코드는 상기 제1 컴퓨팅 장치에 의해 실행되는 컴퓨터 애플리케이션 프로그램을 포함하고, 상기 컴퓨터 구현 방법은,
    상기 제1 컴퓨팅 장치에서 동작하는 상기 컴퓨터 애플리케이션 프로그램에 의해서 상기 내부 입출력 장치로부터 상기 하나 이상의 입출력 기능을 요청하는 단계; 및
    제2 컴퓨팅 장치의 하나 이상의 외부 입출력 장치를 이용하여 상기 하나 이상의 입출력 기능을 상기 컴퓨터 애플리케이션 프로그램에 제공함으로써, 상기 컴퓨터 애플리케이션 프로그램이 특정하게 상기 제2 컴퓨팅 장치에 요청하거나 또는 특정하게 상기 외부 입출력 장치에 요청하지 않으면서 상기 외부 입출력 장치를 이용하여 상기 입출력 기능을 제공하는 단계를 더 포함하는 컴퓨터 구현 방법.
  20. 컴퓨팅 시스템에서 실행되는 컴퓨터 애플리케이션 프로그램으로 하나 이상의 입력 및/또는 출력 기능을 제공하는 실행가능 컴퓨터 프로그램 코드를 저장하는 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨팅 시스템은 하나 이상의 내부 입출력 장치를 포함하고,
    상기 컴퓨터 판독가능 저장 매체는,
    상기 하나 이상의 입출력 기능에 대하여 상기 컴퓨터 애플리케이션 프로그램으로부터 입출력 요청을 수신하도록 동작하는 실행가능 컴퓨터 프로그램 코드 - 상기 입출력 요청은 다른 컴퓨팅 장치 또는 다른 컴퓨팅 장치의 외부 입출력 장치로 특정하게 어드레스 지정되지 않음 - ;
    상기 내부 또는 외부 입출력 장치의 적어도 하나의 컴퓨팅 요소를 포함하는 기준에 기초하여 상기 컴퓨팅 시스템의 상기 하나 이상의 내부 입출력 장치를 통해서 상기 하나 이상의 입력 및/또는 출력 기능을 유효하게 제공할지 또는 상기 하나 이상의 다른 컴퓨팅 시스템의 하나 이상의 외부 입출력 장치를 통해서 상기 하나 이상의 입력 및/또는 출력 기능을 유효하게 제공할지 여부를 결정하도록 동작하는 실행가능 컴퓨터 프로그램 코드;
    상기 하나 이상의 내부 입출력 장치를 통해서 상기 하나 이상의 입력 및/또는 출력 기능을 유효하게 제공하는 것으로 결정할 때, 상기 하나 이상의 내부 입출력 장치를 통해서 상기 하나 이상의 입력 및/또는 출력 기능을 유효하게 제공하도록 동작하는 실행가능 컴퓨터 프로그램 코드; 및
    상기 하나 이상의 외부 입출력 장치를 통해서 상기 하나 이상의 입력 및/또는 출력 기능을 유효하게 제공하는 것으로 결정할 때, 상기 하나 이상의 외부 입출력 장치를 통해서 상기 하나 이상의 입력 및/또는 출력 기능을 유효하게 제공하도록 동작하는 실행가능 컴퓨터 프로그램 코드를 포함하는 컴퓨터 판독가능 저장 매체.
KR1020090087595A 2009-05-12 2009-09-16 다수 개의 컴퓨팅 시스템 및/또는 환경들에서의 입출력 자원들의 공유 KR101614920B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/464,507 2009-05-12
US12/464,507 US20100293559A1 (en) 2009-05-12 2009-05-12 Sharing input/output (i/o) resources across multiple computing systems and/or environments

Publications (2)

Publication Number Publication Date
KR20100122431A KR20100122431A (ko) 2010-11-22
KR101614920B1 true KR101614920B1 (ko) 2016-04-29

Family

ID=43069563

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090087595A KR101614920B1 (ko) 2009-05-12 2009-09-16 다수 개의 컴퓨팅 시스템 및/또는 환경들에서의 입출력 자원들의 공유

Country Status (2)

Country Link
US (1) US20100293559A1 (ko)
KR (1) KR101614920B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9686171B1 (en) * 2013-07-22 2017-06-20 Veritas Technologies Systems and methods for attributing input/output statistics networks to region-mapped entities
KR101996896B1 (ko) 2014-12-29 2019-07-05 삼성전자주식회사 가상 디바이스 드라이버를 이용한 리소스 공유 방법 및 그 전자 디바이스
US10609130B2 (en) 2017-04-28 2020-03-31 Microsoft Technology Licensing, Llc Cluster resource management in distributed computing systems

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070192518A1 (en) 2006-02-14 2007-08-16 Aarohi Communications, Inc., A California Corporation Apparatus for performing I/O sharing & virtualization
WO2009025381A1 (ja) 2007-08-23 2009-02-26 Nec Corporation I/oシステムおよびi/o制御方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2938104B2 (ja) * 1989-11-08 1999-08-23 株式会社日立製作所 共有資源管理法方および情報処理システム
US6061794A (en) * 1997-09-30 2000-05-09 Compaq Computer Corp. System and method for performing secure device communications in a peer-to-peer bus architecture
US6711629B1 (en) * 1999-10-18 2004-03-23 Fisher-Rosemount Systems, Inc. Transparent support of remote I/O in a process control system
US6997803B2 (en) * 2002-03-12 2006-02-14 Igt Virtual gaming peripherals for a gaming machine
US7444505B2 (en) * 2004-04-22 2008-10-28 At&T Intellectual Property I, L.P. Method, system and software for maintaining network access and security
KR20090011113A (ko) * 2007-07-25 2009-02-02 한국전자통신연구원 손목 시계형 휴대용 단말기
US20100180055A1 (en) * 2009-01-13 2010-07-15 Lyon Geoff M Monitor sharing system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070192518A1 (en) 2006-02-14 2007-08-16 Aarohi Communications, Inc., A California Corporation Apparatus for performing I/O sharing & virtualization
WO2009025381A1 (ja) 2007-08-23 2009-02-26 Nec Corporation I/oシステムおよびi/o制御方法

Also Published As

Publication number Publication date
US20100293559A1 (en) 2010-11-18
KR20100122431A (ko) 2010-11-22

Similar Documents

Publication Publication Date Title
US11416275B2 (en) Techniques for migration paths
US10628194B2 (en) Techniques for data migration
US9413683B2 (en) Managing resources in a distributed system using dynamic clusters
EP1989635B1 (en) Migrating a virtual machine that owns a resource such as a hardware device
US20080104586A1 (en) Allowing Virtual Machine to Discover Virtual Status Thereof
US20100115510A1 (en) Virtual graphics device and methods thereof
US20130072260A1 (en) Methods and apparatuses for facilitating sharing device connections
US20110219373A1 (en) Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform
JPWO2008111448A1 (ja) サーバ機能切替え装置、方法及びプログラム、並びにシンクライアントシステム及びサーバ装置
US20160335109A1 (en) Techniques for data migration
US20230222469A1 (en) System and method for distributed enforcement of configuration limitations
JP2004258840A (ja) 仮想化されたi/oデバイスをもつ計算機システム
CN116257320B (zh) 一种基于dpu虚拟化配置管理方法、装置、设备及介质
US9424205B2 (en) System and method for SATA virtualization and domain protection
US9699093B2 (en) Migration of virtual machine based on proximity to peripheral device in NUMA environment
US11567884B2 (en) Efficient management of bus bandwidth for multiple drivers
KR101614920B1 (ko) 다수 개의 컴퓨팅 시스템 및/또는 환경들에서의 입출력 자원들의 공유
US10599444B2 (en) Extensible input stack for processing input device data
Ming Analysis and a case study of transparent computing implementation with UEFI
CN110383255B (zh) 用于管理对物理设备的客户分区访问的方法和计算设备
US20240004680A1 (en) CPU Core Off-parking
WO2019139738A1 (en) Extensible input stack for processing input device data
CN112005217A (zh) 服务于请求的独立线程api调用
CN114238236A (zh) 共享文件的访问方法、电子设备及计算机可读存储介质
US20240004679A1 (en) Accelerating Networking by Multiplexing Driver Data Paths

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