KR101203358B1 - 인쇄 작업 큐잉 및 스케쥴링 시스템 및 방법 - Google Patents

인쇄 작업 큐잉 및 스케쥴링 시스템 및 방법 Download PDF

Info

Publication number
KR101203358B1
KR101203358B1 KR1020060001821A KR20060001821A KR101203358B1 KR 101203358 B1 KR101203358 B1 KR 101203358B1 KR 1020060001821 A KR1020060001821 A KR 1020060001821A KR 20060001821 A KR20060001821 A KR 20060001821A KR 101203358 B1 KR101203358 B1 KR 101203358B1
Authority
KR
South Korea
Prior art keywords
priority
queue
print
queues
job
Prior art date
Application number
KR1020060001821A
Other languages
English (en)
Other versions
KR20060094856A (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 KR20060094856A publication Critical patent/KR20060094856A/ko
Application granted granted Critical
Publication of KR101203358B1 publication Critical patent/KR101203358B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1206Improving or facilitating administration, e.g. print management resulting in increased flexibility in input data format or job format or job type
    • AHUMAN NECESSITIES
    • A01AGRICULTURE; FORESTRY; ANIMAL HUSBANDRY; HUNTING; TRAPPING; FISHING
    • A01GHORTICULTURE; CULTIVATION OF VEGETABLES, FLOWERS, RICE, FRUIT, VINES, HOPS OR SEAWEED; FORESTRY; WATERING
    • A01G9/00Cultivation in receptacles, forcing-frames or greenhouses; Edging for beds, lawn or the like
    • A01G9/08Devices for filling-up flower-pots or pots for seedlings; Devices for setting plants or seeds in pots
    • A01G9/081Devices for filling-up pots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/126Job scheduling, e.g. queuing, determine appropriate device
    • G06F3/1263Job scheduling, e.g. queuing, determine appropriate device based on job priority, e.g. re-arranging the order of jobs, e.g. the printing sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server
    • G06F3/1286Remote printer device, e.g. being remote from client or server via local network

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Environmental Sciences (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)

Abstract

인쇄 작업의 우선순위가 프로그램가능한 인쇄 시스템 및 방법이 개시된다. 스케쥴러 컴포넌트는 인쇄 작업 관리 및 스케쥴링을 감독하고 우선순위 지정자라고 하는 컴포넌트와 협동하여 프로그래밍 및 커스터마이즈화의 편의성을 제공한다. 적어도 일부 실시예들에서, 서로 다른 인쇄 작업 속성에 따라 스케쥴러의 동작을 커스터마이즈하기 위해 우선순위 지정자가 프로그램되고 삽입될 수 있도록 시스템에 대한 인터페이스가 제공된다. 적어도 일부 실시예들에서, 본 시스템은 인쇄 큐들 간의 시스템 자원의 공평한 분배를 실시하기 위해 시스템에서의 인쇄 큐의 상대적 우선순위 지정(relative prioritization)을 위한 모델을 이용한다. 적어도 일부 실시예들에서, 본 시스템은 작업을 인쇄할 때 렌더링 및 인쇄 동작을 독립적으로 스케쥴링할 수 있으며 또 시스템에서 렌더링을 억압하는 것(throttling rendering)이 장치 굶주림(device starvation)을 일으키지 않도록 보장하는 데 도움을 주기 위해 "굶주림 위험(starvation risk)"이라고 하는 발견적 방법을 사용할 수 있다.
인쇄 시스템, 우선순위 지정자, 스케쥴러, 자원 중재 큐

Description

인쇄 작업 큐잉 및 스케쥴링 시스템 및 방법{PRINT JOB QUEUING AND SCHEDULING SYSTEMS AND METHODS}
도 1은 하나 이상의 실시예들을 구현하는 데 이용될 수 있는 컴퓨팅 장치, 컴포넌트들의 상위 레벨 블록도.
도 2는 일 실시예에 따른 클라이언트 장치 및 인쇄 서버의 예시적인 컴포넌트를 나타낸 블록도.
도 3은 일 실시예에 따른 여러가지 스케쥴링 큐를 포함하는 스케쥴링 시스템을 나타낸 블록도.
도 4는 풀링된(pooled) 프린터의 개념을 설명하는 시스템의 블록도.
<도면의 주요 부분에 대한 부호의 설명>
242: 클라이언트 장치
244: 우선순위 지정자 사용자 인터페이스
252: 스케쥴러
254: 인쇄 작업
256: 프린터
258: 논리적 서버
260: 우선순위 순서
262: 우선순위 지정자 데이터
268: 우선순위 지정자
270: 데이터 인터페이스
288: 인쇄 서버
본 발명은 인쇄 작업 큐잉(queuing) 및 스케쥴링(scheduling) 시스템 및 방법에 관한 것이다.
인쇄 서버는 일반적으로 일련의 물리적 또는 논리적 프린터로 인쇄될 작업을 스케쥴링한다. 어떤 인쇄 작업들은 일반적으로 비교적 크고 또 많은 자원을 소비할 수 있기 때문에, 시스템이 작업을 인쇄될 수 있도록 할 때 인쇄 서버의 인지된 실제 성능은 극적으로 영향을 받을 수 있다.
예를 들어, 충분한 수의 작업이 렌더링 또는 인쇄되기 위해 스케쥴링되어 있는 경우, 컴퓨터의 물리적 메모리가 고갈되어 "쓰레싱(thrashing)"이라고 하는 것에 이를 수 있다. 쓰레싱은 가상 메모리가 하드 디스크에 대해 반복적으로 기록될 때 일어나는 상황을 말한다. 이것은 차례로, 시스템 쓰레싱을 일으킨 작업들이 스케쥴링되지 않은 경우, 인쇄 작업의 처리에 있어서 진전이 덜 이루어지는 상황을 야기할 수 있다. 이러한 상황에서, 스케쥴링 결정은 시스템의 실제 성능(actual performance)에 영향을 줄 수 있다. 이와 유사하게, 충분한 데이터가 하드 디스크 상의 다수의 파일들로부터 독립적으로 판독되는 경우, 성능이 실제로 떨어지는데, 그 이유는 이것이 디스크 상에서의 과도한 헤드 이동을 유발시키기 때문이다.
다른 예에서, 큰 작업 및 일련의 작은 작업이 인쇄될 필요가 있는 것으로 생각해보자. 이 상황에서, 큰 작업이 작은 작업들 후에 인쇄되는 경우 더 많은 사용자들이 그들의 작업물을 보다 빠르게 받을 수 있다. 이 상황에서, 실제 성능이 아닌 인지된 성능(perceived performance)이 떨어지는데, 그 이유는 서버의 처리 용량이 어느 경우든 더 낮을 수는 없기 때문이다.
인쇄 작업이 크기 및/또는 원하는 우선순위에 있어서 변화가 있을 수 있기 때문에, 인쇄 서버 관리자가 시스템에서의 작업들의 우선순위를 제어할 수 있고 또 어떤 때에는 작업들을 스케쥴링할 수 있게 해주는 수단을 제공하는 것이 바람직하다. 게다가, 사용자가 그의 작업의 우선순위를 변경하기 위해 관리자로부터 승인받은 경우, 사용자에게 그렇게 할 수 있게 해주는 기능을 제공할 수 있는 것이 바람직하다.
따라서, 본 발명은 개선된 인쇄 작업 큐잉 및 스케쥴링 시스템 및 방법을 제공하는 것과 연관된 문제들로부터 이루어진 것이다.
인쇄 작업의 우선순위가 프로그램가능한 인쇄 시스템 및 방법이 기술되어 있다. 일 실시예에서, 스케쥴러 컴포넌트(scheduler component)는 인쇄 작업 관리 및 스케쥴링을 감독하고 또 우선순위 지정자(prioritizer)라고 하는 컴포넌트와 협력하여 프로그래밍 및 커스터마이즈화(customization)의 편의성을 제공한다. 적어 도 일부 실시예들에서, 서로 다른 인쇄 작업 속성에 따라 스케쥴러의 동작을 커스터마이즈하기 위해 우선순위 지정자가 프로그램되고 삽입될 수 있도록, 시스템에 대한 인터페이스가 제공된다. 적어도 일부 실시예들에서, 본 시스템은 인쇄 큐(print queue)들 간의 시스템 자원의 공평한 분배(fair balancing)를 실시하기 위해 시스템에서의 인쇄 큐의 상대적 우선순위 지정(relative prioritization)을 위한 모델을 이용한다. 적어도 일부 실시예들에서, 본 시스템은 작업을 인쇄할 때 렌더링 및 인쇄 동작을 독립적으로 스케쥴링할 수 있으며, 또 시스템에서 렌더링을 억압하는 것(throttling rendering)이 장치 굶주림(device starvation)을 일으키지 않도록 보장하는 데 도움을 주기 위해 "굶주림 위험(starvation risk)"이라고 하는 발견적 방법을 사용할 수 있다.
이하에 기술되는 실시예들에서, 인쇄 시스템에서의 인쇄 작업의 상대적 우선순위가 프로그램가능한 인쇄 시스템이 기술되어 있다. 적어도 일부 실시예들에서, 스케쥴러 컴포넌트는 인쇄 작업 관리 및 스케쥴링을 감독하고, 우선순위 지정자라고 하는 컴포넌트와 협력하여 프로그래밍 및 커스터마이즈화의 편의성을 제공한다. 적어도 일부 실시예들에서, 서로 다른 인쇄 작업 속성에 따라 스케쥴러의 동작을 커스터마이즈하기 위해 우선순위 지정자가 프로그램되고 삽입될 수 있도록 시스템에 대한 인터페이스가 제공된다. 따라서, 적어도 일부 실시예들에서, 여러가지 프로그래밍 언어에 익숙할 필요가 없는 시스템 관리자는 인쇄 작업을 관리하기 위한 커스텀 동작들을 용이하게 정의할 수 있다. 예를 들어, 적어도 일부 실시예들에 서, 우선순위 지정자에 대한 여러가지 파라미터 값들이 관리 사용자에 의해 구성될 수 있게 해주는 사용자 인터페이스가 제공된다. 관리 사용자는 또한 우선순위 지정자의 상대적 순위를 변경할 수 있다. 이와 같이, 프로그래밍 언어를 사용할 수 있는 능력을 요구하지 않고, 프로그램 경험이 적은 사용자가 스케쥴러의 동작을 추가적으로 커스터마이즈할 수 있다. 적어도 일부 실시예들에서, 인쇄 작업은 그의 특정 특성에 기초하여 프로그램적으로 시간상 지연 또는 상승(boost)될 수 있다.
게다가, 적어도 일부 실시예들에서, 본 시스템은 인쇄 큐들 간의 시스템 자원의 공평한 분배(fair balancing)(또는 관리자의 선택대로 - 편파적인 분배)를 실시하기 위해 시스템에서의 인쇄 큐의 상대적 우선순위 지정(relative prioritization)을 위한 모델을 이용한다. 이것은 시스템이 시스템 내의 프린터에 걸쳐 작업 부하를 공평하게 분배할 수 있게 해준다. 게다가, 여러가지 큐에 걸쳐 부하를 공평하게 결정하는 데 사용되는 메카니즘도 역시 경험이 적은 사용자가 시스템의 동작을 커스터마이즈할 수 있게 해주는 방식으로 프로그램가능하다.
적어도 일부 실시예들에서, 당업자라면 잘 알고 있는 바와 같이, 본 시스템은 추가의 처리가 필요없는지를 판정하기 위해 O(1)의 계산 복잡도(computational complexity)로 그 동작을 수행할 수 있다.
적어도 일부 실시예들에서, 본 시스템은 작업을 인쇄할 때 렌더링 및 인쇄 동작을 독립적으로 스케쥴링할 수 있다. 이것은 시스템이 프린터로 인쇄 출력을 전송하는 I/O-바운드 작업(I/O-bound task)에 대한 바람직한 장치 처리용량을 달성할 수 있게 해주는 반면, 시스템에서의 CPU 및 메모리 집중적인 렌더링 작업의 수 를 제한한다. 적어도 일부 실시예들에서, 본 시스템은 시스템에서의 렌더링을 억압하는 것이 장치 굶주림을 일으키지 않도록 보장하는 데 도움을 주기 위해 "굶주림 위험"이라고 하는 발견적 방법을 사용할 수 있다.
적어도 일부 실시예들에서, 본 시스템은 자연스런 풀링 모델이 표현될 수 있게 해준다. 이하에서 명백하게 되는 바와 같이, 이것은, 시스템의 보통의 사용자 및 관리 사용자 둘다가, 자신들이 특정 큐에서 인쇄할 수 있는지에 영향을 주는 모든 작업을 볼 수 있게 해준다.
적어도 일부 실시예들에서, 본 시스템은, 다른 작업이 인쇄되어야만 하는지를 판정하기 위해서는 O(1)의 CPU 복잡도로, 또한 스케쥴링 결정을 위해서는 O(log2 J)+ O(log2 P)의 CPU 복잡도로 이들 목표를 달성하며, 여기서 J는 큐 내의 작업의 수이고, P는 시스템 내의 물리적 프린터들의 수이다. 따라서, 예를 들어 균일하게 분산되어 있는 2백개의 큐 및 백만개의 작업을 갖는 시스템에서, 본 시스템은 일반적으로 스케쥴링 결정에 도달하기 위해 2억번의 비교를 필요로 할 수 있는 현재의 시스템과 비교하여 스케쥴링 결정에 도달하기 위해 단지 20번의 비교를 이용하게 된다.
예시적인 클라이언트 장치/인쇄 서버 컴포넌트
우선, 여러가지 실시예들에 대해 기술하기 전에, 컴퓨팅 장치에 대한 이하의 설명이 제공된다. 당업자라면 잘 알고 있는 바와 같이, 컴퓨팅 장치의 여러가지 컴포넌트는 클라이언트 및 인쇄 서버 둘다를 구현하는 데 이용될 수 있다.
이와 같이, 도 1은 이하에 기술되는 실시예들을 이용할 수 있는 예시적인 컴퓨팅 장치를 나타낸 것이다. 기술된 컴퓨팅 장치가 단지 예로서 제공된 것이며 청구된 발명 대상의 응용을 단지 한 특정 유형의 컴퓨팅 장치로 한정하려는 것이 아님을 잘 알 것이다.
컴퓨팅 장치(142)는 하나 이상의 프로세서 또는 프로세싱 유닛(144), 시스템 메모리(146), 및 시스템 메모리(146)를 비롯한 여러가지 시스템 컴포넌트를 프로세서(144)에 연결시키는 버스(148)를 포함한다. 버스(148)는, 메모리 버스 또는 메모리 콘트롤러, 주변 버스, AGP(accelerated graphics port), 및 다양한 버스 아키텍처 중 임의의 것을 사용하는 프로세서 또는 로컬 버스를 비롯한 임의의 몇가지 유형의 버스 구조 중 하나 이상을 나타낸다. 시스템 메모리(146)는 판독 전용 메모리(ROM)(150) 및 랜덤 액세스 메모리(RAM)(152)를 포함한다. 시동 중과 같은 때에 컴퓨팅 장치(142) 내의 구성요소들 간의 정보의 전송을 돕는 기본적인 루틴을 가지고 있는 기본 입/출력 시스템(BIOS)(154)은 ROM(150)에 저장된다.
컴퓨팅 장치(142)는 하드 디스크(도시 생략)로부터 판독하고 그에 기록하기 위한 하드 디스크 드라이브(156), 분리형 자기 디스크(160)로부터 판독하고 그에 기록하기 위한 자기 디스크 드라이브(158), 및 CD-ROM 또는 다른 광학 매체 등의 분리형 광학 디스크(164)로부터 판독하거나 그에 기록하기 위한 광학 디스크 드라이브(162)를 더 포함할 수 있다. 하드 디스크 드라이브(156), 자기 디스크 드라이브(158), 및 광학 디스크 드라이브(162)는 SCSI 인터페이스(166) 또는 어떤 다른 적절한 인터페이스에 의해 버스(148)에 연결되어 있다. 이들 드라이브 및 그의 연 관된 컴퓨터 판독가능 매체는 컴퓨터(142)의 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 비휘발성 저장을 제공한다. 본 명세서에 기술된 예시적인 환경이 하드 디스크, 분리형 자기 디스크(160) 및 분리형 광학 디스크(164)를 이용하고 있지만, 당업자라면 자기 카세트, 플래쉬 메모리 카드, DVD(digital video disk), 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 기타 등등의 컴퓨터에 의해 액세스가능한 데이터를 저장할 수 있는 다른 유형의 컴퓨터 판독가능 매체도 역시 예시적인 오퍼레이팅 환경에서 사용될 수 있음을 잘 알 것이다.
오퍼레이팅 시스템(170), 하나 이상의 애플리케이션 프로그램(172)(사용자 에이전트 또는 브라우저 등), 기타 프로그램 모듈(174) 및 프로그램 데이터(176)를 비롯한 다수의 프로그램 모듈이 하드 디스크(156), 자기 디스크(160), 광학 디스크(164), ROM(150) 또는 RAM(152) 상에 저장될 수 있다. 사용자는 키보드(178) 및 포인팅 장치(180) 등의 입력 장치를 통해 컴퓨터(142)에 명령 및 정보를 입력할 수 있다. 다른 입력 장치(도시 생략)는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너, 기타 등등을 포함할 수 있다. 이들 및 다른 입력 장치는 버스(148)에 연결된 인터페이스(182)를 통해 프로세싱 유닛(144)에 연결되어 있다. 모니터(184) 또는 다른 유형의 디스플레이 장치도 역시 비디오 어댑터(186) 등의 인터페이스를 통해 버스(148)에 연결되어 있다. 모니터 이외에도, 퍼스널 컴퓨터는 일반적으로 스피커 및 프린터 등의 다른 주변 출력 장치(도시 생략)를 포함한다.
컴퓨터(142)는 통상적으로 하나 이상의 프린터에 연결되어 있는 인쇄 서버 (188) 등의 하나 이상의 원격 컴퓨터로의 논리적 연결을 사용하여 네트워크화된 환경에서 동작한다. 인쇄 서버(188)는 다른 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 통상의 네트워크 노드일 수 있으며, 일반적으로 컴퓨터(142)와 관련하여 상기한 구성요소들 전부 또는 그 대부분을 포함한다. 도 1에 도시된 논리적 연결은 근거리 통신망(LAN)(190) 및 원거리 통신망(WAN)(192)을 포함한다. 이러한 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크, 인트라넷 및 인터넷에서 통상적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(142)는 네트워크 인터페이스 또는어댑터(194)를 통해 로컬 네트워크에 연결된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(142)는 일반적으로 인터넷 등의 원거리 통신망(192)을 통한 통신을 설정하는 모뎀(196) 또는 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(196)은 직렬 포트 인터페이스(168)를 통해 버스(148)에 연결되어 있다. 네트워크화된 환경에서, 퍼스널 컴퓨터(142)와 관련하여 기술된 프로그램 모듈 또는 그의 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 도시된 네트워크 연결이 예시적인 것이며 컴퓨터들 간의 통신 링크를 설정하는 다른 수단이 사용될 수 있음을 잘 알 것이다.
일반적으로, 컴퓨터(142)의 데이터 프로세서는 컴퓨터의 여러가지 컴퓨터 판독가능 저장 매체에 서로 다른 때에 저장된 명령어에 의해 프로그램된다. 프로그램 및 오퍼레이팅 시스템은 일반적으로 예를 들어 플로피 디스크 또는 CD-ROM 상으로 배포된다. 이들은 그곳으로부터 컴퓨터의 2차 메모리로 설치 또는 로드된다. 실행 시에, 이들은 적어도 부분적으로 컴퓨터의 1차 전자 메모리로 로드된다. 본 명세서에 기술된 시스템은 이러한 매체가 마이크로프로세서 또는 다른 데이터 프로세서와 관련하여 기술된 블록들을 구현하기 위한 명령어 또는 프로그램을 가지고 있는 경우 이들 및 다른 여러가지 유형의 컴퓨터 판독가능 저장 매체를 포함한다. 기술된 시스템은 또한 본 명세서에 기술된 방법 및 기술에 따라 프로그램되는 경우 컴퓨터 자체를 포함한다.
설명을 위해, 오퍼레이팅 시스템 등의 프로그램 및 다른 실행가능 프로그램 컴포넌트가 본 명세서에서는 개별적인 블록으로서 예시되어 있지만, 이러한 프로그램 및 컴포넌트가 다양한 때에 컴퓨터의 서로 다른 저장 컴포넌트에 존재하고 또 컴퓨터의 데이터 프로세서(들)에 의해 실행된다는 것을 잘 알 것이다.
예시적인 실시예 개요 및 설명
도 2는 전체적으로 200으로 나타낸 일 실시예에 따른 예시적인 시스템의 상위 레벨 도면을 나타낸 것이다. 이하의 설명에서, 개개의 객체는 그 자체의 제목 아래에 각각 그와 연관된 속성 및/또는 특성 중 어떤 것과 함께 기술되어 있다. 이 다음에, "작업의 우선순위의 결정"이라는 제목의 섹션은 특정 인쇄 작업의 우선순위가 어떻게 나타내어지는지 및 우선순위 지정 프로세스에서의 우선순위 지정자의 역할에 대해 기술한다.
우선, 도 2의 특정 구현예에 대해 기술하기 전에, 이하에 기술되는 특정 구현의 기초를 이루는 어떤 원리 및 고려 사항에 대한 이하의 설명을 참조한다.
구체적으로는, 이하의 기술에서, 우선순위 지정자(prioritizer) 또는 우선순 위 지정자 객체(prioritizer object)의 개념이 도입된다. 우선순위 지정자는 인쇄 시스템이 프로그램가능하게 될 수 있도록 해주는 프로그램적 메카니즘이다. 기본적으로, 우선순위 지정자는 특정 인쇄 작업을 관찰하고 그 인쇄 작업과 연관된 가중치(weight) 또는 시간(time)을 생성한다. 관리자는 우선순위 지정자의 시퀀스를 정의할 수 있고, 이 우선순위 지정자의 시퀀스를 특정 인쇄 큐와 연관시킬 수 있다. 이어서, 이 일련의 우선순위 지정자는 특정 인쇄 작업에 대해, 가중치값 및/또는 시간값을 포함할 수 있는 값들의 벡터인 튜플(tuple)을 생성한다. 각각의 우선순위 지정자는 이하에 기술되는 사용자 인터페이스를 통해 우선순위 지정자에 대한 구성 데이터를 제공함으로써 시스템 관리자에 의해 구체적으로 구성될 수 있다. 이어서, 특정 인쇄 작업에 대해 생성되는 튜플은, 인쇄 시스템에서 특정 인쇄 작업을 스케쥴링하기 위해 스케쥴러 객체에 의해 해석되고 처리될 수 있다.
그 다음, 동작 원리에서, 시스템 관리자가 특정 인쇄 큐를 구성하는 등에 의해 인쇄 시스템을 프로그램하고자 하는 경우, 그 관리자는 사용자 인터페이스 구동 방식에서, 단순히 그 특정 큐에 대해 하나 이상의 우선순위 지정자를 선택한다. 각각의 우선순위 지정자의 사용자 인터페이스 컴포넌트를 사용하여, 시스템 관리자는 이어서 우선순위 지정자를 파라미터화하여, 그 특정 큐에 대한 우선순위 지정자에 우선순위 순서(priority order)를 할당할 수 있다.
이제 도 2를 참조하면, 바로 앞에서 기술한 원리들을 구현하는 특정 시스템(200)이 제시되어 있다. 이하의 설명이 단지 일례에 불과하고 또 청구된 발명 대상의 응용을 이 특정 시스템으로 한정하려는 것이 아님을 잘 알 것이다.
따라서, 시스템(200)은, 이 예에서, 하나 이상의 클라이언트 장치(242) 및 하나 이상의 인쇄 서버(288)를 포함한다. 여기서, 클라이언트 장치(242) 및 인쇄 서버(288)는 도 1과 관련하여 기술된 것과 동일하거나 그와 유사한 컴포넌트를 포함할 수 있다. 그렇지만, 명료성을 위해, 이들 컴포넌트는 도 2의 예에 도시되어 있지 않다.
일 실시예에 따르면, 클라이언트 장치(242)는 우선순위 지정자 사용자 인터페이스(244)를 포함한다. 전술한 바와 같이, 사용자 인터페이스(244)는 시스템 관리자(또는 다른 사용자)가 우선순위 지정자를 프로그램하거나 또는 다른 방식으로 구성할 수 있게 하도록 구성되어 있다. 예시되고 기술된 실시예에서, 사용자 인터페이스(244)는 프린터 또는 프린터들에 대한 우선순위 지정 데이터(이하에서 기술함)를 나타내기 위해 커스터마이즈된 사용자 인터페이스를 디스플레이한다. 우선순위 지정자 사용자 인터페이스는 이하의 방법들을 지원한다.
?Name - 자신의 논리적 ID는 물론, 우선순위 지정자 사용자 인터페이스는 사람이 판독가능한 디스플레이 이름을 갖는다.
?AppComponentID - 이것은 우선순위 지정자 사용자 인터페이스의 고유 컴포넌트 id.
우선순위 지정자는 그의 초기 구성 데이터를 획득하기 위해 또는 기존의 구성을 변경하기 위해 호출될 수 있다. 이들 동작은 각각의 우선순위 지정자가 지원하는 GetConfiguration 및 ChangeConfiguration 명령에 의해 지원된다.
예시되고 기술된 실시예에서, 인쇄 서버(288)는 이하의 객체들, 즉 스케쥴러 객체(252), 인쇄 작업 객체(254), 프린터 객체(256), 논리적 서버 객체(258), 우선순위 순서 객체(260), 우선순위 지정자 데이터 객체(262), 및 우선순위 지정자 객체(268) 중 하나 이상을 포함하며, 그 각각에 대해 이하에 기술한다. 게다가, 데이터 인터페이스 컴포넌트(270)는 클라이언트 장치(242) 및 인쇄 서버(288)가 통신할 수 있는 메카니즘을 제공한다. 임의의 적당한 데이터 인터페이스 및 프로토콜이 이용될 수 있다.
스케쥴러 객체
예시되고 기술된 실시예에서, 스케쥴러 객체(252)는 특정 프린터로 보낼 인쇄 작업을 선택하는 일을 한다. 그렇게 하기 위해, 스케쥴러 객체는 우선순위 지정자에 의해 생성된 데이터를 처리한다.
게다가, 스케쥴러 객체는 이하에 기술하는 바와 같이, 인쇄 작업에 대한 우선순위가 존중될 것을 보장한다. 또한, 스케쥴러 객체는 시스템을 통해 바람직한 처리용량을 보장하기 위해 인쇄 작업을 관리한다. 따라서, 스케쥴러 객체는 어떤 부당한 지연도 회피하기 위해 적절한 때에 적절한 데이터를 모든 인쇄 장치에 제공하려고 시도해야 하는 책임을 지고 있다. 게다가, 이하에서 기술하는 바와 같이, 스케쥴러 객체는, 우선순위가 작업 굶주림(job starvation)을 야기하지 않는 다면, 어느 정도의 공평성을 보장하려고 시도한다.
예시되고 기술된 실시예에서, 스케쥴러 객체는, 상당한 오버헤드를 야기하지 않고 많은 수의 물리적 장치에서의 많은 수의 인쇄 작업으로부터 선택할 수 있도록 구성되어 있다. 유연성있는 우선순위 세트를 유지하는 것이 바람직하기 때문에, 큐는 이하의 속성을 갖는 우선순위 큐의 스큐-힙(skew-heap) 구현에 기초한다.
?삽입 및 제거 둘다에 대한 O(log2 N)
?침투적 구현(intrusive implementation) - 삽입 또는 제거를 위해 메모리가 필요하지 않다 - 따라서 항목들이 항상 큐로부터 삽입 또는 제거될 수 있다.
?스큐 힙은 항상 통계적으로 평형 상태로 유지된다. 벡터 기반 힙은 평형 상태를 유지하도록 보장되지만, 기능하기 위해서는 외부 벡터를 필요로 한다.
주어진 우선순위에 대해, 본 시스템은 인쇄 작업의 FIFO(First-In-First-Out) 큐를 그 특정 우선순위에 유지한다. 이것은 작업들을 동일한 우선순위로 스케쥴링하기 위한 오버헤드를 감소시키는 데 유용하다.
게다가, 일 실시예에 따르면, 본 시스템은 3가지 논리적 유형의 우선순위 큐, 즉 시간 우선순위 큐(time priority queue), 프린터 우선순위 큐(printer priority queue) 및 자원 중재 큐(resource arbitration queue)를 유지하며, 이들 각각에 대해서는 도 3에서 보다 상세히 기술한다. 그렇지만, 우선적으로, 이하의 것을 살펴본다.
시간 우선순위 큐는 그의 우선순위로서 작업이 재스케쥴링되어야만 하는 시간을 사용하는 우선순위 큐이다. 예를 들어, 인쇄 장치가 에러 상태로 들어간 경우, 작업이 그의 우선순위로서 작업이 제거되어야만 하는 희망 시간(예를 들어, 5초 후에)을 갖는 시간 큐로 들어간다. 시간은 스케쥴러 객체에서의 작은 지연에 의해 야기되는 드리프트(drift)를 방지하기 위해 델타(또는 변화)로서 저장되는 게 아니라 절대 시간(absolute time)으로서 저장된다.
프린터 우선순위 큐는 장치에 대한 큐 내에서의 상대적 우선순위 지정을 나타내는 큐이다.
자원 중재 큐는 프린터 큐들 간에 부하를 공평하게 분배하는 것이 목표인 프린터 큐들의 큐이다. 이들 모두에 대해 이하에서 보다 상세히 기술한다.
인쇄 작업 객체
인쇄 작업 객체(254)가 생성되어 특정 인쇄 출력 요청을 나타낸다. 각각의 인쇄 작업 객체는 2개의 명령, 즉 클라이언트로부터 액세스가능하지 않은 ChangePriority 명령 및 ChangeScheduleTime 명령을 지원한다.
우선순위 지정자 객체(이하에서 기술함)는 연관된 작업의 우선순위 또는 스케쥴링된 시간을 변경하기 위해 명령을 호출할 수 있다. 그 결과, 이들 명령이 호출될 때 작업이 그의 스케쥴링 큐 내에서 자동적으로 이동된다. 이들 명령 둘다는 새로운 시간 또는 우선순위 및 우선순위 지정자의 고유한 컴포넌트 id(이하에서 기술함)를 취하며, 본 시스템은 이들을 사용하여 우선순위 n-튜플의 어느 필드를 변경할지를 알게 되고, 이는 이하에서 명백하게 될 것이다.
프린터 객체
프린터 객체(256)는 인쇄 시스템에서의 스케쥴링의 논리적 단위이다. 따라서, 이는 우선순위 지정자의 구성 데이터를 저장하는 객체이기도 하다. 예시되고 기술된 실시예에서, 프린터 객체는 물리적 프린터에 대한 인터페이스에 대해 일대일 대응관계를 갖는다.
논리적 서버 객체
우선순위 지정자 객체는 논리적 서버 상에 설치되어 있다. 논리적 서버는 또한 관리자에 의해 생성되는 일련의 우선순위 순서를 갖는다. 논리적 서버 객체가 제공되는 일 이유는, 어떤 경우에 단일의 물리적 서버가 2개 이상의 논리적 서버를 가질 수 있기 때문이다. 예를 들어, 인쇄 클러스터(print cluster)는 관리자의 마음대로 또는 물리적 클러스터 노드의 장애로 인해 클러스터 내의 노드들 간에 이동하는 다수의 논리적 서버를 갖는다.
우선순위 순서 객체
우선순위 순서 객체(260)는 일련의 하나 이상의 우선순위 지정자 객체들의 우선순위 순서를 정의하는 데 사용된다. 예시되고 기술된 실시예에서, 우선순위 지정자는 작업에 가중치를 할당하거나 시간상 앞쪽으로 이를 스케쥴링할 수 있을 뿐이다. 이 가중치가 어떻게 결정되는지는, 큐 내의 그의 대응하는 데이터, 및 그의 소위 작업 티켓(job ticket) 등의 작업과 연관된 다른 데이터 둘다에 의해 파라미터화된다. 관리자는 큐 데이터를 변경할 수 있고 또 우선순위 지정자의 상대적 우선권을 변경할 수 있다. 예를 들어, 평직원에 의해 전송된 작업보다 간부들에 의해 전송된 작업에 우선순위를 부여하는 우선순위 지정자 및 큰 작업의 우선순위를 떨어뜨리는 다른 우선순위 지정자가 주어진 경우, 관리자는 <간부 우선><큰 작업 패널티>의 우선순위 순서 및 <큰 작업 패널티><간부 우선>의 다른 우선순위 순서를 지정할 수 있다. 후자의 우선순위 순서에서, 간부 작업은 그 작업이 크지 않은 경우에만 우선된다.
예시되고 기술된 실시예에서, 사용자 요청 우선순위(user-requested priority), 강제적 시간 우선순위(mandatory time priority) 및 기본적인 전역적 우선순위 페널티(default global priority penalty)를 인쇄하는 시간 간격을 유지하기만 하는 하나의 우선순위 순서가 항상 존재한다. 이것은 구현예에서 현재 Window
Figure 112006001083305-pat00001
NT 플랫폼에 의해 구현된 인쇄 서버와의 호환성을 유지하기 위한 것이다. 게다가, 우선순위 순서 객체는 강제적 시간 기능을 부가하고, 또 큐간의 공평성(inter-queue fairness)을 보장하기 위한 기본적인 메카니즘을 제공한다.
우선순위 지정자 데이터 객체
우선순위 지정자의 구성은 특정 인쇄 큐와 연관되어 있다. 이 구성은 우선순위 지정자의 XSD 스키마에 부합한다. 예시되고 기술된 실시예에서, 주어진 우선순위 지정자는 프린터/작업 조합에 대해 항상 호출된다. 이 특정 예에서, 우선순위 지정자 데이터 객체(262)는 이하의 필드를 갖는다.
Prioritizer ID - 이것은 대응하는 우선순위 지정자의 고유 id이고 인쇄 시스템이 정확한 우선순위 지정자를 그의 데이터와 연관시킬 수 있게 해준다.
Data - 이것은 우선순위 지정자에 저장되어 있는 XSD 스키마에 부합하는 XML 문서이다.
ShouldBump - 이것은 이 필드가 다른 작업을 취소하는 데 사용되어야만 하는지를 기록하는 부울(Boolean) 필드이다. 작업이 취소되는 경우, 이 필드가 상위 우선순위를 가지면 그 문서가 이미 인쇄되기 시작한 경우라도 그 작업은 큐로부터 내보내진다.
우선순위 지정자 객체
예시되고 기술된 실시예에서, 우선순위 지정자 객체(268)는, 작업에 가중치를 할당할 수 있거나 작업을 시간상 앞쪽으로 (가능한 무한정으로) 지연시킬 수 있는 플러깅가능 컴포넌트(pluggable component)이다. 우선순위 지정자 객체는 이하의 속성을 갖는다.
?Name - 우선순위 지정자에 대한 디스플레이 이름. 이것은 일반적으로 GUID 또는 강력한 이름(strong name)인 그의 논리적 ID와 다르다.
?Data Schema - 이것은 우선순위 지정자의 데이터의 포맷을 기술하는 XSD 스키마이다.
?UIComponentID - 이것은 그의 대응하는 UI 컴포넌트의 ID이다. 이 컴포넌트는, 프린터별 우선순위 지정 데이터의 구성을 디스플레이하기 위해 필요한 경우 서버로부터 다운로드될 수 있다.
?Type - 이것은 우선순위 지정자에 의해 반환된 값이 어떻게 해석되어야 하는지를 식별해주는 열거형(enumeration)이다. 이 실시예에서, type는 시간 상승(time boost), 시간 fifo, 상대적 우선순위 또는 전역적 우선순위 효과를 식별해주며, 이 각각에 대해 이하에서 기술한다.
우선순위 지정자 객체는 또한 JobChange()라고 하는 메소드를 지원한다. 이 메소드는 작업이 도착할 때마다, 스풀링(spooling)을 끝냈을 때, 인쇄를 시작할 때 및 인쇄를 완료하였을 때, 인쇄 시스템에 의해 호출된다. 이 메소드는 작업에 대한 지연 시간 또는 강제적 시간(mandatory time)이 만료될 때마다 통지를 받는다. 우선순위 지정자가 다른 이벤트가 있는지 알고 싶어하는 경우, 우선순위 지정자는 시스템의 데이터 인터페이스 통지 메카니즘을 사용할 수 있다.
다수의 서로 다른 유형의 우선순위 지정자가 사용될 수 있으며, 각각은 원하는 결과를 달성하는 것에 관한 서로 다른 일련의 동작을 가질 수 있다. 이하의 예시되고 기술된 실시예에서, 시스템에 의해 지원되는 4가지 서로 다른 유형의 우선순위 지정자가 있으며, 그 각각에 대해서는 바로 다음에 오는 섹션에서 보다 상세히 기술된다. 그렇지만, 이들 특정 유형의 우선순위 지정자가 청구된 발명 대상의 응용을 제한하려는 것이 아님을 잘 알 것이다.
작업의 우선순위의 결정
예시되고 기술된 실시예에서, 인쇄 작업의 우선순위는 3개의 데이터, 상대적 우선순위 튜플(relative priority tuple), 전역적 우선순위 효과(global priority effect) 및 보류 카운트(hold count)로 나타내어진다.
상대적 우선순위 튜플은 일련의 숫자 가중치, 예를 들어 [W1, W2, W3, W4]이다. 각각의 가중치는 우선순위 지정자 객체에 의해 할당된다. 2개의 인쇄 작업이 큐에 배치되어 있을 때, 작업의 상대적 우선순위를 결정하기 위해 각각의 가중치가 다른 작업의 튜플 내의 대응하는 가중치와 비교된다.
전역적 우선순위 효과는 특정 인쇄 작업을 처리하는 것의 물리적 프린터의 전역적 우선순위에 대한 효과를 나타내는 단일 값이다. 전역적 우선순위 효과는 부정적 효과(negative effect) 또는 긍정적 효과(positive effect)일 수 있다. 예를 들어, 간부에 의해 인쇄되는 작업은 큰 우선순위 상승을 할당받을 수 있는 반 면, 그렇지 않은 경우 작업은 그의 크기에 따라 좌우되는 전역적 우선순위 페널티를 할당받을 수 있다. 큐 내의 다수의 우선순위 지정자가 전역적 우선순위 효과를 반환하는 경우, 그 결과가 합산되어 그 작업에 대한 전체 우선순위 효과를 결정한다.
보류 카운트는, 인쇄 작업을 큐 내에 보류시키고 이후의 단계에서 이를 해제하기 위해 우선순위 지정자에 의해 사용될 수 있다. 작업의 우선순위를 결정하기 위해 필요한 데이터를 즉각 알지 못하는 경우, 인쇄 작업을 보류시키는 것은 유용할 수 있다. 예를 들어, 우선순위 지정자가 100K보다 큰 작업의 우선순위를 낮추고자 하는 경우, 우선순위 지정자는 크기가 이 문턱값을 넘어설 때까지 그 작업을 큐 내에 보류해야만 한다. 이어서, 우선순위가 조정되고 작업이 해제될 수 있다. 보류는 또한 시간상 작업을 지연시키기 위해 사용될 수 있다. 이것은 본 명세서에서 이후에 설명된다. 효과적으로, 보류 카운트는 항상 튜플의 첫번째 요소인데, 왜냐하면 어떤 활성 보류라도 작업이 인쇄되지 못하게 하기 때문이다. 따라서, 작업 튜플은 다음과 같이 표현될 수 있다.
[HoldCount, W1, W2, W3, W4]
동작을 설명하면, 우선순위 지정자 객체는 그의 구성 데이터, 및 우선순위를 지정해야만 하는 작업을 전달받는다. 이어서, 우선순위 지정자는 그의 구성 데이터 및 연관된 작업 데이터를 처리하고, 가중치 및 상태를 반환한다. 상태는 이하의정보를 나타낸다.
?성공(Success) - 우선순위 지정자가 이 작업의 우선순위를 정확하게 결정 함
?보류(Hold) - 우선순위 지정자가 이 작업을 보류시킬 필요가 있다. 이는 또한 이것이 어떤 때에(보류를 해제할 수 있을 때) 자동적으로 통지를 받을 시간 우선순위 지정자임을 암시하거나, 또는 우선순위 지정자로 하여금 어떤 다른 상태에서 작업을 해제하게 하는 적절한 변화 통지를 위해 등록되었음을 암시한다.
?에러 보류(Error Hold) - 우선순위 지정자는 작업을 정확하게 보류하기에 충분한 자원을 가지고 있지 않았다. 이것의 효과는, 우선순위 지정자가 그의 보류를 해제시킬 수 있게 해주기를 바라면서, 또는 우선순위 지정자가 기능할 수 있게 해주는 다른 자원이 이용가능하게 될 수 있게 해주기를 바라면서 주기적으로 호출되는 것을 제외하고는 보류와 동일하다.
?에러(Error) - 우선순위 지정자는 예상치 못한 에러를 가지고 있었다. 우선순위 지정자가 후일에 성공할 것인지를 알지 못하기 때문에, 작업이 삭제된다.
상태가 보류(Hold), 에러(Error) 또는 에러 보류(Error Hold)인 경우에, 우선순위 지정자 객체는 또한 우선순위 지정자 사용자 인터페이스(244)(도 2)를 통해 디스플레이될 수 있는 어떤 사용자 정보를 반환한다. 이 사용자 정보는 이하의 정보를 특정 인쇄 작업과 연관시킨다.
?보류 GUID. 사용자 인터페이스가 GUID를 인식하는 경우, 사용자 인터페이스는 로컬화된 문자열을 클라이언트의 로케일(locale)에 로드할 수 있다;
?GUID와 연관된 문자열에 의해 포맷될 때, 사람이 판독가능한 설명을 생성하는 문자열 파라미터의 어레이;
?폴백 문자열(fallback string). 이것은 클라이언트가 GUID를 인식하지 못하는 경우에 문자열을 공급하는 서버측 상의 자원으로부터 로드되는 문자열이다. 이 문자열은 먼저 클라이언트의 로케일에서 검색되고 이어서 시스템 로케일에서 검색된다. 호출자의 언어가 서버 상에서 이용가능하지 않을 가능성이 상당하며, 이 경우에 서버의 기본 언어(default language)로 메시지를 다시 받을 수 있다.
전술한 바와 같이, 우선순위 지정자 사용자 인터페이스(244)는 인쇄 작업이 보류 상태에 있는 경우에 이 정보를 디스플레이한다. 이것은 사용자의 작업이 큐에 보류되어 있는 경우에 사용자 혼동을 감소시키기 위한 것이다. 예를 들어, 우선순위 지정자가 큰 인쇄 작업을 오전 2시 내지 오전 6시 사이에 인쇄하기 위해 지연시키는 경우, 클라이언트로 반환되는 사용자 정보는 이하의 메시지가 사용자에 대해 디스플레이되게 할 수 있다.
"이 작업은 크기가 10MB를 초과하기 때문에, 오전 2시 내지 오전 6시 사이에 인쇄하기 위해 큐에 보류되어 있습니다. 설명이 필요하시면 시스템 관리자에게 문의하십시오."
전술한 바와 같이, 적어도 일 실시예에서, 4가지 서로 다른 유형의 우선순위 지정자, 즉 상대적 우선순위 우선순위 지정자(relative priority prioritizer), 전역적 우선순위 우선순위 지정자(global priority prioritizer), 시간 FIFO 우선순위 지정자(time FIFO prioritizer), 및 시간 상승 우선순위 지정자(time boost prioritizer)가 이용될 수 있으며, 이들 각각에 대해 이하에서 개별적으로 설명한다.
상대적 우선순위 우선순위 지정자는, 우선순위 지정자의 가장 간단한 경우를 구성한다. 상대적 우선순위는 한 인쇄 작업을 다른 인쇄 작업에 대해 순위를 부여하는 데 사용되는 일련의 가중치이다. 일 실시예에서, 더 낮은 번호는 더 높은 우선순위를 암시한다. 따라서, 0의 상대적 우선순위를 가지고 있는 인쇄 작업은 1의 상대적 우선순위를 갖는 것보다 더 높은 상대적 우선순위를 갖는다.
전역적 우선순위 효과 우선순위 지정자는, 전역적 우선순위 효과를, 한개의 물리적 프린터의 다른 물리적 프린터에 대한 상대적 가중치에 영향을 주는 수정자(modifier)로서 이용한다. 예를 들어, 한 프린터의 상대적 가중치에 대한 패널티가 인쇄 페이지별로(on a per-page-printed basis) 할당될 수 있다. 따라서, 큰 작업이 특정 프린터에 대해 작은 작업보다 더 부정적인 영향을 갖는다.
시간 FIFO 우선순위 지정자는, 일정 경과 시간 후에 작업이 최우선적 우선순위 상승(overriding boost in priority)을 받은 다음에 FIFO 순서로 처리될 수 있게 해주는 시간 필드를 이용한다. 이것은 인쇄 작업의 굶주림(starvation of a print job)을 방지하기 위해 사용될 수 있다. 예를 들어, 튜플이 [Tfifo1, P1]으로서 정의되고 시간 FIFO가 오후 7시로 설정된 경우, 오후 7 이후에, 인쇄 작업은 우선순위가 올라간다. P1이 큰 작업에 패널티를 주는 효과를 갖는 경우, 이것은 큰 작업이 지금까지 큐에서 굶주려 있었던 경우 그 작업이 종국에는 인쇄될 수 있게 해준다. 이 문턱값에 도달한 모든 작업들은 FIFO 순서로 인쇄된다.
시간 상승 우선순위 지정자는, 설정 시간 이후의 작업의 우선순위가 설정 시간이 되는 것이 아니라, 설정 시간 이후의 우선순위가 0으로 설정되는 것(0은 더 높은 우선순위를 갖는다는 것을 상기할 것)을 제외하고는, 시간 FIFO 필드와 동일한 방식으로 동작하는 시간 상승 필드(time boost field)를 이용한다. 이것은 어떤 때에 작업에 우선순위 상승을 제공하기 위해 시간 상승이 사용되지만 나머지 우선순위 필드는 여전히 상승을 받은 작업에 대한 작업 순서를 결정하는 데 중요하다는 것을 의미한다.
예시되고 기술된 실시예에서, 본 시스템은 시간 필드를 상대적 우선순위 필드와 약간 다르게 처리한다. 즉, 우선순위 지정자에 의해 반환된 시간들 모두가 비교되고, 장래에 여전히 있을 가장 작은 시간이 확인되고, 이어서 작업이 이 시간이 만료될 때까지 시간 큐에 배치되어 있다. 시간이 만료될 때, 작업은 다시 우선순위 지정자로 전달된다. 일반적으로, 우선순위 지정자는 이 시점에서 시간을 재조정하거나 보류를 해제할 수 있다.
예로서, 이하의 것을 생각해보자. 이하의 튜플을 구현하는 일련의 우선순위 지정자를 생각해보자.
[Tfifo, Pexec, Tboost, Psmall, Tdelay]
이 예에서, 튜플의 성분들 각각은 다음과 같이 정의된다.
성분 정의
Tdelay 100MB보다 큰 작업을 오전 2시까지 보류함; 전술한 바와 같이 시간 상승을 사용함
Psmall 큰 작업보다 작은 작업에 우선순위를 부여함.
Tboost 현재 시간 + 1 시간에 대한 시간 상승을 설정함.
Pexec 보통 사용자에 의해 전송된 작업보다 간부에 의해 전송된 작업에 우선순위를 부여함.
Tfifo 현재 시간 + 3 시간에 대한 fifo 시간을 설정함.
Tboost의 효과는 1시간 이상 동안 큐에 보류되어 있던 큰 작업이 이 때에 작은 작업보다 우선순위가 올라가게 된다는 것이다. 그렇지만, 작은 작업이 오랫동 안 지연되었더라도, 이들은 여전히 큰 작업보다 우선순위를 갖는다. Tfifo의 효과는 퇴근 무렵의 시간 상승에 상관없이 또 작업의 크기에 상관없이(100MB보다 작은 경우), 어떤 작업이 3시간 이상 동안 큐에 보류되어 있은 경우, 이는 (100MB보다 크지 않은 한) 엄격하게 FIFO 순서로 인쇄된다. 100MB보다 큰 작업은 오전 2시 이후에 인쇄된다. 이들 큰 작업이 3시간 미만 동안 큐에 보류되어 있지 않은 한(이런 일은 거의 없음), 이들은 FIFO 순서로 인쇄된다.
이 예로부터 잘 알 수 있는 바와 같이, 우선순위 지정자는 인쇄 시스템을 프로그램하는 강력한 메카니즘을 제공하기 위해 이용될 수 있다. 적절한 우선순위 지정자를 선택하고 이들을 그에 따라 구성함으로써, 시스템 관리자는 그의 특정 시스템이 어떤 필요성 및 요구를 가질지라도 이를 독자적으로 만족시키기 위해 그의 특정 인쇄 시스템을 커스터마이즈하기 위한 강력한 도구를 제공받는다.
굶주림 위험
전술한 바와 같이, 적어도 일부 실시예들에서, 인쇄 시스템은, 인쇄를 계속하기 위해 데이터를 수신할 필요가 있는 인쇄 장치가 많은 양의 데이터가 줄지어 기다리고 있는 인쇄 장치보다 우선순위를 받게 보장하도록 구성된다.
일 실시예에 따르면, 각각의 큐는 값 <낮음>, <중간> 및 <높음>을 가질 수 있는 "굶주림 위험(starvation risk)"을 유지한다. 굶주림 위험은 주어진 프린터가 유휴 상태에 있을 가능성이 얼마인지의 표시이다. 굶주림 위험 데이터는 그의 작업에 우선순위를 지정하기 위해 장치 스케쥴러의 업스트림(upstream)에 있는 렌더링 컴포넌트에 의해 사용된다. 이는 다른 작업 우선순위에 상관없이 다른 것들 보다 더 높은 굶주림 위험에 있는 큐로 보내지는 작업을 우선적으로 렌더링하기 시작한다. 이것은 높은 우선순위 작업이 시스템 내의 다른 작업들을 항상 압도하지 못하도록 하는데 사용된다. 따라서, 큐가 다수의 높은 우선순위 작업을 가지고 있는 경우, 그 큐는 궁극적으로 꽉 차게 되고 그의 굶주림 위험이 떨어지게 된다. 그 시점에서, 다른 큐들은 굶주림 위험이 다시 이들 큐의 굶주림 위험을 초과하게 될 때까지 우선적으로 작업을 받게 된다.
굶주림 위험을 계산하기 위해 임의의 적합한 방법이 사용될 수 있다. 단지 한 예에서, 프린터 처리용량이 먼저 평가된다. 이것은 장치가 어떤 시간 구간에 걸쳐 데이터를 소비하는 속도를 샘플링한 다음에, 그 구간에 대한 처리용량을 다음과 같이 계산함으로써 행해진다.
Rm = <전송된 바이트>/<시간 간격>
그렇지만, 당업자라면 잘 알고 있는 바와 같이, 프린터 처리용량은 프린터 버퍼가 아주 빠르게 채워지지만, 페이지는 일반적으로 훨씬 더 느리게 인쇄되기 때문에 아주 가변적일 수 있다. 따라서, 장치 처리용량의 "버스트 정도(burstiness)"를 상각(amortize)하는 어떤 방법이 있어야만 한다.
일 실시예에 따르면, 이것은 원하는 경우 소비 속도 이력의 이해와 함께 소비 속도(comsumption rate)를 특정 큐에 대해 정의된 최소 속도의 최대값으로서 계산함으로써 행해진다. 수학적으로 말하면, 단일의 조정가능 파라미터 α가 사용되고 이는 0(이력이 없음을 나타냄)과 1(유일한 이력을 나타냄) 사이의 값을 가질 수 있다. 이 조정가능 파라미터는 전술한 바와 같이 장치 처리용량의 버스트 정도를 고려하는 방식으로 소비 속도를 계산하는 이하의 계산에 포함되어 있다.
Rn = max(αRn-1 + (1-α)Rm, Rmin)
어떤 데이터도 장치에 전송되고 있지 않은 경우, 이 계산은 수행되지 않는다. 프린터 드라이버, 또는 다른 플러깅가능 시스템 컴포넌트(인쇄 렌더링 드라이버 또는 프로토콜 어댑터 등) 또는 관리자는 장치를 정확하게 모델링하는 α에 대한 값을 선택할 수 있다. 상기 계산이 주어진 경우, 특정 큐 내의 모든 작업의 전체 바이트 수가 합산될 수 있고, 이로부터 굶주림까지의 시간의 추정이 다음과 같이 계산될 수 있다.
Tstarvation = 바이트 수 / Rn
일 실시예에 따르면, 특정 장치의 굶주림 위험을 분류하기 위해 2개의 시간 간격이 정의되고 사용된다. 추정된 굶주림 시간이 이들 간격 중 제1 간격을 초과하는 경우, 굶주림 위험은 높음에서 중간으로 이동한다. 추정된 굶주림 시간이 이들 간격 중 제2 간격을 초과하는 경우, 굶주림 위험은 낮음으로 분류되어진다.
예로서, 이하의 것을 생각해보자. 바로 전 시각(second)에 10KB를 받고 지금 시각(second)에 5KB를 받은 프린터가 주어진 경우, α = 0.8이라 하면, 상기 주어진 식에 따라 추정된 소비 속도는 0.8 * 10k + (1-0.8)* 5kB.s-1, 즉 8+1 kB.s-1 = 9 kB.s-1이다. 큐가 현재 900kB의 데이터를 그 안에 가지고 있는 경우, 굶주림까지 의 시간은 900/9s = 100s이다. 제1 굶주림 위험 간격을 1분으로 정의하고, 제2 간격을 10분으로 정의하는 경우, 이 특정 큐는 중간 굶주림 위험을 갖는 것으로 분류된다.
큐의 스케쥴링
상기한 설명에 대한 어떤 상황을 제공하기 위해, 도 3을 간단히 참조한다. 그렇지만, 도 3을 살펴보기 전에, 이하의 도 3의 설명을 위한 어떤 상황을 제공하기 위해 이하의 것을 생각해보자.
상기한 실시예 및 이하의 실시예에 따르면, 스케쥴링 시스템의 효율은 당업자라면 잘 알고 있는 바와 같이, 다양한 큐를 우선순위 큐(priority queue)로서 구현함으로써 향상된다. 우선순위 큐는 부모가 그의 자식 둘다보다 더 작아야만 한다는 기본 규칙을 갖는 논리적 트리를 정의하는 데이터 구조이다. 우선순위 큐에 있어서, 요소들은 평균적으로 논리적 트리의 요소들의 총수의 log 수만큼의 요소를 고찰함으로써 큐에 삽입될 수 있다.
따라서, 이 특성은 스케쥴링을 아주 효율적이 되게 한다. 게다가, 이것은 또한 우선순위 지정자가 튜플을 생성하여 이를 이용하는 이유이다. 구체적으로 말하면, 튜플로 인해, 스케쥴러는 각각의 작업의 튜플을 고찰한 다음에 그 작업에 적절히 순서를 부여함으로써 2개의 특정 작업을 비교할 수 있게 된다. 게다가, 굶주림 위험의 개념이 스케쥴러에 의해 인자로서 포함되고 고려되는 경우, 아주 강력한 스케쥴링 패러다임이 제공된다.
이제 도 3 예를 참조하면, 2개의 장치 큐(300, 302)가 도시되어 있다. 이들 장치 큐 각각은 물리적 프린터로 보내지는 작업들의 큐이다. 장치 큐 내의 작업들은 전술한 바와 같이 순서가 부여된다. 이 예에서, 작업들 중 어떤 것은 보류되어 있다. 이것에 의해 그 작업들은 전술한 바와 같이 보류되지 않은 작업들보다 낮은 우선순위를 갖게 된다. 이상의 설명으로부터 잘 아는 바와 같이, 낮은 우선순위 작업들은 즉각 인쇄될 수 없다.
개개의 장치 큐와 독립적으로, 인쇄 작업 테이블(304)이 제공되고 시스템 상의 작업들 모두(또는 작업들 모두의 표식)를 저장한다. 작업이 풀링된 프린터로 전송되는 경우(풀링된 프린터에 대해서는 이하에서 기술함), 작업은 그가 보내지는 인쇄 큐들 모두에 나타나게 된다. 이것은 2가지 서로 다른 이유로 행해진다. 첫째, 풀링된 큐는 사실상 모든 작업을 모든 풀링된 장치 내에 가지고 있는 가상 큐이다. 이와 같이 큐를 구조화하는 것은 사용자가 동일한 자원을 위해 경쟁하고 있는 다른 작업들을, 이 작업들이 동일한 풀링된 큐로 전송되는지 여부에 관계없이, 볼 수 있게 해준다. 둘째, 각각의 물리적 프린터는 서로 다른 우선순위 순서를 가질 수 있으며, 생각할 수 있는 바로는, 각각의 프린터에 대한 각각의 우선순위 지정자는 서로 다른 구성을 가질 수 있다. 이것이 의미하는 바는, 많은 경우에 다수의 물리적 프린터에 걸쳐 우선순위 튜플을 비교하는 것이 무의미하다는 것이다.
게다가, 작업에 대해 기술하는 튜플의 임의의 요소가 장래의 시점을 나타내는 경우, 이들 요소는 동시에 시간 큐(306)에 배치되어진다. 시간 큐는 시간 순서로 되어 있으며 이 절대 시간에 따라 요소를 저장하고 있다. 이것은 작업이 큐로부터 제거될 때 작업을 처리하는 것으로 인한 어떠한 장기 스큐(long-term skew)도 방지한다.
당업자 및 그 밖의 사람이라도 잘 알고 있는 바와 같이, 인쇄 시스템은 일반적으로 고정된 일련의 자원을 갖는다. 이 특정 예에서, 시스템 자원(308)은 2개의 디스크, CPU 및 물리적 메모리를 포함한다. 스케쥴러(예를 들어, 도 2의 스케쥴러(252))의 업무는 관리자에 의해 지정된 상대적 우선순위를 갖는 작업을 할당하는 것이다. 이것은 큐 상대적 우선순위 지정자(queue relative prioritizer)에 의해 처리된다. 스케쥴러는 또한 효율적이고 또, 모든 경우는 아니지만 많은 경우에, 이용가능한 시스템 자원에 따라 스케쥴링할 작업의 최적의 수인 것으로 생각되는 것을 선택하려고 해야만 한다. 이렇게 하는 이유는 전체 시스템 처리용량에 관한 한, 더 많은 일보다 더 적은 일을 스케쥴링하는 것이 보다 효과적일 수 있기 때문이다. 예를 들어, 시스템이 페이징 동작을 시작할 정도로 렌더링할 작업이 너무 많이 스케쥴링되어 있는 경우, 이러한 경우의 결과 시스템은 더 적은 작업을 스케쥴링한 경우보다 성능이 더 나빠질 수 있으며, 예를 들어 전술한 바와 같이 "쓰레싱"을 야기할 수 있다. 이와 유사하게, 하나의 디스크로부터의 데이터를 수신하는 3개의 초고속 프린터가 있는 경우, 제3의 작업이 스케쥴링된 경우에 일어나게 될 추가의 디스크 또는 헤드 이동을 감소시키기 위해 2개의 작업만을 스케쥴링하는 것이 실제로 더 빠를 수 있다.
자원의 정확한 수 및 유형은 중요하지 않다. 스풀러(spooler)는 작업이 인쇄될 수 있기 이전에 작업에 의해 획득되어야만 하는 자원의 계층 구조를 유지하게 된다. 작업에 의해 획득된 자원은 어떤 발견적 방법에 의해 추정될 수 있고, 이어 서 사용 중인 실제 자원은 측정에 의해 확인될 수 있다. 이어서, 작업은 어떤 미리 정해진 순서로 그의 자원을 획득하고 작업이 완료되었으면 그 자원을 해방시키게 된다. 이 메카니즘은 처리용량을 감소시킬 수 있지만 데드록(deadlock) 또는 라이브-록(live-lock)을 야기하지는 않는다. 자원 제약에 상관없이, 한 작업은 인쇄를 위해 스케쥴링되고, 한 작업은 렌더링을 위해 스케쥴링된다. 인쇄를 위해 이용가능한 작업은 자원에 대한 첫번째 우선순위를 받게 된다. 렌더링을 필요로 하는 작업은 인쇄 준비가 된 작업보다 더 낮은 우선순위를 갖게 되지만, 서버가 사전 렌더링된 작업 및 렌더링을 필요로 하는 작업 둘다를 수신할 수 있기 때문에, 자원은 렌더링을 위해 보류되어 있는 예비를 갖게 된다. 사용되지 않는 렌더링 예비의 임의의 부분은 작업의 인쇄에 할당되어진다.
시스템 자원이 기계에 대해 전역적인 것은 당연하지만 큐 내에서의 작업들의 상대적 우선순위가 큐 내에서의 우선순위 지정자의 순서 및 이들 우선순위 지정자에 공급되는 구성 데이터 둘다에 의존한다는 것을 추가적으로 생각해보자. 따라서, 일반적으로 불가능하지는 않지만 서로 다른 큐로부터의 작업들의 상대적 우선순위를 결정한다는 것은 어렵다. 어떤 기계 상에서 단지 하나의 우선순위 순서 및 구성만이 있는 것으로 강제할 수는 있지만, 인쇄 서버들이 이전되거나 병합될 수 있고, 또는 분산된 경우 한 노드로부터 다른 노드로 이동될 수 있는 것을 고려할 때 이것을 관리 및 유지하는 것은 아주 어렵게 된다. 또한, 각각의 큐를 위해 어떤 시스템 자원을 예비해둘 수 있지만, 이 방법은 큐 부하가 분산되어 있지 않은 경우 서버 상의 자원을 충분히 이용하지 못한다.
일 실시예에 따르면, 이 상대적 순서 부여 문제를 해결하기 위해 선택된 해결 방안은 이하의 데이터, 즉 큐 내의 최상위 작업에 대한 보류의 횟수, 작업의 굶주림 위험 및 큐 전역적 우선순위를 사용하여 큐의 상대적 우선순위를 지정하는 것이다.
큐 내의 최상위 작업에 대한 보류의 횟수와 관련하여, 이하의 것을 생각해보자. 큐의 최상단에 있는 작업이 보류를 갖는 경우, 이를 처리하려고 시도하는 것은 무의미하다. 큐 내의 임의의 작업이 보류를 갖지 않는 경우, 그 작업은 큐의 상단에 있게 되는데 그 이유는 작업 순서를 결정함에 있어서 보류가 항상 최상위 우선순위를 갖기 때문이다.
특정 작업의 굶주림 위험과 관련하여, 인쇄 서버에서의 임의의 다른 공정성 고려사항과 상관없이, 특정 장치가 굶주림의 위험에 있고 다른 장치가 그렇지 않은 경우, 굶주림의 위험에 있는 장치가 먼저 스케쥴링된다.
큐 전역적 우선순위(도 3의 "자원 중재 큐(310)"라고도 함)와 관련하여, 이러한 것은 개개의 인쇄 큐의 우선순위 큐로서 유지된다. 동작을 설명하면, 대부분의 범용 오퍼레이팅 시스템에서 전역적 우선순위 큐는 어떤 점에서 쓰레드 또는 프로세스 우선순위와 닮았다. 구체적으로 말하면, 각각의 작업은 서로 다른 인자에 기초하여 변화할 수 있는 값을 갖는 전역적 우선순위 효과를 갖는다. 일 실시예에서, 전역적 우선순위 효과의 기본적 동작은 작업에서 페이지마다 전역적 우선순위의 1 포인트를 감소시키는 것이다. 게다가, 전역적 우선순위 효과는 또한 작업의 우선순위를 향상시킬 수 있다. 예를 들어, "작업 쇄도(Rush Job)"라고 정의된 카 테고리가 있을 수 있으며, 이 경우 전역적 우선순위 효과는 큰 수만큼 자동적으로 개선될 수 있다. 작업이 전역적 우선순위에 부정적으로 영향을 주는 경우, 이 효과는 작업이 스케쥴링된 후에(즉, 큐가 패널티를 받고 있는 자원을 작업이 취한 후에) 계산된다. 큐 상의 현재 처리 작업의 부정적 우선순위 효과는 통상적으로 행해지는 정규화(normalization)와는 상관없이 그 작업이 처리되고 있는 동안은 항상 효력이 있다. 게다가, 전역적 우선순위 복원의 개념은 큐의 우선순위를 어떤 설정된 한계까지는 시간에 따라 점차적으로 향상되도록 함으로써 제공될 수 있다.
각각의 작업과 연관될 수 있는 전역적 우선순위 효과 이외에, 일 실시예에 따르면, 각각의 큐는 다수의 구성가능 파라미터를 가질 수 있다. 이 예에서, 이들 구성가능 파라미터는 전역적 우선순위 범위(global priority range), 정규화 비율(normalization rate), 및 정규화 시간 간격(normalization time interval)을 포함하지만 이에 한정되는 것은 아니다.
전역적 우선순위 범위와 관련하여, 더 낮은 우선순위 번호가 더 높은 우선순위를 받는다. 큐의 우선순위는 어떤 작업 효과 및 우선순위 정규화에 상관없이 항상 이 범위 내에 있다. 표준 범위는 예를 들어 1000-2000일 수 있다. 관리자는 다른 큐 범위를 정의하고 어떤 큐의 다른 큐들에 대한 우선순위에 패널티를 주거나 또는 우선순위를 상승시키기 위해 이 범위를 사용할 수 있다. 예를 들어, 관리자는 기본 범위를 갖는 큐보다 항상 우선권을 받는 일련의 큐에 대해 [0-1000]의 우선순위 범위를 할당할 수 있다.
정규화 비율은 우선순위가 시간에 따라 정규화되는 비율을 말한다. 기본값 은 우선순위 번호가 매 시간 구간마다 1 포인트씩 낮아지는 것일 수 있다.
정규화 시간 간격은 정규화가 일어나는 기본 시간 간격을 말한다. 예시적인 기본 간격은 1분일 수 있다.
렌더러에서의 스케쥴링
이제, 렌더러(renderer)와 장치 스케쥴러 간의 관계를 살펴본다. 이들 컴포넌트 각각은 기본적으로 그 자신의 논리적 큐를 가지고 있다. 렌더러에 저장된 작업은 논리적으로 클라이언트 장치 또는 장치 스케쥴러에 저장된 그의 대응하는 작업과 다른 작업이다. 이들 큐 각각 내의 대응하는 인쇄 작업은 프로세스 및 기계 경계에 걸쳐 일관성있는 작업 GUID(globally unique identifier)에 의해 연관되어 있다.
동작을 설명하면, 렌더러는 일반적으로 중간 포맷(EMF(enhanced metadata format, 향상된 메타데이터 포맷) 등)으로 인쇄 작업 데이터를 수신하고 필터들의 파이프라인을 통해 이 중간 포맷을 처리하여 다른 포맷으로 데이터를 생성하며, 이 데이터는 이어서 스케쥴링 및 인쇄 장치로의 제공을 위해 서버로 전송된다. 또한, 렌더러 및 장치 스케쥴러의 특성은 아주 다르다. 구체적으로는, 장치 스케쥴러는 "I/O 바운드(I/O bound)"라고 말해지며, 이는 종종 장치 스케쥴러가 실제로 프린터가 데이터 요청에 응답하기를 기다린다는 것을 의미한다. 반면에, 렌더러는 일반적으로 "CPU 바운드(CPU bound)"이며, 이는 렌더러가 특정 컴퓨팅 장치가 허용하는 빠르기로 데이터를 처리하고 그의 데이터를 기록한다는 것을 의미한다. 2가지 서로 다른 유형의 스케쥴링이 이들 컴포넌트 각각과 관련하여 행해져야만 한다는 것 은 논리적으로 당연하다.
일 실시예에 따르면, 특정 프린터의 굶주림 위험은 굶주림 상황이 일어날 가능성을 감소시키기 위해 렌더링 동작을 조정하는 데 사용된다. 보다 구체적으로는, 렌더러는 다운스트림 물리적 프린터(downstream physical printer)가 유휴 상태에 있거나 작업을 마칠 예정인 경우(즉, 높은 굶주림 위험을 가지는 경우) 그 프린터에 대해 우선적으로 작업을 스케쥴링한다. 렌더러는 작업이 이미 사전 렌더링된 많은 데이터를 가지고 있으며 따라서 낮은 굶주림 위험에 있는 프린터로 보내지는 경우 렌더링을 위한 작업을 덜 우선적으로 스케쥴링한다.
인쇄 풀
인쇄 풀(print pool)은 인쇄 큐와 물리적 인쇄 장치 간의 다대다(many-to-many) 관계를 정의하는 메카니즘이다. 즉, 인쇄 서버는 다수의 프린터와 연관되어 있고 또 데이터를 다수의 프린터에 제공하는 하나의 논리적 프린터를 가질 수 있다.
예로서, 2개의 풀링된 프린터를 갖는 시스템을 도시한 도 4를 살펴본다. 각각의 풀링된 프린터는 2개의 물리적 프린터와 연관되어 있으며, 각각은 그 자신의 대응하는 인쇄 큐를 갖는다. 풀링된 프린터에 대한 인쇄 큐는 물리적 프린터 각각과 연관된 인쇄 큐로부터 결정되고, 물리적 프린터 각각과 연관된 인쇄 큐는 각각의 물리적 프린터의 스케쥴링 큐 및 연관된 포트의 캐싱된 장치 큐로부터 결정된다. 이 예에서, "인쇄 큐"로서 지정된 큐는 가상 큐이다.
이 예에서, 하나의 풀링된 프린터로부터 2개의 물리적 프린터에 대해 스케쥴 링되는 인쇄 작업은 각각의 물리적 프린터에서는 물론 가상 프린터 풀에서도 볼 수 있다. 게다가, 특정 풀링된 프린터에 대한 인쇄 큐는 대응하는 물리적 프린터 각각과 연관된 인쇄 큐를 병합함으로써 결정된다.
결론
상기한 인쇄 시스템 및 방법은 인쇄 작업의 우선순위가 프로그램가능하도록 해줄 수 있다. 스케쥴러 컴포넌트는 인쇄 작업 관리 및 스케쥴링을 감독하고 우선순위 지정자라고 하는 컴포넌트와 협력하여 프로그래밍 및 커스터마이즈화의 편의성을 제공한다. 적어도 일부 실시예들에서, 서로 다른 인쇄 작업 속성에 따라 스케쥴러의 동작을 커스터마이즈하기 위해 우선순위 지정자가 프로그램되고 삽입될 수 있도록 시스템에 대한 인터페이스가 제공된다. 적어도 일부 실시예들에서, 본 시스템은 인쇄 큐들 간의 시스템 자원의 공평한 분배를 실시하기 위해 시스템에서의 인쇄 큐의 상대적 우선순위 지정을 위한 모델을 이용한다. 적어도 일부 실시예들에서, 본 시스템은 작업을 인쇄할 때 렌더링 및 인쇄 동작을 독립적으로 스케쥴링할 수 있으며, 또 시스템에서 렌더링을 억압하는 것이 장치 굶주림을 일으키지 않도록 보장하는 데 도움을 주기 위해 "굶주림 위험"이라고 하는 발견적 방법을 사용할 수 있다.
본 발명이 구조적 특징 및/또는 방법 단계들과 관련된 언어로 기술되어 있지만, 첨부된 청구항에 기술된 본 발명이 기술된 특정 특징 또는 단계들에 반드시 한정되는 것은 아님을 잘 알 것이다. 오히려, 특정 특징 및 단계는 청구된 발명을 구현하는 양호한 형태로서 개시된 것이다.

Claims (20)

  1. 컴퓨터 판독가능 명령어를 갖는 하나 이상의 컴퓨터 판독가능 기록 매체로서, 상기 컴퓨터 판독가능 명령어는, 실행될 때, 컴퓨터 아키텍처를 구현하며, 상기 컴퓨터 아키텍처는,
    복수의 우선순위 지정자(prioritizer) - 상기 복수의 우선순위 지정자는 인쇄 큐(print queue)와 연관된 우선순위 지정자들의 시퀀스를 정의하도록 구성되며, 인쇄 작업을 스케쥴링할 시에 사용하기 위해 상기 인쇄 작업과 연관된 복수의 우선순위 값의 튜플(tuple)을 생성하도록 구성되고, 상기 시퀀스의 각각의 우선순위 지정자에게 우선순위 순서가 할당됨 - ; 및
    상기 튜플을 처리하고 상기 인쇄 큐에 대한 인쇄 작업들을 스케쥴링하도록 구성된 스케쥴러
    를 포함하는, 하나 이상의 컴퓨터 판독가능 기록 매체.
  2. 제1항에 있어서, 각각의 우선순위 지정자는 가중치값 또는 시간값 중 적어도 하나를 생성하도록 구성되는, 하나 이상의 컴퓨터 판독가능 기록 매체.
  3. 삭제
  4. 제1항에 있어서, 상기 컴퓨터 판독가능 명령어는 또한, 사용자가 연관된 우선순위 지정자를 구성할 수 있게 하도록 구성되어 있는 각각의 우선순위 지정자 사용자 인터페이스를 정의하는, 하나 이상의 컴퓨터 판독가능 기록 매체.
  5. 제1항에 있어서, 상기 컴퓨터 판독가능 명령어는 또한, 상기 스케쥴러가 인쇄 작업들을 스케쥴링하는 것을 돕기 위해 하나 이상의 우선순위 큐들을 이용하는, 하나 이상의 컴퓨터 판독가능 기록 매체.
  6. 제1항에 있어서, 상기 컴퓨터 판독가능 명령어는 또한 상기 스케쥴러가 인쇄 작업들을 스케쥴링하는 것을 돕기 위해 하나 이상의 우선순위 큐들을 이용하고,
    제1 유형의 우선순위 큐는 인쇄 장치와 연관된 인쇄 큐에서의 상대적 인쇄 작업 우선순위 지정을 나타내는 프린터 우선순위 큐, 및
    인쇄 큐들의 큐를 나타내는 자원 중재 큐를 포함하는, 하나 이상의 컴퓨터 판독가능 기록 매체.
  7. 제1항에 있어서, 상기 컴퓨터 판독가능 명령어는 또한 상기 스케쥴러가 인쇄 작업들을 스케쥴링하는 것을 돕기 위해 하나 이상의 우선순위 큐들을 이용하고,
    제1 유형의 우선순위 큐는 인쇄 장치와 연관된 인쇄 큐에서의 상대적 인쇄 작업 우선순위 지정을 나타내는 프린터 우선순위 큐, 및
    인쇄 큐들의 큐를 나타내는 자원 중재 큐를 포함하며,
    상기 하나 이상의 우선순위 큐들은,
    각각의 인쇄 작업들에 대한 상대적 우선순위 튜플,
    연관된 인쇄 장치의 전역적 우선순위에 대한 특정 인쇄 작업을 처리하는 것의 효과를 나타내는 전역적 우선순위 효과, 및
    인쇄 작업을 보류시키는 데 사용될 수 있는 보류 카운트(hold count)
    를 포함하는 데이터를 유지하기 위해 이용되는, 하나 이상의 컴퓨터 판독가능 기록 매체.
  8. 제1항에 있어서, 각각의 우선순위 지정자는 복수의 서로 다른 유형의 우선순위 지정자들의 그룹으로부터 선택될 수 있는, 하나 이상의 컴퓨터 판독가능 기록 매체.
  9. 제1항에 있어서, 각각의 우선순위 지정자는 복수의 서로 다른 유형의 우선순위 지정자들의 그룹으로부터 선택될 수 있고,
    제1 유형은,
    하나의 인쇄 작업의, 또 다른 인쇄 작업에 대한 순위를 부여하는 데 사용되는 데이터를 생성하는 상대적 우선순위 우선순위 지정자(relative priority prioritizer),
    한 인쇄 장치의, 또 다른 인쇄 장치에 대한 상대적 가중치에 영향을 주는 변경자(modifier)로서 전역적 우선순위 효과를 이용하는 전역적 우선순위 효과 우선순위 지정자(global priority effect prioritizer),
    인쇄 작업이 일정 시간 경과 이후에 최우선적 우선순위 상승(overriding boost in priority)을 받을 수 있도록 하는 시간 필드를 이용하는 시간 FIFO 우선순위 지정자, 및
    인쇄 작업이 우선순위 상승을 받을 수 있도록 해주는 시간 상승 필드(time boost field)를 이용하는 시간 상승 우선순위 지정자(time boost prioritizer)
    를 포함하는, 하나 이상의 컴퓨터 판독가능 기록 매체.
  10. 인쇄가 행해질 물리적 프린터와 각각 연관되어 있는 각각의 장치 큐들을, 프린트 서버에 의해, 유지하는 단계;
    각각의 장치 큐에 대해, 주어진 물리적 프린터가 유휴 상태(idle)에 있게 될 가능성의 지표를 제공하는 굶주림 위험(starvation risk)을, 상기 프린트 서버에 의해, 유지하는 단계;
    각각의 장치 큐에 대해, 각각의 프린트 작업에 대한 복수의 우선순위 값들의 튜플을 제공하는 복수의 우선순위 지정자들의 시퀀스를, 상기 프린트 서버에 의해, 유지하는 단계; 및
    적어도 상기 튜플들 및 상기 굶주림 위험을 사용하여 인쇄 작업들을, 상기 프린트 서버에 의해, 스케쥴링하는 단계
    를 포함하고,
    상기 시퀀스의 각각의 우선순위 지정자에게 우선순위 순서가 할당되는,
    방법.
  11. 제10항에 있어서, 각각의 장치 큐들을 유지하는 상기 단계는, 상기 큐들을 우선순위 큐들로서 유지하는 단계를 포함하는, 방법.
  12. 제10항에 있어서, 각각의 장치 큐들을 유지하는 상기 단계는, 각각의 장치 큐에 대해, 상기 각각의 장치 큐 내의 개별적인 인쇄 작업이 인쇄 시스템에 대해 갖게 될 전역적 효과를 확인하는 데 사용되는 전역적 우선순위 값을 유지하는 단계를 포함하는 방법.
  13. 삭제
  14. 제10항에 있어서, 각각의 장치 큐들을 유지하는 상기 단계는 상기 장치 큐들을 풀링된 프린터 시스템의 일부로서 유지하는 단계를 포함하는, 방법.
  15. 제10항에 있어서, 각각의 장치 큐들을 유지하는 상기 단계는,
    각각의 장치 큐에 대해, 상기 각각의 장치 큐 내의 개별적인 인쇄 작업이 인쇄 시스템에 대해 갖게 될 전역적 효과를 확인하는 데 사용되는 전역적 우선순위 값을 유지하는 단계를 포함하고,
    장치 큐의 굶주림 위험 및 전역적 우선순위 값에 적어도 부분적으로 기초하여 각각의 장치 큐들의 우선순위 지정을 제공하는 자원 중재 큐를 유지하는 단계
    를 더 포함하는 방법.
  16. 제15항에 있어서, 상기 단계들은 풀링된 인쇄 시스템의 일부로서 수행되는, 방법.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020060001821A 2005-02-25 2006-01-06 인쇄 작업 큐잉 및 스케쥴링 시스템 및 방법 KR101203358B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/067,361 2005-02-25
US11/067,361 US7548335B2 (en) 2005-02-25 2005-02-25 Print job queuing and scheduling systems and methods

Publications (2)

Publication Number Publication Date
KR20060094856A KR20060094856A (ko) 2006-08-30
KR101203358B1 true KR101203358B1 (ko) 2012-11-20

Family

ID=36481309

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060001821A KR101203358B1 (ko) 2005-02-25 2006-01-06 인쇄 작업 큐잉 및 스케쥴링 시스템 및 방법

Country Status (5)

Country Link
US (1) US7548335B2 (ko)
EP (1) EP1696310A3 (ko)
JP (1) JP4813202B2 (ko)
KR (1) KR101203358B1 (ko)
CN (1) CN1825273B (ko)

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7898679B2 (en) * 2005-05-27 2011-03-01 Computer Associates Think, Inc. Method and system for scheduling jobs in a computer system
US20060271929A1 (en) * 2005-05-27 2006-11-30 Computer Associates Think, Inc. Method and system for providing job forecasting in a computer system
US7698650B2 (en) * 2005-06-16 2010-04-13 Xerox Corporation Computerized action tool for managing print parameters, queuing actions and archiving actions for a document output management system
US7755778B2 (en) * 2006-03-30 2010-07-13 Xerox Corporation Print job management system
US8522240B1 (en) * 2006-10-19 2013-08-27 United Services Automobile Association (Usaa) Systems and methods for collaborative task management
JP4857102B2 (ja) * 2006-12-22 2012-01-18 キヤノン株式会社 情報処理装置、ジョブ処理方法、プログラム及び記憶媒体
JP2008165708A (ja) * 2007-01-05 2008-07-17 Canon Inc 印刷システム、印刷システムの制御方法、印刷装置、記憶媒体、プログラム
US7855799B2 (en) * 2007-01-16 2010-12-21 Shah Pradip K Print workflow automation
JP2008186407A (ja) * 2007-01-31 2008-08-14 Brother Ind Ltd 画像形成システム、画像形成装置及びコンピュータ
JP4381426B2 (ja) * 2007-03-07 2009-12-09 シャープ株式会社 ファクシミリ装置及びファクシミリ送信方法
US8015053B2 (en) * 2007-03-20 2011-09-06 Xerox Corporation Processor, system and method for accommodating high priority print jobs
US8286173B2 (en) * 2007-03-23 2012-10-09 Oracle America, Inc. Methods and apparatus for window-based fair priority scheduling
US8427670B2 (en) * 2007-05-18 2013-04-23 Xerox Corporation System and method for improving throughput in a print production environment
US20090025002A1 (en) * 2007-07-18 2009-01-22 Xerox Corporation Methods and systems for routing large, high-volume, high-variability print jobs in a document production environment
US8144364B2 (en) 2007-07-18 2012-03-27 Xerox Corporation Methods and systems for processing heavy-tailed job distributions in a document production environment
US8145517B2 (en) * 2007-07-18 2012-03-27 Xerox Corporation Methods and systems for scheduling job sets in a production environment
US8725546B2 (en) * 2007-07-18 2014-05-13 Xerox Corporation Workflow scheduling method and system
US8134743B2 (en) 2007-07-18 2012-03-13 Xerox Corporation Methods and systems for routing and processing jobs in a production environment
US8127012B2 (en) * 2007-07-18 2012-02-28 Xerox Corporation System and methods for efficient and adequate data collection in document production environments
JP2009048299A (ja) * 2007-08-15 2009-03-05 Brother Ind Ltd 印刷システム、プログラム及びプリンタ
US20090051960A1 (en) * 2007-08-23 2009-02-26 Maglanque Jose Elwin System and method for creating a customizable device driver for interfacing with a document processing device
DE102008004658B4 (de) * 2008-01-16 2010-03-25 Siemens Aktiengesellschaft Verfahren zur zentralen Steuerung von Prozessen in erweiterbaren medizinischen Plattformen
US20090185213A1 (en) * 2008-01-17 2009-07-23 Xerox Corporation Productivity of digital printing of jobs with different sizes of paper
US8276143B2 (en) * 2008-03-10 2012-09-25 Oracle America, Inc. Dynamic scheduling of application tasks in a distributed task based system
US8508768B2 (en) * 2008-05-09 2013-08-13 Ricoh Company, Ltd Job scheduling in a workflow architecture related to printing
US20090327033A1 (en) * 2008-06-26 2009-12-31 Xerox Corporation Methods and systems for forecasting inventory levels in a production environment
US8250579B2 (en) * 2008-06-27 2012-08-21 Oracle America, Inc. Method for stage-based cost analysis for task scheduling
KR100973021B1 (ko) * 2008-07-09 2010-07-30 주식회사 빅솔론 우선 처리 식별자를 설정할 수 있는 프린터 장치
US20100050179A1 (en) * 2008-08-22 2010-02-25 Ajay Mohindra Layered capacity driven provisioning in distributed environments
JP5335325B2 (ja) * 2008-08-29 2013-11-06 キヤノン株式会社 印刷装置、印刷システム、印刷装置の制御方法、及びプログラム
CN101414250B (zh) * 2008-11-20 2012-02-01 北大方正集团有限公司 一种多打印机同时打印时作业的分配方法及系统
US8482766B2 (en) * 2009-01-08 2013-07-09 Infoprint Solutions Company Llc Automatic adjustment print job submission mechanism
US8482767B2 (en) * 2009-02-11 2013-07-09 Infoprint Solutions Company Llc Print job submission with sleep mechanism
US9247007B2 (en) * 2009-04-23 2016-01-26 Disney Enterprises, Inc. System and method for providing a peripheral control interface for extending media device functions
JP5232728B2 (ja) * 2009-06-08 2013-07-10 京セラドキュメントソリューションズ株式会社 画像形成装置
KR101644800B1 (ko) * 2010-01-07 2016-08-02 삼성전자주식회사 컴퓨팅 시스템 및 방법
US8705090B2 (en) * 2010-04-15 2014-04-22 Xerox Corporation System and method for burstiness-aware scheduling and capacity assessment on a network of electronic devices
US20110264458A1 (en) * 2010-04-27 2011-10-27 Toshiba Tec Kabushiki Kaisha System and method for assigning a seat based on usage situations of printing apparatus
JP5099188B2 (ja) * 2010-08-18 2012-12-12 コニカミノルタビジネステクノロジーズ株式会社 処理順決定装置、処理順決定方法および処理順決定プログラム
US8576430B2 (en) 2010-08-27 2013-11-05 Eastman Kodak Company Job schedule generation using historical decision database
US20120060500A1 (en) * 2010-09-15 2012-03-15 Accendo Advisors, Llc Method and apparatus for collecting solar thermal energy
JP5418450B2 (ja) * 2010-09-16 2014-02-19 カシオ電子工業株式会社 印刷装置
CN102446178B (zh) * 2010-09-30 2015-01-21 北大方正集团有限公司 作业文件的提交方法和装置
JP2012079219A (ja) * 2010-10-05 2012-04-19 Fuji Xerox Co Ltd ジョブ実行システム、ジョブ受付装置及びプログラム
US8947702B2 (en) 2011-09-20 2015-02-03 Electronics For Imaging, Inc. Engine optimization
WO2013066298A1 (en) 2011-10-31 2013-05-10 Hewlett-Packard Development Company, L.P. Print service provider risks applied to decision making
CN103246653B (zh) * 2012-02-03 2017-07-28 腾讯科技(深圳)有限公司 数据处理方法和装置
US8896867B2 (en) * 2012-09-11 2014-11-25 Xerox Corporation Methods and systems for assigning jobs to production devices
US20150138585A1 (en) * 2013-11-19 2015-05-21 Toshiba Tec Kabushiki Kaisha Printing management system, printing management method, and image forming apparatus
US9171236B1 (en) * 2014-05-09 2015-10-27 Xerox Corporation Dynamic spooler load balancing
US9870265B2 (en) 2014-12-09 2018-01-16 Successfactors, Inc. Prioritizing cloud-based computing tasks according to global company and job type priority levels
WO2016099545A1 (en) 2014-12-19 2016-06-23 Hewlett-Packard Development Company, L. P. Resource provisioning
WO2016160065A1 (en) * 2015-03-31 2016-10-06 Hewlett-Packard Development Company, L.P. Print reservation
US10191705B2 (en) 2015-05-04 2019-01-29 Xerox Corporation Mechanisms to enable FIFO behavior for selected workflow tasks in multi-document jobs
CN104850367A (zh) * 2015-05-15 2015-08-19 苏州德锐朗智能科技有限公司 一种用于打印机打印任务的控制方法
EP3176689A1 (en) * 2015-12-03 2017-06-07 Ricoh Company Ltd. Print control program, print control method, computer and networked system
CN110546010B (zh) * 2017-04-15 2021-10-15 惠普发展公司,有限责任合伙企业 打印机,托盘定向及打印大小选择的方法和可读介质
US10198224B1 (en) 2018-04-02 2019-02-05 Ricoh Company, Ltd. Scheduling high priority print jobs with minimal print waste
CN110246277A (zh) * 2019-06-13 2019-09-17 宜春宜联科技有限公司 文件打印方法、控制装置及控制设备
US11689473B2 (en) * 2020-07-24 2023-06-27 Oracle International Corporation Pre-allocating resources with hierarchy-based constraints
CN111857616B (zh) * 2020-07-30 2024-03-08 上海商米科技集团股份有限公司 基于多云平台的票据打印方法和设备
CN113400821A (zh) * 2021-06-11 2021-09-17 中国人民解放军陆军工程大学 一种打印作业自动化存储和取件系统及其使用方法
CN113448705B (zh) * 2021-06-25 2023-03-28 皖西学院 一种不平衡作业调度算法
CN113590289A (zh) * 2021-07-30 2021-11-02 中科曙光国际信息产业有限公司 作业调度方法、系统、装置、计算机设备和存储介质
CN117573050B (zh) * 2024-01-17 2024-04-12 北京普云特科技有限公司 一种基于打印机的作业优先级控制方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001209508A (ja) 1999-12-17 2001-08-03 Xerox Corp プリントジョブのスケジューリング方法
JP2002218118A (ja) 2001-01-15 2002-08-02 Nec Corp 複合機能における電子印刷出力の選択方法及び複合機能電子印刷装置並びにプログラム記憶媒体

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3139245B2 (ja) * 1993-11-09 2001-02-26 富士ゼロックス株式会社 プリンタ装置
JPH09218761A (ja) * 1996-02-09 1997-08-19 Nec Corp プリンタサーバシステム
JPH09244833A (ja) * 1996-03-13 1997-09-19 Fuji Xerox Co Ltd スプーリング装置
US6252681B1 (en) * 1997-04-14 2001-06-26 Xerox Corporation Multifunctional printing system with queue management
US5978559A (en) * 1997-10-07 1999-11-02 Xerox Corporation User interface for distributed printing system
JP2000029647A (ja) * 1998-07-13 2000-01-28 Canon Inc プリンタシステム、プリント方法および記憶媒体
US6621589B1 (en) * 1999-09-24 2003-09-16 Hewlett-Packard Development Company, L.P. Print job processing in a printer network using selected printer attributes
US7265855B2 (en) * 2001-02-28 2007-09-04 Sharp Laboratories Of America, Inc. Priority interruptible printing system
US6987578B2 (en) * 2001-03-21 2006-01-17 Hewlett-Packard Development Company, L.P. Printer priority bidding scheme
US20020171864A1 (en) * 2001-05-16 2002-11-21 Robert Sesek Methods and apparatus for printing around a job in a printer queue
US20030020944A1 (en) * 2001-05-17 2003-01-30 International Business Machines Corporation Printer pausing and reordering
JP2003167703A (ja) * 2001-11-30 2003-06-13 Fujitsu Ltd プリンタ、プリンタシステム、プリンタのジョブ処理方法及びそのプログラム
EP1376333A3 (en) * 2002-06-26 2007-10-17 Canon Kabushiki Kaisha Print control apparatus, print control method, program product, and print system
US20040184071A1 (en) * 2003-03-19 2004-09-23 Garg Man M. Pluggable pre-parser for PJL and PS for extracting print job relates header information from a running stream
US7567360B2 (en) 2003-03-27 2009-07-28 Canon Kabushiki Kaisha Image forming system, method and program of controlling image forming system, and storage medium
US7751079B2 (en) * 2004-08-11 2010-07-06 Xerox Corporation Method and system for managing print job files for a shared printer

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001209508A (ja) 1999-12-17 2001-08-03 Xerox Corp プリントジョブのスケジューリング方法
JP2002218118A (ja) 2001-01-15 2002-08-02 Nec Corp 複合機能における電子印刷出力の選択方法及び複合機能電子印刷装置並びにプログラム記憶媒体

Also Published As

Publication number Publication date
EP1696310A3 (en) 2009-12-30
CN1825273A (zh) 2006-08-30
JP4813202B2 (ja) 2011-11-09
US20060193006A1 (en) 2006-08-31
US7548335B2 (en) 2009-06-16
KR20060094856A (ko) 2006-08-30
CN1825273B (zh) 2012-07-11
EP1696310A2 (en) 2006-08-30
JP2006236337A (ja) 2006-09-07

Similar Documents

Publication Publication Date Title
KR101203358B1 (ko) 인쇄 작업 큐잉 및 스케쥴링 시스템 및 방법
US20020073129A1 (en) Integrated multi-component scheduler for operating systems
US10255217B2 (en) Two level QoS scheduling for latency and queue depth control
US10908954B2 (en) Quality of service classes
JP2007529079A (ja) 自己調節スレッド化モデルによるアプリケーションサーバのためのシステム及び方法
JP3882931B2 (ja) 仮想計算機環境におけるディスパッチ機能の管理
US8959515B2 (en) Task scheduling policy for limited memory systems
US8881161B1 (en) Operating system with hardware-enabled task manager for offloading CPU task scheduling
US20060206887A1 (en) Adaptive partitioning for operating system
US20080016508A1 (en) Distributed processing management apparatus, distributed processing management method and distributed processing management program
EP3329369B1 (en) Background job processing framework
CN113454614A (zh) 用于分布式计算中的资源划分的系统和方法
JP2011192281A (ja) 仮想マシンモニター及び仮想マシンモニターのスケジューリング方法
Shmueli et al. On simulation and design of parallel-systems schedulers: are we doing the right thing?
US8656395B2 (en) Method and system for optimizing a job scheduler in an operating system
JP5987987B2 (ja) リソース管理システム、リソース管理方法、およびプログラム
EP1234230B1 (en) Thread-based methods and systems for using the idle processing power of one or more networked computers to solve complex scientific problems
Krompass et al. Quality of service enabled database applications
JP2003256067A (ja) 省電力制御方式及び省電力制御方法及びプログラム及び記録媒体
US11449502B1 (en) Calculating a throttle limit for requests in a database system
US9043353B2 (en) Query stream execution using priority gradient multiprogramming
Gamini Abhaya et al. Building Web services middleware with predictable execution times
JP2001022601A (ja) ジョブ実行制御方法及び並列計算機システム
JPH01180641A (ja) Cpuソース平均化方式
Cervin Merging real-time and control theory for improving the performance of embedded control systems

Legal Events

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

Payment date: 20151016

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 7