KR101020392B1 - 논리적 파티션 사이에서의 운용 시스템의 커널 공유 - Google Patents

논리적 파티션 사이에서의 운용 시스템의 커널 공유 Download PDF

Info

Publication number
KR101020392B1
KR101020392B1 KR1020060119607A KR20060119607A KR101020392B1 KR 101020392 B1 KR101020392 B1 KR 101020392B1 KR 1020060119607 A KR1020060119607 A KR 1020060119607A KR 20060119607 A KR20060119607 A KR 20060119607A KR 101020392 B1 KR101020392 B1 KR 101020392B1
Authority
KR
South Korea
Prior art keywords
kernel
logical
computer
partition
data structure
Prior art date
Application number
KR1020060119607A
Other languages
English (en)
Other versions
KR20070062412A (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 KR20070062412A publication Critical patent/KR20070062412A/ko
Application granted granted Critical
Publication of KR101020392B1 publication Critical patent/KR101020392B1/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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment

Abstract

복수의 논리적 파티션에 의해 이용되는 커널 유형을 파티션 관리기에 설치하는 단계; 상기 복수의 논리적 파티션 각각에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조를 상기 파티션 관리기에 설치하는 단계; 및 상기 논리적 파티션에 대한 상기 커널에 의해 상기 일반 데이터 구조에 따른 커널 서비스를 제공하는 단계를 포함하는 논리적 파티션 사이에서 운용 시스템의 커널을 공유하는 방법을 제공한다.
논리적 파티션, 파티션 관리기, 일반 데이터 구조, 커널, 논리적 프로세서, 물리적 프로세서

Description

논리적 파티션 사이에서의 운용 시스템의 커널 공유{SHARING A KERNEL OF AN OPERATING SYSTEM AMONG LOGICAL PARTITIONS}
도 1은 본 발명의 실시예에 따라 논리적 파티션 사이에서 운용 시스템의 커널을 공유하는 데에 유용한 예시의 컴퓨터를 포함하는 자동 컴퓨팅 기기의 블럭도를 나타낸다.
도 2는 본 발명의 실시예에 따라 논리적 파티션 사이에서 운용 시스템의 커널을 공유하기 위한 예시의 시스템을 설명하는 기능 블럭도를 나타낸다.
도 3a는 본 발명의 실시예에 따라 논리적 파티션 사이에서 운용 시스템의 커널을 공유하기 위한 예시의 스레드 상태를 나타내는 상태도를 나타낸다.
도 3b는 본 발명의 실시예에 따라 커널을 공유하는 컴퓨터 시스템의 가상 프로세서를 스케줄링하기 위한 예시의 가상 프로세서 상태를 나타내는 상태도이다.
도 4는 본 발명의 실시예에 따라 논리적 파티션 사이에서 운용 시스템의 커널을 공유하기 위한 다른 예시의 시스템을 설명하는 기능 블럭도를 나타낸다.
도 5는 본 발명의 실시예에 따라 논리적 파티션 사이에서 운용 시스템의 커널을 공유하기 위한 예시의 방법을 나타내는 플로우챠트이다.
도 6은 본 발명의 실시예에 따라 논리적 파티션 사이에서 운용 시스템의 커널을 공유하기 위한 다른 예시의 방법을 설명하는 플로우챠트이다.
도 7a는 논리적 파티션에 의한 이용을 위해 컴퓨터 시스템 상에서 이용 가능한 컴퓨터 리소스를 지정하기 위해 커널에 글로벌하게 이용 가능한 데이터 구조의 개략도를 나타낸다.
도 7b는 논리적 파티션에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조의 개략도를 나타낸다.
도 8는 본 발명의 실시예에 따라 논리적 파티션 사이에서 운용 시스템의 커널을 공유하기 위한 다른 예시의 방법을 나타내는 플로우챠트이다.
도 9는 본 발명의 실시예에 따라 논리적 파티션 사이에서 운용 시스템의 커널을 공유하기 위한 다른 예시의 방법을 나타내는 플로우챠트이다.
<도면의 주요 부분에 대한 간단한 설명>
106 : 논리적 프로세서
122 : 가상 프로세서
130, 132, 156 : 물리적 프로세서
154, 155 : 운용 시스템
416 : 커널
420 : 일반 데이터 구조
422 : 파티션 관리기
426 : 글로벌 데이터 구조
510 : 포인터
본 발명은 데이터 처리에 관한 것으로, 더욱 특히 논리적 파티션 사이에서 운용 시스템의 커널을 공유하기 위한 방법, 시스템 및 제품에 관한 것이다.
스레드는 다중 스레드형 (multi-threaded) 컴퓨터 상에서의 소프트웨어 실행 유닛이다. 즉, 스레드는 컴퓨터 시스템에서 실행가능한 작업 실체이다. 이런 컴퓨터에서, 소프트웨어 프로그램은 소프트웨어 프로그램의 실행에 필요한 프로세스 레지스터, 코드 세그먼트 및 오프세트 레지스터, 데이터 세그먼트 및 오프세트 레지스터, 플랙 레지스터, 명령 포인터 레지스터, 프로그램 카운터 등을 포함하는 "프로세스"로 불리는 실행 단위로 실행된다. 효율을 위해, "프로세스"는 또한 스레드로 체계화되고, 이 때 프로세스의 각 스레드는 스레드가 프로세스의 그 외 모든 스레드 사이에서 메모리를 공유한다는 것을 제외하고 실행에 필요한 모든 속성을 개별적으로 소유하므로, 이에 의해 운용 시스템의 스레드 간의 스위치 ('컨텍스트 스위치')의 오버헤드를 줄일 수 있다.
두 모드의 다중 스레딩이 이 명세서에서 논의된다: 동시성 다중 스레딩 ("SMT") 및 단일 스레드형 ("ST")의 다중 스레딩. ST 다중 스레딩은 시간 멀티플렉스된 다중 스레딩, 즉 타임 슬라이스 (time slice)나 시간 할당량을 이용한 다중 스레딩이다. ST 모드에서, 개별의 스레드와 가상 프로세서 둘 다는 시간의 세그먼트에 할당된 프로세서의 연산 용량의 일부에 할당되고, 이들 각각은 "타임 슬라이스"나 "시간 퀀텀"으로 불린다.
어떤 프로세서는 하나 이상의 스레드로부터 컴퓨터 프로그램 명령을 동시에 수용하는데, 이것이 "동시성 다중 스레딩"이나 "SMT"로 불리는 특성이다. SMT의 아이디어는 다중 스레드형 작업 부하의 다수의 스레드 사이에서 칩 상의 프로세서 하드웨어를 공유한다는 것이다 SMT는 복수의 개별적 스레드가 하나의 처리 주기에서 하나의 물리적 프로세서에 명령을 발하는 기술이다. 종래의 프로세서 아키텍처는 한번에 하나의 스레드로부터만 명령을 프로세서에 발한다. 여기에 설명되어진 SMT를 구현하는 프로세서의 일 예는 IBM의 Power5TM 프로세서이다.
SMT는 각각 하나 이상의 실행 스레드로부터 명령을 동시에 수용할 수 있는 물리적 프로세스들에서 실행된다. 또한 SMT 모드에서, 가상 프로세서와 가상 프로세서 상에서 실행되는 스레드 둘 다가 타임 슬라이스로 지정될 수 있다. SMT 모드에서 가상 프로세서 상에서의 실행 스레드는 논리적 프로세서 상에서 실행되는 것으로 보일 수 있다. 따라서 SMT 모드에서 물리적 프로세서 상에서 실행되는 가상 프로세서는 하나 이상의 논리적 프로세서를 지원하는 것으로 보일 수 있다. 스레드가 ST 모드나 SMT 모드에서 실행되든지, 논리적 프로세서 상에서 실행되는 스레드는 프로세서의 논리적 또는 가상 특성을 알 수 없고 이를 통상의 프로세서로 보게 된다.
멀티프로세싱은 파티션 마다 ST 모드나 SMT 모드에 다중 논리적 파티션을 지원하는 컴퓨터에서 구현되다. 각 파티션은 통상적으로 개별의 커널을 포함하는 전체 개별의 운용 시스템을 구현한다. 커널의 단일의 인스턴스나 화상은 메모리 리 소스를 소모하고, 이런 화상의 부가적인 카피는 다수의 메모리 리소스를 소모한다. 파티션의 개수와 이에 따라 커널 화상의 개수가 많아지면, 메모리 소모가 시스템 관리시 제한 요소가 될 수 있다.
논리적 파티션 사이에서 운용 시스템의 커널을 공유하여, 이로 인해 메모리와 그 외 시스템 리소스의 소모를 줄일 수 있는 방법, 시스템 및 컴퓨터 프로그램 제품이 개시된다. 본 발명의 실시예에 따라 논리적 파티션 사이에서 운용 시스템의 커널을 공유하기 위한 방법, 시스템 및 컴퓨터 프로그램 제품은 복수의 논리적 파티션에 의해 이용되는 커널 유형을 파티션 관리기에 설치하고; 복수의 논리적 파티션 각각에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조를 파티션 관리기에서 설치하고; 일반 데이터 구조에 따른 커널 서비스를 논리적 파티션에 대한 커널에 의해 제공하는 단계를 포함한다.
본 발명의 상술 및 그 외 목적, 특성 및 장점들은 동일한 참조 부호가 본 발명의 예시의 실시예의 동일한 부분을 나타내고 있는 첨부한 도면에 나타낸 바와 같이 본 발명의 예시의 실시예에 대한 다음 특정 설명으로부터 명백하게 될 것이다.
본 발명의 실시예에 따라 논리적 파티션 사이에서 운용 시스템의 커널을 공유하기 위한 예시의 방법, 시스템 및 제품이 도 1에서 시작하여 첨부한 도면을 참조하여 설명된다. 본 발명에 따라 논리적 파티션 사이에서 운용 시스템의 커널을 공유하는 것은 자동 컴퓨팅 기기, 즉 하나 이상의 컴퓨터 상에서 구현된다. 도 1 은 본 발명의 실시예에 따라 논리적 파티션 사이에서 운용 시스템의 커널을 공유하는 데에 유용한 예시의 컴퓨터(152)를 포함하는 자동 컴퓨팅 기기의 블럭도를 나타낸다. 도 1의 컴퓨터(152)는 몇개의 물리적 프로세서(156) 뿐만 아니라 물리적 프로세서 및 그 외 컴퓨터의 다른 구성 요소에 시스템 버스(160)를 통해 연결된 랜던 액세스 메모리 ("RAM")(168)를 포함한다.
RAM(168)에는 논리적 파티션(408), 어플리케이션 프로그램(412), 운용 시스템(154), 논리적 프로세서(106), 파티션 관리기(422), 커널(416), 및 가상 프로세서(122)가 저장된다. 논리적 파티션 ("LPAR)(408)은 컴퓨터 기능이 둘 이상의 개별적 컴퓨터인 것처럼 하기 위해 단일의 컴퓨터 내에서 컴퓨터 리소스의 분산을 가능하게 하는 데이터 구조와 서비스의 세트이다. 각 논리적 파티션에는 프로세서 시간, 메모리, 운용 시스템 등을 포함하는 독립 컴퓨터인 것 처럼 동작하는 데에 필요한 모든 리소스가 할당된다. 논리적 파티션과 논리적 파티션에 의해 어플리케이션에 이용할 수 있는 리소스는 때로 함께 "가상 머신"으로 불린다. 설명을 간소하게 하기 위해, 도 1의 시스템은 하나의 논리적 파티션만을 포함하지만, 본 발명의 실시예에 따라 논리적 파티션 사이에서 커널을 공유하는 시스템은 다수의 논리적 파티션을 지원할 수 있다.
응용 프로그램(412)은 유저 레벨의 컴퓨터 프로그램 코드의 모듈이다. 응용 프로그램은 운용 시스템에 의한 커널 호출로 컴퓨터 리소스에의 액세스를 성취해야 하는 비특권 코드이다.
운용 시스템(154)는 스레드를 스케줄하며 메모리 액세스, 입/출력 리소스에의 액세스 등을 포함하여, 시스템 리소스를 스레드에 이용 가능하게 하는 기능을 제공하는 시스템 소프트웨어의 층이다. 운용 시스템은 또한 컴퓨터 리소스에의 액세스를 위한 할당 및 인가를 제어한다. 운용 시스템은 키보드로부터의 입력을 인식하고, 디스플레이 스크린으로 출력을 보내고, 자기 디스크 드라이브 상의 파일과 디렉토리를 추적하고, 디스크 드라이브와 프린터 등의 주변 장치를 제어하는 등과 같이, 저 레벨의 기본 태스크를 실행한다. 운용 시스템은 또한 보안의 책임이 있어, 비인증된 유저가 시스템에 액세스하지 못하고, 스레드가 액세스 인가된 리소스만 액세스하는 것을 확실히 한다. 많은 운용 시스템 기능은 커널, 이 예에서, 공유 커널에 의해 구현된다. 본 발명의 실시예에 따라 논리적 파티션 사이에서 운용 시스템의 커널을 공유하는 데에 유용한 운용 시스템은 다중 스레딩 운용 시스템으로, 이의 예로는 UNIXTM, LinuxTM, Microsoft XPTM, AIXTM, IBM's i5os, 및 그 외 본 기술의 당업자에게 가능한 것들을 포함한다.
논리적 프로세서(106)는 실행용 스레드를 스케줄링하기 위한 운용 시스템의 구조이다. 즉, 운용 시스템(154)은 물리적 프로세서나 가상 프로세서에서 실행용 스레드를 스케줄링하는 것이 아니고, 논리적 프로세서(106)에서 실행용 스레드를 스케줄링한다. 논리적 프로세서에서 스레드를 스케줄링하게 되면 스레드의 관점에서 보면 스레드는 전체 논리적 파티션의 모든 리소스를 갖는 것으로 보이는 간편한 구조와 처리를 제공하게 된다. 가상 프로세서에는 물리적 프로세서의 기능이 할당된다. 그러나, 논리적 프로세서는 기기 상에서의 모든 다른 실행과 같이 부분적인 타임 슬라이스에서 물리적으로 실행하고 있다는 사실에도 불구하고, 논리적으로 전체 프로세서가 된다. 따라서, LPAR의 논리적 프로세서에서 실행되는 스레드는 그 관점에서 보면 전체 독립적인 컴퓨터의 모든 리소스를 갖는 것으로 보인다. 즉, 논리적 프로세서는 파티션에서 실행되는 운용 시스템의 디스패쳐 (dispatcher)가 스레드를 디스패치하는 대상이며, 가상 프로세서는 파티션 관리기에 의해 디스패치되는 것이다. ST 모드에서 동작하는 LPAR에서, 논리적 프로세서와 가상 프로세서는 각 가상 프로세서에 대해 하나의 논리 프로세서가 일 대 일 대응한다. SMT 모드에서 동작하는 LPAR에서, 논리적 프로세서와 가상 프로세서는 N 대 일 대응하고, 이 때 N은 가상 프로세서 상에서 지원되는 논리적 프로세서의 개수로, 즉 각 가상 프로세서에 대해 N개의 논리적 프로세가 대응한다.
가상 프로세서(122)는 논리적 파티션에 대한 프로세서 시간의 할당을 구현하는 데이터 구조와 컴퓨터 프로그램 명령으로 구성되는 서브시스템이다. 공유 층의 물리적 프로세서는 논리적 파티션에 대한 부분 물리적 프로세서의 (타임 슬라이스) 할당을 지원한다. 타임 슬라이스에서 공유된 이 부분 물리적 프로세서를 "가상 프로세서"로 부른다. 공유된 처리 층에 유지되는 물리적 프로세서는 논리적 파티션 사이에서 공유된다. 이 명세서의 예에서, 물리적 프로세서는 처리 단위에 따라 공유되고, 1.0 처리 단위는 하나의 물리적 프로세서의 처리 용량을 나타낸다. 가상 프로세서 상에서 실행되는 스레드를 할당하는 것은 통상 가상 프로세서의 논리적 프로세서에서 실행되는 스레드를 할당하여 실행된다. ST 모드에서, 각 가상 프로세서는 하나의 논리적 프로세서를 갖는다. 그러나 SMT 모드에서, 각 가상 프로세 서는 두개의 논리적 프로세서를 갖는다.
도 1의 파티션 관리기(422)는 논리적 파티션에서 실행되는 시스템 소프트웨어 층이다. 즉, 파티션 관리기(422)는 논리적 파티션과 물리적 프로세서를 포함하는 하부 컴퓨터 하드웨어, 즉 물리적 컴퓨터 구성 요소 사이에서 실행된다. 파티션 관리기는 다수의 논리적 파티션에서 다수의 운용 시스템과 어플리케이션을 구축하여 실행하는 것을 지원하고 가능하게 한다. 무엇보다도, 파티션 관리기는 유저또는 시스템 관리자의 구축 파티션, 가상 프로세서 및 논리적 프로세서를 지원한다. 다수의 논리적 파티션을 지원하는 컴퓨터에서의 운용 시스템의 커널이 논리적 프로세서 상에서 스레드를 스케줄하여 디스패치하는 것 같이, 파티션 관리기는 물리적 프로세서 상에서 가상 프로세서를 스케줄하여 디스패치한다. 논리적 파티션에서의 운용 시스템이 특정 어플리케이션이나 어플리케이션의 세트를 실행하는 데에 이용되기 때문에, 파티션은 하나의 컴퓨터에서 다수의 운용 시스템과 이들의 어플리케이션을 실행 가능하게 하여, 전체 하드웨어의 비용을 절감시킨다. 제조 및 테스트 시스템은 동일한 하드웨어에서 동시에 실행될 수 있다. 부가하여, 파티션 관리기가 다수의 논리적 파티션을 지원하므로, 윈도와 리눅스 등의 여러 운용 시스템은 동일한 하부 컴퓨터 하드웨어를 공유할 수 있다. 파티션 관리기는 "수퍼바이저", "가상 관리기", 또는 "가상 기기 모니터"로 불리는 소프트웨어의 종류이다.
도 1의 예에서, 파티션 관리기(422)는 복수의 논리적 파티션에 의해 이용되는 커널 유형(416)를 파티션 관리기에 설치하며 복수의 논리적 파티션 각각에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조(420)을 파티션 관리기에 설치할 수 있는 컴퓨터 프로그램 명령을 포함하는 하드웨어 지원을 갖는 컴퓨터 소프트웨어 모듈이다. 파티션 관리기(422)는 그 컨텐츠가 복수의 논리적 파티션 각각에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조(420)를 포함한다. 일반 데이터 구조(420)은 글로벌 데이터 구조(426)를 이용하여 구현된다. 글로벌 데이터 구조(426)는 비휘발성 메모리에 저장된 정보로부터 시스템 초기 프로그램 로딩 시간에 로딩된 구조인, "디바이스 트리"로 불리는 종류의 데이터 구조이다. 유닉스의 여러 형상으로, 예를 들어, 디바이스 트리는 저장 경로 위치 '/디바이스', 및 '/dev'에서 디스크 상에 저장된 정보로부터 로딩된다. 이 예에서, 글로벌 데이터 구조(426)는 파티션 관리기에서 커널에 글로벌하게 이용 가능하며 논리적 파티션에 의한 이용을 위해, 즉 논리적 파티션에서 실행되는 어플리케이션에 이용되도록 컴퓨터 시스템에서 이용 가능한 컴퓨터 리소스를 지정한다. 글로벌 데이터 구조(426)와 일반 데이터 구조(420)의 예는 도 7A 및 도 7B를 참조하여 이하 상세히 설명된다.
도 1의 예에서, 파티션 관리기(422)는 도시된 바와 같이, 논리적 파티션(408)에서 운용 시스템(154)으로부터 파티션 관리기로 제거(415)된 커널(416)을 포함한다. 커널은 운용 시스템의 중심이다. 커널은 특권 모듈이거나 '시스템 실행' 또는 '시스템 모니터'로 알려진 모듈이다. 커널은 어플리케이션 및 그 외 다른 운용 시스템 구성 요소에서의 실행 스레드를 대신하여 컴퓨터 시스템 하드웨어에 안정된 액세스를 제공하는 소프트웨어이다 - 메모리에의 액세스, 처리 용량, 입/출력 리소스 등을 포함. 커널은 또한 어프릴케이션 프로그램을 구성하는 실행 스 레드 뿐만 아니라 운용 시스템 프로세스를 스케줄한다. 커널은 또한 메모리 락 (memory locks), 신호 및 세마포어 (semaphore) 등의 프로세스간 통신과 동기화를 위한 서비스를 제공한다. 커널은 또한 하드웨어 앱스트랙션 (hardware abstraction) - 특정 유형의 모든 디바이스에 통상적인 명령의 세트 - 을 제공하여 어플리케이션과 운용 시스템의 다른 구성 요소에게 복잡성을 감추도록 한다. 하드웨어 앱스트랙션 구성 요소는 소프트웨어 드라이버에 따라 달라지므로 하드웨어 디바이스의 제조 사양에 특정적인 기능을 제공하게 된다. 요약하면, 커널은 다음의 커널 서비스를 제공한다:
·시스템 하드웨어에의 액세스를 제어 및 조정
·기초 앱스트랙션을 구현 및 지원: 프로세스, 스레드, 파일, 드라이브 등;
·시스템 리소스를 할당 및 스케줄: 메모리, 프로세서, 디스크, 파일 디스크립터, 프로세스 디스크립터, 스레드 디스크립터 등;
·시스템 리소스의 보안과 보호를 강화; 및
·시스템 호출로 서비스에 대한 유저와 어플리케이션 요청에 응답
도 1의 예에서, 커널(416)은 일반 데이터 구조(420)에 따라 논리적 파티션에 커널 서비스를 제공하도록 본 발명의 실시예에 따라 개선되었다. 부팅 시간에 종래의 커널은 이 종래의 커널이 운용 시스템에 설치되어 있는 경우 시스템의 모든 하드웨어 구성 요소 및 그 외 파티션에서 실행되는 어플리케이션과 그 외 운용 시스템 구성 요소에 이용 가능한 리소스를 지정하는 고유의 디바이스 트리를 로딩한다. 그러나, 커널(416)은 더 이상 하나의 파티션에는 위치하지 않는다. 커 널(416)은 파티션 관리기 공간으로 제거되어 동일한 유형의 운용 시스템과 커널을 이용하는 임의 개수의 논리적 파티션에 의해 이용될 수 있다. 이런 각 논리적 파티션은 컴퓨터 하드웨어의 여러 보완물을 필요로 한다. 파티션 관리기(422)는 각 논리적 파티션에 의해 이용하게 할당된 컴퓨터 하드웨어 및 그 외 이용 가능한 리소스를 지정하는 각 논리적 파티션에 일반 데이터 구조(420)를 제공한다.
도 1의 예에서, 컴퓨터 소프트웨어 구성 요소, 어플리케이션(412), 논리적 파티션(408), 논리적 프로세서(106), 운용 시스템(154), 파티션 관리기(422), 가상 프로세서(122), 커널(416) 등은 RAM(168)에 도시되어 있다. 그러나, 당업자라면 이런 소프트웨어의 많은 구성 요소들은 또한 비휘발성 메모리(166)에 저장될 수 있다는 것이 이해될 것이다. 도 1의 컴퓨터(152)는 프로세서(156)와 그 외 컴퓨터(152)의 구성 요소에 시스템 버스(160)를 통해 결합된 비휘발성 컴퓨터 메모리(166)를 포함한다. 비휘발성 컴퓨터 메모리(166)는 하드 디스크 드라이브(170), 광 디스크 드라이브(172), 전기적 소거 가능한 프로그래머블 판독 전용 메모리 공간 (소위 'EEPROM' 또는 '플래시' 메모리)(174), RAM 드라이브 (도시 생략)으로, 또는 당업자에게는 자명한 다른 종류의 컴퓨터 메모리로 구현될 수 있다.
도 1의 예시의 컴퓨터는 하나 이상의 입/출력 인터페이스 어댑터(178)를 포함한다. 컴퓨터의 입/출력 인터페이스 어댑터는 컴퓨터 디스플레이 스크린과 같은 디스플레이 장치(180)로의 출력과 키보드와 마우스 등의 유저 입력 장치(181)로부터의 유저 입력을 제어하기 위해, 예를 들어, 소프트웨어 드라이버 및 컴퓨터 하드웨어로 유저 지향 입/출력을 구현한다.
도 1의 예시의 컴퓨터(152)는 데이터 통신(184)를 다른 컴퓨터(182)로 구현하기 위한 통신 어댑터(167)를 포함한다. 이 데이터 통신은 예를 들어, IP 네트워크 등의 데이터 통신 네트워크로 - 당업자에게는 자명한 다른 방법으로도 - 실행된다. 통신 어댑터는 하나의 컴퓨터가 직접적으로나 네트워크를 통해 다른 컴퓨터로 데이터 통신을 송신하도록 하는 하드웨어 레벨의 데이터 통신을 구현한다. 본 발명의 실시예에 따라 목적지의 가용성을 판정하는 데에 유용한 통신 어댑터의 예는 유선 다이얼업 통신용 모뎀, 유선 네트워크 통신용 이더넷 (IEEE 802.3) 어댑터, 무선 네트워크 통신용 802.11b 어댑터가 있다.
더욱, 도 2는 본 발명의 실시예에 따라 논리적 파티션 사이에서 운용 시스템의 커널을 공유하기 위한 예시의 시스템을 설명하는 기능 블럭도를 나타낸다. 도 2의 시스템은 ST 모드에 하나(408) SMT 모드에 하나(410)인, 두 논리적 파티션을 포함한다.
도 2의 시스템은 논리적 파티션(408)에 대해 두개(106, 108), 논리적 파티션(410)에 대해 네 개(110, 112, 114, 116)인 6개의 논리적 프로세서를 포함한다. 도 2의 시스템은 또한 논리적 파티션(408)에 할당된 두 개(122, 124)와 논리적 파티션(410)에 할당된 두 개(126, 128)인 4개의 가상 프로세서를 포함한다. 도 2의 시스템은 또한 세 개의 물리적 프로세서(156, 130, 132)를 포함한다. 이 예에서, 세 개의 물리적 프로세서(156, 130, 132)의 처리 용량은 다음과 같이 논리적 파티션에 할당된다:
·물리적 프로세서(156)의 모든 처리 용량이 가상 프로세서(122)에 전부 할 당되어, 논리적 프로세서(106)는 물리적 프로세서(156) 전체가 이용 가능하다.
·물리적 프로세서(130)의 처리 용량의 절반이 가상 프로세서(124)에 할당되어, 논리적 프로세서(108)는 물리적 프로세서(130)의 절반을 타임 슬라이스에서 이용 가능하다.
·물리적 프로세서(130)의 처리 용량의 절반이 가상 프로세서(126)에 할당된다. 가상 프로세서(126)는 가상 프로세서(126)에 대해 두 논리적 프로세서(110, 112)를 갖는 SMT 모드에서 실행되는 논리적 파티션(410)에 할당된다. 논리적 프로세서(110) 및 논리적 프로세서(112) 각각은 물리적 프로세서(130)의 처리 용량의 4분의 1을 타임 슬라이스에서 이용 가능하다.
·물리적 프로세서(132)의 처리 용량 모두가 가상 프로세서(128)에 할당된다. 가상 프로세서(128)는 가상 프로세서(128)에 대해 두 논리적 프로세서(114, 116)를 갖는 SMT 모드에서 실행되는 논리적 파티션(410)에 할당된다. 논리적 프로세서(114) 및 논리적 프로세서(116) 각각은 물리적 프로세서(132)의 처리 용량의 절반을 타임 슬라이스에서 이용 가능하다.
도 2의 시스템은 파티션 관리기(422)를 포함한다. 도 2의 예에서, 파티션 관리기(422)는 복수의 논리적 파티션(408, 410)에 의해 이용되는 커널 유형(416)을 파티션 관리기에 설치하고, 복수의 논리적 파티션 각각에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조(420, 421)를 파티션 관리기에 설치하는 단계를 포함하는 본 발명의 실시예에 따른 논리적 파티션 사이에서 운용 시스템의 커널을 공유할 수 있는 컴퓨터 프로그램 명령을 포함한다.
도 2의 시스템은 논리적 파티션(408) 및 논리적 파티션(410) 각각에 하나씩 두 운용 시스템(154, 155)를 포함한다. 이 예에서, 어플리케이션이나 유저에게 직접 액세스 가능한 운용 시스템의 특성은 논리적 파티션에 남아 있는다. 이런 특성은 그래픽 유저 인터페이스 ('GUI')(190, 191)의 지원을 포함한다. 이런 특성은 또한 예를 들어, 운용 시스템 유틸리티와 라이브러리 기능에 대한 명령 라인 인터페이스를 제공하는 셀(shell; 192, 193)의 지원을 포함한다. 어플리케이션이나 유저에게 바로 액세스 가능한 운용 시스템 특성은 또한 예를 들어, 시스템 유틸리티(194, 195)를 포함한다. 시스템 유틸리티는 개발 또는 삭제된 파일을 형성하는 프로그램, 파일 시스템의 디렉토리를 형성하거나 네비게이트하는 프로그램, 환경 변수를 판독하여 설정하는 프로그램, 파일 내의 텍스트 검색 등, GUI 또는 셀을 통해 통상 액세스 가능한 시스템 관리용 프로그램을 포함한다.
어플리케이션이나 유저에게 직저 액세스 가능한 운용 시스템 특성은 시스템 호출(196, 197)의 라이브러리를 또한 포함한다. 시스템 호출 라이브러리는 호출 프로그램이 커널(416) 내측의 특권 소프트웨어 루틴 내로의 호출에 의해 하드웨어에 의한 서비스와 그 외 보호된 시스템 리소스에 액세스할 수 있도록 하는 노출 어플리케이션 프로그래밍 인터페이스 (API)를 노출시킨다. 이런 커널 영역 내의 특권 코드의 호출은 시스템 콜 라이브러리의 함수 내로부터 호출된 인터럽트나 소프트웨어 트랩에 의해 이루어진다. 시스템 호출 라이브러리 내의 함수 호출에의 액세스는 통상 하나 이상의 시스템 호출 라이브러리를 어플리케이션이나 유틸리티 또는 실행 시간에 동적으로 로딩 가능한 다른 라이브러리로 컴파일링하는 것으로 실 행된다.
논리적 파티션(408, 410)은 각각 논리적 파티션의 통상의 위치로부터 제거되어 동일한 커널 유형을 필요로 하는 논리적 파티션에 의해 이용하는 것이 가능한 파티션 관리기 영역에 설치되는 동일한 커널(416)을 공유한다. 커널(416)은 논리적 파티션에 커널 서비스를 제공하며, 이들 각각은 커널을 이용하는 논리적 파티션 각각에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조(420, 421)의 이용으로 여러 컴퓨터 리소스를 필요로 한다. 이 예에서, 커널(416)은 논리적 파티션(408, 410)에 각각 하나인 두 개의 일반 데이터 구조(420, 421)을 이용한다.
커널 서비스를 논리적 파티션에 제공하도록 일반 데이터 구조를 이용할 때, 커널(416)은 일반 데이터 구조의 사양을 구분하도록 간접적인 메모리 어드레싱을 구현한다. 이런 간접 어드레싱은 포인터, 일반 데이터 구조 자체에 대한 간접 어드레스 참조로 구현된다. 이런 식으로, 파티션 관리기가 논리적 파티션의 논리적 프로세서를 상태 실행하도록 디스패치할 때, 파티션 관리기는 이 논리적 파티션에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조에 대한 포인터를 커널에 제공한다. 이 파티션에서 유저 레벨 소프트웨어로부터의 시스템 호출에 응답하여 커널 서비스를 제공하면서, 커널은 포인터에 의해 어드레스된 일반 데이터 구조로부터의 그 파티션에 대한 리소스의 사양을 이용한다. 논리적 프로세서는 파티션 관리기가 그 하부 가상 프로세서를 디스패칭하는 것으로 디스패치된다. 도 2의 예에서, 가상 프로세서(122)를 디스패칭하는 것은 논리적 프로세서(106)를 디스패치한다. 그러나, 가상 프로세서(126)를 디스패칭하는 것은 SMT 모드에서 실행되는 논리적 파 티션(410)이 가상 프로세서 당 두 개의 논리적 프로세서를 갖기 때문에 논리적 프로세서(110, 112) 둘 다를 디스패치게 된다.
더욱 구체적인 예로: 커널(416)은 파티션 관리기(422)가 논리적 파티션(408)의 논리적 프로세서(106)를 상태 실행하도록 디스패치할 때, 커널을 이용하는 논리적 파티션 각각에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조(420, 421)의 이용으로 논리적 파티션에 커널 서비스를 제공할 수 있다. 파티션 관리기(422)는 그 논리적 파티션(408)에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조(420)에 대한 포인터(510)를 커널(416)에 제공한다. 포인터(510)는 일반 데이터 구조(420)의 시작 주소인 주소를 포함하고, 이 논리적 파티션(408)에 유저 레벨 소프트웨어로부터의 시스템 호출에 응답하여 커널 서비스를 제공하면서, 커널은 포인터(510)에 의해 어드레스된 일반 데이터 구조(420)로부터의 그 파티션에 대한 리소스의 사양을 이용한다.
유사하게, 파티션 관리기(422)가 논리적 파티션(410)의 논리적 프로세서(110, 112)를 상태 실행하도록 디스패치될 때, 파티션 관리기(422)는 그 논리적 파티션(410)에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조(421)에 대한 포인터(510)를 커널(416)에 제공한다. 포인터(510)는 일반 데이터 구조(421)의 시작 주소인, 주소를 포함하며, 그 논리적 파티션(410)의 유저 레벨 소프트웨어로부터의 시스템 호출에 응답하여 커널 서비스를 제공하면서, 커널은 포인터(510)에 의해 어드레스되는 일반 데이터 구조(421)로부터의 그 파티션에 대한 리소스의 사양을 이용한다.
각 경우, 논리적 파티션의 논리적 프로세서를 디스패칭할 때, 커널 서비스를 논리적 파티션에 대한 여러 사양의 리소스로 리디렉트하기 위해, 파티션 관리기(422)는 커널에 이용 가능한 포인터 주소를 유지해야 할 필요가 있다. 새로 디스패치된 논리적 프로세서가 바로 전의 것과 동일한 논리적 파티션으로부터 디스패치된 것이면, 포인터 주소는 이미 정확하게 세트된 것이다. 새로 디스패치된 논리적 프로세서가 바로 전의 것의 논리적 파티션 이외의 것이라면, 포인터 주소는 새로 디스패치된 논리적 프로세서의 논리적 파티션에 대한 컴퓨터 리소스를 지정하는 일반 데이터 구조를 가리키도록 리세트된다.
더욱, 도 3a는 본 발명의 실시예에 따라 논리적 파티션 사이에서 운용 시스템의 커널을 공유하기 위한 예시의 스레드 상태를 나타내는 상태도를 나타낸다. 도 3a의 버블은 드레스 상태를 나타낸다. 버블 사이의 화살표는 커널 기능으로 실행되는 상태 전이를 나타낸다. 도 3a에 나타낸 스레드 상태는 형성 상태(302), 준비 상태(304), 실행 상태(306), 대기 상태(308), 및 슬립 (sleep) 상태(310)을 포함한다. 스레드는 스레드에 대한 정보와 리소스를 수집하는 커널 시간을 부여하도록, 스레드가 다른 스레드의 요청시 먼저 형성될 때 형성 상태(302)에 임시로 위치한다. 커널이 실행할 스레드를 준비하자마자, '시작'(303)되는데, 즉 준비 상태(304)로 이동된다.
준비 상태(304)에서의 스레드는 실행 기회를 대기하는 준비 큐(ready queue; 도시 생략)에 큐된다. 어느 준비 스레드가 다음에 실행되는지를 결정하는 프로세스를 '스케줄링'으로 불린다. 많은 스케줄링 알고리즘, FIFO, 라운드 로빈 (Round Robin), 프라이오리티 (Priority) 등이 있으며, 이들 중에는 본 발명의 실시예에 따라 커널을 공유하는 시스템에 이용될 수 있다. 스레드를 준비 상태에서 실행 상태로 이동시키는 커널 기능을 디스패칭(312)으로 부른다. 사실상, '디스패칭', '실행', 및 '실행 상태중'는 일반적으로 동일한 것이다.
스레드가 디스패치될 때, 즉 실행 상태(306)일 때, 스레드는 현재 논리적 프로세서 상에서 실행되게 할당되어 있다. 스레드가 물리적으로 실행되고 있는지의 여부는 논리적 프로세서의 가상 프로세서가 파티션 관리기를 통해 현재 디스패치되는지, 즉 물리적 프로세서 상에서 타임 슬라이스에서 현재 실행하고 있는지에 따라 좌우된다. 논리적 프로세서의 준비 큐는 논리적 프로세서 상에서 실행하길 대기하는 준비 상태에서 하나, 둘 또는 그 이상의 스레드를 포함한다. 한번에 하나의 스레드만이 논리적 프로세서 상에서 실행 상태에 놓인다.
스레드는 선점 (preemption)이나 시간 종료에 의해, 논리적 프로세서의 소유를 유지할 수 없고, 실행 상태에서 준비 상태로 이동될 수 있다 (314). 스레드는 우선권이 더 높은 스레드가 논리적 프로세서에 대한 준비 큐에 들어갈 때 선점된다. 스레드는 전체 타임 슬라이스에 걸쳐, 논리적 프로세서의 소유를 유지하면, 즉 실행 상태에 유지되면 시간 종료된다.
스레드는 또한 시스템 호출(316)을 발하여 대기 상태(308)에 들어가는 것으로 실행 상태(306)에서 나올 수 있다 - 시스템 호출의 완성을 대기하기 위해. 이런 시스템 호출은 예를 들어, 특정한 시간 주기 동안 슬립하거나 대기하기 위한 의도적 요청, 디스크로부터 판독되거나 디스크에 기록될 데이터의 요청, 입/출력 리 소스로부터 판독되거나 여기에 기록될 데이터의 요청 등을 포함하여, 커널에 의해 제공되는 서비스의 요청일 수 있다.
다른 설명으로, 도 3B는 본 발명의 실시예에 따라 커널을 공유하는 컴퓨터 시스템에서 가상 프로세서를 스케줄링하기 위한 예시의 가상 프로세서 상태를 나타내는 상태도를 나타낸다. 도 3b의 버블은 가상 프로세서 상태를 나타낸다. 버블 사이의 화살표는 파티션 관리기의 기능으로 실행되는 상태 전이를 나타낸다. 도 3b에 나타낸 가상 프로세서 상태는 형성 상태(322), 준비 상태(324), 실행 상태(326), 대기 상태(328), 및 슬립 상태(330)를 포함한다. 가상 프로세서는 가상 프로세서에 대한 정보와 리소스를 모으는 파티션 관리기 시간을 허용하도록 통상 부팅시에 가상 프로세서가 먼저 형성될 때 형성 상태(322)에 임시로 놓이게 된다. 파티션 관리기가 실행할 가상 프로세서를 준비하자 마자, 가상 프로세서는 '시작'(322)되는데, 준비 상태(324)로 이동된다.
준비 상태(324)에서의 가상 프로세서는 실행할 기회를 대기하는 준비 큐(도시 생략)에서 큐된다. 파티션 관리기는 하나 이상의 스케줄링 알고리즘, 라운드 로빈 (Round Robin), 프라이오리티 등에 따라 실행하도록 가상 프로세서를 스케줄한다. 파티션 관리기는 가상 프로세서가 할당된 물리적 프로세서를 현재 실재로 가장 소유할만한 준비 큐로부터 하나의 가상 프로세서를 준비 상태에서 실행 상태로 디스패치한다(322). 한번에 하나의 가상 프로세서만이 물리적 프로세서 상에서 실행 상태에 놓인다.
가상 프로세서는 선점이나 시간 종료로 물리적 프로세서의 소유를 유지할 수 없고 실행 상태에서 준비 상태로 이동될 수 있다 (334). 가상 프로세서는 우선권이 더 높은 가상 프로세서가 물리적 프로세서에 대한 준비 큐에 들어갈 때 선점된다. 가상 프로세서는 전체 타임 슬라이스에 걸쳐 물리적 프로세서의 소유를 유지하는 경우, 즉 실행 상태로 유지하면 시간 종료된다.
가상 프로세서는 또한 시스템 호출을 발하고 대기 상태(328)에 들어가는 것으로 실행 상태(326)에서 나오게 된다 - 시스템 호출의 완성을 대기하기 위해. 이런 시스템 호출은 일정한 시주기 동안 슬립하거나 대기하는 의도적 요청, 디스크로부터 판독되거나 디스크에 기록될 데이터 요청, 입/출력 리소스로부터 판독되거나 여기에 기록될 데이터 요청 등을 포함한다. 가상 프로세서에서 실행되는, 즉 논리적 파티션의 논리적 프로세서에서 실행되는 스레드가 키보드 입력을 대기하거나 디스크로부터 파일을 판독하도록 시스템 호출을 발하게 되면, 가상 프로세서는 키스트로크에 이르거나 디스크 판독이 완성될 때 까지 단지 아무것도 행하지 않도록 가상 프로세서가 물리적 프로세서를 계속 점유할 필요가 없다고 결정하게 된다. 이 경우, 가상 프로세서는 일정한 주기의 오프 시간, 예를 들어 1/10초 동안 슬립(336)되게 한다. 가상 프로세서를 대기 상태에서 준비 상태로 하는 것은 가상 프로세서를 깨우는(318) 것이라고 할 수 있다.
더욱, 도 4는 본 발명의 실시예에 따라 논리적 파티션 사이에서 운용 시스템의 커널을 공유하기 위한 또 다른 예시의 시스템을 나타내는 기능 블럭도를 나타낸다. 설명을 간편하게 하기 위해서, 도 1의 예는 하나의 논리적 파티션만을 포함했다. 또한 간편한 설명을 위해, 도 2의 예시는 하나의 공유 커널만을 포함했다. 그러나, 도 4의 시스템은 세 개의 공유 커널 사이에서 공유하는 9개의 논리적 파티션을 포함하여, 본 발명의 실시예에 따라 커널을 공유하는 시스템은 임의 개수의 논리적 파티션 사이에서 다수의 커널을 공유한다는 사실을 설명한다. 도 4의 시스템은 논리적 파티션(408, 410)을 포함하고, 이들 각각은 커널(416)을 공유한다. 도 4의 시스템은 또한 논리적 파티션(434, 436, 438)을 포함하고, 이들 각각은 커널(430)을 공유한다. 도 4의 시스템은 또한 논리적 파티션(440, 442, 444, 446)을 포함하고, 이들 각각은 커널(432)을 공유한다.
도 4의 시스템에서, 파티션 관리기(422)는 인터럽트 처리기(448)를 갖고 각 커널(416, 430, 432)은 인터럽트 처리기(450, 452, 454)를 갖는다. 인터럽트 처리기는 시스템 호출을 중단하여 이를 중단 유형에 따른 서브루틴으로 보내는 보호된 소프트웨어 루틴이다. 디스크 I/O 서비스를 요청한 인터럽트는 디스크 드라이버로 보내진다. 키보드로부터 입력을 요청하는 인터럽트는 키보드 드라이버로 보내지는 등이다. 인터럽트 처리기에 의한 시스텝 호출의 인터셉션은 하드웨어에 의해 지원되며, 인터럽트 처리기의 주소가 저장되는 보호된 레지스터나 메모리 위치를 필요로 한다 - 즉 일반 유저 코드가 아닌 특권 코드만이 보호된 컴퓨터 리소스에의 액세스를 허용할 수 있도록 보호됨- . 그러나, 도 4의 시스템에서, 공유 커널은 하나의 논리적 파티션의 운용 시스템에 더 이상 구체화되지 않기 때문에, 특정한 시스템 호출과 특정한 커널 간에 일대일 관계가 없다. 따라서, 도 4의 시스템은 모든 인터럽트 처리에 대한 보호 레지스터나 메모리 변수를 파티션 관리기의 인터럽트 처리기(448)의 시작 주소로 설정함으로써 그 파티션 관리기(422)를 통해 모든 시스템 호출(456, 458, 460)을 벡터링하도록 구성된다. 파티션 관리기의 인터럽트 처리기(448)는 시스템 호출을 커널의 인터럽트 처리기로 보내어 (462, 464, 466), 먼저 인터럽트가 예를 들어, 표 1에 나타낸 것과 같은 데이터 구조를 이용하여 전달되게 되는 것이 어느 커널인지를 결정한다:
논리적 파티션 커널 구조 포인터
408 416 structPtr1
410 416 structPtr2
434 430 structPtr3
436 430 structPtr4
438 430 structPtr5
440 432 structPtr6
442 432 structPtr7
444 432 structPtr8
446 432 structPtr9
표 1의 각 레코드는 논리적 파티션 식별자, 커널 식별자 및 특정 논리적 파티션에 할당된 리소스를 지정하는 일반 데이터 구조에 대한 포인터와 관련된다. 파티션 관리기의 인터럽트 처리기(448)는, 논리적 파티션으로부터 시스템 호출을 인터셉트할 때, 논리적 파티션 식별자를 이용하여 이 표에서 시스템 호출을 보내야 하는 커널의 신원을 조사할 수 있다.
논리적 파티션에 대한 커널 식별자 및 일반 데이터 구조에 대한 포인터와 같이 관련시키는 표 1에서와 같은 구조는 이중 임무를 행한다. 파티션 관리기가 논리적 파티션의 논리적 프로세서를 상태 실행하도록 디스패치하고 그 논리적 파티션에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조에 대한 포인터를 공유 커널에 제공할 때, 파티션 관리기는 논리적 파티션의 신원을 이용하여 커널에 어느 포인터 값을 제공할지를 결정한다.
또한, 도 5는 복수의 논리적 파티션(408, 410)에 의해 이용되는 커널 유형(416)을 파티션 관리기(422)에 설치하는 단계(402)를 포함하는 본 발명의 실시예에 따라 논리적 파티션 사이에서 운용 시스템의 커널(416)을 공유하기 위한 예시의 방법을 설명하는 플로우챠트이다. 이런 커널을 설치하는 것은 디스크 드라이브 상에 부트 섹터를 갖는 커널을 설치하는 파티션 관리기의 서브루틴을 이용하여 실행되므로, 예를 들어, 부트 섹터는 커널에 대해 부트 시간에 액세스될 수 있다. 이런 서브루틴은 통상 파티션 관리기에 직접 결합되는 명령 컨솔을 통해 또는 일차 파티션을 통해 파티션 관리기에 의해 노출되는 GUI 툴이나 명령 라인 인터페이스를 통해 시스템 관리자나 그 외 인가 유저에 의해 액세스된다.
도 5의 방법은 복수의 논리적 파티션 각각에 할당된 컴퓨터 리소스를 특정한 일반 데이터 구조(420)를 파티션 관리기(422)에 설치하는 단계(404)를 포함한다. 일반 데이터 구조를 설치하는 것은 이 목적을 위해 개량된 파티션 관리기의 서브루틴을 이용하여 실행된다. 파티션 관리기는 통상 논리적 파티션을 형성하고 유지하기 위한 서브루틴을 제공한다. 이 서브루틴은 표 1과 도 8 및 9의 표(514)에서 나타낸 바와 같이 일반 데이터 구조를 형성하고 이들에 대한 포인터를 논리적 파티션 식별자와 관련시키는 기능을 포함한다. 이런 서브루틴은 통상 파티션 관리기에 직접 결합된 명령 콘솔을 통해서나 일차 파티션을 통해 파티션 관리기에 의해 노출된 GUI 툴이나 명령 라인 인터페이스를 통해 시스템 관리자나 그 외 인가된 유저에 의해 액세스된다.
도 5의 방법은 논리적 파티션에 대한 커널(416)에 의해 일반 데이터 구조에 따른 커널 서비스를 제공하는 단계(406)를 포함한다. 보통의 커널은 커널 자체 내에 커널이 운용 시스템의 일부로 실행하고 있는 파티션에 할당된 컴퓨터 리소스를 지정하는 데이터 구조를 보유한다. 커널이 그 운용 시스템 외부로 이동되며 본 발명의 실시예에 따라 파티션 사이에서 공유되게 개선되면, 커널은 파티션 관리기 공간의 커널 외부에 구축되어 유지되는 일반 데이터 구조로부터 파티션에 대한 컴퓨터 리소스에 관한 정보를 액세스하도록 수정된다. 논리적 파티션에서 실행되는 소프트웨어 어플리케이션(412, 414)로부터의 공유 커널(416)에 대한 시스템 호출은 통상적으로 커널에 의해 보호되어 관리되는 컴퓨터 리소스의 액세스나 이에 따른 서비스를 요청한다. 이런 공유 커널은 논리적 파티션에서 실행되는 소프트웨어로부터의 시스템 호출에 응답하여, 그 컨텐츠가 파티션에 의해 이용하도록 할당된 컴퓨터 하드웨어와 그 외 리소스를 지정하는 일반 데이터 구조(420)로부터의 파티션에 대한 컴퓨터 리소스에 관하여 필요 정보를 액세스한다.
또한, 도 6은 본 발명의 실시예에 따른 논리적 파티션 사이에서의 운용 시스템의 커널(416)을 공유하는 방법의 다른 예를 도시하는 플로우챠트이다. 도 6의 방법은 도 5의 방법과 유사하다. 즉, 도 6의 방법은 복수의 논리적 파티션(408, 410)에 의해 이용되는 커널 유형(416)을 파티션 관리기(422)에 설치하는 단계(402), 복수의 논리적 파티션 각각에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조(420)을 파티션 관리기(422)에 설치하는 단계(404), 및 일반 데이터 구조에 따라 커널 서비스를 제공하는 단계(406)을 포함하고, 이들 모두는 도 5의 방법과 관련하여 상술된 바와 같이 동작한다.
그러나, 도 6의 방법은 또한 전체 컴퓨터 시스템의 초기 프로그램 로딩시, 파티션 관리기의 커널에 글로벌하게 이용 가능한 데이터 구조(426)에서, 논리적 파티션에 의한 이용을 위해 컴퓨터 시스템에서 이용 가능한 컴퓨터 리소스를 지정하는 단계(424)를 포함한다. 초기 프로그램 로딩은 파워가 전체 컴퓨터 시스템에 초기에 인가될 때 발생하거나, 초기 프로그램 로딩은 전체 시스템의 리세트나 웜 리부팅 (warm reboot)시 발생할 수 있다. 상이점은 초기 프로그램 로딩이 논리적 파티션의 활성화가 아니고, 전체 시스템, 파티션 관리기 및 모든 활성 논리적 파티션의 리로딩이라는 것이다. 이 설명에서, 전체 시스템을 브링 업 (bring up)하는 것을 '초기 프로그램 로딩'으로 부르고, 논리적 파티션을 활성화하는 것을 논리적 파티션의 '부팅'으로 부른다.
또한, 도 7a는 논리적 파티션에 의해 이용하는 컴퓨터 시스템에서 이용 가능한 컴퓨터 리소스를 특정하기 위한 커널에 글로벌하게 이용 가능한 데이터 구조의 개략도를 나타낸다. 도 7a의 데이터 구조에 특정된 컴퓨터 리소스는 디스크 드라이브, 디스플레이 어댑터, IDE 컨트롤러, 1394 또는 '파이어와이어 (firewire)' 컨트롤러, 키보드, 마우스, 모뎀, 모니터 등을 포함한다. 도 7a의 데이터 구조는 '디바이스 트리', 비휘발성 메모리에 저장된 정보로부터 시스템 초기 프로그램 로딩시 로딩된 구조로 불리는 종류의 구조가다. 예를 들어 Unix의 여러 유형으로, 디바이스 트리는 경로 위치 '/devices' 및 '/dev'에서 디스크에 저장된 정보로부터 로딩된다. 이런 구조는 본 발명의 실시예에 따라 커널을 공유하는 시스템에서 파티션 관리기의 커널에 글로벌하게 이용 가능하게 되며 논리적 파티션의 이용을 위해, 즉 논리적 파티션에서 실행되는 어플리케이션과 그 외 소프트웨어에 의해 이용하기 위해 컴퓨터 시스템 상에서 이용 가능한 컴퓨터 리소스를 특정한다.
도 7a의 데이터 구조는 본 발명을 제한하고자 하는 것이 아니고 오직 설명을 위한 트리 구조로 설명된다. 논리적 파티션의 이용을 위해 컴퓨터 시스템 상에서 이용 가능한 컴퓨터 리소스를 지정하는 데이터 구조는 예를 들어, C 스타일 구조로 구현될 수 있다:
struct {
char DiskDrives[256];
char DisplayAdapters[256];
char IDE_Controller[256];
char IEEE_1394_Controllers[256];
char Keyboards[256];
char MiceAndOtherPointingDevices[256];
char Monitors[256];
char NetworkAdapters[256];
} Resources-systemGlobalStructure;
논리적 파티션의 이용을 위해 컴퓨터 시스템 상에서 이용 가능한 컴퓨터 리소스를 지정하는 데이터 구조는 어레이, 링크된 리스트, 테이블과 같은 C 스타일 구조로, 그리고 당업자에게는 자명한 그 외 종류의 구조로 구현될 수 있다.
부가하여, 도 6의 방법에서, 일반 데이터 구조를 설치하는 단계(404)는 파티션 관리기의 모든 커널에 글로벌하게 이용 가능한 리소스 사양(426)에 따라 논리적 파티션에 대한 부팅 시간에 일반 데이터 구조의 커널에 의해 부팅된 논리적 파티션에 의한 이용을 위해 할당된 컴퓨터 시스템의 컴퓨터 리소스를 지정하는 단계(428)을 포함한다. 이 리소스 사양(426)은 상술한 바와 같이 컴퓨터 상에서 이용 가능한 컴퓨터 리소스를 특정하기 위해 커널에 글로벌하게 이용 가능한 데이터 구조에 제공된다.
부팅된 논리적 파티션의 이용을 위해 할당된 컴퓨터 시스템의 컴퓨터 리소스를 지정하는 단계(428)는 논리적 파티션을 나타내는 데이터 구조에서 식별되는 리소스 사양을 글로벌 데이터 구조로부터 추출하여 실행된다. 각 논리적 파티션을 나타내는 데이터는 각 논리적 파티션이 일차 파티션을 통해서나 파티션 관리기에 직접 결합된 명령 콘솔을 통해서 파티션 관리기에 의해 노출된 GUI 툴이나 명령 라인 인터페이스를 통해 정의될 때 시스템 관리자나 그 외 인가된 유저에 의해 형성되게 된다. 이 예에서, 커널의 부트 루틴은 도 7a에서 나타낸 것과 같이 글로벌 데이터 구조로부터 논리적 파티션을 나타내는 데이터 구조로 식별되는 리소스 사양을 추출하고, 도 7b에 나타낸 일반 데이터 구조과 같은 논리적 파티션에 대한 일반 데이터 구조의 리소스 사양을 설비함으로써 부팅된 논리적 파티션의 이용을 위해 할당된 컴퓨터 시스템의 컴퓨터 리소스를 특정(428)하도록 개선된다.
또한, 도 7b는 논리적 파티션에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조의 개략도를 나타낸다. 도 7b의 데이터 구조는 '디바이스 트리'로 불리는 종류의 구조, 즉 비휘발성 메모리에 저장된 정보로부터 커널 부트 시간에 로딩된 구조가다. 예를 들어, Unix의 여러 유형으로, 디바이스 트리는 저장 경로 위치 '/디바이스', 및 '/dev'에서 디스크 상에 저장된 정보로부터 로딩된다
도 7b의 데이터 구조는 본 발명을 제한하고자 하는 것이 아니고 오직 설명을 위한 트리 구조로 설명된다. 논리적 파티션에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조는 예를 들어, C 스타일 구조로 구현될 수 있다:
struct {
char DiskDrives[256];
char DisplayAdapters[256];
char IDE_Controller[256];
char IEEE_1394_Controllers[256];
char Keyboards[256];
char MiceAndOtherPointingDevices[256];
char Monitors[256];
char NetworkAdapters[256];
...
} Resources-PartitionGenericStructure;
이런 구조는 파티션 관리기의 모든 공유 커널에의 데이터 액세스를 위해 동일한 인터페이스를 제공한다는 견지에서 보편적이다. 상기 C 스타일 구조는 논리적 파티션에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조의 일 예를 든 것이라면, 각 커널은 다음에 의해 형성되는 구조에 대한 포인터를 가질 수 있다:
struct*structPtr=&Resources-PartitionGenericStructure;
이 때 각 커널은 예를 들어, 다음에 의해 논리적 파티션에 대한 디스플레이 어댑터 사양을 액세스할 수 있다:
char*displayAdapterInfo=strcpy(structPtr->DisplayAdapters);
각 커널은 예를 들어, 다음에 의해 논리적 파티션에 대한 디스크 드라이브 사양을 액세스할 수 있다:
strcpy(diskDriveInfo, StructPtr->DiskDrives);
각 커널은 예를 들어, 다음에 의해 논리적 파티션에 대한 인티그레이티드 드라이브 일렉트로닉 ('IDE')을 갖는 디스크 드라이브에 대한 사양을 액세스할 수 있다:
strcpy(IDE_Info,structPtr->IDE_Controller);
참조로 검색되는 정보가 논리적 파티션마다 달라지지만 동일한 체계로 구현되는 동일한 유형의 정보에 관련하여, 이런 식이다. 논리적 파티션 마다의 차이는 structPtr의 값을 변형시켜 이루어진다. structPtr의 값은 이 값이 파티션 관리기에 의해 각 논리적 파티션에 대한 다른 일반 데이터 구조를 가리키도록 설정되기 때문에 각 논리적 파티션 마다 다르다. 이 예에서, 'structPtr'로 불리는 일반 데이터 구조에 대한 포인터를 이용하여, 공유 커널에 대한 structPtr의 값이 파티션 관리기가 커널을 이용하는 논리적 파티션의 논리적 프로세서를 디스패치할 때 마다 파티션 관리기에 의해 검사된다.
C 스타일 구조로서의 구현에 부가하여, 논리적 파티션에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조는 예를 들어, 논리적 파티션에 할당된 리소스의 유형에 대한 사양을 각각 포함하는 서브어레이에 대해 표준 오프세트를 갖는 어레이로 구현될 수 있다. 논리적 파티션에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조는 어레이, 링크된 리스트, 테이블과 같은 C 스타일의 구조로, 그리고 당업자에게는 명백한 다른 종류의 구조로 구현될 수 있다.
더욱, 도 8은 본 발명의 실시예에 따라 논리적 파티션 사이에서 운용 시스템의 커널(416)을 공유하기 위한 다른 예시의 방법을 설명하는 플로우챠트이다. 도 8의 방법은 도 5의 방법과 유사하다. 즉, 도 8의 방법은 복수의 논리적 파티션(408, 410)에 의해 이용되는 커널 유형(416)을 파티션 관리기(422)에 설치하는 단계(402), 복수의 논리적 파티션 각각에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조(420)을 파티션 관리기(422)에 설치하는 단계(404), 및 일반 데이터 구조에 따라 커널 서비스를 제공하는 단계(406)를 포함하고, 이들 모두는 도 5의 방법을 참조하여 상술된 바와 같이 동작한다.
그러나, 도 8의 방법은 커널(416)을 이용하는 논리적 파티션(408)의 논리적 프로세서(506)을 파티션 관리기(422)에 의해 상태 실행하도록 디스패칭하는 단계(502)를 포함한다. 파티션 관리기는 스케줄링 알고리즘에 따라, 물리적 프로세서에 대한 대기 큐에 대기 상태에서 대기하는 대응 가상 프로세서를 선택하고 이 가상 프로세서의 물리적 프로세서 소유를 허용함으로써 논리적 프로세서를 디스패치한다.
새로 디스패치된 논리적 프로세서 상의 논리적 파티션에서 실행되는 스레드에 의해 이루어지는 시스템 호출에 응답하여, 커널은 다수의 일반 데이터 구조 중 어느 것이 새로 디스패치된 논리적 프로세서의 논리적 파티션에 대한 컴퓨터 리소스를 특정하는지를 알 필요가 있다. 따라서 도 8의 방법은 파티션 관리기의 일반 데이터 구조(420)에 대한 포인터(510)을 커널에 제공하는 단계(504)를 포함하고, 일반 데이터 구조는 논리적 파티션에 할당된 컴퓨터 리소스, 즉 새로 디스패치된 논리적 프로세서의 논리적 파티션을 지정한다. 새로 디스패치된 논리적 프로세서는 그 바로 이전의 것, 즉 이 대응 가상 프로세서가 현재 실행하고 있는 물리적 프로세서를 그 가상 프로세서가 소유하지 않는 논리적 프로세서와 동일한 논리적 파티션으로부터 디스패치된 것이면, 포인터 주소는 이미 정확하게 세트되어 있다. 새로 디스패치된 논리적 프로세서가 그 바로 이전의 것의 논리적 파티션 이외의 논리적 파티션으로부터 디스패치된 것이면, 포인터 주소는 새로 디스패치된 논리적 프로세서의 논리적 파티션에 대한 컴퓨터 리소스를 지정하는 일반 데이터 구조를 가리키도록 리세트된다. 파티션 관리기는 표 1에서, 또는 도 8 및 9의 표(514)에서 나타낸 것과 같은 포인터 값과 파티션 신원과 관련시키는 데이터 구조의 논리적 파티션의 신원에 따라 조사함으로써 포인터에 대한 정확한 값을 알게 된다.
도 8의 방법은 논리적 파티션(408, 410)에서 실행되는 어플리케이션 프로그램(412, 414)으로부터의 커널의 커널 서비스(418)에 대한 파티션 관리기(422)의 시스템 호출을 통해 벡터링하는 단계(512)를 포함한다. 파티션 관리기는 파티션 관리기의 인터럽트 처리기(도 4의 448)의 시작 주소를 가리키도록 보호된 레지스터의 포인터 또는 모든 인터럽트 처리에 대한 보호된 메모리의 변수를 세트함으로써 커널에 대한 시스템 호출을 벡터링한다. 파티션 관리기의 인터럽트 처리기는 커널의 인터럽트 처리기(도 4에서 450, 452, 454)에 시스템 호출을 보내어, 먼저 인터럽트가 예를 들어, 상기 표 1이나 도 8 및 도 9의 표(514)에서 나타낸 것과 같은 데이터 구조를 이용하여 어느 커널에 보내지는지를 판정한다. 표 1의 각 레코드는 논리적 파티션 식별자와 커널 식별자를 관련시킨다. 파티션 관리자의 인터럽트 처리기는 논리적 파티션으로부터의 시스템 호출을 인터셉트할 때, 논리적 파티션의 신원을 이용하여 이 표에서 시스템 호출을 보낼 커널의 신원을 조사한다.
더욱, 도 9는 본 발명의 실시예에 따라 논리적 파티션 사이에서 운용 시스템의 커널(416)을 공유하는 다른 방법을 설명하는 플로우챠트이다. 도 9의 방법은 도 5의 방법과 유사하다. 즉, 도 9의 방법은 복수의 논리적 파티션(408, 410)에 의해 이용되는 커널 유형(416)을 파티션 관리기(422)에 설치하는 단계(402), 복수의 논리적 파티션 각각에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조(420)을 파티션 관리기(422)에 설치하는 단계(404), 및 일반 데이터 구조에 따라 커널 서비스를 제공하는 단계(406)을 포함하고, 이들 모두는 도 5의 방법과 관련하여 상술된 바와 같이 동작한다. 그러나, 도 9의 방법은 또한 커널 식별자를 업그레이드를 거친 논리적 파티션의 식별자(516)와 관련시키는 데이터 구조(514)의 커널 식별자(518)을 업데이트하는 단계(902)를 포함하여, 복수의 논리적 파티션(408, 410) 중 하나 이상 대신에 커널(416)을 업그레이드하는 단계(902)를 포함한다.
논리적 파티션 대신에 커널을 업그레이드하는 것을 도 4를 참조하여 더욱 설명한다. 도 4는 예시의 시스템이 이들 사이에 세 개의 공유 커널을 공유하는 9개의 논리적 파티션을 포함하는 본 발명의 실시예에 따라 논리적 파티션 사이에서 운영 시스템의 커널을 공유하기 위한 예시의 시스템을 도시하는 기능적 블럭도를 나타낸다. 설명의 목적으로 커널(430)은 운용 시스템의 버전용 커널이고, 커널(432)은 동일한 운용 시스템의 더욱 진보된 차후 버전용 커널이라고 가정한다. 논리적 파티션(434, 436)에서 실행되는 어플리케니션은 구 커널로 만족된다. 그러나, 시스템 관리자는 논리적 파티션(438)에서 실행되는 어플리케니션이 차후 버전의 커널의 새로운 특성의 액세스로 이익을 얻게 될 것이라고 판단한다. 관리자는 커널 식별자를 업그레이드를 거친 논리적 파티션의 식별자와 관련시키는 데이터 구조의 커널 식별자를 업데이트하여 논리적 파티션(438) 대신에 커널을 업그레이드(904)할 수 있다. 업데이트는 표 1에 의해 나타낸 것과 같은 데이터 구조를 업데이트하도록 GUI 툴을 제공하는 파티션 관리기의 컨솔에 대한 시스템 관리자의 로그온으로 이루어질 수 있다. 표 2는 업데이트 이후의 관련 데이터 값을 설명한다.
논리적 파티션 커널 구조 포인터
408 416 structPtr1
410 416 structPtr2
434 430 structPtr3
436 430 structPtr4
438 432 structPtr5
440 432 structPtr6
442 432 structPtr7
444 432 structPtr8
446 432 structPtr9
표 1과 표 2 사이의 유일한 차이점은 논리적 파티션(438)과 관련된 커널 식별자의 값으로, 이는 430에서 432로 업데이트되었다. 업그레이드를 거친 논리적 파티션의 이용을 위해 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조에 대한 포인터를 업데이트할 필요는 없다. 커널의 나중 버전으로 업그레이드된 논리적 파티션(438)은 업그레이드 이전에 이용했던 컴퓨터 리소스를 특정하기 위해 동일한 일반 데이터 구조를 계속 이용한다.
본 발명의 예시의 실시예는 논리적 파티션 사이에서 운용 시스템의 커널을 공유하기 위한 완전 기능형 컴퓨터 시스템의 컨텍스트에서 주로 기재된다. 그러나, 당업자라면 본 발명은 또한 어느 적당한 데이터 처리 시스템의 이용을 위해 신호 저장 매체 상에 배치된 컴퓨터 프로그램 제품으로 구체화될 수 있다는 것이 이해될 것이다. 이런 신호 저장 매체는 자기 매체, 광 매체, 또는 그 외 적합한 매체를 포함하여 기기 판독 가능 정보에 대한 전송 매체나 판독 가능 매체나 가능하다. 기록 가능 매체의 예로는, 하드 드라이브나 디스켓 내의 자기 디스크, 광 드라이브용 컴팩트 디스크, 자기 테이프, 및 그 외 당업자에는 자명한 것들을 포함한다. 전송 매체의 예로는 예를 들어, EthernetTM 등의 음성 통신 및 디지털 데이터 통신용 전화망, 및 인터넷 프로토콜과 월드 와이드 웹과 통신하는 네트워크를 포함한다. 당업자라면 적당한 프로그래밍 수단을 갖는 컴퓨터 시스템이 프로그램 제품으로 구체화되는 본 발명의 방법의 단계를 실행할 수 있다는 것이 바로 이해될 것이다. 당업자라면 이 명세서에서 기재된 예시의 실시예가 컴퓨터 하드웨어에서 설치되어 실행되는 소프트웨어에 관한 것이지만, 펌웨어나 하드웨어로 구현되는 다른 실시예가 본 발명의 영역 내에 있다는 것이 이해될 것이다.
상술한 설명으로부터 본 발명의 여러 실시예에에 대해서 그 진정한 정신에서 벗어나지 않고 수정 및 변형이 행해질 수 있다는 것이 이해될 것이다. 이 상세한 설명은 오직 설명을 위한 것이지 제한적인 의미로 생각되어서는 안된다. 본 발명의 영역은 다음 청구범위에 의해서만 제한되는 것이다.
본 발명은 논리적 파티션 사이에서 운용 시스템의 커널을 공유하기 위한 개선된 방법, 시스템 및 제품을 제공하는 효과가 있다.

Claims (20)

  1. 논리적 파티션들 사이에서 운용 시스템의 커널을 공유하기 위한 방법에 있어서:
    상기 방법은 다수의 논리적 파티션을 포함하는 단일 컴퓨터상에서 구현되며, 상기 다수의 논리적 파티션은 2 이상의 개별적 컴퓨터처럼 상기 단일 컴퓨터를 동작시키는 컴퓨터 시스템의 모듈을 포함하며, 상기 단일 컴퓨터는 또한 파티션 관리기를 포함하고, 상기 파티션 관리기는 상기 단일 컴퓨터상의 논리적 파티션들내의 운영 시스템들 및 어플리케이션들의 구축 및 동작을 위한 시스템 레벨 지원을 제공하는 컴퓨터 시스템의 모듈을 포함하며,
    상기 방법은,
    상기 다수의 논리적 파티션에 의해 이용되는 커널을 상기 파티션 관리기에 설치하는 단계와,
    상기 다수의 논리적 파티션 각각에 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조를 상기 파티션 관리기에 설치하는 단계와,
    상기 일반 데이터 구조에 따라 상기 커널이 상기 다수의 논리적 파티션에 커널 서비스를 제공하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 커널을 이용하는 논리적 파티션의 논리적 프로세서를 상기 파티션 관리기에 의해 상태 실행하도록 디스패치하는 단계; 및
    상기 파티션 관리기의 일반 데이터 구조에 대한 포인터를 상기 커널에 제공하는 단계 - 상기 일반 데이터 구조는 상기 논리적 파티션에 할당된 컴퓨터 리소스를 특정함 -
    를 더 포함하는 방법.
  3. 제1항에 있어서, 상기 논리적 파티션에서 실행되는 어플리케이션 프로그램으 로부터의 상기 커널의 커널 서비스에 대한 상기 파티션 관리기 시스템의 호출을 통해 벡터링하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서, 상기 파티션 관리기의 커널에 글로벌하게 이용 가능한 데이터 구조에서 상기 컴퓨터 시스템의 초기 프로그램 로딩시, 논리적 파티션에 의해 이용되는 상기 컴퓨터 시스템 상에서 이용 가능한 컴퓨터 리소스를 지정하는 단계를 더 포함하는 방법.
  5. 제1항에 있어서, 상기 일반 데이터 구조를 설치하는 단계는 상기 파티션 관리기의 모든 커널에 글로벌하게 이용 가능한 리소스 사양에 따라 논리적 파티션의 부팅 시간에 일반 데이터 구조의 상기 커널에 의해서, 상기 부팅된 논리적 파티션에 의한 이용을 위해 할당된 상기 컴퓨터 시스템의 컴퓨터 리소스를 지정하는 단계를 더 포함하는 방법.
  6. 제1항에 있어서, 상기 복수의 논리적 파티션 중 하나 이상 대신에 상기 커널을 업그레이드하는 단계를 더 포함하고, 이 단계는 커널 식별자를 업그레이드를 거친 상기 논리적 파티션의 식별자와 관련시키는 데이터 구조의 커널 식별자 및 업그레이드를 거친 각 논리적 파티션에 의한 이용을 위해 할당된 컴퓨터 리소스를 지정하는 일반 데이터 구조에 대한 포인터를 업데이트하는 단계를 포함하는 방법.
  7. 논리적 파티션 사이에서 운용 시스템의 커널을 공유하기 위한 시스템에 있어서, 상기 시스템은 컴퓨터 프로세서 및 상기 컴퓨터 프로세서에 작동적으로 결합된 컴퓨터 메모리를 포함하고,
    상기 컴퓨터 메모리내에는,
    청구항 제1항 내지 제6항 중 어느 한 항에 따른 방법을 수행하도록 하는 컴퓨터 프로그램 명령어들이 배치되어 있는 시스템.
  8. 논리적 파티션 사이에서 운용 시스템의 커널을 공유하기 위한 컴퓨터 프로그램을 포함하는 컴퓨터 판독 가능 저장 매체에 있어서,
    상기 컴퓨터 프로그램은,
    청구항 제1항 내지 제6항 중 어느 한항에 따른 방법을 수행하도록 하는 컴퓨터 프로그램 명령어들을 포함하는, 컴퓨터 판독 가능 저장 매체.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020060119607A 2005-12-12 2006-11-30 논리적 파티션 사이에서의 운용 시스템의 커널 공유 KR101020392B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/301,113 US9189291B2 (en) 2005-12-12 2005-12-12 Sharing a kernel of an operating system among logical partitions
US11/301113 2005-12-12

Publications (2)

Publication Number Publication Date
KR20070062412A KR20070062412A (ko) 2007-06-15
KR101020392B1 true KR101020392B1 (ko) 2011-03-08

Family

ID=38140966

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060119607A KR101020392B1 (ko) 2005-12-12 2006-11-30 논리적 파티션 사이에서의 운용 시스템의 커널 공유

Country Status (3)

Country Link
US (1) US9189291B2 (ko)
KR (1) KR101020392B1 (ko)
CN (1) CN100495345C (ko)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9152582B2 (en) 2010-10-01 2015-10-06 Z124 Auto-configuration of a docked system in a multi-OS environment
US8726294B2 (en) * 2010-10-01 2014-05-13 Z124 Cross-environment communication using application space API
US7840763B2 (en) * 2004-03-12 2010-11-23 Sca Technica, Inc. Methods and systems for achieving high assurance computing using low assurance operating systems and processes
US9189291B2 (en) 2005-12-12 2015-11-17 International Business Machines Corporation Sharing a kernel of an operating system among logical partitions
US9201703B2 (en) * 2006-06-07 2015-12-01 International Business Machines Corporation Sharing kernel services among kernels
JP2008033392A (ja) * 2006-07-26 2008-02-14 Nec Corp 仮想計算機システム及びその動作方法
US7711946B2 (en) * 2006-08-07 2010-05-04 Oracle America, Inc. Method and apparatus for using filesystem operations to initiate device naming
US8024738B2 (en) * 2006-08-25 2011-09-20 International Business Machines Corporation Method and system for distributing unused processor cycles within a dispatch window
US8032899B2 (en) * 2006-10-26 2011-10-04 International Business Machines Corporation Providing policy-based operating system services in a hypervisor on a computing system
US8694999B2 (en) * 2006-12-07 2014-04-08 Wind River Systems, Inc. Cooperative scheduling of multiple partitions in a single time window
US20100107163A1 (en) * 2007-03-20 2010-04-29 Sanggyu Lee Movable virtual machine image
US10452820B2 (en) * 2007-06-26 2019-10-22 International Business Machines Corporation Thread-based software license management
CA2699562A1 (en) * 2007-09-20 2009-03-26 C&S Operations, Inc. Computer system
US8424078B2 (en) 2007-11-06 2013-04-16 International Business Machines Corporation Methodology for secure application partitioning enablement
US20100017026A1 (en) * 2008-07-21 2010-01-21 Honeywell International Inc. Robotic system with simulation and mission partitions
US8843927B2 (en) * 2009-04-23 2014-09-23 Microsoft Corporation Monitoring and updating tasks arrival and completion statistics without data locking synchronization
US8868899B2 (en) * 2009-07-20 2014-10-21 Motorola Mobility Llc System and method for switching between environments in a multi-environment operating system
US8505003B2 (en) * 2010-04-28 2013-08-06 Novell, Inc. System and method for upgrading kernels in cloud computing environments
EP2622490B1 (en) * 2010-10-01 2018-12-05 Z124 Cross-environment communication framework
US8818725B2 (en) 2011-11-16 2014-08-26 Flextronics Ap, Llc Location information exchange between vehicle and device
US9262196B2 (en) * 2010-11-30 2016-02-16 International Business Machines Corporation Virtual machine deployment planning method and associated apparatus
US8490091B2 (en) 2011-03-28 2013-07-16 International Business Machines Corporation Virtual machine placement to improve memory utilization
US9122551B2 (en) * 2011-06-17 2015-09-01 The Boeing Comapny Methods and systems for generating read-only operating systems
KR101859188B1 (ko) * 2011-09-26 2018-06-29 삼성전자주식회사 매니코어 시스템에서의 파티션 스케줄링 장치 및 방법
US9116803B1 (en) * 2011-09-30 2015-08-25 Symantec Corporation Placement of virtual machines based on page commonality
GB2501287A (en) * 2012-04-18 2013-10-23 Ibm Installing applications at selected runtime instances
US9582287B2 (en) * 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
WO2014141419A1 (ja) * 2013-03-14 2014-09-18 株式会社日立製作所 仮想計算機システムおよびスケジューリング方法
US9772867B2 (en) * 2014-03-27 2017-09-26 International Business Machines Corporation Control area for managing multiple threads in a computer
US9569195B2 (en) 2014-05-13 2017-02-14 Zscaler, Inc. Systems and methods for live operating system upgrades of inline cloud servers
US20160110235A1 (en) * 2014-10-17 2016-04-21 D2 Technologies Inc. Electronic device for Internet Protocol Communications
DE102016200777A1 (de) * 2016-01-21 2017-07-27 Robert Bosch Gmbh Verfahren und Vorrichtung zum Überwachen und Kontrollieren quasi-paralleler Ausführungsstränge in einem ereignisorientierten Betriebssystem
WO2017144078A1 (en) * 2016-02-23 2017-08-31 Abb Schweiz Ag Robot controller system and method therefor
US9928056B1 (en) 2016-10-10 2018-03-27 International Business Machines Corporation Operating system update management
US10235083B1 (en) * 2017-08-16 2019-03-19 Veritas Technologies Llc Systems and methods for efficiently moving data within a filesystem
WO2020111337A1 (ko) * 2018-11-30 2020-06-04 주식회사 알티스트 시공간 파티셔닝 커널을 위한 파티션 간 통신의 동시성 분석 방법
US11960596B2 (en) * 2021-03-11 2024-04-16 Xilinx, Inc. Network interface device
US20230134872A1 (en) * 2021-10-29 2023-05-04 Blackberry Limited Thread state transitions

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6691146B1 (en) 1999-05-19 2004-02-10 International Business Machines Corporation Logical partition manager and method
US20050268047A1 (en) 2004-05-27 2005-12-01 International Business Machines Corporation System and method for extending the cross-memory descriptor to describe another partition's memory

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3304524B2 (ja) 1993-08-11 2002-07-22 富士通株式会社 システムコール関数処理装置
US5909545A (en) 1996-01-19 1999-06-01 Tridia Corporation Method and system for on demand downloading of module to enable remote control of an application program over a network
US5956507A (en) * 1996-05-14 1999-09-21 Shearer, Jr.; Bennie L. Dynamic alteration of operating system kernel resource tables
JP2000512044A (ja) 1996-06-07 2000-09-12 エイ・ティ・アンド・ティ・コーポレーション インターネット・ファイル・システム
US6075939A (en) 1997-09-27 2000-06-13 Lynx Real-Trime Systems, Inc. Tightly coupled, scalable module based micro-kernel operating system architecture
US6647508B2 (en) * 1997-11-04 2003-11-11 Hewlett-Packard Development Company, L.P. Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation
US6571274B1 (en) 1998-11-05 2003-05-27 Beas Systems, Inc. Clustered enterprise Java™ in a secure distributed processing system
US6279046B1 (en) 1999-05-19 2001-08-21 International Business Machines Corporation Event-driven communications interface for logically-partitioned computer
US7219354B1 (en) * 2000-12-22 2007-05-15 Ensim Corporation Virtualizing super-user privileges for multiple virtual processes
US7461148B1 (en) * 2001-02-16 2008-12-02 Swsoft Holdings, Ltd. Virtual private server with isolation of system components
US8549114B2 (en) 2002-06-12 2013-10-01 Bladelogic, Inc. Method and system for model-based heterogeneous server configuration management
EP1467282B1 (en) * 2003-04-09 2008-10-01 Jaluna SA Operating systems
US20040226017A1 (en) 2003-05-09 2004-11-11 Leonard Ozgur C. Mechanism for associating resource pools with operating system partitions
JP2005151497A (ja) 2003-11-20 2005-06-09 Sharp Corp 情報処理装置,情報処理システム,及びそれらの制御プログラム
US20050125486A1 (en) 2003-11-20 2005-06-09 Microsoft Corporation Decentralized operating system
US7392524B2 (en) 2004-04-06 2008-06-24 International Business Machines Corporation Method, system, and storage medium for managing computer processing functions
US7120753B2 (en) 2004-04-20 2006-10-10 International Business Machines Corporation System and method for dynamically adjusting read ahead values based upon memory usage
US20060010446A1 (en) * 2004-07-06 2006-01-12 Desai Rajiv S Method and system for concurrent execution of multiple kernels
US9189291B2 (en) 2005-12-12 2015-11-17 International Business Machines Corporation Sharing a kernel of an operating system among logical partitions
US8099730B2 (en) 2006-03-30 2012-01-17 Intel Corporation Heterogeneous virtualization of host and guest OS having different register sizes using translation layer to extract device port numbers for host OS system memory addresses

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6691146B1 (en) 1999-05-19 2004-02-10 International Business Machines Corporation Logical partition manager and method
US20050268047A1 (en) 2004-05-27 2005-12-01 International Business Machines Corporation System and method for extending the cross-memory descriptor to describe another partition's memory

Also Published As

Publication number Publication date
CN100495345C (zh) 2009-06-03
KR20070062412A (ko) 2007-06-15
CN1983192A (zh) 2007-06-20
US20070136721A1 (en) 2007-06-14
US9189291B2 (en) 2015-11-17

Similar Documents

Publication Publication Date Title
KR101020392B1 (ko) 논리적 파티션 사이에서의 운용 시스템의 커널 공유
US9201703B2 (en) Sharing kernel services among kernels
US8032899B2 (en) Providing policy-based operating system services in a hypervisor on a computing system
US8762999B2 (en) Guest-initiated resource allocation request based on comparison of host hardware information and projected workload requirement
US9396013B2 (en) Method for controlling a virtual machine and a virtual machine system
US7725559B2 (en) Virtual data center that allocates and manages system resources across multiple nodes
US9384060B2 (en) Dynamic allocation and assignment of virtual functions within fabric
US8291414B2 (en) Shared resource service provisioning using a virtual machine manager
KR100361635B1 (ko) 논리적 분할부 관리기 및 방법
EP2296089B1 (en) Operating systems
US20160162336A1 (en) Cpu scheduler configured to support latency sensitive virtual machines
US10635499B2 (en) Multifunction option virtualization for single root I/O virtualization
US20020124040A1 (en) Nonvolatile logical partition system data management
KR20090055018A (ko) 권한 관리 시스템
WO2006035728A1 (ja) 情報処理装置、割り込み処理制御方法、並びにコンピュータ・プログラム
WO2006077261A2 (en) Method for managing access to shared resources in a multi-processor environment
US20080184247A1 (en) Method and System for Resource Allocation
US20130117549A1 (en) Method for executing multiple operating systems and electronic apparatus
US9804877B2 (en) Reset of single root PCI manager and physical functions within a fabric
US20160077847A1 (en) Synchronization of physical functions and virtual functions within a fabric
KR100900253B1 (ko) 멀티 유저 컴퓨터 시스템 및 상기 시스템을 제어하는 방법.
CN116324706A (zh) 分离式存储器池分配
US20240045708A1 (en) Coordinated Maintenance For Virtual Machine (VM) Clusters/Pods
EP2645245B1 (en) Information processing apparatus, apparatus mangement method, and apparatus management program
KR101334842B1 (ko) 가상화 지원 단말 플랫폼을 위한 가상머신 관리장치 및 방법

Legal Events

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

Payment date: 20140124

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150127

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160128

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170125

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180129

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20200129

Year of fee payment: 10