KR20010006756A - 시스템 자원을 스케쥴링하는 방법 및 시스템 - Google Patents

시스템 자원을 스케쥴링하는 방법 및 시스템 Download PDF

Info

Publication number
KR20010006756A
KR20010006756A KR1020000011515A KR20000011515A KR20010006756A KR 20010006756 A KR20010006756 A KR 20010006756A KR 1020000011515 A KR1020000011515 A KR 1020000011515A KR 20000011515 A KR20000011515 A KR 20000011515A KR 20010006756 A KR20010006756 A KR 20010006756A
Authority
KR
South Korea
Prior art keywords
user
time
dispatch
users
clock
Prior art date
Application number
KR1020000011515A
Other languages
English (en)
Other versions
KR100352668B1 (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 KR20010006756A publication Critical patent/KR20010006756A/ko
Application granted granted Critical
Publication of KR100352668B1 publication Critical patent/KR100352668B1/ko

Links

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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Hardware Redundancy (AREA)
  • Saccharide Compounds (AREA)
  • Diaphragms For Electromechanical Transducers (AREA)
  • Luminescent Compositions (AREA)

Abstract

컴퓨터 시스템은 다중 이용자들에게 프로세서 시간을 할당한다. 시스템 운영자 또는 다른 관리자는 컴퓨터에 각 이용자에 대한 프로세서 시간의 점유율을 지정한다. 지정된 이용자의 처리를, '디스패치 구동형' 다중처리 시스템에서 동작대기 루틴에 내장된 모니터를 이용하여, 절대적 수치로 제한한다. 사용된 메카니즘은, 그 이용자들의 소비가 그 제한 수치를 초과하지 않도록 CPU 자원을 제한하여야 하는, 이용자들의 리스트이다. 이 제한 리스트를 동작대기 모니터함으로써, 낮은 부하 상황에서 그 리스트로부터 이용자를 제거하여야 할 시점을 결정하고, 이용가능하면 그 이용자에게 최대 CPU 처리를 부여한다.

Description

시스템 자원을 스케쥴링하는 방법 및 시스템{SYSTEM AND METHOD FOR SCHEDULING SYSTEM RESOURCES}
본 발명은 시스템 스케쥴러에 관한 것이다. 좀더 자세하게는, 이용자에게 디스패치 구동형 멀티프로세서 시스템내에 부여된 자원들을 스케쥴링하는 것에 관한 것이다.
이용자에 의해 소비되는 시스템 자원량을 제어하기 위하여, 운영체제에 스케쥴러가 제공되고 있다. 이러한 시스템이 동시 출원중인 G.A. Davison 에 의해 94년 6월 2일자로 출원된 미국출원번호 08/252,864호에 개시되어 있다.
종종, 컴퓨터 시스템에서는, 다수의 프로그램 또는 이용자들이 동시에 실행을 요청한다. 그러한 다수의 프로그램을 실행하는데 이용할 수 있는 프로세서들이 하나이상 있을 수도 있다. 임의의 한 프로세서는 어떤 특정 시점에 단지 하나의 프로그램 또는 트랜잭션만을 실행할 수 있다. 한개의 프로세서 또는 실행요청 프로그램의 수보다 적은 수의 프로세서가 있는 경우, 2개이상의 프로그램의 실행이 동시에 요청되면, 운영체제는 어느 프로그램이 그 하나 또는 각 프로세서를 어느 한 시점에 이용하게 할 것인가를 결정하여야 한다. 통상적으로, 이러한 결정은 각 프로그램들의 상대적 우선순위에 기초하고 있다. 또, 통상적으로는, 느린 I/O 동작이 완료하기를 대기하고 있는 프로그램들과 같은, 대기상태에 있는 프로그램들은 "보류" 되어 있으므로, 프로그램들의 우선순위에 무관하게 프로세서를 접근하기에는 적격하지 않다.
어느 프로그램이 특정 시간에 하나 또는 각각의 프로세서를 이용하게 할 것인가를 결정하는 것에 더하여, 운영체제는, 그 선택된 프로그램이 실행되기 시작한 후에 각 프로세서를 얼마동안 이용하게 할 것인가의 여부도 결정함으로써, 동일 (또는 하위순위) 의 다른 프로그램들이 그들의 순서를 취하도록 하여야 한다. 각 프로그램들이 실행되기 시작한 후에 프로세서를 이용하는 것이 얼마동안 허용되어야 하는지를 결정하는데에는 여러가지 방법이 있다. 가장 간단한 기술은, 최고 순위 프로그램은 완료 (또는 보류) 시까지 프로세서의 사용을 유지하는 것이다. 그러나, 이 방법은 그 프로그램으로 하여금 프로세서를 "독점"하게 할 수 있으며, 다른 프로그램들은 "사용할 수 없게" 한다. 또다른 공지 기술은, 실행하기 위해 선택된 각 프로그램마다 총 프로세서 시간중에 점유율 또는 "분량(slice)" 을 부여하는 것이다. 프로그램들의 점유율은 동일할 수도 있으며, 바람직하기로는 여러가지 요인에 따라 가중될 수도 있다. 점유율을 조정하는 하나의 공지된 기술은 다음과 같다. 일부 프로그램들은 총 프로세서 시간의 "절대적" 또는 제한적 점유율을 점하도록 규정되며, 다른 프로그램들은 그 나머지 프로세서 시간의 "상대적" 점유율을 점하도록 규정된다. 절대적 점유율은 "최상위를 취하고", 상대적 점유율은 그 나머지를 그의 상대적 점유율에 따라서 분할한다. 예를들면, 첫번째 프로그램은 40 퍼센트의 절대적 점유율로 규정되며, 두번째 프로그램은 100의 상대적 점유율로 규정되고, 세번째 프로그램은 300의 상대적 점유율로 규정된다. 이 시나리오에서, 첫번째 프로그램은 총 프로세서 시간의 40 퍼센트를 점하고, 두번째 프로그램은 총 프로세서 시간의 15 퍼센트를 점하고, 세번째 프로그램은 총 프로세서 시간의 45 퍼센트를 점할 것이다.
한 프로그램이 그의 전체 절대적 또는 상대적 점유율을 필요치 않을 수도 있다. 이러한 절대적/상대적 점유율 환경에서 여분을 할당하는 공지기술은 최상위 절대적 또는 상대적 점유율을 가진 프로그램에 모든 여분을 제공하는 것이다. 만약, 이 여분이 총 프로세서 시간중에 적은 퍼센트이면, 이 공지기술은 충분할 것이다. 그러나, 많은 경우에는, 이 여분이 총 프로세서 시간의 절반 정도로 이기 때문에, 모든 여분을 하나의 프로그램에 할당하는 것은 최적화되지 않을 수 있다.
한 이용자에게 부여된 시스템의 상대적 점유율은 현재 시스템 자원을 이용하고 있는 모든 상대적 점유 이용자들중에서 우선순위의 비율에 기초한다. 그러나, 상대적 점유 이용자들이 모든 시스템 자원을 이용할 수 있는 것은 아니다. 만약, 자원을 요하는 절대적 점유 이용자가 있다면, 상대적 점유 이용자들간에 비율에 따라 분할하기 이전에, 이들 절대적 점유 이용자에게, 시스템의 나머지 점유율을 먼저, 시스템의 그들의 부분을 부여한다. 일반적으로, 이러한 관계는 다음과 같이 표현할 수 있다.
나머지 점유율 = 시스템의 100% - 총 절대적 점유율
그후, 그 나머지 점유율을 상대적 점유 이용자들간에 비례하여 분할한다.
상대적 이용자의 점유율 = 나머지 점유율 * (이용자의 상대적 점유율/모든 상대적 이용자의 총 점유율)
최소 시간 분량 (minor time slice) 은, 스케쥴러에 의한 재조사의 인터럽트 없이, 주어진 이용자에게 허용되는 프로세서 시간의 양이다. 이 최소 시간 분량의 크기는 장치의 속도와 대개 고객의 설정에 의존한다. 이용자가 디스패치되면, CPU 타이머는 최소 시간단위의 시간량으로 설정된다. 이 타이머는 감소하며 실행 종료될 때 인터럽트를 발하여, 이용자의 최소 시간분량이 종료되었음을 스케쥴러에게 신호를 보낸다.
제한된 이용자, 예를들면, "과제한된(limithard)" 이용자는 그 이용자에게 부여된 프로세서 자원의 최대량을 나타내는 제한 수치로 정의되어 있는 이용자이다. 이 제한 수치는 최대 이용 점유율을 나타내며, 그 이용자에 대한 디스패치 우선순위를 계산하는데 이용된다. 일반적으로, 프로세서 자원의 최대 허용 점유율을 초과하거나 막 초과하려는 과제한된 이용자들이 위치되는 제한 리스트 (limit list) 가 제공된다. 그 제한 리스트상에 한 이용자가 있는 동안에는 (또는 제한 상태를 특징으로 하는 동안), 그의 이용을 위해서 자원이 디스패치되지 않는다.
이용자 작업을 디스패칭하는데에는 인위적인 24시제 (ATOD) 클럭을 이용한다. 이 ATOD 값은 (운영체제 작업등의 비이용자 작업과는 구별되는) 이용자 작업이 장치에 의해 수행되는 시간 동안에만, 장치의 24시제(TOD) 클럭과 동일한 속도로 증가한다. 시스템 자원을 스케쥴링하는데 ATOD 에, 적어도 부분적으로, 의존하는 현 시스템에서는, CPU 자원을 이용할 수 있는 경우에도, 제한된 이용자가 그의 최대 이용 점유율을 얻는 것이 허용되지 않을 수도 있다. 분명히, 휴지 프로세서 시간, 저부하 상태에서, 그 휴지 시간 동안에도 인위적인 24시제 (ATOD) 값이 충분히 신속하게 이동하지 않게 된다. 따라서, 실행중인 과제한된 이용자의 디스패칭 우선순위가, ATOD 에 대해 이동해야 하는 것 보다 더 빨리 제한 리스트에 들어가게 된다. 또, 단지 동작중인 (비휴지) 프로세서들만이 그 리스트를 모니터하기 때문에, 리스트상에 불필요하게 유지될 수 있다. 저부하 상태 (모든 프로세서를 전부 사용할 정도로 충분한 작업이 없는 경우) 에서는, 소수의 프로세서만이 동작하므로, 제한 리스트가 덜 빈번히 모니터되게 된다. 이는, 이용자가 제한 리스트를 떠나야 하는 시점과 떠나는 것을 프로세서가 검출하는 시점 사이의 시간을 증가시키게 된다. 지금까지는, 프로세서가 동작 대기상태에 있는 시간 동안에, 이러한 이용자를 제한 리스트로부터 제거하는 메카니즘이 없었다. 이 상태는, 프로세서가 이용자 작업을 처리하지 않고 동작 대기상태에서 루핑하고 있는 시점으로서, 제한 리스트를 체크할 수 있는 다른 프로세서상에서 어떤 일이 발생할 때까지, 제한 리스트상의 이용자가 유지된다.
따라서, 상기 Davison 에서 개시된 바와 같은 현재의 시스템은, 그 시스템상에 극소수의 이용자를 갖고 있거나 또는 시스템이 바쁘지 않은 경우에, 시스템 스케쥴러는 이용자들에게 하드 제한 (hard limit) 까지 이용할 수 있어야 하는 경우의 이용자들의 하드 제한 보다 더 적은 CPU 시간을 부여하게 된다. 컴퓨터 시스템상에 극소수의 이용자만이 있는 경우에도, 그 이용자가 상당히 적은, 부여된 CPU 시간보다 20% 적은 CPU 시간을 가지게 된다. 이는, 특히 CUP 시간으로 판촉하는 경우에, 이용자들이 대가 지불한 모든 CPU 시간을 취할 수 없다는 불평을 이용자들로부터 받게 된다. 바꾸어 말하면, CPU 시간으로 판매할 때, CPU 시간으로 판매할 수 없을 수도 있다.
본 발명의 목적은 저부하 상태에서 시스템 자원에의 이용자의 접근을 그 하드 제한에 최근접하거나 또는 동등하게 하는 것이 가능한 스케쥴러 시스템 및 방법을 제공하는데 있다.
또한, 본 발명의 다른 목적은 시스템 자원에 대한 최적으로 요구하는 것을 용이하게 하고, 그러한 자원의 가용성 또는 비용에 대한 이용자의 불만을 감소시킨, 향상된 스케쥴러를 제공하는데 있다.
또한, 본 발명의 다른 목적은 시스템에 의해 사용되는 스케쥴링 알고리즘에 피드백 메카니즘인 모니터 데이터를 사용하여, 이용자의 우선순위를 결정하여 어느 이용자가 다음에 실행되어야 하는지를 결정하는 시스템 및 방법을 제공하는데 있다.
또한, 본 발명의 또 다른 목적은 제한된 접근을 가지는 이용자를 너무 빠르지 않게 제한 리스트상에 배치하고 그 제한 리스트로부터 이용자들을 너무 늦지 않게 제거함으로써, 제한된 접근을 가지는 이용자에게 시스템 자원을 스케쥴링하는 시스템 및 방법을 제공하는데 있다.
또한, 본 발명의 또다른 목적은 자원의 스케쥴링을 너무 늦지 않게 인에이블시키고 자원의 스케쥴링을 너무 빠르지 않게 정지시킴으로써, 제한된 접근을 가지는 이용자에게 시스템 자원을 스케쥴링하는 시스템 및 방법을 제공하는데 있다.
도 1 은 본 발명의 바람직한 실시예를 구현하는 데이터 구조와 그 방법의 시스템 다이어그램.
도 2 는 컴퓨터 운영체제의 흐름도.
도 3a, 도 3b 및 도 3c 는 디스패쳐의 흐름도.
도 4 는 도 2 의 운영체제내에 있는 스케쥴러 (의 작은 일부분) 의 흐름도.
도 5 는 디스패치 리스트를 나타낸 도면.
도 6 은 본 발명의 방법의 바람직한 실시예를 구현한 프로그래밍 모듈의 개략도.
※ 도면의 주요부분에 대한 부호의 설명
18 : maxfall 20 : 시스템 자원
21 : ATOD2 22 : 실제 시간 클럭
23 : ATOD 24 : 이용자 최소 점유율 할당
25 : 오프셋 26 : 이용자 최대 점유율 할당
27 : 제한 리스트 28 : TOD-TIED
29 : 제한 리스트상의 체재 기간 30 : 동작대기 연속 모니터
32 : 유입 작업 35 : 이용자 우선순위 한계
37 : 디스패치 리스트 40 : 디스패쳐 44 : 스케쥴러
제 1 클럭을 유지하고;
제 2 클럭을 유지하며;
디스패치 과정 동안에, 처리할 작업이 있으면, 다른 이용자와의 디스패치 우선순위에 따라 그 이용자가 대기상태에 있지 않은 경우에만 그 이용자에게 시스템 자원의 이용을 스케쥴링하며;
그렇치 않으면, 제 1 클럭을 이용자 시간 만큼 진행시키며;
제 2 클럭을 이용자 시간과 대기시간 만큼 진행시키고;
대기 시간 동안에, 처리할 작업이 있으면, 디스패치 과정을 호출하고;
그렇치 않으면, 대기시간을 타이밍하고;
대기시간이 소정의 수치를 초과할 때에, 대기상태에 이용자가 있으면, 그 대기시간만큼 제 1 클럭을 증분하고 디스패치 과정을 호출함으로써,
이용자에 의해 이용하기 위한 시스템 자원을 스케쥴링한다.
이하, 첨부도면을 참조하여, 다음의 본 발명의 바람직한 실시예의 상세한 설명으로 부터, 본 발명의 다른 특징들과 이점들을 살펴보기로 한다.
본 발명의 바람직한 실시예에 따르면, 이 실시예는, 본 출원과 동시에 출원중인 상술한 미국 특허출원번호 08/252,864호에 개시된 시스템을 더욱 향상시킨 것으로, 운영체제는 제한된 접근을 가지는 이용자들을 제한 리스트상에 너무 빠르지 않게 배치한 후 그 제한 리스트로부터 이용자들을 너무 늦지 않게 제거함으로써, 제한된 접근을 가지는 이용자들에게 시스템 자원을 스케쥴링한다.
따라서, '디스패치 구동형' 다중처리 시스템에서 동작대기 루틴에 내장된 모니터를 이용하여, 특정 이용자의 CPU 이용을 절대 수치로 제한하는 시스템 및 방법이 된다. 사용된 메카니즘은 자원의 소비가 제한수치를 초과하지 않토록 CPU 자원을 제한하여야 하는 이용자들의 리스트이다. 이러한 이용자들은 '제한 상태'를 갖는 특징이 있다. 저부하 상태에서, 이 제한 리스트를 동작 대기를 모니터하여, 이용자를 그 리스트로부터 언제 제거하여야 하는지 (따라서, '디스패치 상태' 로 복귀됨) 를 결정한 후, 이용가능하면, 그 이용자에게 최대 CPU 이용을 분배한다. 본 발명의 바람직한 실시예에 따르면, 이 동작 대기 루틴 (또한, 과정 또는 프로시져라고도 함) 은, 제한 리스트상의 이용자들을 모니터하고, 그 모니터된 결과데이터를 이용하여, 그 리스트로부터 이용자들을 제거하는 디스패치 루틴을 호출하는 시점을 결정하고, 피드백되어 스케쥴링 루틴을 능동적으로 조정함으로써, 이용자의 우선순위를 결정하는 경우와 다음에 어느 이용자가 수행되어야 하는지를 결정하는 경우에, 그 유효성을 향상시킨다. ATOD2가 이용자의 제한 리스트 우선순위의 하나의 최소 시간분량 이내인 것으로 계산될 때, 이 디스패치 루틴에 의해, 제한 리스트로부터 이용자를 제거한다.
이용자의 시간 분량의 끝을 나타내는 디스패치 우선순위 수치에 따라 수행되도록 이용자 작업들을 스케쥴한다. 이 수치는 24시제 (TOD) 포멧으로, 이후에, 좀더 자세히 설명하기로 한다.
도 1 을 참조하면, 이 시스템 다이어그램은 본 발명의 바람직한 실시예의 프로그래밍 (데이터 및 방법) 구성을 나타낸 것이다. 이 프로그래밍 구성은 시스템 자원 (20), 실제 시간 클럭 (22), 이용자 최소 점유율 할당 (24), 이용자 최대 점유율 할당 (26), 동작대기 연속 모니터 (30), 유입 작업 (32), 디스패쳐 (40), 스케쥴러 (44), ATOD2 (21), ATOD (23), 오프셋 (25), 제한 리스트 (27), 제한 리스트상의 체재 기간 (29), 이용자 우선순위 한계 (35), 디스패치 리스트 (37), maxfall (18), 및 TOD-TIED (28) 을 포함한다. 이하, 본 발명의 방법의 바람직한 실시예를 구성하는 이들 구성들간의 결합관계를 설명한다.
다시 도 1 을 참조하면, 동작시, 라인 88 로 지시된 바와 같이, 디스패쳐 (40) 는 유입 작업 (32) 를 탐색하여, 처리할 작업이 있으면, 스케쥴러 (44) 에 의해 설정된 우선순위에 기초하여 그 작업을 수행토록 한다. 라인 82 로 지시된 바와 같이, 처리할 작업이 없으면, 디스패쳐 (40) 는 동작대기 연속 모니터 (30) 를 호출한다. 라인 83 으로 지시된 바와 같이, 동작대기 과정 (30) 은 모든 유입 작업 (32) 에 대해 시스템을 연속적으로 모니터한 후, 라인 82 로 또한 지시된 바와 같이, 디스패쳐 (40) 를 호출하여 그 작업중 일부가 도달하면 그 작업을 실행한다. 라인 84 로 지시된 바와 같이, 이용자가 최소 시간분량의 끝에 도달할 때, 디스패쳐 (40) 는 스케쥴러 (44) 를 호출하여 이용자의 디스패치 우선순위를 재계산한다. 라인 85, 86 및 87 로 각각 지시된 바와 같이, 스케쥴러 (44) 는 디스패치 우선순위 계산 시스템 자원 (20), 실제 시간 클럭 (22), 이용자의 최소 점유율할당 (24), 및 이용자의 최대 점유율할당 (26) 에의 입력으로서 이용한다. 라인 89 로 지시된 바와 같이, 스케쥴러 (44) 는 실제 실행중인 이용자에 사용된 CPU 시간과 직전의 ATOD2 가 업데이트된 이후의 소정 대기시간 (작업을 실행할 수 없었던 시간) 을 합한 양만큼, ATOD2 를 진행시킴으로써, ATOD2 (21) 를 업데이트한다. 라인 90 으로 지시된 바와 같이, 스케쥴러 (44) 는, 직전의 ATOD 가 업데이트된 이후에 실제 수행 이용자에 대해 이용된 CPU 시간량 만큼, 또한 본 발명에 필수적인 소정의 환경하에서는 대기시간 만큼 ATOD 를 진행시킴으로써, ATOD (23) 를 업데이트한다. 그 업데이트된 ATOD 는 이전의 ATOD 와 직전 ATOD 가 재계산되었던 이후의 이용자 CPU 시간과의 합이다. 라인 91 로 지시된 바와 같이, 스케쥴러 (44) 는 우선순위 계산에 이용할 그 이용자에 대한 오프셋 (25) 을 계산한다. 오프셋 (25) 은 이용자의 디스패치 우선순위 (35) 를 계산할 때에 현재의 ATOD (23) 수치로부터의 변화량으로 이용된다. 라인 92 및 93 으로 지시된 바와 같이, 스케쥴러 (44) 의 계산에 기초하여 이용자의 디스패치 리스트 우선순위 (35) (또한, 데드라인 우선순위 (deadline priority) 또는 예상 완료시간이라 함) 가 설정되며, 현재의 ATOD (23) 수치와 이용자 오프셋 (25) 의 크기에 기초한 경계들 내로 설정된다. 라인 31 및 33 으로 지시된 바와 같이, 이용자의 디스패치 리스트 우선순위 (35) 는 디스패치 (40) 는 수행되어질 필요가 있는 유입작업 (32) 을 감시할 수 있도록, 다른 작업과의 우선순위에 따라 디스패치 리스트 (37) 상에 이용자의 작업을 배치하기 위해 이용된다. 스케쥴러 (44) 는 이용자를 디스패치 리스트 (37) 상에 배치하기 위하여 이용자의 디스패치 리스트 우선순위 (35) 를 계산하는데에는 ATOD (23) 를 이용하고, 이용자의 자원 소비를 제한 리스트 (27) 상에 배치하여 제한할 필요가 있는 경우에는, ATOD2 를 이용하여 제한 리스트 (27) 우선순위를 계산한다. 라인 95 로 지시된 바와 같이, 계산된 상한을 TOD-TIED (28) 라 한다. 라인 94로 지시된 바와 같이, 계산된 하한을 maxfall (18) 이라 한다. 라인 96 으로 지시된 바와 같이, 스케쥴러에 의해 계산된 디스패치 우선순위 (35) 가 맥스폴 한계 (18) 의 바깥에 있는 제한된 점유 이용자를 제한 리스트 (27) 에 부가한다. 라인 97 및 98 로 지시된 바와 같이, ATOD2 (21) 에 의해, 제한 리스트 (27) 상의 체재기간 (29) 을 예측한다. 라인 99 로 지시된 바와 같이, 그 이용자는 스케쥴러 (44) 에 의해 제한 리스트 (27) 로부터 이용자가 제거될 때까지, 체재한다. 라인 120 으로 지시된 바와 같이, 저부하 상태에서는, 동작대기 과정 (30) 은 제한 리스트 (27) 를 모니터하여, 이용자를 제거하여야 할 시점을 결정한다.
이하, ATOD, TOD-TIED, 디스패치 우선순위 및 오프셋을 결정하는데 요하는 계산과, 이용자들에게 자원을 스케쥴링하는 경우의 이들의 이용에 대하여 설명한다. maxfall 을 계산하는 식은,
maxfall = ATOD + 4*오프셋
이다.
오프셋을 계산하는 식은,
오프셋 = (최소 시간분량-오버런) / (cpus의 갯수 * 점유율)
이고, 여기서, 오버런은 (overrun) 은 이용자가 최고 우선순위 작업에 의해 선점되어 있는 경우에, 그 이용자의 직전의 최소 시간분량중에 남아 있는 시간량이다.
이용자의 디스패치 우선순위는 우선순위 한계인 maxfall 과 TOD-TIED 의 경계이내에서 계산된 정수값이다. 이하, 이 TOD-TIED 메카니즘에 대해 좀더 자세히 설명하기로 한다.
ATOD (23) 및 ATOD2 (21) 는 시스템상에 모든 이용자들의 이용자 시간과 전체 시스템의 대기시간을 누적하는데 사용되는 데이터 구조 (필드) 이다. 개별 이용자 시간 및/또는 대기시간은 추적할 필요가 없다. 이러한 누적값들은 이용자의 최소 시간 분량의 종결 등의 발생할 소정의 이벤트를 시스템의 동작과 비교하여, 예측하는데 이용된다.
도 2 내지 5 와 이들의 설명은, Davison 에 의해 동시출원중인 미국특허출원번호 08/252,864호로 부터 채택한 것으로, 본 발명의 이해에 필수적인 기본개념의 지침서를 이루며, 주로 제한 리스트에 이용자를 빠르게 부가하거나 그 이용자를 너무 늦게 제거하지 않는 목적이 실질적으로 향상되게 대기시간을 포함시켜 ATOD 및 ATOD2 를 조정하기 위하여 제공되는 메카니즘의 향상에 대한 것이다.
도 2 는 운영체제 (38) 가 디스패쳐 (40), 스태커 (42), 스케쥴러 (44) 및 기타 기능부 (46) 로 이루어진 것으로 도시되어 있다. 스태커는 스케쥴러와 디스패쳐간의 인터페이스이고, 디스패쳐, 스케쥴러와 운영체제의 나머지 부분간의 인터페이스이다. 다음은 처리흐름에 대한 자세한 설명이다. 통상의 시나리오에서, 이용자는 운영체제 "나머지 부분(remainder)"(46) 에게 어떤 작업을 수행할 것을 요청한다. 이 작업 요청은 이용자의 상태를 "대기" 로 기록하는 스태커 (42) 를 통과한다. 스태커는, 이용자가 다른 작업 목표를 가질 수 있는 경우에도, 이용자들로부터 하나이상의 트랜잭션으로서 도달하는 작업을 감시한다. 이용자가 총 휴지상태 ("휴지") 로부터 실행 대기 상태 ("대기") 로 진행할 때 "새로운" 트랜잭션이 시작된다. 또한, 이용자가 여전히 진행할 작업 (트랜잭션) 을 갖고 있으나 가상 I/O 요청이 완료하기를 대기하고 있으며 따라서 일시적으로 실행을 대기하지 않는, 제 3 의 "보류" 상태가 있다. 보류의 기간은 새로운 트랜잭션을 선언하는 충분한 근거는 아니다. 다음으로, 스태커는 그 요청을 그 이용자에 대한 작업큐로 통과시킨다. 또, 스태커는 스케쥴러를 호출하여 디스패치 리스트 (37) 상에서 다른 이용자들과의 관계로부터 이 이용자의 디스패치 우선순위 (35) 를 나타내는 정보를 얻는다. 그후, 스태커는 이 이용자 (실제로는 이용자의 VMDBK) 를 디스패치 리스트 (37) 에 배치하고, 다시 운영체제의 "나머지 부분" 으로 되돌아 간다. 이 디스패치 우선순위는 디스패치 리스트상에서 이용자의 순서로서 기능한다. 운영체제의 나머지 부분이 그 현재의 작업을 완료하면, 디스패쳐 (40) 로 제어를 전달하여, 다음 이용자와 실행할 작업을 결정한다. 그후, 디스패쳐는 그 디스패치 리스트 (37) 에서 첫번째 대기중인 이용자와, 다음에 디스패치되어질 이용자의 작업 큐에서 첫번째 작업을 선택한다. 그후, 디스패쳐 (40) 는 운영체제의 나머지 부분에 제어를 전달하여 이 작업을 실행하기 시작한다. 그후, 이 디스패치된 작업은 소정 기간의 시간 분량, 예를들면 10밀리초 동안에 실행된다. 그 1밀리초 시간 분량이 완료하기 이전에 작업 아이템이 완료되면, 디스패쳐는 동일 이용자의 작업 큐로부터 실행할 또다른 작업을 선택한다. 이 시간 분량의 종료시에, 이용자가 여전히 실행할 작업을 가지고 있으면, 디스패쳐는 스케쥴러 (44) 를 다시 호출하여, 이 이용자에 대한 다음의 시간분량에 대한 우선순위를 얻는다. 이 새로운 우선순위는 그 이용자가 디스패치 리스트에 다시 위치되도록 한 후, 그 동일 이용자에 대해 이 후속 시간분량을 시작케 할 시점을 결정한다. 이 동일 이용자에 대한 연속 시간 분량들간의 시간은, 부분적으로 그 이용자에 대한 프로세서 시간의 점유율을 결정한다.
모든 이용자들은 동등한 기간의 각각의 시간 분량 동안에는 절대적 또는 상대적 점유율에 관계없이, 디스패치되어 실행된다. 위의 예에서, 각각의 시간 분량은 1밀리초이다. 일반적으로, 이 시간분량은 프로세서의 속도에 기초하며, 이 실시예에 대해 선택된 1밀리초는 단지 예로서, 시스템에 동조시키기 위하여 무시될 수도 있다. (VMDBK 로 나타낸) 각 이용자들은 한 시간 분량을 완료한 후, 인터럽트되며 디스패치 리스트에서 하방으로 이동된다 (다시 우선순위 조정됨). 통상, 이는 또다른 이용자가 이 프로세서를 이용할 수 있도록 한다. 프로세서의 각 이용자의 점유율은 그 이용자에게 할당된 시간분량과 각 시간분량을 이용하기 위하여 그 이용자가 요하는 시간 사이의 기간에 의해 결정되며, 각 이용자들은 반드시 연속하는 1밀리초내에 하나의 시간 분량을 소비하는 것은 아니다. 만약 그 이용자가 I/O 동작을 대기하여야 하면, 그 프로세서를 일시적으로 보류시켜 프로세서를 제거함으로써 (그러나, 디스패치 리스트 (37) 에 남아 있음), I/O 동작이 완료하기를 대기하는 시간이 이 이용자의 시간분량으로 카운트되지 않게 된다. 예를들면, I/O 동작을 완료하는데에 수 밀리초를 요하는 경우에도, 종종 I/O-바운드 이용자는, 하나의 시간분량을 소비하기 이전에, 10개 이상의 I/O 동작을 시작하여 완료하기를 대기할 수 있을 것이다. 또, 더 높은 우선순위를 가진 또다른 이용자의 작업이 도달하면, 디스패쳐는 그 실행중인 이용자의 시간분량의 완료이전에 그 이용자를 그 과정으로부터 제거하여, 일정기간 보류시킬 수도 있다. 운영체제는 시간 분량들간의 간격 (interval) 을 제어함으로써, 각 이용자의 프로세서 시간의 실제 점유율을 제어할 수 있다. 한 이용자에 대한 시간분량들간의 간격은, 매순간 디스패치 리스트에 있는 다른 이용자들의 점유율에 비해, 디스패치 리스트 (37) 에서의 이용자의 점유율의 크기에 반비례한다. 한 VMDBK 가 하나의 시간 분량을 완료할 때마다, 단지 그 하나의 VMDBK 만이 다시 우선순위 정렬되어, 디스패치 리스트 (37) 에 다시 배치된다. 하나의 시간분량이 여러 부분들로 이용되는 경우, 스케쥴러는 누적 시간이 1밀리초의 시간분량과 같아질 때까지 이용자의 시간분량들간의 간격을 재계산하지 않는다. 이하, 시간분량들간의 공칭 간격 (nominal interval) 을 결정하는 기술을 좀더 자세하게 설명한다.
N-웨이 MP 시스템내의 각 CPU 는 24시제 (TOD) 클럭 (22) 과 CPU 타이머를 갖고 있다. 이 TOD 클럭은 마이크로초마다 하나씩 증분되는 52 비트 하드웨어 레지스터를 포함한다. TOD 클럭은 운영체제가 시작될 때 (부팅될 때) 설정되며 그 이후에는 거의 변경되지 않는다. N-웨이 MP 시스템에서, 모든 N 웨이 TOD 클럭들은 서로 정확히 마이크로초로 동기된다. TOD 클럭은 시간 제로가 1900년 1월 1일 자정이 되도록 설정된다. 52 비트 TOD 클럭 (예를들면, 비트 0~51) 이 카운트됨에 따라, 이 클럭은 반복되기 전에 140년 동안 동작할 수 있다. 이 TOD 클럭은 절대로 중지되지 않고, 항상 증분되며, 신뢰성 있고 정확한 시간표 및 실제 시간 측도이다.
CPU 타이머는 운영체제 (38) 에 의해 각 시간분량을 타이밍하는데 사용하는 또다른 52 비트 하드웨어 레지스터를 포함한다. 이 CPU 타이머는 시스템 운영자가 그 CPU 를 중지시키는 경우에 동작을 중지하고, 운영자가 그 CPU 를 다시 시작하는 순간에 다시 시작한다 (반면에, TOD 클럭은 계속 동작한다). CPU 타이머의 진행과 시간분량은 CPU 가 다시 시작할 때에 재개한다. 각 이용자가 각 시간 분량을 시작할 때, 시작 시간이 CPU 로부터 통지된다. 이와 유사하게, 이용자가 보류될 때마다, 디시 실행되는 경우에 이 이용자에게 얼마의 시간분량이 남아 있는지를 결정하기 위하여 CPU 타이머의 시간이 통지된다. 따라서, CPU 가 중지될 때에 처리중이고 CPU 타이머로 측정되어지고 있는 이용자는, 어떠한 시간분량 권리 (entitlement) 도 손실되지 않게 된다.
또한, 스케쥴러는 인위적인 24시제 (ATOD) 클럭 (및 이후 설명할 제 2 인위적인 24시제 클럭 (ATOD2)) 으로서 알려진 소프트웨어 클럭을 갖고 있다. 이 ATOD 클럭은, 단지 하나 (CPU 당 하나가 아님) 이고 약간 느리게 동작하는 것을 제외하고는, 하드웨어 TOD 클럭과 유사하다. CPU 의 총 가용 처리파워중에서 소정 량은 어떠한 특정 이용자에게도 기여할 수 없는 운영체제 오버헤드로서 소비된다. 따라서, 이 총처리시간량을 이용자의 점유율로서 분할하는데에는 이용할 수 없게 된다. 시스템 오버헤드인 총 처리의 백분율은 순간 순간 변화하므로, 100% 미만에서 이용자의 점유율로 얼마만큼 이용할 수 있는지를 파악하기 어렵다. 이러한 난점은, 운영체제가 오버헤드 기능을 수행하는 동안에 ATOD 클럭을 중지하도록 정의한 후, 이용자들에게 점유율을 분담하는 계산시에 TOD 시간이 아닌 ATOD 시간을 이용함으로써, 피할 수 있다. 따라서, ATOD 클럭에서는, 오버헤드가 수행되는 동안에 시간이 중지되게 된다. 따라서, ATOD 클럭에 의해 측정된 시간의 100% 가 가용 처리에 상당하게 된다. 그러므로, 점유율을 산출하는 계산을, ATOD 클럭에 기초하여, 처리의 100% 를 이용자의 점유율로 이용할 수 있는 것 처럼 계산할 수 있다.
운영체제 (38) 에서, 우선순위 번호가 낮을 수록, 실제 우선순위가 더 높다. 우선순위 번호들은 각 이용자에 대해 항상 변하며, 디스패치 순서는 대기중인 이용자들간의 상대적인 우선순위 번호에 기초한다. 우선순위 번호는 스케쥴러에 의해 이용자/VMDBK 가 디스패치 리스트 (37) 에 위치될 때에 각각의 절대적 또는 상대적 점유율에 기초하여 계산된다. 디스패치 리스트에 막 들어온 이용자에 대해 계산하는 경우, 통상, 우선순위 번호는 ATOD 클럭의 현재값보다 약간 더 (수 밀리초만큼) 크다. (그러나, 실제로는, 첫번째 일부 시간분량 동안, 매우 짧은 트랜잭션의 경우에 이용자에게 신속한 응답을 제공하기 위하여, 더 작은 우선순위 번호가 사용된다. 이러한 변화는 이용자의 점유율에 크게 영향을 미치지 않을 정도로 짧다.) ATOD 는 항상 진행하기 때문에, 오래된 불완전한 작업은 대개 낮은 우선순위 번호, 즉 새로운 작업 보다 더 높은 우선순위 번호를 가지며, 디스패치 리스트의 상부에 위치하는 경향이 있다. 이하 좀더 자세히 설명된 바와 같이, 디스패쳐는 (비대기 또는 보류된 이용자를 포함하는 디스패치 리스트 (37) 의 복사본으로, 실행 상태를 가지는 이용자들의 집합 또는 리스트인) 실행 리스트상의 상부로부터 하방으로 탐색하여 실행할 이용자를 할당한다. 시간이 진행함에 따라, 이용자가 더 높은 우선순위 대기 작업 때문에 디스패치를 얻지 못하거나, 이용자가 디스패치되지만 I/O 바운드이고 그 시간분량을 완료하지 않고 "보류된" 채로 많은 시간을 소비하면, 이용자의 우선순위는, (1) 좀더 최근에 트랜잭션을 시작한 이용자들 및 (2) I/O 바운드가 아닌 이용자에 대하여 증가한다. 이들 2가지는, (1) 그 이용자의 우선순위 번호가 그 시간분량이 완료될 때까지 고정된 채로 유지되지만 새로 트랜잭션을 시작하는 다른 이용자들은 ATOD 가 증가됨에 따라 점차 더 높은 우선순위 번호로 할당되고, (2) 더 많은 CPU 바운드 이용자들이 많은 시간분량을 이용한 직후에 하방으로 하나씩 이동되기 때문에, 사실이다. 따라서, I/O 바운드 이용자는 비 I/O 바운드 이용자에 비해 더 높은 상대적 우선순위를 갖는 경향이 있으며, 일반적으로, 디스패치 리스트 및 실행 리스트의 상부 근처에 위치되며, 실행대기시에, 즉, 각 I/O 동작이 완료된 후에 CPU 에 신속히 제공된다.
각 이용자에게는, (시스템 디렉토리에 규정되며 종종 시스템 운영자에 의해 변경되는) 절대적 또는 상대적 점유율 (24, 26) 이 존재한다. 또, 각 이용자에게는, 특정된 "소프트 제한(soft limit)", "하드 제한(hard limit)" 또는 "제한무(no limit)" 가 존재한다. 비사용된 처리시간이 사용가능하게 됨에 따라, 모든 이용자들은 비사용된 처리시간이 없었던 것처럼 계산된 그들의 절대적 점유율과 상대적 점유율에 비례하여 여분의 처리시간을 받기 시작한다. 그러나, 임의의 하드 제한 이용자가 그 하드제한에 도달하는 경우에는, 더 이상의 할당이 이루어지지 않는다. 하드 제한 이용자는 그 하드 제한을 초과하는 처리시간의 점유율로 할당될 수 없다. 임의의 소프트 제한 이용자가 그 소프트 제한에 도달하는 경우에는, 만약 임의의 다른 소프트 이용자가 아직 그 소프트 제한에 도달하지 않거나 임의의 다른 하드 제한 이용자가 아직 그 하드 제한에 도달하지 않거나 또는 그 여분의 처리시간을 이용할 수 있는 비제한된 이용자가 있으면, 이 소프트 제한 이용자에게는 더 이상의 할당이 이루어지지 않는다. 아직 그들의 제한에 도달하지 않은 다른 소프트 제한 및 하드 제한 이용자들은 이들 각각의 제한에 도달할 때까지 여분의 점유율을 계속 받을 수 있다. 모든 다른 소프트 제한 이용자들이 그들의 소프트 제한에 도달하고, 그 모든 하드 제한 이용자들이 그들의 하드 제한에 도달하고 여분의 처리시간을 이용할 수 있는 비제한된 이용자들이 없으면, (비사용된 처리시간이 없었다고 가정하여 계산된) 가장 큰 절대적 점유율 또는 상대적 점유율을 가진 소프트 제한 이용자가 모든 나머지 비사용된 처리시간을 받는다. 다른 방법으로는, 모든 소프트 제한 이용자들이 그들의 소프트 제한에 도달하고, 모든 하드 제한 이용자들이 그들의 하드 제한에 도달하고, 그 여분의 처리시간을 이용할 수 있는 비제한된 이용자들이 없으면, 모든 소프트 제한 이용자들은 비사용된 처리시간이 없었다고 가정하여 계산된 그들의 절대적 또는 상대적 점유율에 비례하여 그 나머지 비사용된 처리시간을 점유한다.
이하 좀더 자세히 설명된 바와 같이, 이러한 점유율 할당기술은, 그 이용자가 각 시간분량을 완료한 후에 디스패치 리스트에서 각 이용자들을 하방으로 재위치시키거나 오프셋함으로써 구현한다. 오프셋량은 절대적 또는 상대적 점유율의 크기에 기초한다. 각 이용자들의 I/O 바운드의 상대적 량은, 한 시간분량을 완료직전의 그 이용자의 위치로부터의 오프셋을 시작하여 한 시간 분량을 완료한 후에, 스패치 리스트에 그 이용자를 재위치시킬 때에, 고려된다. 따라서, 그 이용자가 바로 I/O 한계에 있으면, 그 시간분량이 완료하기 이전에는 디스패치 리스트 상부의 매우 근처에 위치될 것이므로, 시간분량이 완료되어 하방 오프셋이 진행된 후에도 디스패치 리스트에 높게 재위치될 것이다. (한 이용자가 그 디스패치 리스트에 먼저 들어가면, 그 오프셋은 ATOD 의 근처에서 시작된다.)
디스패쳐 (40) 는 도 3의 a 내지 c 에 도시된 바와 같이 구현된다. 단계 100 에서, CPU 는 한 이용자에 대한 하나의 작업의 실행을 완료하고 디스패쳐에 통지한다. 응답하여, 디스패쳐의 제 1 레벨은 그 이용자가 그의 현재의 1 밀리초 시간분량을 완료하였는지를 결정한다 (결정 102). 만약 그렇치 않으면, 제 1 레벨 디스패쳐는 더 높은 우선순위 이용자가 프로세서를 대기하고 있는지를 결정한다 (결정 104). 만약 그렇치 않으면, 제 1 레벨 디스패쳐는 방금 하나의 작업을 완료한 그 이용자가 수행할 또다른 작업, 예를들면, 그의 작업큐내에 또다른 작업을 가지고 있는지를 결정한다 (결정 106). 만약 그러면, 제 1 레벨 디스패쳐는 디스패쳐의 제 2 레벨을 호출하여, 이 동일 이용자에 대한 또다른 작업을 막 완료한 동일 CPU 상에 실행하기 위하여 이 이용자의 큐로부터 후속 작업을 디스패치한다. 응답하여, 제 2 레벨 디스패쳐는 이 이용자의 작업큐상의 첫번째 작업을 선택하고, 이 특정 작업을 처리하기 위하여 운영체제내의 적당한 루틴으로 명령을 전달한다 (단계 112).
다시 결정 102, 104 및 106 을 참조하면, 결정 102 가 예, 결정 104 가 예이거나 또는 결정 106 이 아니오이면, 제 1 레벨 디스패쳐는 결정 120 으로 진행하여, 이하 설명된 바와 같이 스케쥴러의 ATOD 클럭을 업데이트할 시점인지를 결정한다. 이 결정은 직전의 클럭 업데이트 이후에 적어도 1밀리초가 경과하였는지의 여부에 기초한다. 만약 그렇다면, 디스패쳐는 스테커를 호출하여 스케쥴러에게 통지함으로써 ATOD 및 ATOD2 클럭을 업데이트한다 (단계 122). 다음으로, 제 1 레벨 디스패쳐는, 그 이용자의 시간 분량이, 만약 있다면, 얼마만큼 사용되지 않았는지를 먼저 기록함으로써, 그 이용자를 "언디스패치(undispatch)"한다 (단계 130). 만약 결정 102 가 단계 130 으로 진행하면, 이 시간분량이 남아 있지 않다. 그러나, 만약 단계 130 dl 결정 104 또는 결정 106 중의 어느 한 결정에 의해 진행되었으면, 소정 량의 시간분량이 잔존하고 있다. 다음으로, 제 1 레벨 디스패쳐는 그 시간분량이 완료하였는지를 결정한다 (그리고, 그 이용자가 적격자 리스트로 되돌아 가야하는지의 여부와 같은 모든 여러 다른 스케쥴러 상태들을 체크한다) (결정 132). 만약 그렇다면, 제 1 레벨 디스패쳐는 스태커를 호출하여 스케쥴러에게 통지함으로써, 시간분량의 완료 또는 다른 스케쥴러의 상태를 처리한다 (단계 134). 다음으로, 제 1 레벨 디스패쳐는 방금 트랜잭션의 실행을 완료한 CPU 의 실행 리스트로부터 최고 우선순위 이용자를 선택한다 (단계 136). 만약 거기에 이용자가 있으면 (결정 140), 제 1 레벨 디스패쳐는 이 이용자를 디스패치된 것으로 표시하고, 이 이용자에 대한 시간분량을 타이밍하기 위해, 그 시간분량을 CPU 타이머에 로드한 후, 제 2 레벨 디스패쳐로 진행한다 (단계 142). 응답시, 제 2 레벨 디스패쳐는 이 이용자에 대한 첫번째 작업을 그 이용자의 작업큐로부터 선택하고, 이 특정 작업을 처리하기 위하여, 운영체제 부분 (46) 내의 적당한 루틴으로 명령을 전달한다.
다시 결정 140 을 참조하면, 만약 방금 트랜잭션의 실행을 완료한 CPU 에서 이용자가 발견되지 않았으면, 제 1 레벨 디스패쳐는 또다른 CPU의 실행 리스트로부터 최고 우선순위 이용자를 선택한다 (단계 150). 만약 그러한 이용자가 발견되면 (결정 152), 제 1 레벨 디스패쳐는 단계 142 로 진행하여, 그 다른 CPU 의 실행 리스트로부터 이 이용자를 디스패쳐한다. 그러나, 만약 그러한 이용자가 또다른 CPU 의 실행 리스트상에서 발견되지 않으면, 제 1 레벨 디스패쳐는 대기상태로 진행한다 (단계 154).
도 4 는 스케쥴러 (44) 의 일부를 나타낸 것이다.
제 2 레벨 디스패쳐로부터 (스태커를 경유하여) 스케쥴되어질 그 새로운 이용자의 식별 (identification) 을 수신한 후, 스케쥴러는 다음과 같이 "디스패치 리스트 점유율" 을 결정한다. (단계 200). 단계 202 에서, 스케쥴러는 상술한 종래의 VM/ESA 운영체제 방식으로 그 이용자의 절대적 또는 상대적 점유율을 시스템의 처리시간의 일부분으로 변환한다, 예를들면, 모든 절대적 점유율은 상부로부터 취해지며 (그리고, 총합이 99퍼센트 이상이면, 비율에 따라 감소되며), 그 나머지는 그 디스패치상의 다른 이용자들간에 그들의 상대적 점유율에 비례하여 분할된다. 각 이용자에 대한 결과는 처리시간의 부분들로서 (0과 1 사이), 모든 이용자들의 처리시간의 수치를 합하면 1이 된다. 다음으로, 스케쥴러는 그 이용자에게 "적격자 (eligible)" 리스트에서 대기하면서 소비한 소정 시간을 보상하기 위하여, 그 이용자의 "요구 비율 (required fraction)" (R') 을 결정한다 (단계 204). 실행을 대기하고 있을 때에 이용자는 적격자 리스트에 위치되며, 그 이용자의 작업을 실행하는데 이용할 수 있는 메모리가 불충분하다. 요구 비율은 단계 202 에서 결정한 점유 비율에 (디스패치 리스트에서의 시간 + 적격자 리스트에서의 시간) / (디스패치 리스트에서의 시간) 을 곱하여 결정한다. 적격자 리스트에 체재한 후에 각 이용자들에 대한 요구비율을 재계산하고, 그 결과를 디스패치 리스트에서 다음의 기간 동안에 사용한다. 그러나, 일반적으로는, 모든 이용자들에 대해 충분하므로, 그 적격자 리스트로의 "이동(trip)"은 드물게 일어나며, 대개, 단계 204 는 단계 202 의 결과치에 1 을 간단히 곱하는 것이다. 다음으로, 스케쥴러는 디스패치 리스트내의 모든 이용자들의 요구비율을 더하면 1 이 되도록, 그 이용자의 요구비율 R' 을 정규화시킨다 (단계 206). 그 이용자의 정규화된 요구비율은 "디스패치 리스트 점유율" (또는 실행 리스트 점유율) 로서, 이하 좀더 자세히 설명하기로 한다. 그 이용자에 대한 디스패치 리스트 점유율로부터, 스케쥴러는 "오프셋" 을 결정하고, 그 디스패치 리스트와 실행 리스트를 하방으로 내린다. 대개, 그 이용자의 오프셋은 그 시간 분량을 곱하고 시스템내의 실제 CPU 의 갯수로 나눈 디스패치 리스트 점유율의 역수이다. 오프셋이 작을 수록, 반대로, 이용자는 CPU 에 더 많이 접근하여야 한다. 이하, 이용자의 오프셋의 정확한 값을 좀더 자세히 설명한다.
도 5 는 일 시점에서의 디스패치 리스트 (300) 를 나타낸 것이다.
이 디스패치 리스트는 실행을 대기하고 있는 이용자들과 보류중인 이용자들을 포함한다. 위에서 언급한 바와 같이, 디스패치 리스트 (300) 상의 실행을 대기중인 이용자들은 또한, 탐색시간을 줄이기 위하여 실행 리스트상에도 기입되어 있으나, 설명하는데에는 디스패치 리스트 (300) 의 도면이 바람직하다. 이 디스패치 리스트는 상부로부터 하방으로 탐색되며; 최상위 우선순위 (및 최하위 우선순위 번호) 를 가진 이용자는 상부에 순서대로 나열되어 있다. 각 이용자들이 그 시간분량을 완료할 때, 처리해야 할 작업이 더 있으면, 스케쥴러는 디스패치 리스트상 (또는 실행 리스트상에 간접적으로) 의 그 이용자를 현재의 위치로부터 이 이용자에 대한 오프셋 (25) 과 동일한 양만큼 하방으로 다시 위치시킨다. 따라서, 2가지 인자들이 디스패치 리스트 (300) 상의 이용자의 분포에 영향을 미친다. 첫번째 인자는 오프셋 (25) 의 크기이다. 언급한 바와 같이, 각 이용자들에 대한 오프셋의 크기는 디스패치 리스트상의 다른 이용자들의 점유율에 대한 그 이용자의 점유율과는 반비례 관계이며, 서로 다른 점유율을 가진 다른 이용자들과는 다르다. 따라서, 점유율이 작을 수록, 오프셋은 커지게 된다. 이는 낮은 점유율 이용자들을 대부분의 그의 시간 동안에 디스패치 리스트 (300) 의 바닥 근처에 위치시키는 경향이 있다. 두번째 인자는 그 시간분량을 완료하는데 그 이용자가 필요한 실제 시간량이다. "I/O 바운드" 이용자는, 그 이용자가 입출력 동작을 시작한 후 I/O 동작을 완료하기 위하여 대기하는 상당한 시간 동안에 그들의 시간분량이 보류되기 때문에, 한 시간분량을 완료하는데 상당한 I/O 시간을 필요로 한다. 따라서, I/O 바운드 이용자들은 그들의 실행의 시간분량을 완료하기 위해서는 1밀리초 시간분량 보다 상당히 긴 실제 시간을 필요로 하며, 일단 I/O 바운드 이용자가 실행 리스트 (300) 의 상부까지 상승하면, 그 시간분량을 완료하여 하방으로 오프셋되기 이전에 상당한 시간 동안 거기에 남아 있게 될 것이다. 이와 반대로, "CPU 바운드" 이용자는 조금의 I/O 시간을 요하므로, 그들의 시간분량을 1밀리초내에 또는 약간 더 길게 거의 연속적으로 완료한다. 따라서, CPU 바운드 이용자는 빈번하게 하방으로 오프셋되며, 통상 디스패치 리스트의 바닥 근처에 머무른다.
따라서, 어느 경우에도, 이 I/O 바운드 이용자들과 매우 큰 점유율을 가진 다른 이용자들은 디스패치 리스트의 상부 근처에 위치되려는 경향이 있으며, CPU 바운드 이용자들과 매우 작은 점유율을 가진 이용자들은 디스패치 리스트의 바닥 근처에 위치되려는 경향이 있다. 이들 2가지 인자들중에서, 점유율과 I/O 에 대한 CPU 제한 (boundness), I/O 에 대한 CPU 제한량은 (정상적인 점유율 범위에 있어) 디스패치 리스트내의 위치에 지대한 영향을 미친다. 상술한 방식으로 실행 리스트상에 이용자들을 재위치시키는 것은, I/O 바운드 이용자가 실행을 대기하고 있을 때, 즉, 최종 I/O 동작이 완료되었을 때에, 이용자가 실행 리스트 (300) 의 상부 근처에 위치되므로, CPU 를 신속히 취할 수 있기 때문에, 높은 처리량을 달성한다.
도 5 에서, 이들 오프셋들은 좌측에 하방으로 스위핑하는 화살표로서 표시되어 있다. 일부 오프셋들은 다른 이용자들이 서로 다른 점유율을 갖기 때문에, 다른 오프셋들 보다 더 길거나 짧다. 일반적인 경우, 현재의 (일순간의) ATOD 마크 아래의 모든 이용자들은 CPU 바운드이지만, 현재의 ATOD 마크 위의 모든 이용자들은 I/O 바운드이다. 이용자들은 상술한 작용에 의해 상기 방법으로 소트된다. 또한, 일반적으로, 현재의 ATOD 마크 근처의 CPU 바운드 이용자는 거의 항상 디스패치될 수 있기 때문에, 디스패쳐는 대기중인 이용자를 탐색하기 위하여 현재의 ATOD 마크 아래에서 많이 탐색할 필요가 없을 것이다. 따라서, 도 5 의 좌측에 있는 ATOD 마크 및 그 아래의 "오프셋" 화살표는 대개 그 ATOD 마크 및 그 아래에서 발생하려는 경향이 있다. 그러나, 디스패치 리스트의 상부의, ATOD 마크의 위에 있는, 화살표는 어느 장소로부터도 발생하는 경향이 있다. I/O 바운드 이용자가 한 시간분량을 완료할 때, 이전의 시간분량의 그의 일반적인 높은 우선순위와 높은 위치 때문에, 대개 리스트의 바닥으로 이동하지 않고, 대개 그 ATOD 마크의 상부에 유지된다. 따라서, I/O 바운드 이용자가, I/O 대기를 완료한 직후에 다시 디스패치되게 되므로, 높은 처리량이 유지되게 된다.
상기 스케쥴러는 점유율을 흡수하기 어려운 이용자들을 "매우 강력하게 밀어 낸다". 이들 이용자들 중의 한 이용자는 그의 할당된 점유율이 더욱 떨어짐에 따라, 마지막까지 디스패치 리스트에서 더 높이 상승하며, 만약 그 이용자가 그의 완전한 점유율을 취할 어떠한 희망이라도 있는 경우에는, 그 완전한 점유율을 취하게 될 것이다. 따라서, 상기 스케쥴러는 단순히 각 이용자에게 원하는 CPU 로의 접근 (ACCESS) 를 부여하지는 않고, CPU 의 각 이용자에게 원하는 점유율을 많이 부여하는 것이 효과적이다. 이 원하는 점유율은 각 이용자의 소비의 이력을 계산하지 않고 제공된다. 이는 그 "이력" 이 그 이용자의 디스패치 리스트 위치에 위치하기 때문이다. ATOD 마크에 대응하는 디스패치 리스트의 이용자의 위치는 그 이용자가 가져야 하는 점유율에 대하여 과거에 받았던 프로세서 시간의 점유율을 나타낸다. 만약 그 이용자가 현재까지 가져야 하는 점유율을 정확히 취득하였으면, 그 이용자는 정확히 ATOD 마크에 위치하게 될 것이다. 만약 그 이용자가 ATOD 마크의 위에 있으면, 그 이용자는 그 이용자가 취할 점유율보다 작게 받았을 것이다. 만약 그 이용자가 ATOD 마크의 아래에 있으면, 그 이용자는 그 이용자가 취해야할 점유율보다 많이 받았을 것이다.
단계 204 에서 결정된 요구 비율 (R') 는 다음과 같이 단계 206 에서 정규화된다. 여기에는 3가지의 다른 정규화의 경우와 그 각 경우에 대해 2개의 변형예가 있다. 모든 3가지의 경우에서, 계산은 디스패치 리스트 (SRMRTHRU) 상의 모든 이용자에 대한 요구비율의 합 또는 ATOD 마크 (SRMCTHRU) 아래의 이용자들에 대한 요구비율의 합에 기초한다. 두번째 경우와 세번째 경우에서는, 상술한 바와 같이 제한을 강화하기 위하여, VMDBK 는 그 (하드 또는 소프트) 제한에 도달하는 것이 발견되는지의 여부에 따라 다르게 간주된다. 디스패치 리스트의 모든 이용자들의 R 의 합은,
SRMRTHRU = SRMRTHRN + SRMRTHRL + R'
로 표현되며,
여기서, SRMRTHRN 은 비제한되거나 또는 그들의 제한에 도달하지 않은, 디스패치 리스트의 모든 이용자들의 요구비율의 합이며, SRMRTHRL 은 제한에 도달한, 디스패치 리스트의 모든 이용자의 요구비율의 합이며, 여기서 부가된 것으로 나타낸 R' 은 현재 고려하고 있는 한 이용자의 R' 를 나타내는 것으로, 계산시에, SRMRTHN 또는 SRMRTHL 에 지금까지 더하지 않은 것이다. 이와 유사하게, ATOD 마크 아래의 이용자들의 합은,
SRMCTHRU = SRMCTHRN + SRMCTHRL + R'
이며,
여기서, SRMCTHRN 은 비제한되거나 또는 그들의 제한에 도달하지 않은, ATOD 아래에 있는 이용자들의 요구비율의 합이며, SRMCTHRL 은 제한에 도달한, ATOD 마크 아래에 있는 이용자들의 요구 처리량의 합이다. (이들 각 변수에서 문자 "C" 는 ATOD 마크 아래에 있는 이용자들이 CPU 바운드로서 간주될 수 있다는 주의 기호이다.) 이하의 (3가지 경우에 대한) 계산에서는, 단지 SRMRTHRN 및 SRMRTHRL 변수들만을 나타내었지만, 검사하려는 이용자가 ATOD 마크 아래에 있는 이용자인 경우에, 변수 SRMCTHRN 및 SRMCTHRL 로 대체된다. 3가지의 각 경우들에 대한 상술한 2가지 변형예를 설명한다.
첫번째 경우:
만약 ((SRMRTHRL + SRMRTHRN + R') > 1 및 SRMRTHRL > 0.5 이면, 일부 이용자의 점유율은 좀더 작아져야 하며, 제한에 도달하는 이용자들이 많기 (>0.5) 때문에, 이때 이 이용자들을 환산 (reduction) 에 모두 포함시킨다. 따라서, 현재의 이용자는 다음과 같이 정규화된다.
정규화된 R' = R' / (SRMRTHRL + SRMRTHRN + R')
따라서, 현재의 이용자의 점유율이 작아지게 된다.
두번째 경우:
만약 ((SRMRTHRL + SRMRTHRN + R') > 1 이거나 SRMRTHRL < 0.5 이면, 일부 이용자의 점유율이 더 작아져야 한다. 그러나, 제한에 도달하는 이용자들은 많지 않기 때문에 (이용자들의 R 의 합 < 0.5), 이들은 정규화하지 않는다. 그러면, 현재의 이용자의 점유율은, 현재의 이용자가 그 제한에 도달하지 않는 경우에만, 다음과 같이 조정된다.
정규화된 R' = R' * (1-SRMRTHRL) / (SRMRTHRN + R')
따라서, 그 점유율에 도달하지 않은 이용자의 점유율이 작아지게 된다. 그러나, 그 점유율에 도달한 현재의 이용자는 다음과 같이 이용한다.
정규화된 R' = R'(제한)
여기서, R'(제한) 은 특정의 하드 제한 또는 소프트 제한, 즉 적격자 리스트 시간의 효과를 위해 조정된 하드 제한 또는 소프트 제한의 정규화된 비율이다. 이 정규화된 비율은 그 제한에 도달한 이용자에 대해 제한되기 때문에, 이는 그 제한에 도달하지 않은 하나이상의 이용자 또는 하나이상의 비제한된 이용자가 존재하는 한, 이러한 이용자들의 점유율을 그들 각각의 제한으로 제한한다.
세번째 경우:
만약 ((SRMRTHRL + SRMRTHRN + R') < 1.0 이면, 일부 이용자의 점유율은 더 작아져야 된다. 제한에 도달한 이용자들의 점유율은 더 커지지 않아야 하기 때문에, 제한에 도달하지 않은 이용자들에 대해서만 조정을 행한다. 만약 현재의 이용자가 그 제한에 도달하지 않았으면, 그 점유율을 다음과 같이 조정한다.
정규화된 R' = (상기 두번째 경우와 동일함)
그러나, 이경우, 통상의 이용자 점유율은 (상술한 두번째 경우와 달리) 더 커지게 된다. 그러나, 만약 현재의 이용자가 그 제한에 도달하였으면, 그 점유율을 다음과 조정한다.
정규화된 R' = R'(제한)
이 정규화된 비율은 그 제한에 도달한 이용자에 대해 제한되기 때문에, 이는 그 제한에 도달하지 않은 하나이상의 이용자 또는 하나이상의 비제한된 이용자가 존재하는 한, 이러한 이용자들의 점유율을 그들 각각의 제한치로 제한한다.
첫번째와 두번째 경우가 다른 이유는, 가능한 이들 이용자들의 점유율이 거의 증가하지 않기 때문에 (세번째 경우 참조), 제한된 이용자들의 점유율을 감소시키지 않는 것이 바람직하기 때문이다. 이와 반대로, 다른 시간대에서 더 큰 점유율을 취함으로써, 통계적으로 비제한된 이용자에 대한 점유율의 손실이 일어날 것이다.
첫번째 경우와 두번째 경우간의 차이점은, SRMRTHRL > 0.5 에 대한 테스트가 이루어진다는 것이다. 이들 양자의 경우에는, 이용자의 점유율이 더 커지지 않고 더 작아지기 때문에, 현재의 이용자의 R' 을 고려하지 않는다. 그러므로, 그 제한에 도달하지 않을 것이다. 따라서, 이러한 이용자들이 합이 0.5 보다 큰지를 검사하기 위하여 테스트하는 경우에, 그 제한에 도달한 것으로 검출되지 않게 된다.
첫번째 경우에서, 각각의 R' 는 모든 R' 의 합으로 나누어진다. 따라서, 최종 값 (정규화된 R') 은 합이 1 이 될 것이다. 식 (SRMRTHRL + SRMRTHRN + R') 는 모든 R' 의 합을 나타낸다.
SRMRTHRL 및 SRMRTHRN 은 SRMRTHRU 의 구성부분 (또는 어레이 엘리먼트) 이고, SRMRTHRU 가 R' 의 합인 점을 상기하자. 이를 제외하고는, 상기의 경우들에서 계산을 행하는 시점에서, 현재의 이용자의 R' 가 SRMRTHRU 로부터 감산되며, 어느 엘리먼트 뒤에 새로운 R' 를 부가할지를 아직까지는 결정될 수 없다. 따라서, 식 (SRMRTHRL + SRMRTHRN + R') 는 R' 가 부가되어 있음을 명확히 나타내고 있다.
두번째 경우에서, R' 는 각각의 한계에 도달하지 않은 이용자들에 대해만 조정되지만, 각각의 제한에 도달한 이용자에 대한 R' 는 일정하게 유지된다. 따라서, 그들의 제한에 도달하지 않은 이용자들의 R' 는 그들의 제한에 도달하지 않은 모든 이용자들의 R' 의 합 (SRMRTHRN+R') 으로 나눈후, 그 결과를 (1-SRMRTHRL) 로 곱함으로써, 정규화한다. 후자의 인자는, 그들의 제한에 도달한 이용자들도 있어, 그들의 제한에 도달하지 않은 이용자의 정규화된 점유율의 합이 1이 되지 않기 때문에, 요구된다. (SRMRTHRN + R') 로 나누고 그 승수를 감산하여 구한 정규화된 R' 는 합이 1 이 되며, R' 를 (1-SRMRTHRL) 로 곱한 후, 합이 (1-SRMRHRL) 이 된다. SRMRTHRL 에 포함된 R' 값은 실제로 제한치, 즉 R'(제한) 와 동일하게 설정되었다.
다음의 이유로, 여분의 프로세서 시간을, 그들의 소프트 또는 하드 제한에 아직 도달하지 않은 모든 이용자들은, 그들의 절대적 또는 상대적 점유율에 비례하여 이용할 수 있다. 명확히, 이는 (이상적으로) ATOD 마크와 동일한 속도로 진행하는 디스패치 리스트의 이용자에게 일어난다. 일반적으로, 상술한 메카니즘은 오프셋을 설정 (또는 조정) 함으로써 절대적 또는 상대적 점유율에 비례하여 프로세서 시간을 점유시키려고 시도한다.
ATOD 마크 아래에 있는 이용자들에 대한, 이러한 비율 설정은 단계 206 에서의 R' 의 상술한 정규화의 2가지 특성으로부터 기인한다. 단계 206 의 설명에서 언급한 바와 같이, ATOD 마크 아래에 있는 각 이용자들에 대한 요구비율 (R') 의 정규화는 ATOD 마크 위에 있는 이용자의 집합을 포함한, ATOD 마크 아래에 있는 이용자들의 집합에 대한 합 (SRMCTHRU) 에 기초한다. 따라서, 이는 ATOD 마크의 아래에 있는 이용자들에게 더 높은 우선순위를 부여하게 되어, "정규화된 R' 식" 의 분모가 더 작아진다, 즉, 총합이 ATOD 마크 아래에 있는 이용자들에게만 제한되면, 그 총합중에서 더 많은 퍼센티지가 되기 때문에, 더 작은 오프셋이 되게 된다. 한편, ATOD 마크 위의 I/O 바운드 이용자들은 그들의 시간 분량을 이용하는데 느리지만, 일부 프로세서 시간을 사용할 수 있다. 따라서, ATOD 마크의 아래에 있는 이용자들에게는 CPU 서비스의 100% 미만이 주어지게 되며, 그들의 오프셋이 현재 100% 얻은 서비스에 기초하기 때문에, ATOD 마크 아래에 있는 이용자들은 상부로 천천히 이동하려 할 것이며, ATOD 마크를 뒤로 지연시키기 시작할 것이다. 그러나, ATOD 마크가 지연되는 것은 다음의 이유로 인해, 디스패치 리스트에서 다시 그 이용자들을 하방으로 이동시키려 할 것이다. 이용자가 ATOD 마크 위로 이동하자 마자, 더이상 ATOD 마크 아래에는 이용자의 집합이 없게 될 것이다; 따라서, SRMCTHRU 가 아닌 SRMRTHRU 가 "정규화된 R'" 식의 분모로 사용되게 될 것이다. 이러한 ATOD 마크 위로의 이동은, 그 "정규화된 R'" 식의 분모가 더 커지게 될 것이기 (정규화된 R' 는 더 작아지나 오프셋은 더 커짐) 때문에, 다시 디스패치 리스트에서 그 이용자들을 하방으로 이동시키려 할 것이다. 그 ATOD 마크의 상부 및 하부로 이동하는 이들 2가지 경향의 순수한 효과는, "여분의" 서비스를 설치시에 정의된 절대적 및 상대적 점유율에 비례하여 (그것을 이용할 수 있는 이용자들에게) 부여한다는 것이다. 이들 이용자들은 ATOD 마크와 더 빠르지 않고 동일한 속도로 진행한다.
ATOD 마크 위에 높이 위치된 이용자들에게는 그들이 이용할 수 있는 프로세서 시간 보다 더 많이 제공되지만, 이들은 일반적으로 그들의 원래 점유율의 총량이 아닌, 여분의 그들의 점유율의 대부분을 이용할 수 있다. 그러나, 그들의 상태가 CPU 바운드가 되도록 변화하면, 그들은 곧 상술한 이유로 인해 ATOD 마크의 아래로 떨어진 후, 그들의 설치시에 정의된 점유율에 비례하여 여분의 프로세서 시간을 부여하는 상술한 원리들에 의해 지배된다.
단계 206 의 점유율의 정규화에 대한 상기 설명은, 그 제한에 도달하지 않은 하나이상의 다른 이용자 또는 하나이상의 비제한된 이용자가 (ATOD 마크 아래에) 있는 경우에 하드 또는 소프트 제한된 이용자를 그들 각각의 제한에 제한시키는 방법을 설명한 것이다. 다음으로, 하드 제한 이용자에게 그 하드 제한 보다 더 큰 점유율을 부여하는 것을 억제하는 방법, 모든 이용자가 그들 각각의 제한에 도달한 후에 잔존하는 모든 여분의 프로세서 시간을 소프트 제한된 이용자에게 가장 큰 점유율로 할당하는 방법을 설명한다.
상술한 바와 같이, 이용자가 최소시간분량을 완료하면, 디스패치 리스트에서 단계 160 에서 계산된 하나의 오프셋 만큼 하방으로 이동된다. 그러나, 이동되기 전에, 이용자가 MAXFALL 제한을 통과하여 이동할지에 대한 결정이 이루어진다. 각 이용자에 대한 MAXFALL 제한은 그 이용자에 대한 오프셋의 4배과 같다, 즉, ATOD 마크를 아래로 5개의 오프셋과 같다. 만약 비제한된 또는 소프트 제한 이용자가 그 각각의 오프셋에 의해 MAXFALL 제한을 지나서 이동하는 경우에는, 그 MAXFALL 제한까지 하방으로 이동되며 지나지는 않는다. 이 MAXFALL 제한은, 디스패치 리스트에서 그들의 점유율이 그렇치 않은 경우에 비해 더 높게 위치될 것이기 때문에, 비제한된 및 소프트 제한된 이용자들이 그들의 점유율보다 더 많이 얻을 수 있도록 한다. 실제로, 모든 이용자들이 그들의 제한에 도달하고 비제한된 이용자들이 없으면, 가장 큰 점유율을 가진 소프트 제한된 이용자는, 그 이용자들이 가장 작은 오프셋, 따라서 가장 작은 MAXFALL 제한을 가질 것이기 때문에, 거의 모든 잔존하는 여분의 프로세서 시간을 취하게 될 것이다. 이는 디스패치 리스트에서 이 이용자들을 다른 소프트 제한된 이용자들 위에 위치시키고, 그 이용자들에게 이용자가 이용할 수 있는 모든 여분의 프로세서 시간을 부여하게 될 것이다.
그러나, 하드 제한된 이용자들은, MAXFALL 제한 아래까지 하강하는 경우에도 MAXFALL 제한에 의해 제한되지 않을 것이며, 그 하드 이용자는 실행 리스트로부터 제한 리스트로 이동될 것이다. 이 제한 리스트는 이용자 우선순위 (VMDLPRTY) 에 따라서 정렬된다. 따라서, 하드 제한된 이용자가 MAXFALL 제한 아래로 하강하는 되면, 일반적으로, 어떠한 더 이상의 최소시간분량도 완료하지 않거나 또는 디스패치 리스트에서 더 아래로 이동하지 않을 것이다. 이는, 디스패쳐가 제한 리스트에 있는 이용자들을 디스패치하지 않기 때문에 (이용자가 실행 리스트에 있으면, 실행 리스트에 들어가는 것이 허용되지 않는다), 하드 제한된 이용자가 그 지정된 제한을 초과하여 어떠한 프로세서 시간을 취하는 것을 억제시킨다.
이용자들은, 앞선 스케쥴이 더 이상 없도록, 제한 리스트에서 충분한 시간을 소비한 후에, 제한 리스트로부터 제거된다. 이는 다음과 같이 달성된다. 제 2 "인위적인 24시제" 클럭 "ATOD2" 가 형성된다. 이 ATOD2 시간은 이용자들에게 주어진 많은 CPU 서비스와 대기시간에 비례하여, 진행할 것이다. ATOD 2 가 제한 리스트의 헤드에서 이용자의 제한리스트 데드라인에 도달하면, 그 이용자는 제한 리스트로부터 제거되어, 실행 리스트에 다시 위치될 것이다. 데드라인에 도달할 때까지 시간분량을 완료하도록 이용자 시간을 부여하기 위해, 그 데드라인 앞에 하나의 시간분량을 남기도록 그 이용자에게 부여된다. 한편, 기존의 ATOD 는 디스패치 리스트에 들어가는 이용자들에 대해 시작하는 디스패치 리스트 우선순위를 설정하고 그 MAXFALL 제한을 계산하는데 계속 이용될 것이다. 즉, ATOD 는 디스패치 리스트와 실행 리스트에 대한 "데드라인" 으로서 기능한다.
종종, 이용자는 예를들어, 계속하기 이전에 인간의 개입을 요청하는 I/O 장치로 인해, 과도하게 긴 I/O 대기를 겪을 것이다. 따라서, 그 이용자에게는 디스패치 리스트상에서 다른 이용자들 보다 상당히 높게, 매우 높게 할당될 것이다. 이는 그 이용자가 CPU 바운드로 전환하면, 그 이용자들이 다른 이용자들을 지나서 이동할 때까지 실행하는 것을 모든 다른 이용자들이 억제하기 때문에, 그 이용자가 다시 동작을 시작할 때, 만약 그 이용자가 매우 높고 정상적인 오프셋팅 메카니즘이 그 이용자를 아래로 보내는 것에 의존하였으면, 너무 긴 시간을 요하는 문제점이 있다. 따라서, 그러한 이용자들을 검출하여 그들을 충분히 하방으로 오프셋시켜 그들을 디스패치 리스트상에 높이 있지만 그러한 초과하는 I/O 대기를 경험치 않은 다른 이용자들의 근방에 위치시키기 위하여, 다음의 메카니즘을 이용한다. "비용의(nonsuspect)" 이용자 (즉, 초과하는 I/O 바운드인 것으로 아직 의심받지 않은 이용자) 는 시간분량을 완료할 때마다, 그 이용자는 상술한 바와 같이 한 오프셋 만큼 하방으로 이동된다. 그러나, 그 이용자가 이 이동동안에 또다른 "비용의" 이용자를 통과하지 않으면, 그 이동하는 이용자는 "용의" 로서 지정된다. (이는 그 이동하는 이용자와 관련된 비트를 설정함으로써 행해진다.) 그 후, 그 용의 이용자는 한 시간 분량을 완료하고, 그 용의 이용자는 정상적인 오프셋만큼 하방으로 이동되며, 만약 이 이동 동안에, 그 이용자가 "비용의" 이용자를 통과하면, 그 이동하는 이용자는 그 이동하는 이용자가 조우한 첫번째 "비용의" 이용자 바로 위 까지 더 하방으로 이동된다. 또한, ATOD 마크 아래의 모든 이용자들은 "비용의" 이다.
"용의" 이용자는 TOD-TIED (TT) 속성을 부여받은 이용자이다. 이 TOD-TIED 메카니즘의 목적은 우선순위를 재정렬하는 것이 아니라, 이용자들의 상대적 순서를 정상으로 유지하고 너무 높게 상승함으로써 유발되는 어떤 갭을 줄이는 것이다. 이 TOD-TIED (TT) 속성은 ATOD 와 그 아래의 모든 이용자들에 속할 것이다. 또한, 재위치하는 VMDBK 는, TT 를 가진 VMDBK 위에 위치할 때마다, 하나의 VMDBK 로부터 (ATOD 로부터) 또다른 VMDBK 로 상부로 전달된다. 만약, ATOD 위의 VMDBK 가 또 다른 TT 를 가진 VMDBK 의 위에 위치되지 않으면, 그 속성을 상실한다. 그 다음 최소 시간분량 이후, 만약 VMDBK 가 TT 를 돌려받지 않으면, TT 속성을 가진 후속 VMDBK (만약, 개입하는 이용자가 없으면 ATOD) 바로 위로 내려 보내진다.
초과하는 I/O 바운드 이용자는, I/O 이 완료하기를 대기하고 있기 때문에, 스케쥴상의 최소 시간분량을 드물게 종료할 수 있다. 그 이용자는, 충분한 CPU 자원을 이용자에게 허용하기에 너무 바쁘기 때문이라기 보다는 그 I/O 동작에 대한 요청 때문에, 스케쥴이 늦어지는 것 같이 된다. 스케쥴러 (44) 는, 스케쥴이 뒤로 밀리는 것으로 간주하기 때문에, 이 이용자를 높은 우선순위로 스케쥴하려는 경향이 있다. TOD-TIED (28) 경계의 목적은 초과하는 I/O 바운드 이용자들을 너무 높은 디스패치 우선순위 (35) 를 얻지 않도록 하는 것이다. 만약 한 이용자가 일정시간 동안 초과하는 I/O 바운드에 머무르면, 그의 우선순위가 더욱더 높아질 것이다. 이와 같은 경우에, 그 이용자의 우선순위가 매우 높고, 디스패치되는 다음 번에 CPU 바운드로 가게 되면, 이 이용자는 시스템의 CPU 자원을 독점할 수 있다. 이러한 시나리오를 피하기 위하여, 이용자 디스패치 우선순위 (35) 가 높은 우선순위인 ATOD (23) 밑에 있는 경우에, 이용자는 TOD-TIED 속성을 획득한다. 그후, 이러한 TOD-TIED 속성을 가진 이용자에게는 우선순위에서 ATOD 에 매우 근접하게 디스패치 리스트상에 함께 클러스트되어 만약 CPU 바운드되면 시스템을 취할 수 없게 되도록, 바운드되는 우선순위가 주어질 것이다. 이 TOD-TIED 또는 "용의" 메카니즘은 이용자의 디스패치 우선순위를 높은 우선순위 측의 ATOD 로부터 상당한 변위내에 유지시키기 위하여 사용되지만, Maxfall 은 이용자들을 ATOD 의 낮은 우선순위측에 바운드되도록 유지하기 위하여 사용된다.
그 ATOD 클럭은 이용할 수 있는 가용 CPU 시간에 비례하여 진행한다. 시스템 시간 (오버헤드) 은 이용자의 작업 또는 점유율에는 이용할 수 없으며, 따라서, 진행중인 ATOD 에 대해서는 계산하지 않는다. 각각의 실행중인 CPU 는 규칙적으로 ATOD 를 증분하고 대기중인 CAUS. 는 ATOD 를 증분하지 않는다. 이는 단계 120 및 122 에서 디스패쳐에 의해 구동된다. ATOD 는 최종 증분이후에 여러개의 실제 CAUS. 에 의해 얼마의 이용자 시간이 분배되었는지에 따라 진행한다. 즉, 각 CPU 는 그 CPU 의 실제 이용자 실행시간 누산기의 진행량 (PFXUTIME) 에 비례하여 ATOD 를 증분시킨다. 이의 목적은 (모든 CAUS. 가 생산적으로 동작중일 때) ATOD 를 거의 실제 시간으로 진행시키려는 것이다. 모든 N 개의 CAUS. 가 동작중인 경우, 각 CPU 는 그 자신의 PFXUTIME 를 거의 실제 시간 (벽시계 시간 또는 TOD) 으로 진행시킨다. 따라서, N개의 CAUS. 의 기여도를 N 으로 나눈다.
ATOD = ATOD + (delta of PFXUTIME) /N
여기서, "delta of PFXUTIME" 는 최종 체크한 시간 이후에 CPU 의 PFXUTIME 누산기의 변화량이다.
ATOD2 는 각 CPU의 이용자시간 (PFXUTIME) 및 각 CPU 대기시간 (PFXTOTWT) 를 포함한다.
ATOD2 = ATOD2 + (delta of PFXUTIME + delta of PFXTOTWT) /N
여기서, PFXUTIME 및 PFXUTOTWT 는 각각 CPU 타이머와 유사한 더블워드 (doubleword) 클럭이다.
그러나, 임의의 CPU 가 여러가지 연속적인 간격을 대기하고 있는 경우에는, 또다른 실행중인 CPU 가 그 자신을 위해 ATOD2 에 (소정 환경하에서는 ATOD 에도) 대기시간을 기여토록 작용할 것이다. 이러한 대기중인 CPU 가 대기상태에서 모든 그 시간을 소비하는 것으로 추정되므로, 대기상태 동안, ATOD2 에의 기여는 (TOD 클럭에 의해 측정된) 실제 시간의 진행과 동일하여야 한다. 그러나, 대기중인 CPU 의 실행 시간에 대해 또다른 CPU 에 의해서는 추정 또는 기여되지 않는다. 이러한 대기중인 CPU 가 다시 실행을 개시하는 경우, 실제 시간에 따라 정상적인 방법으로 ATOD 에 자신이 기여하며, 최종적인 가능한 작은 간격에 대해 ATOD2 에 기여한다. (다른 CPU 는 종래 간격을 처리한다.)
위에서 설명한 바와 같이, 여러개의 연속적인 시간분량 간격을 대기하는 하나이상의 CAUS. 가 있고, 동시에, 현재의 CPU 가 그 실행 리스트에 어떠한 작업도 갖고 있지 않을 때, ATOD 에 일부 대기시간이 산입된다. 만약 현재의 CPU 가 그 실행 리스트에 작업을 가지고 있으면, 대기중인 CAUS. 는 그 작업을 행하는 것이 불가능할 것이며, 그렇치 않으면, 항상 작업을 행한다. 이와 반대로, 현재의 CPU 가 그 실행 리스트에 어떠한 작업도 가지고 있지 않으면, 대기중인 CPU 를 그 대기시간이 가용 시간인 것처럼 계산하는 것이 매우 안전할 것이다. 따라서, 하나이상의 CAUS. 가 확장모드에 있고, 현재의 CPU 가 그 실행 리스트에 어떠한 작업도 가지고 있지 않으면, 현재의 CPU 는 앞의 식 대신에 다음의 식을 이용한다.
ATOD = ATOD + (Delta/N) + (Delta/N) * TRKCT/(N-TRKCT)
여기서, ATOD = ATOD + (Delta/N) 는 원래의 식으로, "Delta" 는 "delta of PFXUTIME" 을 나타내며, "(Delta/N) * TRKCT/(N-TRKCT)" 는 대기시간을 나타내는 항으로, 여기서도 "Delta" 는 "delta of PFXUTIME" ("delta of PFXUTOTWT" 가 아님) 를 나타낸다. TRKCT 는 현재의 확장 대기모드에서 SRMTRKCT, 즉 CAUS. 의 카운트이다.
만약, 대기중인 CAUS. 가 그들 자신의 대기시간에 궁극적으로 기여하도록 허용되게 되면, 그 기여들은 적체되게 된다. 그러나, 상기 식을 이용함으로써, 동작중인 CPU 가 그 자신 (CPU 기반의) 의 기여보다 더 커지 않은 크기의 대기중인 CAUS. 대신에 기여하게 할 수 있다. 따라서, 두번째 항에서의 기본 크기는 Delta/N 으로 표현되며, 여러가지 확장된 대기모드 CAUS. 에 대해 기여하기 위하여 SRMTRKCT 만큼 곱해진다. 그러나, 그후, 동작중인 CPU 와 같이, 동작중인 CPU 처럼 기여할 현재의 CAUS. 와 같은 많은 다른 CAUS. 가 있기 때문에 (즉, 확장 대기모드가 아님), 그 결과를 (N-SRMTRKCT) 로 나눈다.
SRMTODSV 시간표는, 매 최소 분량 종료 (및 다른 스케쥴링 포인트) 에서 단지 간헐적으로, VMDBK 가 대기될 때마다, 즉 대부분의 I/O 동작이 뒤따를 때마다, 업데이트되는 경우에도, 현재의 TOD 의 우수한 어림치이다. 비록 SRMTODSV 는 ATOD 를 업데이트하는 시간인지의 여부를 결정하기에 충분히 정확하지만, 일단 그 결정이 이루어지면, 좀더 정확한 TOD 값이 사용된다.
위에서 설명한 바와 같이, CPU 의 대기시간은, ATOD 가 이용자들보다 더 빠르게 진행하기 때문에, 항상 ATOD 에 포함되는 것은 아니며, 이미 설명한 (높은 이용자들이 디스패치 리스트에 있는 것을 제한하도록 기능하는) "용의/비용의" 메카니즘이 모든 이용자들을 그들의 점유율을 고려하지 않고, 일정하게 진행시킬 것이다. 그럼에도 불구하고, ATOD 로부터의 제외된 총 대기시간은 단지 하나 (또는 몇개) 의 시스템의 여러 CAUS. 가 동작중이고 다른 것들은 보통 대기중에 있는 경우에 문제를 유발한다. 이와 같은 경우에, ATOD 는 지연되며, 실제 시간에 비례하여 진행하지 않을 것이다. 이는 비제한된 및 소프트 제한된 이용자들 또는 작은 점유율의 하드 제한된 이용자들의 경우에는 문제가 없으나, 큰 점유율의 하드 제한된 이용자들에 대해서는 상당한 모순을 유발한다. 이는 작은 점유율을 가진 이용자들이 ATOD 와 TOD 간의 작은 차이점이 중요치 않은 시간 분량을 완료한 후에, 디스패치 리스트에서 하방으로 크게 이동하기 때문이다. 그러나, 큰 점유율을 갖는 (작은 오프셋에 해당) 하드 제한된 이용자들에게는, ATOD의 정확한 동작이 중요하다. ATOD 는 이용자가 ATOD 를 너무 빨리 추월하여, MAXFALL 제한에 도달함으로써 제한 리스트에 조기에 위치되지 않도록, 큰 점유율을 가진 이용자를 비교적 빠른 보조로 뒤따라야 한다. 만약 이러한 일이 발생하게 되면, 시스템은 바쁜 시스템상의 하드 제한된 이용자가 그 점유유을 얻지만 바쁘지 않은 시스템 (특히, 시스템상에 단독으로 존재하는 경우에) 상의 하드 제한된 이용자는 그 점유율 보다 작게 얻는 바람직하지 못한 특성을 나타낸다. 실제 대기 시간이 있고 그 대기시간이 기존 작업에 대해 "이용가능한" 것으로 나타나는 경우에 ATOD 에 대기시간을 포함함으로써, 이러한 일이 발생하는 것을 방지한다. 이상 설명한 바와 같이, CAUS. 대기중이고 현재의 CPU 가 그 실행 리스트에 어떠한 작업도 없는 경우에는, ATOD 에 일부 대기시간이 포함된다. 현재의 CPU 는 그 대기중인 CAUS. 대신에 대기시간에 기여한다.
동시 출원중인 Davison 출원 번호 08/252,864호에서는, 대기시간의 초과하는 기여가, 그들의 점유율에 상관없이, "용의/비용의" 메카니즘으로 하여금 모든 이용자들을 일정하게 진행하도록 하기 때문에, 해로운 것으로 관찰된다. 현재의 CPU 가 이용하고 있는 CPU 시간량 (delta of PFXUTIME) 이상으로 기여케 함으로써, Davison 은 카운트될 때, 즉 CPU 바운드 작업이 있을 때와 제한 리스트에 이용자가 위치될 가능성이 있을 때에 완전한 기여가 이루어지며, CPU 가 바쁘지 않을 때에는 더 적은 기여가 이루어진다. Davison 에 의해 부가된 대기시간의 "더 적은 기여" 는, 본 발명에 따르면, 이후 자세히 설명된 바와 같이, 좀더 빈번히 발생하는 환경하에서 거의 모든 대기시간에 의해 증대되며, 따라서, 상당히 우수한 결과가 얻어지게 된다.
실행 리스트와 제한 리스트에서 이용자들은 서로 다른 속도로 동작하는 다른 클럭 (ATOD 및 ATOD2) 로 타이밍되기 때문에, 이용자가 제한 리스트 (27) 로 이동하거나 그로 부터 제거될 때에 변환 (translation) 이 수행된다. 그 제한 리스트에 이용자가 있는 동안, 이용자는 2개의 우선순위, 즉, 디스패치 우선순위 (VMDDPRTY) (35) 와 제한 리스트 우선순위 (VMDlPRTY) (29) 를 가진다. 제한 리스트 우선순위는 그 이용자의 디스패치 리스트 우선순위로부터 유도된다. 이의 목적은 그 이용자가 그 제한 리스트 (27) 에서 "지연" 을 시작하기 때문에 그 이용자가 ATOD (23) 으로부터 변위와 동일한 ATOD2 (21) 로부터의 변위를 가지게 하려는 것이다. 이 변위는 그 이용자가 다시 동작하기 이전에 통과하여야 할 지연량을 나타내지만, ("대기시간" 을 완전히 카운트하기 위하여) 그 지연은 ATOD2 클럭에 대해 측정될 필요는 없다. 따라서, 변환은
VMDLPRTY = ATOD2 + (VMDDPRTY - ATOD)
이다.
이 VMDLPRTY 의 계산은 그 이용자가 제한 리스트에 들어갈 때에 수행된다. 그 이용자가 제한 리스트를 떠날 때, 그 이용자는 그 이용자의 데드라인 앞에 하나의 최소 시간분량으로 실행 리스트에 들어가야 한다. 따라서, (정의에 의해) 이용자가 제한 리스트로부터 실행 리스트로 이동할 때, 그 이용자의 VMDDPRTY 는, 그 이용자에게 통지하고 그 이용자가 이동되기 이전에 제한 리스트 데드라인을 조금 지나는 지연에 대해, 아래에 지적한 보상으로, (ATOD + TS) 로 설정된다.
VMDDPRTY = (ATOD + TS) - ((ATOD2 + TS) - VMDLPRTY)
= VMDLPRTY + ATOD - ATOD2
도 1 과 함께, 도 6 을 참조하면, 이하 단계로서 지칭하는, 상대적 점유율과 절대적 점유율 이용자들 에 대한 중앙 프로세서 처리를, 이용자들이 너무 일찍 대기하지 않거나 너무 늦게 제거되지 않게, 스케쥴링하는, 본 발명의 방법의 바람직한 실시예를 구현하기 위한 프로그램 요소를 개략도를 나타낸 것이다. 이하, 도 6 에 나타낸 바와 같이 반드시 순차적인 것은 아닌, 이들 단계들간의 관계를, 표 1 의 본 발명의 바람직한 실시예의 의사 코드 표현을 참조하여, 설명한다.
중앙 프로세서 또는 다른 시스템 자원 (20) 소비의 이용자의 점유율이 절대값으로 제한될 수 있으며, 이는 정확한 최대 량 (26) 으로, CPU 자원 (20) 의 20% 이다. 이 처리에서, 절대값은 일반적으로 이 용어에 관련된 수학적 정의를 지칭하지 않으며, 상대적 점유율 및 절대적 점유율의 IBM VM 스케쥴러 개념에 기인한 것이다. 예를들어, 만약 5명의 이용자가 각각 100의 상대적 점유율로 정의되고 5명이 모두 동작중이면, 스케쥴러 (44) 는 시스템 CPU 자원 (20) 의 1/5 을 그들 각각에 부여하려고 시도한다. 만약, 그들중에서 4명만이 동작중이면, 스케쥴러 (44) 는 그들 각각에 시스템 자원 (20) 의 1/4 를 부여하려고 시도한다. 그들 각각이 그들의 우선순위와 그당시 동작중인 모든 상대적 점유율의 전체 우선순위에 기초하여 시스템의 전체 점유율을 취한다. 또한, 그 시스템의 절대적 점유율이 하나의 이용자에게는 부여될 수 있다. 예를들면, 한 명의 이용자에게는 그 시스템의 20%의 절대적 점유율이 주어질 수 있다. 이는 얼마나 많은 상대적 점유율 이용자들이 동작중인지에 관계없이, 이 이용자가 시스템 자원중에서 20% 를 획득함을 의미한다. 그 상대적 점유율 이용자들에게는 그 나머지 점유율, 이경우에는, CPU 자원의 80% 중에서 비례하는 점유율이 부여된다.
단계 50 에서, 이용자들이 (a) 이용자 최소 점유율 할당 (24), (b) 이용자들이 중앙 프로세서 유닛 (CPU) 자원 (20) 을 소모할 때 진행하는 제 1 24시제 클럭 (ATOD) (23), (c) 높은 디스패치 우선순위 제한 (TOD-TIED) (28), 및 (d) 낮은 디스패치 우선순위 제한 (maxfall) (18) 에 의해 정의된 경계내에서 결정된 수치 (35) 만큼 프로세서 처리에 우선순위가 주어진다.
시스템 자원의 점유율에 대한 이용자 제한은 특정의 절대적 또는 상대적 수치로 시스템 디렉토리에 정의되어 있다. 예를들면, VM 디렉토리는, 이용자를 시스템에 정의하는데 이용된다. 각 이용자들에 대한 엔트리가 있으며, 이 이용자가 가질 수 있는 시스템 자원의 상대적 또는 절대적 점유율이 얼마인지를 규정하기 위한 SHARE 문 (24, 26) 을 포함할 수 있다. 또한, 이 점유율은 시스템이 SET SHARE 명령을 이용하여 동작하고 있는 동안에 동적으로 변경될 수 있다.
이용자들에게는 경계내에서 우선순위를 정함으로써 시스템 자원이 주어지며, 이는 이용자에게 CPU 자원 (20) 과 같은 시스템 자원이, 새로 계산된 우선순위가 그 이용자의 시스템 점유율을 그 정의된 최소 점유율 (28) 아래로 떨어지거나 또는 그 정의된 최대 점유율 (26) 을 초과하도록 하지 않는 한, 그 우선순위에 기초하여 주어짐을 의미한다. 예를들어, VM 스케쥴러 (44) 의 경우, 이용자에게는 최소 상대적 또는 절대적 점유율 (24) 및 최대 상대적 또는 절대적 점유율 (26) 로 정의될 수 있다. 이들 정의는 이용자에 대한 디스패치 우선순위 수치 (35) 를 계산할 때 고려되는 경계를 형성한다. 예를들어, 만약 이용자에게 200 의 상대적 점유율 (24), 20% 의 '과제한된' 절대적 최대 점유율 (26) 이 할당되고 이 이용자와 또다른 상대적 200 이용자가 동작 중이면, 최대 경계가 규정되지 않은 경우, 그 '과제한된' 이용자에게는 이용자가 시스템 CPU 자원 (20) 의 50% 를 받을 수 있는 경우에도, 20% 최대 경계 (26) 내에서 우선순위가 정해질 것이다.
'이용자 최소 점유율' (24) 가 정의된 이용자에게는 그 이용자의 규정된 상대적 점유율에 기초하여 모든 동작중인 이용자들중의 총 상대적 점유율의 비율에 따라 시스템 자원의 점유율이 부여된다. 그 이용자의 최소 점유율은 그 이용자에 대한 VM 디렉토리에 규정되어 있으며, (위에서 설명한) 나머지 점유율과 동일하게 계산되지만 그 디렉토리로부터의 그 규정된 최소 점유율을 이용하여 계산된다. 또한, 그 이용자의 최대 점유율은 VM 디렉토리내의 그 이용자의 규정된 최대 점유율 (26) 에 기초한다는 점을 제외하고는, 동일하게 계산된다.
'인위적인 24시제' (ATOD) (23) 는 시스템 와이드 24시제 클럭 포멧의 필드이다. 특정의 CPU 자원은 동시에 동작하고 대기될 수 없으며, 수치 ATOD (23) 는 이용자 (어떠한 이용자) 작업이 시스템에서 수행되고 있는 시간 동안에, 시스템 오버헤드와 식별됨에 따라, 증가된다. 그 시스템의 디스패치 우선순위 계산은 그 ATOD 수치 (23) 에 기초 및 비교된다. 'ATOD' (23) 및 'ATOD2' (21) 양자는 인위적인 24시제 클럭이다. 'ATOD' (23) 과 'ATOD2' (21) 어느 것도 실제 클럭이 아니라, 시간 수치가 누적되는, TOD 클럭 포멧인 소프트웨어에 의해 유지된 필드들이다. 그 소프트웨어는 이들 필드들을 적절하게 업데이트한다. ATOD2 는 시스템이 실제로 이용자 작업을 행하는 시간과 시스템이 대기하는 시간 모두를 누적한다. ATOD 는 시스템이 실제로 이용자 작업을 실행하는 모든 시간을 누적하며, 소정의 환경하에서는, 또한 대기시간도 누적한다. 따라서, 실제로, ATOD 는 ATOD2 에 누적된 시간의 서브세트의 누적이다.
본 발명의 바람직한 실시예의 본질적인 특징은, (동시 출원중인 Davison 의 미국특허 출원번호 제 08/252,864호의 경우와 같이) 대기시간으로 ATOD 를 업데이트하는 것이 디스패쳐 경로만이 아닌 동작대기 과정에서 일어난다는 것이다. 이하, ATOD 를 (위에서 설명한 바와 같이 단지 대기시간의 일부분만을 부가하는) 정상적인 디스패쳐 경로이외의 동작대기과정의 모든 대기시간으로 업데이트하는 이유는, 소정 환경, 동작대기가 적어도, 예를들면 250ms 인 환경하에서는, ATOD 에 전체 대기시간을 포함시키는 것이 바람직하기 때문이다. 따라서, ATOD 는 일반적으로, 이용자 작업시간을 누적한다. 대부분의 시스템의 경우와 동일하다. 그러나, 일부 대기시간을 ATOD 에 포함되게 하는 환경들도 있다. 지금까지는, 그러한 환경들은 매우 제한되거나 드물었으므로, ATOD 에 포함된 대기시간량은 무시할 수 있었다. 본 발명에 따르면, 좀더 빈번히 발생하는 환경: 즉, 저부하상태 (동작 대기 루틴 동안) 동안에, 제한된 이용자가 있고 중앙 프로세서가 연속적으로, 예를들면, 250밀리초 이상 동안에 동작대기하고 있는 경우에, 더 많은 대기시간이 ATOD 의 누적에 포함된다.
우선순위 제한 (35) 은 '높은 디스패치' 및 '낮은 디스패치' 수치로서 정의된다. 특정 이용자 디스패치 우선순위 (35) 가 현재의 ATOD 수치 (23) 의 라인으로 너무 멀리 벗어나는 것을 방지하기 위하여, 스케쥴러 (44) 는 예를들어, 그 현재의 ATOD (23) 와 그 이용자의 우선순위 (35) 간의 차이를 높은 디스패치 우선순위 제한 (TOD-TIED) (28) 과 낮은 디스패치 우선순위 제한 (maxfall) (18) 로 지칭된 최대 수치로 제한한다. 그 이용자에 대한 비정상 응답 시간을 방지하기 위하여, 그들 제한의 바깥에 이용자의 디스패치 우선순위 (35) 가 설정되지 않게 될 것이다.
단계 52 에서, 이용자들에게 경계 (18, 28) 내에서, (a) 선택된 이용자들에게 할당된 이용자 최대 제한 점유율 할당 (26) 를 설정하고, (b) 제한 리스트 (27) 를 제공하고, 그리고 (c) 이용자들이 CPU 자원을 소모하고 CPU 들이 대기중일 때에 진행하는 제 2 인위적인 24시제 클럭 (ATOD2) (21) 를 제공함으로써, 특정의 절대 수치로 자원 (20) 소모를 제한한다.
제한 리스트는 자원의 소모가 시스템 디렉토리내의 그들의 SHARE 문 (24, 26) 또는 SET SHARE 명령에 의해 허용된 최대 절대적 점유율에 도달하였거나 초과한 이용자들의 리스트 (27) 이다. 한편, 그 리스트 (27) 상에는, 이용자들이 스케쥴러 (44) 에 의해 디스패치되지 않고, 따라서, 그 자원 (20) 소모가 제한된다. 이용자는 최대 절대적 점유율 또는 최대 상대적 점유율로 특정될 수 있으며, 이들중 어느 하나가 제한될 수 있다. 최대 (절대적 또는 상대적) 점유율 중의 어느 유형을 가지는 과제한된 이용자들은 제한 리스트상에 위치시킴으로써 제한시킬 수 있다. 또, 과제한된 기능과는 다르게 동작하는 소프트 제한 (limitsoft) 이 있다. 소프트 제한 이용자는 제한 리스트상에 위치시켜 제한되지 않는다.
본 발명에 따르면, 과제한된 이용자들이 제한 리스트상에 너무 빨리 위치되거나 또는 그 제한리스트로부터 너무 늦게 제거되지 않는 것을 보장하기 위하여, 제한된 이용자가 있고 그 이용자의 우선순위가 maxfall (현재의 ATOD + N*오프셋) 을 초과하는 새로운 우선순위로 재계산되며 그 이용자가 그 제한을 초과하는 경우에, 제한 리스트에 이용자를 부가한다.
ATOD2 가 그 이용자의 제한 리스트 우선순위의 하나의 최소 시간분량 이내에 있는 것으로 계산되는 경우에, 그 제한 리스트로부터 이용자를 제거하며, 여기서, N 은 소정의 미리 선택된 수치로서, 예를들면, N=4 이다.
단계 54 에서, 그 이용자에 대한 제한 리스트 (27) 우선순위가 결정되며, 또한, 제2 인위적인 24시제 클럭 (ATOD2) (21) 의 진행에 기초하여, 그 이용자를 제한 리스트로부터 제거할 것인지를 결정한다.
단계 56 에서, CPU 가 휴지중인 경우에, 유입 작업 (32) 의 동작대기 연속 모니터 (30) 가 제공된다. 이 '동작대기 루틴' 또는 '동작대기 메카니즘' 은 다중처리 시스템에 사용되는 방법으로서, 디스에이블된 대기상태를 적재하기 보다는, 처리할 작업을 갖지 않는 과정이 루핑하여 이용가능한 작업을 능동적으로 탐색한다. 이는 작업이 스택되어있는 프로세서로 작업을 스태킹하는 프로세서로부터 작업이 스택되었음을 인식해야 하는 프로세서의 부담을 경감시킨다.
단계 58 에서, 디렉토리에 그의 점유율 정의 (26) 에 의해 제한되어 있는 이용자가 이용할 수 있는 CPU 자원의 최대 점유율인, 최대 처리 점유율 (26) 에 기초하여 이용자에게 우선순위가 할당된다. 스케쥴러 (44) 가 그 이용자에게만 이용가능한 시스템의 점유율에 기초하여 우선순위를 할당하는 경우가 있으며, 제한된 점유 이용자가 있기 때문에, 가용 점유율이 그 이용자에게 허용된 것보다 더 많은 경우가 있다. 그 이용자가 (제한 리스트 (27) 에 존재하는 것에 의해) 제한되고 그 가용 점유율이 그 이용자에게 허용된 점유율 (26) 보다 더 많은 경우에는, 그 이용자의 디스패치 우선순위 (35) 를 결정하는데 '최대 처리 점유율' (26) 을 이용한다.
단계 60 에서, 그 이용자의 디스패치 우선순위 (35) 에 대해 계산된 새로운 수치가 낮은 디스패치 우선순위 제한 (maxfall) (18) 을 초과하는 경우에, 제한 리스트 (27) 상에 이용자들이 위치된다. 디스패치 우선순위 (35) 는 이용자에 대한 다른 시간에서 계산된다. 제한 리스트 (27) 에 이용자들이 위치되어 있는지를 결정하기 위하여, 그 이용자의 디스패치 우선순위 (35) 가 재계산되는 시점에서 체크된다.
단계 62 에서, 제한 리스트상의 체재 (29) 기간은 ATOD (23) 및 ATOD2 (21) 를 참조하여 결정된다. 이용자의 디스패치 우선순위 (35) 가 계산되는 경우에, 미래에 이벤트가 발생할 ATOD (23) 의 값이 예측되며, 그 이벤트는 그 이용자의 최소 시간분량의 끝이다. 이 ATOD (23) 의 예측값을 그 이용자의 디스패치 우선순위 (35) 로서 사용한다. 만약 그 이용자가 제한 리스트 (27) 상에 위치되는 것으로 결정되는 경우, ATOD (23) 가 아닌, ATOD2 (21) 가 그 리스트로부터 그 이용자를 제거하기 위한 기준으로서 이용된다. 그후, ATOD (23) 에 기초한 그 이용자의 디스패치 우선순위는 ATOD2 (21) 에 기초하여야 하는 제한 리스트 우선순위 (35) (제한 리스트 (27) 로부터 빠져나오는 예측시간) 로 변경되어야 한다. 이를 행하는데 이용된 계산은
제한 리스트 우선순위 = ATOD2 + (디스패치 우선순위 - ATOD)
이다.
단계 64 에서, 제한 점유율 이용자들이 CPU 에 접근하는 때를 결정한다.
단계 66 에서, 중앙 프로세서 유닛 (CPU) 와 같은 시스템 자원이 (인터럽트 없이 동작하는, 즉, 어떠한 이용자 작업 (32) 를 발견하여 실행하지 않는) 동작대기 상태에서 연속적으로 정의된 실제 시간 간격 동안에 얼마동안 있었는지를 결정한다. 이 결정은 동작 대기상태에 들어갈 때의 실제 시스템 TOD 클럭의 수치를 저장하여 이를 현재의 TOD 수치와 비교함으로써 이루어진다.
단계 68 에서, ATOD (23) 는 증분되며, 그 ATOD2 (21) 는 업데이트된다.
본 발명의 바람직한 실시예에 따르면, 이 ATOD (23) 의 증분은 동작대기 과정 (30) 동안에 수행된다. 동작 대기코드의 루프를 통과할 때마다, 제한 리스트 (27) 상에 이용자들이 있는지의 여부를 결정하기 위하여 체크된다. 만약 거기에 있고, 동작 대기과정이 특정의 시간간격 (예를들면, 2.5 밀리초) 동안에 연속적으로 실행되고 있으면, ATOD (23) 수치는 최종 시간 ATOD (23) 가 업데이트된 이후에 동작대기에서 소요된 총시간량 만큼 증가된다. 따라서, 만약 그 시스템이 (이용할 새로운 작업을 갖지 않고 적어도 250 밀리초 동안에 동작대기에 있는 것으로 프로세서에 의해 정의되는 바와 같이) 낮은 부하상태에 있고 제한 리스트 상에 제한된 이용자들이 있으면, ATOD (23) 에 전체 대기시간 간격이 더해진다.
또한, ATOD2 의 업데이트가 디스패쳐로의 호출에 의해 동작 대기 과정 (30) 동안에 이루어진다. 동작 대기 (30) 코드의 루프를 통과할 때마다, 제한 리스트 (27) 상에 이용자들이 있는지를 결정하기 위하여 체크된다. 만약 있고, 그 동작 대기 과정 (30) 이 특정의 시간 간격 (예를들면, 2.5 밀리초) 동안에 연속적으로 실행되었으면, 그 동작 대기 루틴은 디스패쳐를 호출하여, ATOD2 (21) 를 최종 시간 ATOD2 (21) 이 업데이터된 후에 동작대기에서 지나간 시간량 만큼 증가된다. 동작 대기 과정 동안에 디스패쳐를 호출하여 ATOD2 를 업데이트함으로써, 낮은 부하 상태에서에서, 좀더 빈번한 체크를 행하여, 그 제한 리스트로부터 이용자를 제거한다.
단계 70 에서, ATOD2 수치 (21) 가 하나의 최소 시간분량 이내이고 CPU 연속 동작대기 상태 시간이 ATOD1 (21) 에 포함되면, 제한 리스트 (27) 로부터 이용자들을 제거한다.
따라서, 본 발명의 바람직한 실시예에 따르면, ATOD (23) 에 CPU 대기시간을 부가하는 것은 낮은 부하 (CPU 휴지) 상태에서 제한 리스트 (27) 상에 이용자들이 조기에 위치되지 않도록 하고 동작 대기루틴으로부터 디스패쳐로의 호출에 의해 제한 리스트 (27) 로부터 이용자의 제거를 체크하는 증대된 세분화는 제한 리스트 체재에 나은 정확도를 제공한다. 이 방식에서, 제한 리스트 (27) 에서 제거할 이용자가 있는지를 체크하는 시점과 그후에 체크되는 시점간의 간격의 크기가 많이 감소된다. 유사한 시간간격은 증가된 세분화를 의미한다.
제한 리스트 (27) 은 그 이용자가 허용된 CPU 자원 (26) 보다 더 많은 CPU 자원 (20) 을 받고 있을 때에 이용자를 감시하는데 이용된다. 이것이 일어나면, 그 이용자는 제한 리스트 (27) 상에 일시적으로 위치된다. 스케쥴러 (44) 는 제한 리스트 (27) 의 이용자를 제거할 시점인지를 결정하기 위하여 체크한다. 이 체크는 제한 리스트로부터의 "제거를 체크하는" 것으로 지칭되는 것이다. 이 "체킹" 은 이벤트 구동형이다. 본 발명의 이전에는, 이 이용자의 작업을 스케쥴링하여 디스패치하는 과정 동안에, 동작중인 프로세서 (처리할 작업을 가진 프로세서) 에 의해 그 제한 리스트가 체크되었다. 본 발명에 따르면, 동작 대기 메카니즘도 이러한 체크를 유발한다.
표 1 은 본 발명의 바람직한 실시예의 의사 코드 설명을 나타낸 것이다. 이 의사코드는 도 2 의 단계들을 참조하면 블랭킷 [] 로 주석이 붙여져 있다. 표 1 과 함께, 도 1 을 참조하면, 디스패쳐 (40) (HCPDSPCH 라 함) 는 라인 2 에서 시작하는 디스패쳐 루프에 의해 구현되며, 모니터 (30) 은 라인 18 에서 시작하는 동작대기 루틴에 의해 구현되며, 스케쥴러 (44) 는 라인 36 에서 시작하는 스케쥴러 우선순위 재계산 코드에 의해 구현된다. 라인 20 에서, 실행한 새로운 작업이 있다, 예를들면, 유입 작업이 비어있지 않다. 라인 25 에서, 250 밀리초의 기준은 다른 시스템에 적당히 미리 선택된 시간 수치로 변경될 수 있다. 라인 11 과 라인 27 양자에서, 최종 대기시간이 부가된 이후의 대기시간이 ATOD 에 부가되며, 라인 32 에서 디스패쳐로의 호출에 의해, ATOD2 에 부가된다. 디스패쳐를 호출하여 대기 루틴 동안에 대기시간을 부가하는 것이 본 발명의 핵심이다. 이전에는, 라인 11 의 처리가 발생되기 전까지는 ATOD2 에 대기시간을 부가하지 않았다. 낮은 부하상태에서, 그 처리가 일어날 때까지 꽤 오래 걸렸다. 지금까지 이는 제한 리스트 (27) 상에 이용자들이 너무 오래 머무르도록 하였다. 본 발명에서는, 낮은 대기상황에서, 좀더 빈번하게 대기시간의 작은 증분을 부가함과 동시에, 제한 리스트를 체크함으로써, 이용자들이 그 제한 리스트로부터 나와야 될 때에 이용자를 그 제한 리스트로부터 나오게 한다. 표 1 의 라인 35 는 도 1 의 라인 82 로 표현한 것으로, 동작 대기 연속 모니터 (30) 가 ATOD 에 대기시간을 부가할 때에 동작 대기 연속 모니터 (30) 가 디스패쳐 (40) 로 진행하여 ATOD2 를 업데이트한다는 부가적인 의미를 가지고 있다. 표 1 의 라인 50 에서 언급한 새로운 우선순위는 그 이용자의 재계산된 디스패치 (즉, 데드라인) 우선순위로서, 그 이용자가 다시 디스패치될 때를 결정하는데 이용된다. 이 디스패치 우선순위는 maxfall 및 TOD-TIED 의 제한에 의해 바운드된다. 스케쥴러 (44) 는 라인 58 에서 이 우선순위를 이용하여, 우선순위 대로 디스패치 리스트 (37) 상에 그 이용자를 위치시킨다. 표 1 의 라인 54 의 식에서 번호 "4" 는 실험적으로 정의된 최적의 번호를 나타내며, 본 발명의 범주로부터 일탈함이 없이 변경될 수도 있다. 표 1 의 라인 61 에서, 그 이용자는 그 새롭게 재계산된 디스패치 리스트 우선순위 (35) 에 기초하여 디스패치 리스트 (37) 상에서 재정렬된다.
변형예 (Alternative Embodiment)
본 발명의 설명을 위하여 본 발명의 특정 실시예를 설명하였지만, 본 발명의 정신 및 범주로부터 일탈함이 없이 여러가지 변경을 행할 수 있다. 특히, 본 발명의 방법에 따른 컴퓨터의 동작을 제어하는 장치에 의해 독출가능한 신호들을 기억하기 위하여, 고체 또는 액체 전송매체, 자기 또는 광학 와이어, 테이퍼 또는 디스트 등과 같은 프로그램 저장 또는 기억장치를 제공하는 것은 본 발명의범주내이다.
또한, 본 발명의 방법의 각 단계는 IBM System 390, AS/400, PC 등과 같은 어떠한 범용 컴퓨터에서도, C++, 자바, P1/1, 포트란 등과 같은 어떠한 프로그래밍 언어로부터 생성된 프로그램 모듈 또는 오브젝트의 하나이상, 또는 그 하나이상의 일부에 따라서, 실행될 수 있다. 또한, 상기 각 단계들, 또는 상기 각 단계를 구현하는 파일 또는 오브젝트 등은 주문형 하드웨어 또는 그 목적을 위해 디자인된 회로 모듈에 의해 실행될 수 있다.
따라서, 본 발명의 보호 범위는 단지 다음의 청구범위와 그 균등물에 의해서만 제한된다.
종래기술 보다 우수한 이점
저부하 상태에서 시스템 자원에의 이용자의 접근을 그 하드 제한에 최근접하거나 또는 동등하게 하는 것이 가능한 스케쥴러 시스템 및 방법을 제공하는 이점이 있다.
또한, 시스템 자원에 최적으로 요구하는 것을 용이하게 하고, 그러한 자원의 가용성 도는 비용에 대한 이용자의 불만을 감소시킨, 향상된 스케쥴러를 제공하는 이점이 있다.
또한, 시스템에 의해 사용되는 스케쥴링 알고리즘에 피드백 메카니즘으로서 모니터 데이터를 사용하여, 이용자의 우선순위를 결정함으로써, 어느 이용자가 다음에 실행되어야 하는지를 결정하는 시스템 및 방법을 제공하는 이점이 있다.
또한, 제한된 접근을 가지는 이용자를 제한 리스트상에 너무 빠르지 않게 배치하고 그 제한 리스트로부터 너무 늦지 않게 이용자들을 제거함으로써, 제한된 접근을 가지는 이용자에게 시스템 자원을 스케쥴링하는 시스템 및 방법을 제공하는 이점이 있다.
또한, 자원의 스케쥴링을 너무 늦지 않게 인에이블시키고 자원의 스케쥴링을 너무 빠르지 않게 정지시킴으로써, 제한된 접근을 가지는 이용자에게 시스템 자원을 스케쥴링하는 시스템 및 방법을 제공하는 이점이 있다.

Claims (10)

  1. 이용자에 의해 시스템 자원을 스케쥴링하는 방법에 있어서,
    제 1 클럭을 유지하는 단계;
    제 2 클럭을 유지하는 단계;
    디스패치 과정 동안에,
    만약 처리할 작업이 있으면, 이용자가 대기상태에 있을 경우에만 다 른 이용자들과의 디스패치 우선순위의 순서에 따라 상기 이용자에게 시스템 자원의 이용을 스케쥴링하고, 그렇치 않으면,
    이용자 시간 만큼 상기 제 1 클럭을 진행시키고,
    이용자 시간과 대기시간 만큼 상기 제 2 클럭을 진행시키는 단계;
    대기과정 동안에,
    만약, 처리할 작업이 있으면, 상기 디스패치 과정을 호출하고, 그렇치 않으면,
    대기시간을 타이밍하고,
    만약, 상기 대기시간이 소정 수치를 초과할 때에 이용자가 대기상태 에 있으면, 상기 제 1 클럭을 상기 대기시간 만큼 증분하고, 상기 디스패 치 과정을 호출하는 단계를 포함하는 스케쥴링 방법.
  2. 제 1 항에 있어서,
    스케쥴링 과정 동안에,
    상기 이용자에 대한 이용자 점유율을 결정하는 단계;
    만약 상기 이용자 점유율이 소정의 최대 허용 점유율을 초과하면, 상기 이용자 점유율에 기초한 이용자 오프셋과 이전의 시간분량에 대한 어떠한 오버런에 대해 조정한 시간분량을 계산하는 단계;
    현재의 디스패치 우선순위와 상기 이용자 오프셋을 합하여, 상기 이용자에 대한 새로운 디스패치 우선순위를 계산하는 단계;
    만약, 상기 새로운 디스패치 우선순위가 상기 제 1 클럭을 상기 이용자 오프셋의 함수 만큼 초과하면, 상기 이용자를 대기상태로 두고, 상기 디스패치 과정을 호출하며, 그렇치 않으면, 상기 디스패치 과정을 호출하는 단계; 및
    상기 디스패치 과정 동안에, 상기 이용자가 시간분량을 완료하자 마자, 상기 스케쥴링 과정을 호출하는 단계를 더 포함하는 스케쥴링 방법.
  3. 제 2 항에 있어서,
    상기 디스패치 과정 동안에,
    상기 이용자가 상기 제 2 클럭의 한 시간분량내에서 제한 우선순위로 대기상태에 있으면, 상기 이용자를 제한 상태로부터 제거하는 스케쥴링 방법.
  4. 복수의 제한된 이용자들 간에 시스템 자원의 이용을 스케쥴링하는 방법에 있어서,
    제 1 24시제 클럭을 유지하는 단계;
    제 2 24시제 클럭을 유지하는 단계;
    디스패치 루틴을 실행하는 단계;
    동작대기 루틴을 실행하는 단계;
    우선순위 재계산 루틴을 실행하는 단계를 포함하되,
    상기 우선순위 재계산 루틴은,
    첫번째 이용자에 대한 이용자 점유율을 계산하고;
    만약 상기 이용자 점유율이 미리 지정된 최대 허용 점유율을 초과하면, 상기 이용자 점유율에 기초하여 이용자 오프셋과 이전의 최소 시간분량에 대한 어떤 오버런을 조정한 최소 시간분량의 크기를 계산하며;
    구 우선순위와 상기 오프셋을 더하여 이용자 디스패치 우선순위를 계산하고;
    만약 상기 이용자 디스패치 우선순위가 상기 제 1 클럭과 상기 이용자 오프셋의 함수를 더한 maxfall 수치를 초과하고, 이 이용자가 제한된 이용자이고 그의 최대 점유율로 스케쥴되고 있으면, 상기 이용자를 제한 리스트에 부가하며;
    그렇치 않으면, 상기 이용자를 디스패치 리스트에 우선순위에 따라서 재정렬하고;
    상기 디스패치 루틴을 실행하는 단계를 포함하고,
    상기 디스패치 루틴은,
    만약 디스패치할 작업이 없으면, 상기 동작대기 루틴을 실행하고, 그렇치 않으면, 임의의 우선순위 시스템 작업을 수행하고;
    그후, 만약 상기 이용자의 최소 시간분량이 막 종료되면, 상기 스케쥴러 루틴을 실행하고; 그렇치 않으면,
    상기 제 1 24시제 클럭을 이용자 시간만큼 진행시키며;
    상기 제 2 24시제 클럭을 이용자 시간 및 대기시간 만큼 진행시키고;
    만약 상기 제한 리스트상의 이용자가 상기 제 2 24시제 클럭의 한 최소 시간분량내에 있으면, 상기 이용자를 상기 제한 리스트로부터 제거하며;
    디스패치 우선순위에 따라 이용자들을 디스패치하는 단계를 포함하고,
    상기 동작 대기 루틴은,
    만약 실행할 새로운 작업이 있으면, 상기 디스패치 루틴을 실행하고; 그렇치 않고,
    만약 제한 리스트상에 이용자들이 있고 동작 대기 과정이 소정의 제한을 초과하였으면, 상기 제 1 24시제 클럭에 대기시간을 부가하고, 상기 디스패치 루틴을 실행하는 단계를 포함함으로써,
    상기 제한 리스트에 이용자들을 너무 빠르지 않게 부가하고, 상기 제한 리스트로부터 너무 늦지 않게 제거하는 스케쥴링 방법.
  5. 시스템 자원을 스케쥴링하는 방법에 있어서,
    (1) (a) 이용자 최소 점유율 할당, (b) 이용자들이 시스템 자원을 소모하고 있을 때에 진행하는 제 1 인위적인 24시제 클럭, (c) 높은 디스패치 우선순위 제한, 및 (d) 낮은 디스패치 우선순위 제한에 의해 정해진 경계 내에서, 프로세서 이용에 대해 이용자들에게 우선순위를 부여하는 단계;
    (2) (a) 선택된 이용자에게 할당된 이용자 최대 제한 점유율 할당을 설정하고 (b) 제한 리스트를 제공하고 및 (c) 이용자가 시스템 자원을 소모하고 있을 때와 상기 시스템 자원이 대기중일 때에 제 2 인위적인 24시제 클럭을 제공함으로써, 이용자에 의한 중앙 프로세서 유닛 소모를 상기 경계내의 특정의 절대적 수치로 제한하는 단계;
    (3) 제한 리스트 우선순위와 상기 제 2 24시제 클럭의 진행에 기초하여 상기 제한 리스트로부터 이용자를 언제 제거할지를 결정하는 단계;
    (4) 상기 CPU 가 휴지중일 때에 유입작업의 동작대기 상호작용 연속 모니터를 제공하는 단계;
    (5) 최대 이용 점유율에 기초하여, 이용자들에게 우선순위를 할당하는 단계;
    (6) 상기 낮은 디스패치 우선순위 제한을 초과할 때에, 상기 제한 리스트상에 이용자들을 위치시키는 단계;
    (7) 상기 제한 리스트상에서의 체재 기간을 결정하기 위하여, 상기 제 1 24시제 클럭의 시간을 상기 제 2 24시제 클럭을 변환하는 단계;
    (8) 제한 점유율 이용자가 CPU 자원에 접근하는 시점을 인식하는 단계;
    (9) 상기 시스템 자원이 연속 동작대기 상태에 특정의 실제 시간 간격 동안에 있었는지를 인식하고, 그에 응답하여, 상기 제 1 인위적인 24시제 클럭과 상기 제 2 인위적인 24시제 클럭을 대기시간 만큼 업데이트하는 단계; 및
    (10) 상기 제 2 인위적인 24시제 클럭 수치가 상기 제한 리스트 우선순위를 초과하고 저부하상태하에서 상기 제2 24시제 클럭에 거의 모든 상기 대기시간이 포함되면, 상기 제한 리스트로부터 이용자들을 제거하는 단계를 포함하는 시스템 자원을 스케쥴링하는 방법.
  6. 이용자에 의해 시스템 자원의 이용을 스케쥴링하는 방법 단계들을 수행하기 위해 장치에 의해 실행가능한 명령들의 프로그램을 포함하고, 장치에 의해 독출가능한 프로그램 기억장치에 있어서,
    상기 방법 단계들은,
    제 1 클럭을 유지하는 단계;
    제 2 클럭을 유지하는 단계;
    디스패치 과정 동안에,
    만약 처리할 작업이 있으면, 상기 이용자가 대기상태에 있지 않는 경우에만, 다른 이용자들과의 디스패치 우선순위에 따라서, 상기 이용자에게 시스템 자원의 이용을 스케쥴링하는 단계, 그렇치 않으면
    상기 제 1 클럭을 이용자시간 만큼 진행시키는 단계,
    상기 제 2 클럭을 이용자시간과 대기시간 만큼 진행시키는 단계,
    대기과정 동안에,
    만약 처리할 작업이 있으면, 상기 디스패치 과정을 호출하는 단계, 그렇치 않으면,
    대기시간을 타이밍하는 단계,
    만약 상기 대기시간이 소정의 수치를 초과하자 마자, 한 이용자가 대기상태에 있으면, 상기 제 1 클럭을 상기 대기시간 만큼 증분한 다음, 상기 디스패치 과정을 호출하는 단계를 포함하는 기억장치.
  7. 이용자에 의해 시스템 자원의 이용을 스케쥴링하는 컴퓨터 독출 프로그램 코드 수단이 내장된 컴퓨터용 매체를 포함하되,
    상기 제조품내의 컴퓨터 독출 프로그램 코드 수단은,
    컴퓨터로 하여금, 제 1 클럭을 유지하도록 기능하고;
    컴퓨터로 하여금, 제 2 클럭을 유지하도록 기능하며;
    컴퓨터로 하여금, 디스패치 과정 동안에,
    처리할 작업이 있으면, 상기 이용자가 대기상태에 있지 않는 경우에만 다른 이용자들과의 우선순위에 따라서 상기 이용자에게 시스템 자원의 이용을 스케쥴링하며, 그렇치 않으면,
    상기 제 1 클럭을 이용자 시간 만큼 진행시키고,
    상기 제 2 클럭을 이용자 시간과 대기시간 만큼 진행시키도록 기능하며;
    컴퓨터로 하여금, 대기과정 동안에,
    처리할 작업이 있으면, 상기 디스패치 과정을 호출하고, 그렇치 않으면,
    대기시간을 타이밍하고,
    만약 상기 대기시간이 소정 수치를 초과하자 마자 대기상태에 한 이용자가 있으면, 상기 제 1 클럭을 상기 대기시간 만큼 증분한 후, 상기 디스패치 과정을 호출하도록 기능하는 제조품.
  8. 이용자에 의해 시스템 자원의 이용을 스케쥴링하는 시스템에 있어서,
    제 1 클럭;
    제 2 클럭;
    만약 처리할 작업이 있으면, 상기 이용자가 대기상태에 있지 않은 경우에만 다른 이용자들과의 우선순위에 따라서 상기 이용자에게 시스템 자원의 이용을 스케쥴링하고, 그렇치 않으면,
    상기 제 1 클럭을 이용자 시간 만큼 진행시키고,
    상기 제 2 클럭을 이용자 시간과 대기시간 만큼 진행시키기 위한, 디스패치 과정; 및
    만약 처리할 작업이 있으면, 상기 디스패치 과정을 호출하고, 그렇치 않으면,
    대기시간을 타이밍하고,
    만약 상기 대기시간이 소정 수치를 초과할 시에, 대기상태에 이용자가 있으면, 상기 제 1 클럭을 증분시킨 후, 상기 디스패치 과정을 호출하기 위한, 대기과정을 포함하는 시스템.
  9. 제 8 항에 있어서,
    상기 이용자에 대해 이용자 점유율을 결정하고,
    만약 상기 이용자 점유율이 미리 정해진 최대 허용 점유율을 초과하면, 상기 이용자 점유율에 기초한 이용자 오프셋과 이전의 시간분량의 어떤 오버런을 조정한 시간분량을 재계산하고,
    현재의 디스패치 우선순위와 상기 이용자 오프셋을 합하여 상기 이용자에 대한 새로운 디스패치 우선순위를 계산하며,
    만약 상기 새로운 디스패치 우선순위가 상기 제 1 클럭을 상기 이용자 오프셋의 함수 만큼 초과하면, 상기 이용자를 대기상태로 두고, 상기 디스패치 과정을 호출하며, 그렇치 않으면, 상기 디스패치 과정을 호출하기 위한, 스케쥴러 과정을 더 포함하고,
    상기 디스패치 과정이, 상기 이용자가 시간분량을 완료하자 마자, 상기 스케쥴러 과정을 호출하는 시스템.
  10. 제 9 항에 있어서,
    상기 디스패치 과정은,
    만약 상기 이용자가 상기 제 2 클럭의 한 시간분량 이내에 제한 우선순위로 대기상태에 있으면, 상기 제한 상태로부터 상기 이용자를 제거하는 것을 더 포함하는 시스템.
KR1020000011515A 1999-03-25 2000-03-08 시스템 자원을 스케쥴링하는 방법 및 시스템 KR100352668B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/276,525 1999-03-25
US09/276,525 US6438704B1 (en) 1999-03-25 1999-03-25 System and method for scheduling use of system resources among a plurality of limited users

Publications (2)

Publication Number Publication Date
KR20010006756A true KR20010006756A (ko) 2001-01-26
KR100352668B1 KR100352668B1 (ko) 2002-09-13

Family

ID=23056982

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000011515A KR100352668B1 (ko) 1999-03-25 2000-03-08 시스템 자원을 스케쥴링하는 방법 및 시스템

Country Status (7)

Country Link
US (1) US6438704B1 (ko)
EP (1) EP1039383B1 (ko)
JP (1) JP3606555B2 (ko)
KR (1) KR100352668B1 (ko)
AT (1) ATE395663T1 (ko)
DE (1) DE60038837D1 (ko)
TW (1) TW526452B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100471746B1 (ko) * 2002-07-26 2005-03-16 재단법인서울대학교산학협력재단 연성 실시간 태스크 스케줄링 방법 및 그 기록매체
KR100487543B1 (ko) * 2000-09-01 2005-05-03 엘지전자 주식회사 시피유 스케쥴링 방법

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7020878B1 (en) 1998-08-28 2006-03-28 Oracle International Corporation System for allocating resource using the weight that represents a limitation on number of allowance active sessions associated with each resource consumer group
US7526767B1 (en) * 1998-08-28 2009-04-28 Oracle International Corporation Methods for automatic group switching according to a resource plan
US7451448B1 (en) * 1998-08-28 2008-11-11 Oracle International Corporation Methods for selectively quiescing a computer system
JP3739610B2 (ja) * 1999-09-24 2006-01-25 松下電器産業株式会社 訪問計画生成装置
US7627694B2 (en) * 2000-03-16 2009-12-01 Silicon Graphics, Inc. Maintaining process group membership for node clusters in high availability computing systems
US20020198996A1 (en) 2000-03-16 2002-12-26 Padmanabhan Sreenivasan Flexible failover policies in high availability computing systems
US20010049710A1 (en) * 2000-05-16 2001-12-06 Curey Randall K. Partitioned executive structure for real-time programs
US7137117B2 (en) * 2000-06-02 2006-11-14 Microsoft Corporation Dynamically variable idle time thread scheduling
US7849463B2 (en) 2000-06-02 2010-12-07 Microsoft Corporation Dynamically variable idle time thread scheduling
KR20020035580A (ko) * 2000-06-27 2002-05-11 요트.게.아. 롤페즈 스케줄을 결정하는 방법, 스케줄러 및, 시스템
US6795873B1 (en) * 2000-06-30 2004-09-21 Intel Corporation Method and apparatus for a scheduling driver to implement a protocol utilizing time estimates for use with a device that does not generate interrupts
US7096469B1 (en) * 2000-10-02 2006-08-22 International Business Machines Corporation Method and apparatus for enforcing capacity limitations in a logically partitioned system
US7032222B1 (en) * 2000-10-13 2006-04-18 Hewlett-Packard Development Company, L.P. Method and system for determining resource allocation to users by granting request based on user associated different limits and resource limit
US6671658B2 (en) * 2000-12-23 2003-12-30 Hewlett-Packard Development Company, L.P Method for service level estimation in an operating computer system
US20020147966A1 (en) * 2001-02-14 2002-10-10 Ncr Corporation Operating software performance monitor
US7170862B1 (en) * 2001-07-31 2007-01-30 Cisco Technology, Inc. Partitioning a network element into multiple virtual network elements
US7143411B2 (en) * 2002-03-15 2006-11-28 Hewlett-Packard Development Company, L.P. Capping processor utilization
US20060179136A1 (en) * 2002-12-27 2006-08-10 Loboz Charles Z Accuracy of the estimation of computer resource usage
AU2002360777A1 (en) * 2002-12-27 2004-07-22 Unisys Corporation Improving the accuracy of the estimation of computer resource usage
US7191320B2 (en) * 2003-02-11 2007-03-13 Via Technologies, Inc. Apparatus and method for performing a detached load operation in a pipeline microprocessor
JP4107155B2 (ja) * 2003-05-12 2008-06-25 日本電気株式会社 ネットワークセッション制御システム、ネットワーク管理装置およびプログラム
US7751315B1 (en) * 2003-07-15 2010-07-06 Microsoft Corporation Shared network path contention reduction
US7406691B2 (en) * 2004-01-13 2008-07-29 International Business Machines Corporation Minimizing complex decisions to allocate additional resources to a job submitted to a grid environment
US7562143B2 (en) * 2004-01-13 2009-07-14 International Business Machines Corporation Managing escalating resource needs within a grid environment
US7552437B2 (en) * 2004-01-14 2009-06-23 International Business Machines Corporation Maintaining application operations within a suboptimal grid environment
US7266547B2 (en) * 2004-06-10 2007-09-04 International Business Machines Corporation Query meaning determination through a grid service
US7752415B2 (en) * 2004-12-22 2010-07-06 International Business Machines Corporation Method for controlling the capacity usage of a logically partitioned data processing system
US7590623B2 (en) * 2005-01-06 2009-09-15 International Business Machines Corporation Automated management of software images for efficient resource node building within a grid environment
US7793308B2 (en) * 2005-01-06 2010-09-07 International Business Machines Corporation Setting operation based resource utilization thresholds for resource use by a process
US20060149652A1 (en) * 2005-01-06 2006-07-06 Fellenstein Craig W Receiving bid requests and pricing bid responses for potential grid job submissions within a grid environment
US7502850B2 (en) * 2005-01-06 2009-03-10 International Business Machines Corporation Verifying resource functionality before use by a grid job submitted to a grid environment
US7668741B2 (en) * 2005-01-06 2010-02-23 International Business Machines Corporation Managing compliance with service level agreements in a grid environment
US7707288B2 (en) * 2005-01-06 2010-04-27 International Business Machines Corporation Automatically building a locally managed virtual node grouping to handle a grid job requiring a degree of resource parallelism within a grid environment
US7761557B2 (en) * 2005-01-06 2010-07-20 International Business Machines Corporation Facilitating overall grid environment management by monitoring and distributing grid activity
US7467196B2 (en) * 2005-01-12 2008-12-16 International Business Machines Corporation Managing network errors communicated in a message transaction with error information using a troubleshooting agent
US7562035B2 (en) * 2005-01-12 2009-07-14 International Business Machines Corporation Automating responses by grid providers to bid requests indicating criteria for a grid job
US7472079B2 (en) * 2005-01-12 2008-12-30 International Business Machines Corporation Computer implemented method for automatically controlling selection of a grid provider for a grid job
US7571120B2 (en) * 2005-01-12 2009-08-04 International Business Machines Corporation Computer implemented method for estimating future grid job costs by classifying grid jobs and storing results of processing grid job microcosms
US20060195845A1 (en) * 2005-02-28 2006-08-31 Rhine Scott A System and method for scheduling executables
US7908606B2 (en) * 2005-05-20 2011-03-15 Unisys Corporation Usage metering system
US7979460B2 (en) 2006-02-15 2011-07-12 Sony Computer Entainment America Inc. Systems and methods for server management
US8117614B2 (en) * 2006-05-19 2012-02-14 International Business Machines Corporation Extract CPU time facility
US7844970B2 (en) * 2006-08-22 2010-11-30 International Business Machines Corporation Method and apparatus to control priority preemption of tasks
US8286173B2 (en) * 2007-03-23 2012-10-09 Oracle America, Inc. Methods and apparatus for window-based fair priority scheduling
US8046766B2 (en) * 2007-04-26 2011-10-25 Hewlett-Packard Development Company, L.P. Process assignment to physical processors using minimum and maximum processor shares
US8276143B2 (en) * 2008-03-10 2012-09-25 Oracle America, Inc. Dynamic scheduling of application tasks in a distributed task based system
US8250579B2 (en) * 2008-06-27 2012-08-21 Oracle America, Inc. Method for stage-based cost analysis for task scheduling
WO2010032205A1 (en) * 2008-09-17 2010-03-25 Nxp B.V. Electronic circuit comprising a plurality of processing devices
TWI394027B (zh) * 2008-10-27 2013-04-21 Tatung Co 頻率調整方法及使用此方法的電腦程式產品
CN102955559A (zh) * 2011-08-24 2013-03-06 宏碁股份有限公司 节能系统以及节能方法
US9063795B2 (en) 2012-12-19 2015-06-23 International Business Machines Corporation Adaptive resource usage limits for workload management
US10554579B2 (en) * 2014-01-02 2020-02-04 Sky Atlas Iletisim Sanayi Ve Ticaret Anonim Sirketi Method and system for allocating resources to resource consumers in a cloud computing environment
US9411629B1 (en) 2015-03-10 2016-08-09 International Business Machines Corporation Reducing virtual machine pre-emption in virtualized environment
US10931674B2 (en) * 2018-04-30 2021-02-23 Paypal, Inc. Detecting whether to implement one or more security measures on a shared resource
US10768981B2 (en) * 2018-06-21 2020-09-08 Microsoft Technology Licensing, Llc Dynamic time slicing for data-processing workflow
JP7363653B2 (ja) * 2020-04-15 2023-10-18 富士通株式会社 割当制御プログラム、割当制御方法および情報処理装置
CN117376423B (zh) * 2023-12-08 2024-03-12 西南民族大学 一种深度学习推理服务调度方法、系统、设备及存储介质

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4183083A (en) 1972-04-14 1980-01-08 Duquesne Systems, Inc. Method of operating a multiprogrammed computing system
US4551812A (en) 1981-06-17 1985-11-05 Cyborex Laboratories, Inc. Energy controller and method for dynamic allocation of priorities of controlled load curtailment to ensure adequate load sharing
US4481583A (en) 1981-10-30 1984-11-06 At&T Bell Laboratories Method for distributing resources in a time-shared system
US4388688A (en) 1981-11-10 1983-06-14 International Business Machines Corp. Shared TOD clock modification bit
US4989133A (en) 1984-11-30 1991-01-29 Inmos Limited System for executing, scheduling, and selectively linking time dependent processes based upon scheduling time thereof
US4631674A (en) 1985-02-05 1986-12-23 International Business Machines Corporation Active wait
US4736318A (en) 1985-03-01 1988-04-05 Wang Laboratories, Inc. Data processing system having tunable operating system means
CA1329432C (en) * 1988-11-02 1994-05-10 William Davy Method of memory and cpu time allocation for a multi-user computer system
IE61336B1 (en) 1989-10-02 1994-11-02 Sportables Limited A method for controlling the operation of a computer to handle interrupts
US5193187A (en) 1989-12-29 1993-03-09 Supercomputer Systems Limited Partnership Fast interrupt mechanism for interrupting processors in parallel in a multiprocessor system wherein processors are assigned process ID numbers
US5325525A (en) * 1991-04-04 1994-06-28 Hewlett-Packard Company Method of automatically controlling the allocation of resources of a parallel processor computer system by calculating a minimum execution time of a task and scheduling subtasks against resources to execute the task in the minimum time
JPH0774984B2 (ja) 1991-06-10 1995-08-09 インターナショナル・ビジネス・マシーンズ・コーポレイション システム資源利用率測定方法とデータ処理システム
US5291599A (en) 1991-08-08 1994-03-01 International Business Machines Corporation Dispatcher switch for a partitioner
US5375202A (en) * 1993-01-04 1994-12-20 Xerox Corporation Dispatching and scheduling memory operations in an electronic printing system
US5623404A (en) * 1994-03-18 1997-04-22 Minnesota Mining And Manufacturing Company System and method for producing schedules of resource requests having uncertain durations
CA2186349C (en) 1994-05-12 2008-09-23 James C. Bunnell Cpu activity monitoring through cache watching
JP3588485B2 (ja) 1994-08-26 2004-11-10 富士通株式会社 プロセススケジューリング方式
US5615121A (en) * 1995-01-31 1997-03-25 U S West Technologies, Inc. System and method for scheduling service providers to perform customer service requests
US5668942A (en) * 1995-06-07 1997-09-16 Xerox Corporation Generic system for describing and using resources for print engine scheduling
JPH0954699A (ja) * 1995-08-11 1997-02-25 Fujitsu Ltd 計算機のプロセススケジューラ
US5987492A (en) * 1997-10-31 1999-11-16 Sun Microsystems, Inc. Method and apparatus for processor sharing

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100487543B1 (ko) * 2000-09-01 2005-05-03 엘지전자 주식회사 시피유 스케쥴링 방법
KR100471746B1 (ko) * 2002-07-26 2005-03-16 재단법인서울대학교산학협력재단 연성 실시간 태스크 스케줄링 방법 및 그 기록매체

Also Published As

Publication number Publication date
JP2000284975A (ja) 2000-10-13
EP1039383B1 (en) 2008-05-14
ATE395663T1 (de) 2008-05-15
US6438704B1 (en) 2002-08-20
KR100352668B1 (ko) 2002-09-13
JP3606555B2 (ja) 2005-01-05
DE60038837D1 (de) 2008-06-26
TW526452B (en) 2003-04-01
EP1039383A2 (en) 2000-09-27
EP1039383A3 (en) 2006-08-23

Similar Documents

Publication Publication Date Title
KR100352668B1 (ko) 시스템 자원을 스케쥴링하는 방법 및 시스템
Mercer et al. Processor capacity reserves for multimedia operating systems
US7406688B2 (en) Parallel process execution method and multiprocessor computer
Lampson A scheduling philosophy for multiprocessing systems
EP1474744B1 (en) Method of setting priority levels in a multiprogramming computer system with priority scheduling, multiprogramming computer system and program therefor
US6714960B1 (en) Earnings-based time-share scheduling
US6223201B1 (en) Data processing system and method of task management within a self-managing application
US5072376A (en) Measuring utilization of processor shared by multiple system control programs
US5812844A (en) Method and system for scheduling the execution of threads using optional time-specific scheduling constraints
US7743378B1 (en) Method and apparatus for multi-dimensional priority determination for job scheduling
Downey Using queue time predictions for processor allocation
US7752622B1 (en) Method and apparatus for flexible job pre-emption
US6353844B1 (en) Guaranteeing completion times for batch jobs without static partitioning
EP2388699A1 (en) Information processing device and information processing method
US7984447B1 (en) Method and apparatus for balancing project shares within job assignment and scheduling
EP0880095A2 (en) Resource scheduler
US7844968B1 (en) System for predicting earliest completion time and using static priority having initial priority and static urgency for job scheduling
CN111767134A (zh) 一种多任务动态资源调度方法
JPH07141305A (ja) 並列計算機の実行制御方法
JPH0756634B2 (ja) チユ−ニング可能なオペレ−テイングシステム手段を有するデ−タ処理システム
US6430592B1 (en) System for sharing CPU time amongst multiple users
US20050086030A1 (en) Software tool for synthesizing a real-time operating system
US6587865B1 (en) Locally made, globally coordinated resource allocation decisions based on information provided by the second-price auction model
US8214836B1 (en) Method and apparatus for job assignment and scheduling using advance reservation, backfilling, and preemption
US10271326B2 (en) Scheduling function calls

Legal Events

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

Payment date: 20120824

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20130827

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee