KR20170051360A - 정보 처리 장치 및 그의 제어 방법, 및 프로그램 - Google Patents

정보 처리 장치 및 그의 제어 방법, 및 프로그램 Download PDF

Info

Publication number
KR20170051360A
KR20170051360A KR1020160144319A KR20160144319A KR20170051360A KR 20170051360 A KR20170051360 A KR 20170051360A KR 1020160144319 A KR1020160144319 A KR 1020160144319A KR 20160144319 A KR20160144319 A KR 20160144319A KR 20170051360 A KR20170051360 A KR 20170051360A
Authority
KR
South Korea
Prior art keywords
task
sub
queue
controller
subtask
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
KR1020160144319A
Other languages
English (en)
Other versions
KR102062945B1 (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 KR20170051360A publication Critical patent/KR20170051360A/ko
Application granted granted Critical
Publication of KR102062945B1 publication Critical patent/KR102062945B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/5038Allocation 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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Facsimiles In General (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

정보 처리 장치에서, 제2 컨트롤러는 정보 처리 장치에서 현재 실행 중인 서브태스크들의 수가 역치를 초과하지 않는 경우에 복수의 큐 중 하나로부터 서브태스크를 취득하고, 스레드를 새롭게 작성하여 취득된 서브태스크를 실행시키고, 정보 처리 장치에서 현재 실행 중인 서브태스크의 수가 역치를 초과하는 경우에 스레드를 새롭게 작성하지 않으며, 제2 컨트롤러는 제1 큐에 등록된 서브태스크들 중 현재 실행 중인 서브태스크들의 수가 제1 큐에 대하여 정의된 상한값보다 적은 경우에 정보 처리 장치에서 현재 실행 중인 서브태스크들의 수가 역치를 초과하는지의 여부에 관계없이 제1 큐에 등록되어 있는 서브태스크를 취득하고, 스레드를 새롭게 작성하여 취득된 서브태스크를 실행시킨다.

Description

정보 처리 장치 및 그의 제어 방법, 및 프로그램{INFORMATION PROCESSING APPARATUS AND METHOD OF CONTROLLING THE SAME, AND PROGRAM}
본 발명은 정보 처리 장치 및 그의 제어 방법, 및 프로그램에 관한 것이다.
종래, PC 등의 정보 처리 장치에 있어서 멀티스레딩을 이용한 복수 태스크의 실행 처리에서는 스레드와 관련된 큐에 태스크를 엔큐할 때에, 큐의 길이나 태스크의 실행 시간 등에 기초하여 각 스레드의 처리가 균등해지도록 제어하고 있다. 이에 의해, 효율적으로 태스크의 실행을 행하고 있었다(예를 들어, 일본 특허 공개 제2013-54451호 공보 참조).
그러나, 상기 종래 기술에서는 태스크의 우선도가 높은(긴급으로 실행하고 싶은) 경우에도, 태스크는 큐의 말미에 엔큐되기 때문에 먼저 엔큐된 우선도가 낮은 태스크가 종료되지 않는 한, 우선도가 높은 태스크는 실행되지 않는다는 문제가 있다. 또한, 비어있는 큐가 존재하며 그 비어 있는 큐와 관련된 스레드가 아이들 상태이어도 그 비어 있는 큐 외의 다른 큐에 축적된 태스크는 다른 큐와 관련된 스레드에 의해 엔큐될 때까지 실행되지 않는다. 그 결과, 비효율적인 동작이 된다.
발명의 요약
본 발명의 일 양태에 따르면, 정보 처리 장치로서, 복수의 태스크의 실행을 제어하도록 구성되는 제1 컨트롤러; 상기 제1 컨트롤러에서 동작하는 하나의 태스크로부터 생성된 하나 이상의 서브태스크가 등록되고, 제1 큐 및 상기 제1 큐보다 우선도가 낮은 제2 큐를 포함하는 복수의 큐; 및 상기 복수의 큐에 등록된 서브태스크를 취득하고, 스레드를 작성하여 상기 취득된 서브태스크를 실행시키도록 구성되는 제2 컨트롤러를 포함하고, 상기 복수의 큐 각각에 대해, 자신 안에 등록된 서브태스크들 중 동시에 실행되는 서브태스크들의 수의 상한값이 정의되고, 상기 제2 컨트롤러는 상기 정보 처리 장치에서 동시에 실행되는 서브태스크들의 수에 대응하는 역치를 관리하고, 상기 정보 처리 장치에서 현재 실행 중인 서브태스크들의 수가 상기 역치를 초과하지 않는 경우에 상기 복수의 큐 중 하나로부터 서브태스크를 취득하고, 스레드를 새롭게 작성하여 상기 취득된 서브태스크를 실행시키고, 상기 정보 처리 장치에서 현재 실행 중인 서브태스크의 상기 수가 상기 역치를 초과하는 경우에 스레드를 새롭게 작성하지 않으며, 상기 제2 컨트롤러는 상기 제1 큐에 등록된 서브태스크들 중 현재 실행 중인 서브태스크들의 수가 상기 제1 큐에 대하여 정의된 상기 상한값보다 적은 경우에 상기 정보 처리 장치에서 현재 실행 중인 서브태스크들의 상기 수가 상기 역치를 초과하는지의 여부에 관계없이 상기 제1 큐에 등록되어 있는 서브태스크를 취득하고, 스레드를 새롭게 작성하여 상기 취득된 서브태스크를 실행시키는 정보 처리 장치가 제공된다.
본 발명의 다른 양태에 따르면, 정보 처리 장치를 제어하는 방법으로서, 상기 정보 처리 장치는 복수의 태스크의 실행을 제어하도록 구성되는 제1 컨트롤러; 상기 제1 컨트롤러에서 동작하는 하나의 태스크로부터 생성된 하나 이상의 서브태스크가 등록되고, 제1 큐 및 상기 제1 큐보다 우선도가 낮은 제2 큐를 포함하는 복수의 큐; 및 상기 복수의 큐에 등록된 서브태스크를 취득하고, 스레드를 작성하여 상기 취득된 서브태스크를 실행시키도록 구성되는 제2 컨트롤러를 포함하고, 상기 방법은 상기 복수의 큐 각각에 대해, 자신 안에 등록된 서브태스크들 중 동시에 실행되는 서브태스크들의 수의 상한값을 정의하는 단계, 상기 제2 컨트롤러에서, 상기 정보 처리 장치에서 동시에 실행되는 서브태스크들의 수에 대응하는 역치를 관리하는 단계, 상기 정보 처리 장치에서 현재 실행 중인 서브태스크들의 수가 상기 역치를 초과하지 않는 경우에 상기 복수의 큐 중 하나로부터 서브태스크를 취득하고, 스레드를 새롭게 작성하여 상기 취득된 서브태스크를 실행시키는 단계, 상기 정보 처리 장치에서 현재 실행 중인 서브태스크의 상기 수가 상기 역치를 초과하는 경우에 스레드를 새롭게 작성하지 않는 단계; 및 상기 제2 컨트롤러에서, 상기 제1 큐에 등록된 서브태스크들 중 현재 실행 중인 서브태스크들의 수가 상기 제1 큐에 대하여 정의된 상기 상한값보다 적은 경우에, 상기 정보 처리 장치에서 현재 실행 중인 서브태스크들의 상기 수가 상기 역치를 초과하는지의 여부에 관계없이 상기 제1 큐에 등록되어 있는 서브태스크를 취득하고, 스레드를 새롭게 작성하여 상기 취득된 서브태스크를 실행시키는 단계를 포함하는 방법이 제공된다.
본 발명의 또 다른 양태에 따르면, 매체 상에 저장되는 컴퓨터 프로그램으로서, 상기 컴퓨터 프로그램은 컴퓨터로 하여금, 복수의 태스크의 실행을 제어하도록 구성되는 제1 컨트롤러; 상기 제1 컨트롤러에서 동작하는 하나의 태스크로부터 생성된 하나 이상의 서브태스크가 등록되고, 제1 큐 및 상기 제1 큐보다 우선도가 낮은 제2 큐를 포함하는 복수의 큐; 및 상기 복수의 큐에 등록된 서브태스크를 취득하고, 스레드를 작성하여 상기 취득된 서브태스크를 실행시키도록 구성되는 제2 컨트롤러로서 기능하게 하며, 상기 복수의 큐 각각에 대해, 자신 안에 등록된 서브태스크들 중 동시에 실행되는 서브태스크들의 수의 상한값이 정의되고, 상기 제2 컨트롤러는 상기 컴퓨터에서 동시에 실행되는 서브태스크들의 수에 대응하는 역치를 관리하고, 상기 컴퓨터에서 현재 실행 중인 서브태스크들의 수가 상기 역치를 초과하지 않는 경우에 상기 복수의 큐 중 하나로부터 서브태스크를 취득하고, 스레드를 새롭게 작성하여 상기 취득된 서브태스크를 실행시키고, 상기 컴퓨터에서 현재 실행 중인 서브태스크의 상기 수가 상기 역치를 초과하는 경우에 스레드를 새롭게 작성하지 않으며, 상기 제2 컨트롤러는 상기 제1 큐에 등록된 서브태스크들 중 현재 실행 중인 서브태스크들의 수가 상기 제1 큐에 대하여 정의된 상기 상한값보다 적은 경우에 상기 컴퓨터에서 현재 실행 중인 서브태스크들의 상기 수가 상기 역치를 초과하는지의 여부에 관계없이 상기 제1 큐에 등록되어 있는 서브태스크를 취득하고, 스레드를 새롭게 작성하여 상기 취득된 서브태스크를 실행시키는 컴퓨터 프로그램이 제공된다.
본원 발명에 의하면, 큐를 이용하여 태스크를 처리할 때 처리를 효율적으로 수행하는 것이 가능하게 된다.
본 발명의 추가 특징들은 (첨부 도면들을 참조하는) 예시적인 실시예들에 대한 아래의 설명으로부터 명백해질 것이다.
도 1은 본원 발명에 따른 관리 애플리케이션의 기능 구성을 설명하기 위한 도면이다.
도 2는 본 발명에 따른 네트워크 시스템의 구성예를 도시하는 도면이다.
도 3은 호스트 컴퓨터의 하드웨어 구성의 예를 나타내는 도면이다.
도 4는 태스크를 엔큐할 때의 처리의 흐름도이다.
도 5는 태스크 처리 클래스의 Go 메소드의 처리의 흐름도이다.
도 6은 서브태스크 큐에 서브태스크 정의 데이터를 엔큐하는 처리의 흐름도이다.
도 7은 서브태스크의 실행 처리의 흐름도이다.
도 8a는 서브태스크 큐로부터 서브태스크 정의 데이터를 디큐하는 처리의 흐름도이다.
도 8b는 서브태스크 큐로부터 서브태스크 정의 데이터를 디큐하는 처리의 흐름도이다.
도 9는 서브태스크의 실행 종료 통지의 처리의 흐름을 도시하는 도면이다.
도 10은 서브태스크를 실행하는 스레드의 처리의 흐름도이다.
도 11a는 태스크 컨트롤러가 갖는 메소드의 예를 나타내는 도면이다.
도 11b는 TaskBase 추상 클래스를 계승한 클래스 인스턴스의 예를 나타내는 도면이다.
도 11c, 11d, 11e는 서브태스크 정의 데이터 및 클래스의 정의 예를 나타내는 도면이다.
도 11f, 11g는 제2 실시예에 따른 클래스의 정의 예를 나타내는 도면이다.
이하, 본 발명을 실시하기 위한 실시예들을 도면을 이용하여 설명한다.
<제1 실시예>
[시스템 구성]
도 2는 본 발명에 따른 네트워크 시스템의 구성예를 도시하는 도면이다. 호스트 컴퓨터(201)는 정보 처리 장치이며, 네트워크(202)에 접속된 복수의 네트워크 디바이스를 관리하기 위한 관리 애플리케이션이 그 안에서 동작한다. 화상 형성 장치(203 내지 208)는 각각 네트워크 디바이스이며, 호스트 컴퓨터(201)가 구비하는 관리 애플리케이션에 의해 관리된다. 본원 발명에 따른 관리 애플리케이션의 동작이 후술된다.
도 3은 호스트 컴퓨터(201)의 하드웨어 구성의 예를 나타내는 도면이다. 호스트 컴퓨터(201)는 CPU(301), RAM(302), ROM(303) 및 외부 기억 장치(307)를 구비한다. CPU(301)는 ROM(303)이나 외부 기억 장치(307)에 기억된 또는 네트워크(202)를 통해 다운로드된 소프트웨어를 실행하고, 호스트 컴퓨터(201)가 구비하는 각 디바이스를 총괄적으로 제어한다. RAM(302)은 휘발성 기억 영역이며, CPU(301)의 주메모리, 작업 영역 등으로서 기능한다. 외부 기억 장치(307)는 불휘발성 기억 영역이며, 하드 디스크(HD), 솔리드 스테이트 드라이브(SSD) 등으로 구성된다. 외부 기억 장치(307)는 불휘발성 기억 영역이며, 부트 프로그램, 운영 체제, 인증 서버 및 인증 클라이언트 등을 포함하는 각종 사용자 파일, 데이터베이스 데이터, 애플리케이션 등을 기억한다.
또한, 호스트 컴퓨터(201)는 키보드 컨트롤러(KBDC)(304), 비디오 컨트롤러(VC)(305), 디스크 컨트롤러(DC)(306) 및 통신 컨트롤러(NIC)(308)를 구비한다. 키보드 컨트롤러(304)는 키보드나 포인팅 디바이스(도시하지 않음)로부터의 입력 정보를 CPU(301)로 보낸다. 비디오 컨트롤러(305)는 LCD(Liquid Crystal Display) 등으로 구성되는 표시 장치의 표시를 제어한다. 디스크 컨트롤러(306)는 외부 기억 장치(307)의 액세스를 제어한다. 통신 컨트롤러(308)는 네트워크(202)와의 인터페이스이며, 호스트 컴퓨터(201)와 네트워크(202)를 접속한다. 또한, 상기한 외부 기억 장치(307) 외의 구성 요소가 버스(309)를 통하여 서로 통신 가능하게 접속된다.
[관리 애플리케이션]
본원 발명에 따른 호스트 컴퓨터(201)가 구비하는 관리 애플리케이션의 기능이 설명된다. 관리 애플리케이션은 예를 들어 네트워크(202)에 접속된 각 화상 형성 장치로부터 이하와 같은 각종 정보를 취득하여 관리한다.
(1) 일정 기간마다 각 화상 형성 장치의 상태 정보를 취득한다.
(2) 화상 형성 장치에서 에러가 발생했을 때에 화상 형성 장치로부터 송신되는 에러 발생 통지를 수신하고, 화상 형성 장치의 상태 정보를 취득한다.
(3) 일정 기간마다 각 화상 형성 장치의 소모품 정보를 취득한다.
(4) 일정 기간마다 각 화상 형성 장치의 입력 정보(용지의 잔량 및 종별)를 취득한다.
(5) 일정 기간마다 각 화상 형성 장치의 각종 카운터 정보를 취득한다.
(6) 일정 기간마다 각 화상 형성 장치의 각종 설정값 데이터를 취득한다.
(7) 지정 시각에 네트워크를 스캔하고, 네트워크 상의 화상 형성 장치를 탐색한다.
여기서, 일정 기간 및 지정 시각은 미리 정의되고, 또한, 각 처리마다 상이한 값이 설정될 수 있다. 또한, 관리 애플리케이션의 기능으로서, 위에서는 7가지 기능을 나타냈지만, 이에 한정되는 것은 아니다. 또한, 어느 기능을 유효하게 할지는 관리 애플리케이션의 이용자가 자유롭게 선택할 수 있다.
예를 들어, 상태 정보의 취득 기능은 정기적으로 각 화상 형성 장치에 대하여 그 상태 정보를 취득하기 위한 처리를 개시한다. 또한, 상태 정보의 취득 기능은 정기적으로 각 화상 형성 장치에 대하여, 화상 형성 장치가 에러 발생 시에 관리 애플리케이션에 대하여 에러 발생 통지를 송신하기 위한 설정을 행한다. 또한, 상태 정보의 취득 기능은 화상 형성 장치로부터의 에러 발생 통지를 수신하면, 해당 화상 형성 장치로부터 현재의 상태의 정보를 취득한다.
상태 정보, 소모품 정보, 입력 정보 및 각종 카운터 정보는 그 정보량이 비교적 소량이기 때문에, 각 화상 형성 장치로부터의 이들 정보의 취득은 단시간에 종료된다. 한편, 각종 설정값 데이터는 데이터의 양이 많고, 그 취득에는 오랜 시간을 필요로 하는 경우가 많다. 또한, 상태 정보의 취득은 화상 형성 장치의 에러 발생으로부터 규정 시간 내에 에러의 발생을 이용자에게 통지하는 제약이 설치되어 있는 경우가 많다. 이로 인해, 화상 형성 장치로부터의 에러 통지를 수신한 경우, 신속하게 해당 화상 형성 장치로부터 상태 정보를 취득할 필요가 있다. 한편, 각종 설정값 데이터의 취득에 관해서는 이러한 시간적 제약은 설치되어 있지 않다. 즉, 관리 애플리케이션이 관리하는 화상 형성 장치의 정보는 그 정보의 내용에 따라 취급할 때의 특성이 상이하다.
도 1은 본 발명에 따른 호스트 컴퓨터(201)의 관리 애플리케이션의 기능 구성을 설명하기 위한 도면이다. 도 1을 이용하여 본원 발명에 따른 태스크 및 서브태스크의 제어를 설명한다.
본원 발명에 있어서, 하나의 태스크 컨트롤러(101)는 복수의 태스크의 실행을 제어한다. 바꾸어 말하면, 복수의 태스크가 하나의 태스크 컨트롤러(101)에서 동작한다. 도 1에서는 일례로서, 태스크 컨트롤러(101)에서 동작하는 3개의 태스크(103 내지 105)를 나타내고 있다. 예를 들어, 상태 정보의 취득, 소모품 정보의 취득, 각종 설정값 데이터의 취득 등이 태스크(103 내지 105) 각각에 상당한다. 또한, 하나의 태스크는 복수의 서브태스크로 분할된다. 예를 들어, 관리 애플리케이션에 있어서의 상태 정보의 취득 처리에 관한 태스크라면, 각 화상 형성 장치로부터의 상태 정보의 취득 처리나, 각 화상 형성 장치에의 에러 발생의 통지 설정이 각각 서브태스크가 된다. 또한, 하나의 태스크로부터 작성될 수 있는 서브태스크의 수는 태스크의 처리 내용이나 대상에 따라 상이하다는 점에 유의한다.
도 1에 있어서, 서브태스크 정의 데이터(109 내지 111)로서 나타나는 각 요소는 각각 서브태스크의 처리 내용을 정의한 데이터이다. 또한, 서브태스크 실행 처리(112 내지 114)로서 나타나는 각 요소는 서브태스크 정의 데이터로 도시되는 처리를 실행하기 위한 서브태스크 실행 처리이며, 각각 별도의 스레드에서 실행된다. 즉, 스레드의 수는 현재 실행 중인 서브태스크(서브태스크 실행 처리)의 수가 된다.
또한, 본원 발명에 있어서, 하나의 서브태스크 컨트롤러(102)는 복수의 서브태스크 큐를 관리한다. 도 1에서는 일례로서, 3개의 서브태스크 큐(106, 107, 108)가 설치된다. 서브태스크 큐(106, 107, 108)는 각각 서브태스크 정의 데이터를 저장한다. 태스크(103 내지 105)는 각각 복수의 서브태스크 정의 데이터 아이템을 작성하고, 이것을 서브태스크 컨트롤러(102)가 관리하는 복수의 서브태스크 큐 중 어느 하나에 추가(엔큐)한다. 서브태스크 실행 처리는 서브태스크 큐로부터 서브태스크 정의 데이터를 취득(디큐)하고, 서브태스크 정의 데이터를 따라서 서브태스크를 실행한다.
도 1에 도시한 바와 같이, 복수의 서브태스크 큐는 각각 저장되는 서브태스크 정의 데이터의 특징에 따라 구분지어 사용이 이루어진다. 서브태스크 큐(106)에는 실행의 우선순위가 높은 서브태스크 정의 데이터가 저장된다. 예를 들어, 화상 형성 장치로부터의 에러 통지에 수반하는 상태 취득과 같이 바로 근처에 처리할 필요가 있는 서브태스크 정의 데이터는 서브태스크 큐(106)에 저장된다. 서브태스크 큐(106)에 저장된 서브태스크 정의 데이터는 다른 서브태스크 큐에 저장된 서브태스크 정의 데이터보다도 우선적으로 서브태스크 실행 처리에 의해 처리된다. 서브태스크 큐(107)에는 상태 정보의 취득이나 소모품 정보의 취득 등의 단시간에 처리가 종료되는 서브태스크 정의 데이터가 저장된다. 서브태스크 큐(108)에는 각종 설정 데이터의 취득 처리 등의 처리의 종료에 장시간을 필요로 하는 서브태스크 정의 데이터가 저장된다. 이어서, 서브태스크 정의 데이터는 저장된 각 서브태스크 큐의 우선도에 따라 처리되며, 여기에서는 서브태스크 큐(106), 서브태스크 큐(107), 서브태스크 큐(108)의 순서대로 우선적으로 처리되는 것으로 한다.
또한, 본 실시예에서는 호스트 컴퓨터(201)의 상태, 성능 등에 따라, 장치 전체적으로 동작시키는 스레드(서브태스크 실행 처리)의 수의 권장값(역치)이 정의되어 관리된다. 또한, 복수의 서브태스크 큐 각각에는 서브태스크 큐로부터 디큐된 서브태스크 정의 데이터를 처리하고 있는 스레드(서브태스크 실행 처리)가 대응지어진다. 이 서브태스크 큐에 대응지어지는 스레드의 수의 범위(상한값)도 정의하여 관리된다. 이 관리에 대해서는 흐름도에 맞춰서 후술한다.
태스크 컨트롤러(101)는 각 태스크의 실행을 제어한다. 태스크 컨트롤러(101)는 태스크의 작성/기동/파기 및 서브태스크 정의 데이터를 작성한 태스크에 대응하는 서브태스크의 종료 통지 등의 처리를 행한다. 서브태스크 컨트롤러(102)는 서브태스크 정의 데이터의 서브태스크 큐에의 엔큐/디큐 및 스레드를 작성하여 서브태스크 실행 처리를 개시하는 등의 처리를 행한다. 본 명세서에서는 태스크 컨트롤러(101)를 "제1 컨트롤러"로 지칭하고, 서브태스크 컨트롤러(102)를 "제2 컨트롤러"라고 칭한다.
이하에서는 각 구성 요소를 대표하는 태스크(103), 서브태스크 실행 처리(112) 및 서브태스크 정의 데이터(109)를 이용하여 설명한다. 태스크 컨트롤러(101)와 서브태스크 컨트롤러(102)는 상호에 대한 참조를 보유한다. 태스크 컨트롤러(101)와 태스크(103)도 상호에 대한 참조를 보유한다. 서브태스크 실행 처리(112)는 서브태스크 컨트롤러(102)에 대한 참조를 보유한다.
또한, 이하에 설명하는 메소드의 정의나 코드의 인용에서는 프로그램 언어로서 C#을 이용하여 설명하지만, 동등한 기능을 실현할 수 있으면 다른 프로그램 언어를 사용하여 실현해도 된다.
여기서, 태스크 컨트롤러(101)가 포함하는 메소드에 대하여, 도 11a를 이용하여 설명한다.
Start 메소드(1101)는 관리 애플리케이션이 태스크 컨트롤러(101)에 태스크를 추가할 때에 호출하는 메소드이다. Start 메소드(1101)에 있어서, 제1 인수인 taskId(1105)는 태스크를 고유하게 식별하기 위한 문자열이다. taskId로서는 예를 들어 UUID(Universally Unique Identifier)나 GUID(Globally Unique Identifier)가 사용된다. 제2 인수인 className(1106)은 태스크의 처리를 구현하는 클래스의 이름을 나타내는 문자열이다. 상이한 처리(상태 취득, 카운터 취득 등)는 각각 상이한 클래스명을 갖는다. 제3 인수인 Contents(1107)는 태스크의 상세를 정의한 문자열이며, 예를 들어 태스크의 상세를 저장하는 오브젝트를 직렬화한 문자열이 사용된다.
Enqueue 메소드(1102)는 태스크가 서브태스크 정의 데이터를 서브태스크 큐에 엔큐할 때에 호출하는 메소드이다.
OnSubtaskEnd 메소드(1103)는 서브태스크 정의 데이터에 대한 서브태스크 실행 처리에 의한 처리가 종료된 때에, 서브태스크 실행 처리가 서브태스크 컨트롤러(102)를 통해 호출하는 메소드이다.
Remove 메소드(1104)는 태스크가 처리의 종료 시에 호출하는 메소드이다. Remove 메소드가 호출되면, 태스크 컨트롤러(101)는 보유하고 있는 태스크에의 참조를 태스크 관리 맵으로부터 삭제된다.
[처리 흐름]
이하, 본원 발명에 따른 처리의 흐름에 대하여 설명한다. 또한, 이하에 나타내는 각 처리는 호스트 컴퓨터(201)의 CPU(301)가 ROM(303) 등의 기억부에 저장된 프로그램을 판독하여 실행함으로써 실현된다.
(태스크의 추가)
도 4는 호스트 컴퓨터(201)가 포함하는 관리 애플리케이션이 태스크 컨트롤러(101)에 태스크를 추가할 때의 처리의 흐름을 나타내는 흐름도이다.
관리 애플리케이션이 태스크 컨트롤러(101)에 태스크의 추가를 의뢰하는 경우, 도 11a에 나타내는 태스크 컨트롤러(101)의 Start 메소드(1101)를 호출한다. 도 4의 흐름도는 이 Start 메소드(1101)의 처리의 흐름을 나타낸다.
Start 메소드(1101)를 호출하면, 단계 S401에서, 태스크 컨트롤러(101)는 인수로서 전달되는 className(1106)을 이용하여 태스크의 실행을 구현하는 클래스의 인스턴스(여기서는 태스크(103))를 작성한다. 여기서 작성되는 클래스 인스턴스는 예를 들어 화상 형성 장치로부터 상태 정보를 취득하는 태스크이고, 화상 형성 장치로부터 각종 설정값 데이터를 취득하는 태스크이다. 상이한 태스크에 대하여 상이한 클래스 인스턴스가 작성된다. 또한, 태스크 컨트롤러(101)는 작성된 태스크(103)에 태스크 컨트롤러(101)에 대한 참조를 설정한다.
단계 S402에서, 태스크 컨트롤러(101)는 태스크 관리 맵(도시하지 않음)에 인수로서 전달되는 taskId(1105)를 키로서 단계 S401에서 작성된 태스크(103)에 대한 참조를 추가한다. 태스크 관리 맵이란, 실행 중인 태스크의 taskId를 키로 하고, 태스크에 대한 참조를 값으로 하여 대응지은 맵(사전)이며, 태스크 컨트롤러(101)에 의해 관리된다. 태스크 관리 맵은 RAM(302) 내에 보유된다.
단계 S403에서, 태스크 컨트롤러(101)는 단계 S401에서 작성된 태스크(103)의 개시 메소드를 호출한다. 이어서, 본 처리 흐름을 종료한다.
태스크 컨트롤러(101)가 단계 S401에서 작성하는 태스크(103)는 도 11b에 도시한 바와 같은 TaskBase 추상 클래스를 계승한 클래스의 인스턴스이다. 또한, "계승"이란, 계승원의 기능을 이어받고, 새로운 클래스가 생성되는 것을 의미한다. 즉, 여기서 태스크(103)는 TaskBase 추상 클래스의 기능을 이어받아서 새로운 클래스로서 생성되고 있다. 계승에 대해서는 C# 등의 오브젝트 지향형 언어의 분야에서 주지되어 있기 때문에, 여기에서는 상세한 설명을 생략한다.
TaskBase 추상 클래스를 계승한 태스크(103)는 WithController 메소드(1111), Go 메소드(1112), OnSubtaskEnd 메소드(1113) 및 Enqueue 메소드(1114)를 구현한다. WithController 메소드(1111)는 태스크 컨트롤러(101)에 대한 참조의 설정을 행하기 위한 메소드이다. Go 메소드(1112)는 태스크를 실행하기 위한 메소드이다. OnSubtaskEnd 메소드(1113)는 서브태스크의 실행 종료 통지를 수신하기 위한 메소드이다. Enqueue 메소드(1114)는 서브태스크 정의 데이터(109)를 서브태스크 큐에 엔큐하기 위한 메소드이다.
태스크 컨트롤러(101)는 단계 S401에서 작성된 태스크(103)로부터 태스크 컨트롤러(101)에 대한 참조의 설정을 WithController 메소드(1111)를 호출함으로써 행한다. 또한, 태스크 컨트롤러(101)는 단계 S403의 개시 메소드의 호출을 Go 메소드(1112)를 호출함으로써 실행한다.
(태스크의 개시)
도 5는 TaskBase 추상 클래스를 계승한 태스크(103)의 Go 메소드(1112)의 처리의 흐름을 나타내는 흐름도이다.
단계 S501에서, 태스크(103)는 Go 메소드(1112)의 인수인 contents를 역직렬화(변환)하고, 태스크의 상세를 포함하는 오브젝트(태스크 상세 정보)를 작성한다. 예를 들어, contents로서 관리 애플리케이션의 상태 정보 취득 태스크가 지정된 경우, 태스크 상세 정보는 상태 정보의 취득 대상이 되는 화상 기억 장치의 네트워크 어드레스의 리스트이다.
단계 S502에서, 태스크(103)는 단계 S501에서 작성된 태스크 상세 정보로부터, 태스크를 복수의 서브태스크로 분할하고, 각 서브태스크를 표현하는 서브태스크 정의 데이터(109)를 작성한다. 예를 들어, 상술한 바와 같은 상태 정보 취득 태스크의 경우, 서브태스크는 화상 형성 장치마다의 상태 취득이며, 서브태스크 정의 데이터에는 취득 대상의 화상 형성 장치 각각의 네트워크 어드레스가 지정된다.
또한, 태스크(103)는 생성된 서브태스크 정의 데이터의 특성에 따라, 서브태스크 정의 데이터를 서브태스크 컨트롤러(102)가 구비하는 복수의 서브태스크 큐 중 어느 하나에 엔큐한다. 태스크(103)는 서브태스크 정의 데이터(109)를 서브태스크 큐에 엔큐하기 위하여, TaskBase 클래스의 Enqueue 메소드(1114)를 호출한다. 기저 클래스 TaskBase의 Enqueue 메소드(1114)의 처리는 도 11b에서 나타낸 바와 같이 먼저 태스크 컨트롤러(101)의 Enqueue 메소드(1115)를 호출한다. 태스크 컨트롤러(101)의 Enqueue 메소드(1115)의 처리에서는 지정된 서브태스크 큐에의 서브태스크 정의 데이터의 엔큐에 성공한 경우는 참을, 실패한 경우에는 거짓을 돌려준다. 기저 클래스 TaskBase는 서브태스크 정의 데이터의 서브태스크 큐에 대한 엔큐에 성공한 경우, 클래스 내부로 보유하는 서브태스크 카운터의 값을 하나 증가시킨다(1116). 이 서브태스크 카운터의 값은 태스크(103)가 서브태스크 큐에 엔큐한 서브태스크 정의 데이터 중, 현재 서브태스크 큐 내에 있는 서브태스크 정의 데이터의 수와, 서브태스크 실행 처리에 의해 실행 중인 서브태스크의 수의 합이다.
도 11c는 서브태스크 정의 데이터(109)의 구조예를 나타낸다. taskId(1121)는 도 4의 태스크 추가 처리로 전달된 TaskId(Start 메소드(1101)에 전달된 taskId(1105))이다. SubtaskId(1122)는 각 서브태스크를 고유하게 식별하기 위한 문자열이다. ClassName(1123)은 서브태스크를 실행하는 클래스의 이름이다. Contents(1124)는 각 서브태스크의 처리 상세를 포함하는 문자열이다. SubtaskId(1122), ClassName(1123) 및 Contents(1124)는 모두 태스크(103)에 의해 생성된다.
서브태스크 큐는 각각 자신을 고유하게 식별하기 위한 이름, 자신에게 엔큐된 서브태스크이고, 현재 서브태스크 실행 처리에 의해 실행 중인 서브태스크의 수 및 자신에게 대응함과 함께 실행 가능한 서브태스크의 수의 상한값 정보를 갖는다. 또한, 서브태스크 컨트롤러(102)는 전체적으로 동시에 실행 가능한 서브태스크의 합계수의 역치를 보유하고 있다. 각 서브태스크 큐의 서브태스크 동시 실행수의 상한값과, 서브태스크 컨트롤러(102)가 관리하는 전체로서의 합계수의 역치에는 다음과 같은 관계가 있다.
1. 각 서브태스크 큐의 상한수의 합계>합계수의 역치
2. 우선도가 높은 것 이외의 서브태스크 큐의 상한수의 합계≤합계수의 역치
본 실시예에 있어서, 각 서브태스크 큐의 상한수 및 합계수의 역치는 호스트 컴퓨터(201)의 성능이나 상태에 기초하여 서브태스크 컨트롤러(102)의 작성시(기동 시)에 서브태스크 컨트롤러(102)가 결정한다.
(서브태스크 정의 데이터의 엔큐)
도 6은 도 5의 단계 S502에서 행해진 엔큐 요구에 따라, 서브태스크 컨트롤러(102)가 지정한 서브태스크 큐에 서브태스크 정의 데이터를 엔큐하는 처리를 나타내는 흐름도이다. 이때, Enqueue 메소드(1114)를 호출하여 서브태스크 정의 데이터와 엔큐 목적지가 되는 서브태스크 큐의 이름이 인수로서 전달된다.
단계 S601에서, 서브태스크 컨트롤러(102)는 주어진 서브태스크 큐의 이름을 갖는 서브태스크 큐를 서브태스크 큐의 리스트에서 취득한다.
단계 S602에서, 서브태스크 컨트롤러(102)는 주어진 서브태스크 정의 데이터의 TaskId와 SubtaskId의 조합과 동일 조합을 갖는 서브태스크 정의 데이터가, 단계 S601에서 취득된 서브태스크 큐 내에 존재하는지 여부를 확인한다. 확인한 결과, 동일한 조합의 서브태스크 정의 데이터가, 단계 S601에서 취득한 서브태스크 큐 내에 존재하는 경우(단계 S602에서 "예"), 단계 S609에서, 서브태스크 컨트롤러(102)는 거짓을 돌려준다. 이어서, 본 처리 흐름을 종료한다. 여기서, 거짓을 돌려주는 것은 지정된 서브태스크 정의 데이터가 서브태스크 큐에 엔큐되지 않은 것을 의미한다. 서브태스크 큐 내에 동일한 TaskId와 SubtaskId의 조합을 갖는 서브태스크 정의 데이터가 존재하지 않는 경우(단계 S602에서 "아니요"), 단계 S603으로 천이한다.
단계 S603에서 서브태스크 컨트롤러(102)는 취득된 서브태스크 큐에 주어진 서브태스크 정의 데이터를 엔큐한다.
예를 들어, 관리 애플리케이션의 상태 정보 취득 태스크가, 일정 기간마다 관리 대상의 화상 형성 장치로부터 상태 정보를 취득하는 경우, 기간 내에 취득 처리가 종료되지 않는 경우에는 서브태스크 큐 내에, 이전 회에서 추가된 서브태스크 정의 데이터가 존재할 가능성이 있다. ID의 조합 중복 판정(단계 S602)에 의해, 동일 처리를 하는 서브태스크 정의 데이터의 엔큐를 억제할 수 있다.
이후의 처리에서, 서브태스크 컨트롤러(102)는 서브태스크 실행용 스레드를 개시할 것인가 아닌가의 판정을 행한다.
단계 S604에서 서브태스크 컨트롤러(102)는 취득된 서브태스크 큐가 우선도가 높은 서브태스크 큐인지 여부를 판정한다. 여기에서의 우선도가 높은 서브태스크 큐란, 예를 들어 도 1의 서브태스크 큐(106)가 해당된다. 판정 결과, 우선도가 높은 서브태스크 큐의 경우에는(단계 S604에서 "예") 단계 S605로 천이하고, 그렇지 않은 경우에는(단계 S604에서 "아니요") 단계 S606으로 천이한다.
단계 S605에서, 서브태스크 컨트롤러(102)는 우선도가 높은 서브태스크 큐의 현재 실행 중인 서브태스크의 수가 그 서브태스크 큐에 대하여 정의된 상한수 이하인지 여부를 판정한다. 현재 실행 중인 서브태스크의 수가 상한을 초과하는 경우(단계 S605에서 "아니요"), 단계 S608에서 서브태스크 컨트롤러(102)는 참을 돌려준다. 이어서, 본 처리 흐름을 종료한다. 여기서, 참을 돌려주는 것은 지정된 태스크 정의 데이터가 엔큐된 것을 의미한다. 한편, 상한수 이하인 경우에는(단계 S605에서 "예") 단계 S607로 천이한다.
단계 S606에서, 서브태스크 컨트롤러(102)는 실행 중인 서브태스크 실행 처리(스레드)의 총 수가 스레드의 합계수의 역치 이하인지 여부를 판정한다. 판정 결과, 역치를 초과하는 경우에는(단계 S606에서 "아니요") 단계 S608에서, 서브태스크 컨트롤러(102)는 참을 돌려준다. 이어서, 본 처리 흐름을 종료한다. 한편, 역치 이하인 경우에는(단계 S606에서 "예"), 단계 S607로 천이한다.
단계 S607에서, 서브태스크 컨트롤러(102)는 서브태스크 실행용 스레드를 작성하고, 서브태스크 실행 처리(112)를 개시한다. 그 후, 단계 S608에서, 서브태스크 컨트롤러(102)는 참을 돌려준다. 이어서, 본 처리 흐름을 종료한다.
(서브태스크 실행 처리)
도 7은 개별의 스레드로 실행되는 서브태스크의 실행 처리의 흐름을 나타내는 흐름도이다. 도 6의 단계 S607에서, 서브태스크 컨트롤러(102)는 스레드를 작성하고, 서브태스크의 처리를 개시한다. 이 처리의 실행 주체는 서브태스크 컨트롤러(102)이다.
단계 S701에서, 서브태스크 컨트롤러(102)는 서브태스크 큐로부터 서브태스크 정의 데이터를 디큐하는 처리를 호출한다. 여기에서의 처리의 상세에 대해서는 도 8a 및 도 8b를 이용하여 후술한다.
단계 S702에서, 서브태스크 컨트롤러(102)는 서브태스크 정의 데이터를 디큐할 수 있는지 아닌지를 판정한다. 서브태스크 정의를 디큐할 수 없는 경우에는(단계 S702에서 "아니요"), 본 처리 흐름을 종료하고, 스레드를 종료한다. 서브태스크 정의 데이터를 디큐할 수 있는 경우(단계 S702에서 "예"), 단계 S703으로 천이한다.
단계 S703에서, 서브태스크 컨트롤러(102)는 서브태스크 정의 데이터(109) 내의 ClassName 속성(도 11c의 ClassName(1123))으로부터 서브태스크를 실행하기 위한 클래스 인스턴스를 작성한다. 여기서 작성되는 서브태스크를 실행하기 위한 클래스 인스턴스는 도 11d에 도시한 바와 같이, 추상 클래스를 계승한 클래스이다. 도 11d에 나타내는 Go 메소드(1125)는 서브태스크 정의 데이터를 인수 내에 가지며, 서브태스크 정의 데이터에 기재된 처리 내용에 따라 서브태스크를 실행하는 처리이다.
단계 S704에서, 서브태스크 컨트롤러(102)는 단계 S703에서 작성된 서브태스크를 실행하기 위한 클래스 인스턴스의 Go 메소드(1125)를 호출하고, 메소드의 반환 값인 실행 결과(도 11e)를 취득한다.
단계 S705에서, 서브태스크 컨트롤러(102)는 단계 S704에서 취득된 실행 결과를 인수로서 서브태스크 컨트롤러(102)의 OnSubtaskEnd 메소드(1103)를 호출한다. 그 후, 서브태스크 컨트롤러(102)는 단계 S701의 처리로 복귀한다. 이 서브태스크 종료 처리를 포함하는 서브태스크의 종료 시의 처리 전체의 상세에 관해서는 도 9를 이용하여 후술한다.
도 11e는 서브태스크의 실행 결과를 저장하는 클래스의 정의를 나타낸다. 실행 결과에 있어서, TaskId(1126)와 SubtaskId(1127)는 서브태스크 정의 데이터(109)에 포함되는 동명의 속성값이 저장된다. Status(1128)는 실행 결과의 상태(성공, 에러 종료, 예외에 의한 종료)를 나타낸다. Result(1129)는 결과의 상세를 포함하는 Object 클래스를 계승한 클래스의 인스턴스에 대한 참조이다.
(서브태스크 정의 데이터의 디큐)
도 8a는 도 7의 단계 S701에서 호출되는 서브태스크 큐로부터 서브태스크 정의 데이터를 디큐하는 처리의 흐름을 나타내는 흐름도이다.
단계 S801에서, 서브태스크 컨트롤러(102)는 우선도가 높은 서브태스크 큐(106)로부터 서브태스크 정의 데이터를 디큐하는 처리를 호출한다. 여기에서 처리의 상세에 대해서는 도 8b를 이용하여 후술한다.
단계 S802에서, 서브태스크 컨트롤러(102)는 우선도가 높은 서브태스크 큐(106)로부터의 서브태스크 정의 데이터의 디큐 가부를 판정한다. 서브태스크 정의 데이터를 디큐할 수 있는 경우는(단계 S802에서 "예"), 단계 S808에서, 서브태스크 컨트롤러(102)는 디큐한 서브태스크 정의 데이터를 돌려준다. 이어서, 본 처리 흐름을 종료한다. 디큐할 수 없는 경우(단계 S802에서 "아니요"), 단계 S803으로 천이한다. 여기서, 디큐할 수 없는 경우란, 우선도가 높은 서브태스크 큐에 서브태스크 정의가 존재하지 않는 경우, 또는 우선도가 높은 서브태스크 큐의 현재 실행 중인 서브태스크의 수가 그 상한값에 도달하고 있는 경우가 해당된다.
단계 S803에서, 서브태스크 컨트롤러(102)는 현재의 서브태스크의 실행수(각 서브태스크 큐 내의 현재 실행 중인 서브태스크의 수의 합계)와, 장치 전체적으로 실행하는 서브태스크의 합계수의 역치를 비교한다. 비교의 결과, 실행수가 역치와 동등하거나 큰 경우(단계 S803에서 "아니요"), 단계 S809에서, 서브태스크 컨트롤러(102)는 널(null)을 돌려준다. 이어서, 본 처리 흐름을 종료한다. 이것은 이 처리를 호출한 서브태스크 실행 처리(112)가 처리를 종료하고, 처리를 실행하고 있던 스레드가 종료되는 것을 의미한다. 합계수가 역치보다도 적은 경우(단계 S803에서 "예"), 단계 S804로 천이한다.
단계 S804로부터의 처리에서, 서브태스크 컨트롤러(102)는 우선도가 높은 것 이외의 서브태스크 큐로부터 우선도에 따라 서브태스크 정의 데이터를 디큐하는 처리를 행한다.
단계 S804에서, 서브태스크 컨트롤러(102)는 우선도가 높은 것 이외의 서브태스크 큐로부터 우선도가 높은 순서대로 디큐 처리의 대상으로 한다. 도 1의 예에서는 먼저 서브태스크 큐(107)를 디큐 처리의 대상으로 하고, 서브태스크 큐(107)에 대한 처리가 완료된 후, 서브태스크 큐(108)를 디큐 처리의 대상으로 한다.
단계 S805에서, 서브태스크 컨트롤러(102)는 모든 서브태스크 큐에 대한 처리가 종료되었는지 여부를 판정한다. 모든 서브태스크 큐에 대한 처리가 완료된 경우(단계 S805에서 "예"), 단계 S809에서 서브태스크 컨트롤러(102)는 널을 돌려준다. 이어서, 본 처리 흐름을 종료한다. 모든 서브태스크 큐에 대한 처리가 완료되지 않은 경우(단계 S805에서 "아니요"), 단계 S806으로 천이한다.
단계 S806에서, 서브태스크 컨트롤러(102)는 처리 대상의 서브태스크 큐로부터 서브태스크 정의 데이터를 디큐하는 처리를 행한다. 여기에서의 처리는 단계 S801의 처리와 마찬가지이며, 상세는 도 8b를 이용하여 설명한다.
단계 S807에서, 서브태스크 컨트롤러(102)는 서브태스크 정의 데이터의 디큐 가부를 판정한다. 디큐할 수 있는 경우는(단계 S807에서 "예"), 단계 S808에서, 서브태스크 컨트롤러(102)는 디큐한 서브태스크 정의 데이터를 돌려준다. 이어서, 본 처리 흐름을 종료한다. 디큐할 수 없는 경우에는(단계 S807에서 "아니요"), 단계 S804로 복귀되고, 서브태스크 컨트롤러(102)는 다음 우선도의 서브태스크 큐에 대하여 마찬가지의 처리를 반복한다.
도 8b는 도 8a의 단계 S801과 단계 S806에서 호출되는 서브태스크 큐로부터 태스크 정의 데이터를 디큐하는 처리의 흐름을 나타내는 흐름도이다.
단계 S810에서, 서브태스크 컨트롤러(102)는 처리 대상의 서브태스크 큐 내에 서브태스크 정의 데이터가 존재하는지 여부를 판정한다. 서브태스크 정의 데이터가 존재하지 않는, 즉 처리 대상의 서브태스크 큐가 비어있는 경우에는(단계 S810에서 "예"), 단계 S815에서, 서브태스크 컨트롤러(102)는 널을 돌려준다. 이어서, 본 처리 흐름을 종료한다. 서브태스크 큐 내에 서브태스크 정의 데이터가 존재하는 경우는(단계 S810에서 "아니요"), 단계 S811로 천이한다.
단계 S811에서, 서브태스크 컨트롤러(102)는 처리 대상의 서브태스크 큐의 현재의 서브태스크의 실행수와 그 상한값을 비교한다. 비교의 결과로서 실행수가 상한값과 동등하거나 또는 큰 경우는(단계 S811에서 "아니요"), 단계 S815에서, 서브태스크 컨트롤러(102)는 널을 돌려준다. 이어서, 본 처리 흐름을 종료한다. 실행수가 상한값보다도 작은 경우(단계 S811에서 "예"), 단계 S812로 천이한다.
단계 S812에서, 서브태스크 컨트롤러(102)는 처리 대상의 서브태스크 큐로부터 서브태스크 정의 데이터를 디큐한다.
단계 S813에서, 서브태스크 컨트롤러(102)는 현재의 서브태스크의 실행수를 하나 증가(카운트)시킨다.
단계 S814에서, 서브태스크 컨트롤러(102)는 디큐한 서브태스크 정의 데이터를 돌려준다. 이어서, 본 처리 흐름을 종료한다.
이상으로 우선도가 높은 서브태스크 큐에 엔큐된 서브태스크 정의 데이터는 실행 중인 서브태스크 수가 역치를 초과한 경우에도, 우선도가 높은 서브태스크 큐에 정의된 상한수를 초과하지 않고 있으면, 스레드를 작성하여 실행을 개시시킨다. 한편, 그 밖의 서브태스크 큐에 엔큐된 서브태스크 정의 데이터는 실행 중인 태스크 수가 역치를 초과한 경우에는 스레드를 작성하지 않는다. 이에 의해, 스레드에 의한 처리수를 제어하면서, 효율적으로 서브태스크를 처리하는 것이 가능해진다.
[서브태스크의 실행 종료의 통지]
도 9는 서브태스크의 실행 처리하고 있는 스레드로부터, 서브태스크의 실행 종료 통지가 그 서브태스크 정의 데이터를 작성한 태스크에 통지될 때까지의 흐름을 나타내는 시퀀스도이다. 도 9에 있어서 우측 단부의 Subtask는 서브태스크 실행 처리(112)이며, 서브태스크 컨트롤러(102)의 처리이지만, 설명을 알기 쉽게 하기 위하여, 서브태스크 컨트롤러(102)의 열과 다른 열에 기재되어 있다.
도 7의 단계 S705에서, 서브태스크 컨트롤러(102)가 서브태스크 종료 처리 OnSubtaskEnd를 호출한다(단계 S901). OnSubtaskEnd에는 서브태스크의 실행 결과와 당해 서브태스크의 정의 데이터가 저장되어 있던 서브태스크 큐의 이름이 전달된다(단계 S901).
단계 S901에서, 서브태스크 컨트롤러(102)는 전달된 서브태스크 큐의 이름을 갖는 서브태스크 큐의 현재의 서브태스크의 실행수를 하나 감산한다. 그 후, 서브태스크 컨트롤러(102)는 태스크 컨트롤러(101)의 서브태스크 종료 처리 OnSubtaskEnd를 호출한다(단계 S902). 서브태스크 종료 처리 OnSubtaskEnd에는 서브태스크의 실행 결과를 전달한다(단계 S902).
단계 S902에서, 태스크 컨트롤러(101)는 받은 서브태스크 실행 결과 내의 SubtaskId(1127)를 키로 하고, 태스크 관리 맵으로부터 태스크(103)에 대한 참조를 취득한다. 이어서 태스크 컨트롤러(101)는 취득한 태스크(103)의 태스크 종료 처리 OnSubtaskEnd를 호출한다(단계 S903). 태스크 종료 처리 OnSubtaskEnd에서는 태스크(103)의 기저 클래스인 TaskBase 추상 클래스의 OnSubtaskEnd메소드가 호출된다(단계 S903)(도 11b의 OnSubtaskEnd메소드(1113) 참조).
태스크(103)는 도 11b의 참조 번호 1117에 도시한 바와 같이, 자신이 보유하고 있는 서브태스크 카운터의 값을 하나 감산하고, 태스크(103)가 실장하고 있는 TaskBase 클래스의 추상 메소드 OnSubtaskEnd 메소드를 호출한다(단계 S904). 도 11b의 참조 번호 1117에 도시한 바와 같이, 이 OnSubtaskEnd 메소드는 서브태스크의 실행 결과와 논리 값을 인수로 한다(단계 S904). 제2 인수인 논리 값에는 서브태스크 카운터의 값을 하나 감산한 결과가 0인지 아닌지를 전달한다. 즉, 감산한 결과가 0인 경우에는 이론 값으로서 참을 전달하고, 0이 아닐 경우에는 거짓을 전달한다. 이 논리 값이 참인 경우, 태스크(103)가 서브태스크 큐에 추가한 모든 서브태스크 정의의 실행이 종료된 것을 의미한다.
태스크(103)는 서브태스크 종료 처리 OnSubtaskEnd 메소드에서 서브태스크의 실행 결과에 기초하여 적당한 처리를 행한다(단계 S904). 그 후, 단계 S905에서, 태스크(103)의 실행이 완료된 경우는 참을, 태스크(103)의 실행이 완료되지 않은 경우는 거짓을 태스크 컨트롤러(101)에 돌려준다. 여기서, 참이 전달된 경우에는 태스크 컨트롤러(101)는 태스크 관리 맵으로부터 태스크(103)를 삭제한다. 즉, 도 11a에 도시되는 Remove 메소드(1104)가 호출되어, 태스크 컨트롤러(101)는 도 4의 단계 S402에서 추가된 taskId와 태스크(103)에 대한 참조를 태스크 관리 맵으로부터 삭제한다. 또한, 단계 S902 및 단계 S901의 처리는 처리 결과를 호출 측으로 되돌려 놓지 않는다(반환값은 없음).
이상으로, 본 실시예에 따르면, 태스크로부터 생성된 복수의 서브태스크를 복수의 서브태스크 큐를 이용하여 처리할 때에 효율적으로 처리를 행하는 것이 가능해진다.
<제2 실시예>
본원 발명에 따른 제2 실시예에 대하여 설명한다. 제2 실시예에서의 전체의 구성은 제1 실시예와 동일하기 때문에 상세한 설명은 생략한다. 또한, 이하, 제1 실시예와 동일한 구성물, 동일한 단계에 대해서는 동일 참조 번호를 사용하는 것으로 한다.
제2 실시예는 제1 실시예의 태스크 컨트롤러(101)에서 실행 중인 태스크를 정지하는 구성을 추가한다.
태스크 컨트롤러(101)에, 도 11f에 도시한 바와 같은 실행 중인 태스크를 정지(취소)하기 위한 Cancel 메소드(1131)와, 실행 중인 태스크가 정지를 지시받았는지 여부를 돌려주기 위한 IsCanceling 메소드(1132)를 추가한다.
여기서, Cancel 메소드(1131) 및 IsCanceling 메소드(1132)의 인수인 taskId는 Start 메소드(1101)의 제1 인수로 지정된 태스크를 고유하게 식별하기 위한 문자열이다. 실행 중인 태스크의 취소 상태의 정보를 저장하기 위하여, 도 11g에 도시한 바와 같은 클래스의 구성으로 한다. 도 11g에 도시한 바와 같이, 태스크 관리 맵의 taskId를 키로 하여 저장되는 실행 중인 태스크의 정보는 태스크에 대한 참조(Task(1133))와 실행 상태(Status(1134))를 포함한다.
태스크 컨트롤러(101)는 Start 메소드(1101)의 호출 시에 태스크를 태스크 관리 맵에 등록할 때, 태스크의 실행 상태로 하여 Status(1134)에 "Running"을 설정한다. 또한, 태스크 컨트롤러(101)는 도 11f에 나타내는 Cancel 메소드(1131)가 호출되면, 인수로서 지정된 taskId를 키로 하여 태스크 관리 맵으로부터 실행 중인 태스크에 관한 정보를 취출한다. 이어서, 태스크 컨트롤러(101)는 그 태스크의 Status(1134)를 "Canceling"으로 변경한다. Status(1134)가 취할 수 있는 값은 참조 번호 1135에서 정의되어 있다.
또한, 태스크 컨트롤러(101)는 도 11f에 도시하는 IsCanceling 메소드(1132)가 호출되면, 인수로서 지정된 taskId를 키로 하여 태스크 관리 맵으로부터 실행 중인 태스크에 관한 정보를 취출한다. 이어서, 태스크 컨트롤러(101)는 Status(1134)가 "Canceling"인지 여부를 돌려준다. Status(1134)가 "Canceling"인 경우에는 참을 돌려주고, Status(1134)가 "Running"인 경우에는 거짓을 돌려준다.
또한, 도 11e에 도시하는 서브태스크 실행 결과를 저장하는 클래스 Subtask Result의 실행 결과의 상태를 나타내는 속성(Status(1128))의 취할 수 있는 값으로서, 성공, 에러 종료, 예외에 의한 종료에 더하여 취소를 추가한다.
(서브태스크 실행 처리)
도 10은 태스크의 실행의 취소를 실현하기 위하여 확장되고 도 7의 개별의 스레드에서 실행되는 서브태스크 실행 처리(112)의 처리의 흐름을 나타내는 흐름도이다. 이하, 도 7과 상이한 부분만을 설명한다.
서브태스크 큐로부터 서브태스크를 디큐할 수 있는 경우(단계 S702에서 "예"), 단계 S1001에서, 서브태스크 컨트롤러(102)는 단계 S701에서 서브태스크 큐로부터 취득된 서브태스크 정의 데이터를 작성한 태스크의 상태가 취소인지 여부를 판정한다. 판정은 태스크 컨트롤러(101)의 IsCanceling 메소드(1132)를 호출함으로써 행한다. 판정 결과, 태스크의 상태가 취소가 아닐 경우(단계 S1001에서 "아니요"), 단계 S703으로 천이하고, 서브태스크 컨트롤러(102)는 서브태스크의 실행을 계속한다. 태스크의 상태가 취소인 경우(단계 S1001에서 "예"), 단계 S1002로 천이한다.
단계 S1002에서, 서브태스크 컨트롤러(102)는 태스크의 실행 결과의 상태가 취소인 실행 결과를 작성한다. 그 후, 단계 S705로 천이하고 서브태스크 컨트롤러(102)는 단계 S1002에서 작성된 실행 결과를 전달한다. 이 처리에 의해, 취소된 태스크가 엔큐한 서브태스크 정의 데이터는 서브태스크 큐로부터 디큐된 후, 그 서브태스크 정의 데이터 내에서 정의된 처리는 실행되지 않고 실행 결과(취소)만이 통지된다. 여기에서의 통지의 흐름은 도 9에 도시한 대로이다.
본 실시예에 의해, 제1 실시예의 효과 외에, 취소된 태스크에 의해 엔큐된 서브태스크(서브태스크 정의 데이터)는 실행되지 않고, 처리를 효율적으로 진행시킬 수 있다.
다른 실시예들
본 발명의 실시예(들)는 전술한 실시예(들) 중 하나 이상의 실시예의 기능들을 수행하기 위해 ('비일시적 컴퓨터 판독 가능 기억 매체'로서 더 완전히 지칭될 수도 있는) 기억 매체 상에 기록된 컴퓨터 실행 가능 명령어들(예로서, 하나 이상의 프로그램)을 판독 및 실행하고/하거나 전술한 실시예(들) 중 하나 이상의 실시예의 기능들을 수행하기 위한 하나 이상의 회로(예로서, 주문형 집적 회로(ASIC))를 포함하는 시스템 또는 장치의 컴퓨터에 의해 그리고 예로서 전술한 실시예(들) 중 하나 이상의 실시예의 기능들을 수행하기 위해 기억 매체로부터 컴퓨터 실행 가능 명령어들을 판독 및 실행하고/하거나 전술한 실시예(들) 중 하나 이상의 실시예의 기능들을 수행하도록 하나 이상의 회로를 제어함으로써 시스템 또는 장치의 컴퓨터에 의해 수행되는 방법에 의해 실현될 수도 있다. 컴퓨터는 하나 이상의 프로세서(예로서, 중앙 처리 유닛(CPU), 마이크로 처리 유닛(MPU))를 포함할 수 있으며, 컴퓨터 실행 가능 명령어들을 판독 및 실행하기 위한 개별 컴퓨터들 또는 개별 프로세서들의 네트워크를 포함할 수 있다. 컴퓨터 실행 가능 명령어들은 예로서 네트워크 또는 기억 매체로부터 컴퓨터에 제공될 수 있다. 기억 매체는 예로서 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 분산 컴퓨팅 시스템들의 저장소, (컴팩트 디스크(CD), 디지털 다기능 디스크(DVD) 또는 블루레이 디스크(BD)(상표)와 같은) 광 디스크, 플래시 메모리 디바이스, 메모리 카드 등 중 하나 이상을 포함할 수 있다.
(기타의 실시예)
본 발명은, 상기의 실시형태의 1개 이상의 기능을 실현하는 프로그램을, 네트워크 또는 기억 매체를 개입하여 시스템 혹은 장치에 공급하고, 그 시스템 혹은 장치의 컴퓨터에 있어서 1개 이상의 프로세서가 프로그램을 읽어 실행하는 처리에서도 실현 가능하다. 또한, 1개 이상의 기능을 실현하는 회로(예를 들어, ASIC)에 의해서도 실행 가능하다.
본 발명은 예시적인 실시예들을 참조하여 설명되었지만, 본 발명은 개시된 예시적인 실시예들로 한정되지 않는다는 것을 이해해야 한다. 아래의 청구항들의 범위는 모든 그러한 변경들 및 균등한 구조들 및 기능들을 포함하도록 가장 넓은 해석을 부여받아야 한다.

Claims (9)

  1. 정보 처리 장치로서,
    복수의 태스크의 실행을 제어하도록 구성되는 제1 컨트롤러;
    상기 제1 컨트롤러에서 동작하는 하나의 태스크로부터 생성된 하나 이상의 서브태스크가 등록되고, 제1 큐 및 상기 제1 큐보다 우선도가 낮은 제2 큐를 포함하는 복수의 큐; 및
    상기 복수의 큐에 등록된 서브태스크를 취득하고, 스레드를 작성하여 상기 취득된 서브태스크를 실행시키도록 구성되는 제2 컨트롤러
    를 포함하고,
    상기 복수의 큐 각각에 대해, 자신 안에 등록된 서브태스크들 중 동시에 실행되는 서브태스크들의 수의 상한값이 정의되고,
    상기 제2 컨트롤러는
    상기 정보 처리 장치에서 동시에 실행되는 서브태스크들의 수에 대응하는 역치를 관리하고,
    상기 정보 처리 장치에서 현재 실행 중인 서브태스크들의 수가 상기 역치를 초과하지 않는 경우에 상기 복수의 큐 중 하나로부터 서브태스크를 취득하고, 스레드를 새롭게 작성하여 상기 취득된 서브태스크를 실행시키고,
    상기 정보 처리 장치에서 현재 실행 중인 서브태스크의 상기 수가 상기 역치를 초과하는 경우에 스레드를 새롭게 작성하지 않으며,
    상기 제2 컨트롤러는 상기 제1 큐에 등록된 서브태스크들 중 현재 실행 중인 서브태스크들의 수가 상기 제1 큐에 대하여 정의된 상기 상한값보다 적은 경우에 상기 정보 처리 장치에서 현재 실행 중인 서브태스크들의 상기 수가 상기 역치를 초과하는지의 여부에 관계없이 상기 제1 큐에 등록되어 있는 서브태스크를 취득하고, 스레드를 새롭게 작성하여 상기 취득된 서브태스크를 실행시키는 정보 처리 장치.
  2. 제1항에 있어서,
    서브태스크는 정의된 처리 내용에 따라 우선도가 상이한 상기 복수의 큐 중 하나에 등록되는 정보 처리 장치.
  3. 제1항에 있어서,
    상기 복수의 큐 각각에 대해, 그 안에 등록된 서브태스크들 중 현재 실행 중인 서브태스크들의 수가 관리되며,
    현재 실행 중인 서브태스크들의 상기 수는 서브태스크에 대응하는 스레드가 새롭게 작성되었을 때 증가되고, 상기 스레드에 따른 상기 서브태스크의 실행이 완료될 때 감소하는 정보 처리 장치.
  4. 제1항에 있어서,
    상기 제2 컨트롤러는 스레드에 따른 서브태스크의 실행이 완료될 때 상기 제1 컨트롤러에 실행 결과를 통지하는 정보 처리 장치.
  5. 제1항에 있어서,
    상기 제2 컨트롤러는 상기 제1 컨트롤러에 의해 태스크가 취소된 경우에 상기 취소된 태스크로부터 생성된 서브태스크에서 정의된 처리 내용을 실행하지 않고서 취소를 실행 결과로 하여 상기 서브태스크의 실행을 완료하는 정보 처리 장치.
  6. 제1항에 있어서,
    상기 제2 컨트롤러는 상기 제2 컨트롤러의 기동 시의 상기 정보 처리 장치의 상태 및 기능에 따라 상기 역치, 및 상기 복수의 큐 각각에 대응하는 상기 상한값을 결정하는 정보 처리 장치.
  7. 제1항에 있어서,
    상기 제2 컨트롤러는 상기 제1 큐에 등록된 서브태스크에 대응하는 처리를 행한 후에 상기 큐의 우선도가 가장 높은 것으로부터 순서대로 다른 큐들에 등록된 서브태스크들에 대응하는 처리를 행하는 정보 처리 장치.
  8. 정보 처리 장치를 제어하는 방법으로서,
    상기 정보 처리 장치는
    복수의 태스크의 실행을 제어하도록 구성되는 제1 컨트롤러;
    상기 제1 컨트롤러에서 동작하는 하나의 태스크로부터 생성된 하나 이상의 서브태스크가 등록되고, 제1 큐 및 상기 제1 큐보다 우선도가 낮은 제2 큐를 포함하는 복수의 큐; 및
    상기 복수의 큐에 등록된 서브태스크를 취득하고, 스레드를 작성하여 상기 취득된 서브태스크를 실행시키도록 구성되는 제2 컨트롤러
    를 포함하고,
    상기 방법은
    상기 복수의 큐 각각에 대해, 자신 안에 등록된 서브태스크들 중 동시에 실행되는 서브태스크들의 수의 상한값을 정의하는 단계,
    상기 제2 컨트롤러에서,
    상기 정보 처리 장치에서 동시에 실행되는 서브태스크들의 수에 대응하는 역치를 관리하는 단계,
    상기 정보 처리 장치에서 현재 실행 중인 서브태스크들의 수가 상기 역치를 초과하지 않는 경우에 상기 복수의 큐 중 하나로부터 서브태스크를 취득하고, 스레드를 새롭게 작성하여 상기 취득된 서브태스크를 실행시키는 단계,
    상기 정보 처리 장치에서 현재 실행 중인 서브태스크의 상기 수가 상기 역치를 초과하는 경우에 스레드를 새롭게 작성하지 않는 단계; 및
    상기 제2 컨트롤러에서, 상기 제1 큐에 등록된 서브태스크들 중 현재 실행 중인 서브태스크들의 수가 상기 제1 큐에 대하여 정의된 상기 상한값보다 적은 경우에, 상기 정보 처리 장치에서 현재 실행 중인 서브태스크들의 상기 수가 상기 역치를 초과하는지의 여부에 관계없이 상기 제1 큐에 등록되어 있는 서브태스크를 취득하고, 스레드를 새롭게 작성하여 상기 취득된 서브태스크를 실행시키는 단계
    를 포함하는 정보 처리 장치를 제어하는 방법.
  9. 매체 상에 저장된 컴퓨터 프로그램으로서,
    상기 컴퓨터 프로그램은 컴퓨터로 하여금,
    복수의 태스크의 실행을 제어하도록 구성되는 제1 컨트롤러;
    상기 제1 컨트롤러에서 동작하는 하나의 태스크로부터 생성된 하나 이상의 서브태스크가 등록되고, 제1 큐 및 상기 제1 큐보다 우선도가 낮은 제2 큐를 포함하는 복수의 큐; 및
    상기 복수의 큐에 등록된 서브태스크를 취득하고, 스레드를 작성하여 상기 취득된 서브태스크를 실행시키도록 구성되는 제2 컨트롤러
    로서 기능하게 하며,
    상기 복수의 큐 각각에 대해, 자신 안에 등록된 서브태스크들 중 동시에 실행되는 서브태스크들의 수의 상한값이 정의되고,
    상기 제2 컨트롤러는
    상기 컴퓨터에서 동시에 실행되는 서브태스크들의 수에 대응하는 역치를 관리하고,
    상기 컴퓨터에서 현재 실행 중인 서브태스크들의 수가 상기 역치를 초과하지 않는 경우에 상기 복수의 큐 중 하나로부터 서브태스크를 취득하고, 스레드를 새롭게 작성하여 상기 취득된 서브태스크를 실행시키고,
    상기 컴퓨터에서 현재 실행 중인 서브태스크의 상기 수가 상기 역치를 초과하는 경우에 스레드를 새롭게 작성하지 않으며,
    상기 제2 컨트롤러는 상기 제1 큐에 등록된 서브태스크들 중 현재 실행 중인 서브태스크들의 수가 상기 제1 큐에 대하여 정의된 상기 상한값보다 적은 경우에 상기 컴퓨터에서 현재 실행 중인 서브태스크들의 상기 수가 상기 역치를 초과하는지의 여부에 관계없이 상기 제1 큐에 등록되어 있는 서브태스크를 취득하고, 스레드를 새롭게 작성하여 상기 취득된 서브태스크를 실행시키는, 매체 상에 저장된 컴퓨터 프로그램.
KR1020160144319A 2015-11-02 2016-11-01 정보 처리 장치 및 그의 제어 방법, 및 프로그램 Active KR102062945B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2015-215694 2015-11-02
JP2015215694A JP6532385B2 (ja) 2015-11-02 2015-11-02 情報処理システムおよびその制御方法、並びにプログラム

Publications (2)

Publication Number Publication Date
KR20170051360A true KR20170051360A (ko) 2017-05-11
KR102062945B1 KR102062945B1 (ko) 2020-01-06

Family

ID=58634654

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160144319A Active KR102062945B1 (ko) 2015-11-02 2016-11-01 정보 처리 장치 및 그의 제어 방법, 및 프로그램

Country Status (4)

Country Link
US (1) US10203985B2 (ko)
JP (1) JP6532385B2 (ko)
KR (1) KR102062945B1 (ko)
CN (1) CN106648850B (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106990946A (zh) * 2016-01-21 2017-07-28 阿里巴巴集团控股有限公司 一种界面处理方法、装置和智能终端
CN109992382B (zh) * 2017-12-29 2021-06-01 浙江宇视科技有限公司 任务调度方法、装置及任务调度器
CN108279977B (zh) * 2017-12-29 2021-12-10 深圳市德兰明海科技有限公司 一种基于rtos的数据处理方法、装置和控制器
CN109146393B (zh) * 2018-06-09 2024-02-02 安行惠保(北京)科技发展有限公司 人伤查勘信息处理方法及系统
US10491668B1 (en) * 2018-07-03 2019-11-26 EMC IP Holding Company LLC Intelligent service distributor and controller with real time service calibration
JP7251182B2 (ja) * 2019-02-06 2023-04-04 日本電気株式会社 制御装置、処理装置の制御方法及びプログラム
JP7197794B2 (ja) 2019-03-28 2022-12-28 富士通株式会社 情報処理装置および実行制御プログラム
CN110362401A (zh) * 2019-06-20 2019-10-22 深圳壹账通智能科技有限公司 数据跑批方法、装置、存储介质及集群中的成员主机
JP7353836B2 (ja) * 2019-07-16 2023-10-02 キヤノン株式会社 情報処理装置、方法およびプログラム
US11079984B2 (en) * 2019-09-30 2021-08-03 Ricoh Company, Ltd. Image processing mechanism
CN111176805A (zh) * 2019-12-02 2020-05-19 西安万像电子科技有限公司 任务调度方法及装置
US12254351B2 (en) * 2021-05-31 2025-03-18 Boe Technology Group Co., Ltd. Computer-implemented method in a system comprising one or more processors for executing periodic tasks, system comprising one or more processors for executing periodic tasks, and computer-program product
EP4357917A4 (en) * 2021-07-16 2024-05-15 Huawei Cloud Computing Technologies Co., Ltd. TASK EXECUTION METHOD AND APPARATUS
CN115378142B (zh) * 2022-10-20 2023-01-31 安徽华速达电子科技有限公司 一种基于mqtt通讯方式电力负荷监测方法及系统

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3231101B2 (ja) 1992-10-28 2001-11-19 株式会社日立製作所 タスクキュー管理方法
US5940612A (en) * 1995-09-27 1999-08-17 International Business Machines Corporation System and method for queuing of tasks in a multiprocessing system
US6671065B1 (en) * 1999-11-29 2003-12-30 Xerox Corporation Method and apparatus to optimize transition of resources from a lower priority to a higher priority job
US6748593B1 (en) * 2000-02-17 2004-06-08 International Business Machines Corporation Apparatus and method for starvation load balancing using a global run queue in a multiple run queue system
JP2003054451A (ja) 2001-08-13 2003-02-26 Exedy Corp タイヤハウス
JP3828444B2 (ja) * 2002-03-26 2006-10-04 株式会社日立製作所 データ通信中継装置及びシステム
US7657889B2 (en) * 2004-04-06 2010-02-02 International Business Machines Corporation Method, system, and storage medium for searching multiple queues for prioritized work elements
JP4953753B2 (ja) 2006-10-17 2012-06-13 キヤノン株式会社 情報処理装置及びその制御方法、プログラム
US8312464B2 (en) * 2007-08-28 2012-11-13 International Business Machines Corporation Hardware based dynamic load balancing of message passing interface tasks by modifying tasks
US8209702B1 (en) * 2007-09-27 2012-06-26 Emc Corporation Task execution using multiple pools of processing threads, each pool dedicated to execute different types of sub-tasks
JP2011164876A (ja) 2010-02-09 2011-08-25 Canon Inc タスク処理装置、タスク処理方法、及び、プログラム
JP5521610B2 (ja) 2010-02-15 2014-06-18 日本電気株式会社 入出力制御装置、入出力制御方法
KR101311305B1 (ko) 2011-08-26 2013-09-25 국방과학연구소 데드라인 기반 우선순위상속 시스템 및 그 방법
JP5672199B2 (ja) * 2011-09-01 2015-02-18 富士通株式会社 情報処理装置、情報処理方法及び情報処理プログラム
US20130081033A1 (en) * 2011-09-23 2013-03-28 Elwha Llc Configuring interface devices with respect to tasks and subtasks
US20160069919A1 (en) * 2011-09-25 2016-03-10 Theranos, Inc. Systems and methods for multi-analysis
CN102508704A (zh) * 2011-11-10 2012-06-20 上海市共进通信技术有限公司 计算机软件系统中实现任务分解和并行处理控制的方法
CN102591721A (zh) * 2011-12-30 2012-07-18 北京新媒传信科技有限公司 一种分配线程执行任务的方法和系统
CN102546946B (zh) * 2012-01-05 2014-04-23 中国联合网络通信集团有限公司 移动终端处理任务的方法及装置
US8621479B2 (en) * 2012-01-05 2013-12-31 The Boeing Company System and method for selecting task allocation method based on load balancing and core affinity metrics
US8930584B2 (en) * 2012-08-09 2015-01-06 Oracle International Corporation System and method for providing a linearizable request manager
US9189272B2 (en) * 2012-08-29 2015-11-17 Fujitsu Limited Information processing apparatus, computer program, and method for controlling execution of jobs
US10095526B2 (en) * 2012-10-12 2018-10-09 Nvidia Corporation Technique for improving performance in multi-threaded processing units
US20150205633A1 (en) * 2013-05-24 2015-07-23 Google Inc. Task management in single-threaded environments
JP6245700B2 (ja) * 2014-04-11 2017-12-13 国立大学法人 東京大学 計算機システム、データの検査方法及び計算機
CN104731663B (zh) * 2015-03-31 2018-04-13 北京奇艺世纪科技有限公司 任务处理方法及系统
WO2017177048A1 (en) * 2016-04-06 2017-10-12 Omni Ai, Inc. Methods and systems using cognitive artifical intelligence to implement adaptive linguistic models to process data

Also Published As

Publication number Publication date
JP2017090961A (ja) 2017-05-25
CN106648850B (zh) 2020-11-10
US10203985B2 (en) 2019-02-12
KR102062945B1 (ko) 2020-01-06
CN106648850A (zh) 2017-05-10
US20170123850A1 (en) 2017-05-04
JP6532385B2 (ja) 2019-06-19

Similar Documents

Publication Publication Date Title
KR20170051360A (ko) 정보 처리 장치 및 그의 제어 방법, 및 프로그램
CN109155782B (zh) 容器之间的进程间通信
CN100410872C (zh) 用于增强的运行时间主机支持的方法和设备
US10193977B2 (en) System, device and process for dynamic tenant structure adjustment in a distributed resource management system
US9009716B2 (en) Creating a thread of execution in a computer processor
TWI460659B (zh) 用於降低競爭之鎖定窗
JP2010218049A (ja) 情報処理装置、情報処理方法及びプログラム
EP2585917B1 (en) Stack overflow prevention in parallel execution runtime
US9342369B2 (en) System and method for increasing throughput of a PaaS system
US20130055237A1 (en) Self-adapting software system
US9405602B1 (en) Method for application notification and tasking
CN112860421B (zh) 用于作业处理的方法、设备和计算机程序产品
Zahoor et al. Authorization policies specification and consistency management within multi-cloud environments
CN117940921A (zh) 在容器中执行特权操作
Porter et al. Compiler-assisted scheduling for multi-instance GPUs
JP6885441B2 (ja) ライセンス管理装置、ライセンス管理方法、及び、ライセンス管理プログラム
US10642580B1 (en) Simplifying and reusing visual programming graphs
US8631480B2 (en) Systems and methods for implementing security services
CN114416372B (zh) 一种请求处理方法及装置
JP6462521B2 (ja) 通常部の故障が安全部へ伝播することを防止するapi及びその処理部
WO2016017161A1 (ja) 仮想計算機システム、スケジューリング方法、および、プログラム記憶媒体
US10678515B1 (en) Simplifying and reusing visual programming graphs
CN120276832B (zh) 任务调度控制方法、系统及电子设备
EP3070610A1 (en) Information processing device, control method thereof, and recording medium
JP2008123211A (ja) リソース監視装置及びリソース監視方法

Legal Events

Date Code Title Description
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

A201 Request for examination
PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

D13-X000 Search requested

St.27 status event code: A-1-2-D10-D13-srh-X000

D14-X000 Search report completed

St.27 status event code: A-1-2-D10-D14-srh-X000

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

FPAY Annual fee payment

Payment date: 20221123

Year of fee payment: 4

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 5

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 6

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 7

U11 Full renewal or maintenance fee paid

Free format text: ST27 STATUS EVENT CODE: A-4-4-U10-U11-OTH-PR1001 (AS PROVIDED BY THE NATIONAL OFFICE)

Year of fee payment: 7