KR20090024255A - 컴퓨터 마이크로 작업 - Google Patents

컴퓨터 마이크로 작업 Download PDF

Info

Publication number
KR20090024255A
KR20090024255A KR1020097000685A KR20097000685A KR20090024255A KR 20090024255 A KR20090024255 A KR 20090024255A KR 1020097000685 A KR1020097000685 A KR 1020097000685A KR 20097000685 A KR20097000685 A KR 20097000685A KR 20090024255 A KR20090024255 A KR 20090024255A
Authority
KR
South Korea
Prior art keywords
micro
task
computer
time
tasks
Prior art date
Application number
KR1020097000685A
Other languages
English (en)
Other versions
KR101377195B1 (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
Priority claimed from US11/471,466 external-priority patent/US8239869B2/en
Priority claimed from US11/546,072 external-priority patent/US8056083B2/en
Application filed by 디스키퍼 코포레이션 filed Critical 디스키퍼 코포레이션
Publication of KR20090024255A publication Critical patent/KR20090024255A/ko
Application granted granted Critical
Publication of KR101377195B1 publication Critical patent/KR101377195B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

컴퓨터 마이크로 작업이 개시된다. 컴퓨터 작업은 마이크로 작업으로 나누어진다. 일 실시예에서, 마이크로 작업은 특정 마이크로 작업이 마이크로 작업을 실행하는데 사용된 리소스를 소유하는 동안인 할당된 시간 내에 그 특정 마이크로 작업이 완료할 수 있도록 하는 사이즈를 갖는다. 일 실시예에서, 할당된 시간은 퀀텀이다. 일 실시예에서, 전체 컴퓨터 작업은 마이크로 작업으로 나누어지고, 그 다음 컴퓨터 작업은 전체 컴퓨터 작업이 완료될 때까지 마이크로 작업이 하나씩 실행된다. 일 실시예에서, 마이크로 작업의 각각은 각자의 퀀텀 내에 자신의 실행을 완료할 수 있다. 일 실시예에서, 마이크로 작업의 실행은 필요한 리소스가 하나 이상의 유휴 기준에 따르는 시간에 할당된다. 마이크로 작업으로 실행되는 소프트웨어 프로그램은 동일한 컴퓨터 시스템 상에서 운용되는 다른 소프트웨어 프로그램의 성능에 영향을 미치지 않고 컴퓨터에 전원이 들어오는 동안 언제든지 운용될 수 있다.

Description

컴퓨터 마이크로 작업{COMPUTER MICRO-JOBS}
본 발명은 컴퓨터 환경에서 소프트웨어 애플리케이션을 실행(execute)하는 것에 관한 것이다. 특히, 본 발명의 실시예는 애플리케이션의 컴퓨터 또는 입력-출력 작업을 마이크로 작업(micro-job)으로 나누고 마이크로 작업을 실행하는 것에 관한 것이다.
많은 다중 작업(multi-tasking) 운영 시스템에서, 프로세스는 여러 스레드(thread)로 분해된다. 스레드는 운영 시스템(O/S)에 의해 실행되는 코드의 단편이다. 다중 스레딩(multi-threading)의 개념은 하나의 프로세스에서 코드의 여러 단편들(또는 스레드들)을 "동시에" 운용(run)할 수 있게 해주는 것이다. 예를 들어, 워드 프로세서가 운용 중인 경우, 사용자는 팝업 박스를 보이게 하도록 "메뉴 항목 찾기"를 클릭할 수 있다. 이 팝업은 메인 워드 프로세서 윈도우와 관계없이 이동 및 조작될 수 있다. 따라서, 팝업은 메인 워드 프로세서 윈도우가 비활성이 되게 하지 않는다. 이는 워드 프로세서 프로세스 내에서 운용되는 2개의 상이한 스레드의 예이다.
다중 작업의 개념은 단일 컴퓨터 프로세서 상에서 동시에 실행되는 다수의 코드 단편인 것으로 보인다는 점에서 다중 스레딩과 유사하다. 다른 점으로는, 다 중 작업은 컴퓨터 상에서 운용되는 하나보다 많은 프로세스를 칭하고, 다중 스레딩은 상기 예에서와 같이 동일한 프로세스 내에서 운용되는 하나보다 많은 스레드를 칭한다는 것이다.
하나보다 많은 프로세스 또는 스레드가 동시에 운용되는 것으로 보이는 것은 다중 작업 스케쥴러가 "퀀텀(quantum)"으로 부를 수 있는 아주 작은 시간 증분으로 운용하도록 스레드들을 스케쥴링한 결과이다. 퀀텀은 스레드에 주어지는 시간 조각으로, 그 시간 동안 그 스레드가 CPU 리소스를 소유한다. 퀀텀의 길이는 현행 운영 시스템 상에서 약 20 밀리초 내지 약 120 밀리초의 범위에 있다. 정확한 시간은 O/S가 운용 중인 하드웨어에 따라 다양할 수 있다. 또한, O/S는 특정 스레드에 주어지는 퀀텀의 값을 변경할 수 있다. 예를 들어, 스레드가 자신의 첫 번째 퀀텀 동안 완료하지 못한 경우, O/S는 다음 번에 스레드가 실행되도록 예정된 퀀텀의 사이즈를 증가시키거나 감소시킬 수 있다.
인간이 인지하는 시간에 비해 작은 길이의 퀀텀으로 인해 그리고 라운드 로빈(round robin) 방식으로 스레드들을 실행함으로써, 스레드들은 동시에 운용되는 것으로 보인다. 현행 다중 작업 O/S 스케쥴러는 스레드들에 우선순위를 부가하고, 하위 우선순위 스레드 전에 상위 우선순위 스레드를 최적으로 운용하도록 다양한 알고리즘이 존재한다. 하지만, 모든 스레드들은 즉각 실행을 위해 O/S 스케쥴러에 제시되고, O/S 스케쥴러는 될 수 있는 한 스레드들 전부를 획득하며 그들 우선순위에 기초하여 가능한 빨리 그들 실행을 완료한다.
그러나, 이러한 방식의 스케쥴링에 따른 문제점으로는 컴퓨터 성능이 예상했 던 바보다 저조하다는 점이다. 종종, 프로세스는 멈칫하거나 심지어는 정지되기도 한다. 예를 들어, 사용자 입력에 기초하여 디스플레이 스크린 상에 표현하는 프로세스는 종종 사용자가 데이터를 입력할 때 표현할 수 없는데, 다른 프로세스가 너무 많은 프로세서 시간을 소비하고 있기 때문이다.
이 부분에서 설명되는 접근법들은 추구될 수 있는 접근법이지만, 반드시 이전에 생각했거나 추구되었던 접근법인 것은 아니다. 따라서, 달리 나타내지 않으면, 이 부분에서 설명되는 임의의 접근법이 단지 이 부분에 포함된다는 이유로 종래 기술로서 취급하는 것으로 가정해서는 안 된다.
본 명세서에서는 컴퓨터 작업을 마이크로 작업으로 나눔으로써 이들 미사용(unused) 컴퓨터 리소스를 이용하기 위한 방법, 시스템 및 장치가 개시된다. 마이크로 작업은 컴퓨터 코드의 아주 작은 조각(예를 들어, 비교적 적은 수의 명령)일 수 있다. 일 실시예에서, 마이크로 작업의 사이즈는 그 마이크로 작업에 프로세싱 리소스가 할당된 동안인 시간 내에 실행을 완료할 사이즈로 이루어진다. 예를 들어, 일 실시예에서, 마이크로 작업에서의 동작의 수는 퀀텀 내에 실행을 완료할 수 있는 수로 이루어진다. 마이크로 작업은 퀀텀보다 길이가 더 짧을 수 있다.
일 실시예에서, 전체 컴퓨터 작업은 마이크로 작업으로 나누어지고, 그 다음 컴퓨터 작업은 전체 컴퓨터 작업이 완료될 때까지 마이크로 작업이 하나씩 실행된다. 다른 작업 및 애플리케이션에 상당한 영향을 미치는 것을 피하기 위해, 주어진 현재 리소스 제약 하에 가능한 빨리 컴퓨터 작업을 운용하려고 하거나, "휴지 시간(off-hour)"에 운용하도록 작업을 스케쥴링하는 것과는 달리, 컴퓨터 작업은 진행 과정에 맞춰 사용자나 다른 컴퓨터 작업이 감지하지 못할 수 있는 미세 단편으로 컴퓨터 상에서 운용될 수 있다. 따라서, 작업은 사용자 그리고 다른 작업 및 애플리케이션에 완전히 투과적(transparent)일 수 있다. 사용자는 작업을 스케쥴링하지 않아도 되며, 이 방법으로 작업은 성능 임계(performance-critical) 시간 동안을 비롯하여 언제든지 운용될 수 있다.
일 실시예에서, 마이크로 작업은 선택된 기준에 기초하여 때때로 실행을 위해 삽입된다. 일 실시예에서, 마이크로 작업의 실행은 마이크로 작업들을 간격을 두어 이격하는 일부 시간 간격을 결정하는 것에 기초하여 시간에 걸쳐 분배(spread)된다. 시간 간격은 마이크로 작업들 각각의 사이에 동일해야 하는 것은 아니다. 일 실시예에서, 마이크로 작업 실행을 위한 기준은 리소스 가용성에 기초한다. 예를 들어, 마이크로 작업을 실행하기 위하여, 마이크로 작업에 의해 사용되는 하나 이상의 리소스가 하나 이상의 유휴(idleness) 기준에 따르는지에 대한 결정이 이루어진다. 유휴 기준이 충족되면, 마이크로 작업이 실행된다.
본 발명은 첨부 도면에 비한정적으로 예로써 설명을 위해 도시되며, 유사한 참조 번호는 유사한 구성요소를 칭한다.
도 1은 본 발명의 실시예에 따라 마이크로 작업을 실행하는 아키텍쳐의 도면이다.
도 2는 본 발명의 실시예에 따라 컴퓨터 작업을 마이크로 작업으로 나누는 마이크로 스케쥴러의 도면이다.
도 3은 본 발명의 실시예에 따라 컴퓨터 작업을 마이크로 작업으로 나누는 프로세스의 단계들을 도시한 흐름도이다.
도 4는 본 발명의 실시예가 구현될 수 있는 컴퓨터 시스템을 도시하는 블록도이다.
다음의 설명에 있어서, 설명의 목적으로, 본 발명의 완전한 이해를 제공하기 위하여 다수의 특정 상세사항이 설명된다. 그러나 본 발명이 이들 특정 상세사항 없이도 실시될 수 있음은 명백할 것이다. 다른 경우에, 본 발명을 불필요하게 모호하게 하는 것을 피하기 위해 주지된 구조 및 장치는 블록도 형태로 도시된다.
대부분의 컴퓨터는 시간의 그들 리소스 용량 100% 전부를 이용하지 못한다. 이는 통상적으로 겉보기에 하루 24시간 내내, 일주일 7일 내내 한창 사용 중인 컴퓨터는 물론 매일 일부분 동안에만 켜져 있는 컴퓨터까지도 사실이다. 따라서, 컴퓨터 시간 및 리소스가 낭비된다. 예를 들어, 24시간 기간에 걸쳐, 매우 과도하게 사용되며 활동 중에 잠깐의 스파이크(spike)를 가질 수 있는 컴퓨터 시스템은 평균적으로 자신의 리소스의 약 5 내지 20 퍼센트만 사용할 수 있다.
마이크로 작업
일 실시예에서, 마이크로 작업은 특정 마이크로 작업이 프로세싱 작업을 실행하는데 사용되는 리소스를 소유하는 동안인 할당된 시간 내에 특정 마이크로 작업이 완료할 수 있는 사이즈를 갖는다. 일 실시예에서, 각각의 마이크로 작업은 각 자의 할당된 시간 내에 완료할 수 있는 사이즈로 이루어진다. 그러나, 마이크로 작업들 중 일부는 그들 할당된 시간 내에 실행을 완료하기에 너무 클 수 있다.
일 실시예에서, 할당된 시간은 퀀텀이다. 앞서 설명한 바와 같이, 퀀텀은 컴퓨터 코드의 일부분(예를 들어, 스레드)에 주어진 시간 조각으로, 그 시간 동안 그 코드 부분이 CPU 리소스를 소유한다. 또한 앞서 설명한 바와 같이, 상이한 운영 시스템은 상이한 퀀텀을 사용한다. 더욱이, 특정 코드 부분에 할당된 퀀텀은 실행시간(runtime) 동안의 환경에 기초하여 변할 수 있다. 예를 들어, O/S 는 스레드에 할당된 퀀텀의 사이즈를 증가시키거나 감소시킬 수 있다. 일 실시예에서, 컴퓨터 작업은 그 컴퓨터 작업에 할당될 것으로 예상되는 퀀텀의 사이즈에 기초하여 마이크로 작업으로 나누어진다. 다른 실시예에서, 컴퓨터 작업은 그 컴퓨터 작업에 할당된 퀀텀의 사이즈에 기초하여 마이크로 작업으로 나누어진다. 컴퓨터 작업의 어느 부분이 마이크로 작업으로서 분할되어야 하는지에 대한 결정은 실행시간 전에 또는 실행시간 중에 이루어질 수 있다.
일 실시예에 따르면, 마이크로 작업은 다음 마이크로 작업이 실행될 때까지 실행 중의 중지(pause)를 안전하게 허용하면서 하나의 단위로서 완료될 수 있는 실질적으로 더 작은(예를 들어, 가장 작은) 작업 단위이다. 실행 중의 중지를 안전하게 허용함으로써, 특정 마이크로 작업의 실행이 마이크로 작업들 전부의 실행으로부터 일어나는 결과에 영향을 미치는 일 없이 지연될 수 있음을 의미한다.
마이크로 작업은 스레드의 일부일 수 있다. 예를 들어, 스레드는 다수의 마이크로 작업으로 나누어질 수 있다. 이들 마이크로 작업들은 스레드가 스케쥴링되 는 방식과 마찬가지로 스케쥴링될 수 있다. 그러나, 앞서 언급한 바와 같이, 일 실시예에서, 마이크로 작업은 그 마이크로 작업이 프로세싱 리소스를 소유하는 동안인 퀀텀 또는 기타 기간 동안에 실행하도록 허용되면 자신의 실행을 완료할 것이다.
마이크로 작업은 임의의 한 순간에 아주 작은 양의 리소스(예를 들어, CPU 시간, 메모리 할당)만 필요로 할 수 있다. 임의의 한 순간에서의 이러한 리소스의 최소 사용으로 인해 비밀(stealthy) 프로세스가 될 수 있다. 마이크로 작업을 작게 유지함으로써, 컴퓨터 작업이 한 번에 작은 양의 컴퓨터 리소스만 사용할 수 있게 해준다. 따라서, 본 발명의 일 실시예에 따르면, 마이크로 작업의 실행은 컴퓨터 시스템 내의 다른 애플리케이션의 수행에 상당한 영향을 미치지 않도록 충분히 작은 양의 리소스를 소비한다.
컴퓨터 작업을 마이크로 작업으로 나누기
Ⅰ) 애플리케이션이 자신의 컴퓨터 작업을 마이크로 작업으로 나눔
일 실시예에서, 애플리케이션 프로그램은 자신의 컴퓨터 작업을 복수의 마이크로 작업으로 나눈다. 여기에 사용될 때, 용어 복수는 하나보다 많은 임의의 수를 의미한다. 도 1은 본 발명의 실시예에 따라 마이크로 작업을 실행하기 위한 아키텍쳐(100)의 도면이다. 각각의 MJS 가능 애플리케이션(115(1)-115(n))은 각자의 컴퓨터 작업(또는 작업들)을 실행할 마이크로 작업(125)으로 나눈다. 예를 들어, 애플리케이션 프로그래머는 애플리케이션 코드 내의 적합한 위치에 사실상 컴퓨터 작업을 마이크로 작업(125)을 나누며 마이크로 작업(125)을 실행하도록 MJS(110)로부터 허가를 요청하는 호출을 걸 수 있다. 예로서, 컴퓨터 작업은 백업, 인덱싱, 소프트웨어 업데이트, 바이러스 및 악성코드 스캔, 및 조각모음(defragmentation)과 같은 유지보수(maintenance)를 수행할 수 있다. 그러나, MJS 가능 애플리케이션(115(1)-115(n))은 또한 유지보수가 아닌 다른 소프트웨어일 수도 있다.
도 1을 계속 참조하면, 마이크로 작업 스케쥴러(MJS; micro-job scheduler)(110)는 마이크로 작업(125)이 실행될 수 있을 때를 결정한다. MJS와 같이 작업하는 것이 가능한 애플리케이션을 여기서는 MJS 가능 애플리케이션으로 부른다. 이 실시예에서, MJS(110)는 특정 MJS 가능 애플리케이션(115)(예컨대, 115(1))이 하나 이상의 마이크로 작업(125)의 실행이 가능하도록 요청할 수 있게 해주는 애플리케이션 프로그램 인터페이스(API)(130)를 갖는다. API(130)는 또한, 아래에 보다 충분히 설명되는 바와 같이, MJS 가능 애플리케이션(115)이 마이크로 작업(125)이 얼마나 분배될 수 있는지에 의해 지정할 수 있게 해준다. 일 예의 API가 여기에서 아래에 포함된다. 그러나, 아키텍쳐(100)는 이 예의 API에 한정되는 것은 아니다.
일 실시예에서, MJS(100)는 마이크로 작업 큐를 유지하며, 그리하여 MJS(110)는 어느 마이크로 작업(125)이 다음에 실행될 수 있어야 하는지 결정할 수 있다. 마이크로 작업(125)의 실행은 다른 애플리케이션에 무시할만한 영향을 미칠 정도로 MJS(110)에 의해 타이밍된다.
마이크로 작업(125)의 실행은 애플리케이션과 MJS 사이의 API 호출 또는 기타 통신 방법으로 MJS 가능 애플리케이션(115)에 의해 지정될 수 있다. 다음 마이 크로 작업(125)이 다른 작업에 영향을 미치지 않고 실행될 수 있다고 스케쥴러(105)가 판정하게 되면, MJS(110)는 마이크로 작업(125)을 실행하도록 MJS 가능 애플리케이션(115(1))에 명령함으로써 MJS 가능 애플리케이션(115)에 응답한다.
일 실시예에서, 리소스 이용률이 하나 이상의 유휴 기준에 따르는지의 여부를 판정하도록 컴퓨터 리소스 이용률이 모니터링 및 분석된다. 하나 이상의 유휴 기준이 충족되면, MJS는 마이크로 작업(125)을 실행시킨다. 일 실시예에서, 특정 마이크로 작업(125)이 실행하는데 필요한 시간은 퀀텀보다 작거나 이와 같으므로, 마이크로 작업(125)에 의해 사용되는 임의의 리소스는 또 다른 작업이 그 리소스를 필요로 하기 전에 양도된다. 따라서, 마이크로 작업(125)에 의한 리소스 이용은 눈에 띄지 않게 진행할 수 있고, 그것의 애플리케이션의 환경에서 마이크로 작업(125)이 보이지 않을 수 있다. 일 실시예에서, MJS는 시간 간격에 기초하여 마이크로 작업(125)을 스케쥴링한다. 시간 간격 기반의 스케쥴링은 아래에 설명된다.
일 실시예에서, MJS(110)는 또한 메모리 관리자(140)를 갖는다. MJS(110)가 초기화될 때, 운영 시스템에 의해 메모리가 할당되며, 이들 중 일부는 각자 자체의 용도를 위해 사용하고, 이들 중 일부는 MJS 가능 애플리케이션(115)에 할당한다. MJS 가능 애플리케이션(115(1))이 시작하면, 이는 MJS(110)에 메모리 할당을 요청한다. MJS(110)는 모든 프로세스에 의한 현재 컴퓨터 시스템 메모리 이용률 및 MJS 가능 애플리케이션(115(1))의 수요와 같은 요인에 기초하여 MJS 가능 애플리케이션(115(1))에 얼마나 많은 메모리를 할당할 지 결정할 수 있다. 메모리 요건은 각각의 MJS 가능 애플리케이션(115)에 특정할 수 있고, 컴퓨터 소프트웨어 프로그래 머에 의해 MJS 가능 애플리케이션(115)으로 프로그래밍될 수 있다.
Ⅱ) 스케쥴러가 컴퓨터 작업을 마이크로 작업으로 나눔
일 실시예에서, MJS(110)는 컴퓨터 작업을 마이크로 작업(125)으로 나눈다. 도 2를 참조하면, MJS(110)는 컴퓨터 작업(205)을 마이크로 작업(125)으로 나누는 마이크로 작업 분할 로직(210)을 갖는다. MJS(110)는 또한 실행할 마이크로 작업(125)을 스케쥴링하는 마이크로 작업 스케쥴링 로직(220)을 갖는다. 예를 들어, MJS(110)는 MJS 가능형이 아닌 애플리케이션 프로그램을 둘러싸는 쉘(shell)로서 작용할 수 있다. 따라서, 이 예에서, 쉘 MJS(110)는 완성된 소프트웨어 애플리케이션이며, 이를 통하여 임의의 실행파일(executable)이 운용될 수 있다. 그러므로, 일 실시예에서, 쉘 MJS(110)는 자동으로 실행파일로부터의 컴퓨터 작업을 마이크로 작업(125)으로 나눈다. 즉, 이 실시예에서는 애플리케이션 프로그래머가 애플리케이션을 마이크로 작업(125)으로 나눌 필요가 없다.
일 실시예에서, 쉘 MJS(110)는 리소스 이용률에 기초하여 실행파일로부터의 컴퓨터 작업을 마이크로 작업(125)으로 나눈다. 쉘 MJS(110)는 애플리케이션을 분석하고, 애플리케이션이 무슨 리소스를 사용하는지 보도록 애플리케이션이 운용하는 방식을 분석할 수 있다. 예를 들어, 쉘 MJS(110)는 애플리케이션이 무슨 리소스를 사용하는지 그리고 애플리케이션이 리소스를 어느 정도까지 사용하는지 분석한다. 예를 들어, 디스크 조각모음기(defragmenter)가 실행되면, 쉘 MJS(110)는 애플리케이션이 무슨 리소스(예컨대, CPU, 네트워크, 디스크 I/O)를 사용하는지 결정할 수 있다. 일 실시예에서, 쉘 MJS(110)는 이 분석에 기초하여 애플리케이션을 마이 크로 작업(125)으로 나누는 방식을 자동으로 결정한다. 쉘 MJS(110)는 또한 이 분석에 기초하여 마이크로 작업(125)을 스케쥴링하는 방식도 결정할 수 있다.
쉘 MJS(110)는 컴퓨터 작업을 마이크로 작업(125)으로 나누는 방식을 결정하고 그리고/또는 실행할 마이크로 작업(125)을 스케쥴링하는 방식을 결정하는데 다양한 파라미터를 사용할 수 있다. 이들 파라미터는 사용자 입력에 기초할 수 있고, 또는 쉘 MJS(110)에 의해 확립될 수 있다. 예를 들어, 사용자는 특정 애플리케이션은 높은 우선순위를 갖는다고 지정할 수 있다.
일 실시예에서, 쉘 MJS(110)는 시간 간격에 기초하여 실행할 마이크로 작업(125)을 스케쥴링한다.
일 실시예에서, MJS(110)는 운영 시스템의 일부이다. 이 실시예에서는 운영 시스템에서의 MJS(110)가 컴퓨터 작업을 마이크로 작업(125)으로 나눌 수 있다.
시간 간격에 기초하여 마이크로 작업을 스케쥴링함
일 실시예에서, 마이크로 작업(125)은 시간 간격에 기초하여 실행된다. 예를 들어, MJS(110)는 시간 간격에 기초하여 마이크로 작업(125)을 스케쥴링한다. 예를 들어, MJS(110)는 시간에 걸쳐 마이크로 작업(125)의 실행을 분배한다. 예를 들어, 컴퓨터 작업이 마이크로 작업(125)으로 나누어지지 않은 경우 완료하는데 12분이 걸릴 수 있다. 그러나, 마이크로 작업(125)으로 나누어지면, 전체 컴퓨터 작업의 실행은 24시간에 걸쳐 분배되며 각각의 특정 마이크로 작업(125)이 몇 초마다 한번씩 실행될 수 있다.
특정 예로서, 퀀텀이 20 밀리초인 경우, 전체 컴퓨터 작업은 약 36,000 퀀텀 에 완료될 수 있다. 따라서, 컴퓨터 작업은 약 36,000개의 마이크로 작업(125)으로 나누어진다. 마이크로 작업들(125) 중 일부가 퀀텀보다 작으면 마이크로 작업(125)의 수는 다소 더 클 수 있다. 20 ms 퀀텀의 경우, 24시간 기간에 걸쳐 4,320,000 퀀텀이 존재한다. 그리하여, MJS(110)는 매 120 퀀텀마다 또는 매 2.4초마다 마이크로 작업들(125) 중 하나를 실행할 수 있다. 이 특정 예에서, 마이크로 작업 가능 애플리케이션은 완료하는데 24 시간이 걸리겠지만, 이는 매우 바쁜 시스템 상에서조차도 탐지되지 않을 수 있다.
이벤트에 기초하여 마이크로 작업을 스케쥴링함
일 실시예에서, 마이크로 작업(125)은 이벤트에 기초하여 실행을 위해 스케쥴링된다. 예를 들어, MJS(110)는 일어나는 다수의 동작에 기초하여 마이크로 작업(125)을 스케쥴링한다. 다른 예로서, MJS(110)는 일어나는 다수의 퀀텀에 기초하여 마이크로 작업(125)을 스케쥴링한다. 상이한 퀀텀들은 상이한 사이즈로 이루어질 수 있다. 따라서, 일 실시예에서, MJS(110)는 이벤트에 기초하여 마이크로 작업(125)의 실행을 분배한다.
마이크로 작업의 리소스 기반 스케쥴링
일 실시예에서, 마이크로 작업(125)은 리소스 이용률에 기초하여 스케쥴링된다. 예를 들어, 일 실시예에서 MJS(110)는 리소스 기반의 스케쥴러이다. 예를 들어, MJS(110)는 마이크로 작업(125)이 유휴 리소스만 이용하도록 마이크로 작업(125)을 스케쥴링한다. MJS(110)는 스케쥴링을 결정하는데 리소스 이용률이 하나 이상의 유휴 기준에 따르는지의 여부를 판정한다. 예로서, MJS(110)는 디스크 활동 을 분석할 수 있다. 마이크로 작업(125)을 갖는 애플리케이션이 아닌 다른 애플리케이션이 디스크를 사용하고 있는 경우, MJS(110)는 그 다른 애플리케이션이 행해질 때까지 기다렸다가 마이크로 작업(125)을 스케쥴링한다. MJS(110)는 디스크 I/O 이용률을 계속해서 모니터링하며, 다른 애플리케이션이 아무 것도 디스크 I/O에 액세스하려고 하지 않는 경우 또 다른 마이크로 작업(125)이 스케쥴링되도록 한다. 그러나, 또 다른 애플리케이션이 디스크 I/O를 이용하려고 요구하면, MJS(110)는 다른 마이크로 작업(125)이 스케쥴링되도록 하지 않을 것이며, 그 다른 애플리케이션이 디스크 I/O를 이용할 수 있다.
다른 예로서, MJS(110)는 네트워크 활동을 분석할 수 있다. 네트워크 트래픽이 너무 높은 경우, MJS(110)는 트래픽이 느려질 때까지 어느 마이크로 작업(125)도 스케쥴링하지 않을 것이다. 네트워크 트래픽이 충분히 낮은 경우에는, MJS(110)가 실행할 마이크로 작업을 스케쥴링한다. MJS(110)는 네트워크 트래픽이 충분히 낮은 채로 유지되는 것으로 보장하도록 계속해서 체크한다. 네트워크 트래픽이 충분히 낮은 채로 유지되면, 다른 마이크로 작업(125)이 스케쥴링될 수 있다. 그러나, 트래픽이 너무 높아지게 되면, 부가의 마이크로 작업(125)이 아무것도 실행하도록 스케쥴링되지 않는다.
MJS(110)는 임의의 유형의 컴퓨터 리소스 및 임의의 조합의 리소스에 기초하여 리소스 기반의 스케쥴링 결정을 행할 수 있다. 일 실시예에서, MJS(110)는 실행을 위한 허가를 대기하는 마이크로 작업(125)의 다수의 큐를 갖는다. 각각의 큐는 특정 리소스에 대응할 수 있다. 예를 들어, 디스크 I/O를 이용해야 하는 마이크로 작업(125)을 위한 큐, 네트워크를 이용해야 하는 마이크로 작업(125)을 위한 큐, CPU를 이용해야 하는 마이크로 작업(125)을 위한 큐 등이 존재할 수 있다. 또한, 리소스 조합을 이용하는 마이크로 작업(125)을 위한 하나 이상의 큐가 존재할 수 있다. MJS(110)는 특정 리소스 또는 리소스 조합이 이용가능할 때 마이크로 작업(125)을 배치한다. 특정 마이크로 작업(125)은 2개의 리소스의 사용을 필요로 할 수 있다. 예를 들어, 특정 마이크로 작업(125)은 네트워크 리소스 및 디스크 리소스의 사용을 필요로 할 수 있다. 그러나, 특정 마이크로 작업(125)은 CPU 리소스를 필요로 하지 않는다. CPU 리소스 이용률이 현재 높더라도, 특정 마이크로 작업(125)은 여전히 스케쥴링되고 실행될 수 있다.
본 발명의 실시예에 따르면, MJS 가능 애플리케이션(115)은 리소스 이용률을 제어하도록 MJS(110)에 파라미터를 보낸다. 리소스 이용률의 제어는 디스크 I/O, CPU 및 네트워크를 포함하지만, 이에 한정되는 것은 아니다. 예를 들어, MJS 가능 애플리케이션(115)은 상기 3개 리소스의 임계 레벨의 임의의 조합에 따르며 마이크로 작업(125)이 실행되도록 요청할 수 있다. 또한, MJS 가능 애플리케이션(115)은 상이한 마이크로 작업(125)에 대하여 상이한 리소스 임계 레벨을 지정할 수 있다. 예를 들어, 일 실시예에 따르면, MJS 가능 애플리케이션(115)은 각각의 마이크로 작업(125)에 따라 상이한 리소스 임계 레벨을 지정한다. 따라서, 미세(fine-grained) 리소스 관리가 가능하다. 본 발명의 일 실시예에 따르면, MJS(110)가 리소스 이용률을 계산하는 경우, 이는 측정되는 MJS 가능 애플리케이션(115)이 아닌 프로세스의 리소스 이용률이다. CPU 이용률 임계값이 20 퍼센트로 설정되는 다음의 예가 설명을 위해 사용된다. MJS 가능 애플리케이션(115)이 실행할 수 있기 전에 CPU 이용률이 20 퍼센트 아래인 경우, 마이크로 작업(들)이 실행되면 CPU 이용률은 20 퍼센트를 넘어서까지 증가할 수 있다. 이 예에서, 20 퍼센트를 넘어서는 이러한 증가는 CPU 리소스 이용률 위반(violation)으로 간주되지 않는다. 마찬가지의 원리가 네트워크 및 디스크 I/O 리소스에 적용된다.
일 실시예에서, MJS(110)가 운영 시스템 외부에서 실행되는 경우, MJS(110)는 자신의 자체 리소스 이용률을 자기제한(self-limit)한다. 예를 들어, MJS(110)는 자신의 자체 리소스 이용률을 모니터링하고, 자신의 자체 리소스 이용률이 너무 높아지면, MJS(110)는 일 기간 동안 MJS(110)의 스케쥴링을 중지하도록 운영 시스템에 요청한다.
프로세스 흐름
도 3은 본 발명의 실시예에 따라 컴퓨터 작업을 마이크로 작업(125)으로 나눔으로써 컴퓨터 작업을 실행하기 위한 프로세스(300)의 단계들을 도시하는 흐름도이다. 단계 302에서, 컴퓨터 작업이 시작된다. 컴퓨터 작업은 MJS 가능 애플리케이션(115)으로부터 이루어질 수 있다. 그러나, 컴퓨터 작업이 MJS 가능 애플리케이션(115)과 연관되어야 하는 것은 아니다.
예로서, 단계 302에서, 일 실시예에서 컴퓨터 시스템이 부팅되면, MJS 가능 애플리케이션(115) 프로그램이 시작된다. MJS 가능 애플리케이션(115)이 수행할 컴퓨터 작업을 갖지 않는 경우, MJS 가능 애플리케이션(115)은 운용할 컴퓨터 작업을 가질 때까지 유휴 상태로 방치된다. 이 유휴 상태에서, MJS 가능 애플리케이 션(115)은 수시(occasional) 모니터링과 같은 일부 기능을 수행할 수 있다. 어떤 시점에서, MJS 가능 애플리케이션(115)은 저장 매체의 조각모음 또는 바이러스 스캔과 같은 수행할 컴퓨터 작업을 갖는다. 컴퓨터 작업은 단일 디스크 및 그에 저장된 파일들을 조각모음하는 것일 수 있으며, 여기서 MJS 가능 애플리케이션(115)은 진행 과정에 맞춰 그 디스크를 조각모음한다.
MJS 가능 애플리케이션(115)은 시작될 때 소량의 메모리가 그에 할당될 수 있다. 할당되는 양은 매우 작을 수 있는데, MJS 가능 애플리케이션(115)은 통상적으로 한 번에 단일 마이크로 작업(125)만 실행하려고 하기 때문이다. 그러나, 일부 경우에, MJS 가능 애플리케이션(115)은 다른 프로세스가 실행하기를 기다리지 않고 다수의 마이크로 작업(125)을 실행하려고 할 수 있다. 예를 들어, 필요한 컴퓨터 시스템 리소스가 유휴 상태에 있다고 MJS(110)가 판정하는 경우, MJS(110)는 다른 프로세스가 마이크로 작업(125)에 의해 이용되는 리소스를 이용하는 일 없이 MJS 가능 애플리케이션(115)이 연속적으로 다수의 마이크로 작업(125)을 실행할 수 있게 해줄 수 있다.
단계 304에서, 컴퓨터 작업은 마이크로 작업(125)으로 나누어진다. 일 실시예에서, 특정 마이크로 작업(125)의 사이즈는 특정 마이크로 작업(125)이 프로세싱 작업을 실행하는데 사용되는 리소스를 소유하는 동안인 할당된 시간 내에 그 특정 마이크로 작업(125)이 완료할 수 있게 해준다. 마이크로 작업(125)은 마이크로 작업(125)의 실행이 컴퓨터 시스템 내의 다른 작업의 수행에 상당한 영향을 미치지 않도록 충분히 작은 양의 리소스를 이용하게 하는 사이즈로 이루어질 수 있다. 일 실시예에서, 컴퓨터 작업을 마이크로 작업(125)으로 나누는 것은 컴퓨터 작업에 마이크로 작업(125)을 실행하는데 사용되는 리소스의 소유권이 주어지는 동안인 할당된 시간 내에 각각의 마이크로 작업(125)이 실행을 완료할 수 있도록 마이크로 작업(125)의 사이즈를 선택하는 것을 포함한다.
일 실시예에서, 컴퓨터 작업은 컴퓨터 작업을 소유하는 애플리케이션에 의해 마이크로 작업(125)으로 나누어진다. 컴퓨터 작업을 마이크로 작업(125)으로 나누는 것은 MJS 가능 애플리케이션(115) 내의 명령에 의해 달성될 수 있다. 일반적으로, 이들 명령은 MJS 가능 애플리케이션(115)에서의 결정점이다. 예를 들어, 명령은 마이크로 작업(125)을 실행하는데 허가를 요청하는 MJS(110)에의 API 호출일 수 있다. 그러나, MJS(110)는 MJS 가능 애플리케이션(115)과 통합될 수 있으며, 이 경우 명령은 MJS 가능 애플리케이션(115) 내의 스케쥴링 함수에 대한 호출일 수 있다. 컴퓨터 작업을 마이크로 작업(125)으로 나누는 데 다른 기술이 사용될 수 있다. 예를 들어, 일 실시예에서, 컴퓨터 작업은 쉘 MJS(110)에서의 마이크로 작업 분할 로직에 의해 마이크로 작업(125)으로 나누어진다.
단계 306은 마이크로 작업(125)의 실행이다. 일 실시예에서, 전체 컴퓨터 작업은 마이크로 작업(125)으로 나누어지고, 그 다음 컴퓨터 작업은 전체 컴퓨터 작업이 완료될 때까지 마이크로 작업(125)이 하나씩 실행된다. 예를 들어, 전체 조각모음 작업은 마이크로 작업(125)으로 나누어지고, 이는 전체 조각모음 작업이 완료될 때까지 한 번에 하나씩 실행된다. 일 실시예에서, 특정 마이크로 작업(125)은 할당된 시간보다 작거나 그와 같은 시간 내에 그 실행을 완료한다.
마이크로 작업(125)을 하나씩 실행하는 것은 순차적으로 하나씩 실행하는 것을 포함하지만, 이에 한정되는 것은 아니다. 다수의 마이크로 작업(125)은 동시에 실행될 수 있다. 예를 들어, 다수의 CPU가 존재하는 경우, 상이한 마이크로 작업(125)이 동시에 상이한 CPU 상에서 실행될 수 있다.
일 실시예에서, 마이크로 작업(125)의 스케쥴링은 리소스 이용률에 기초한다. 이 실시예에서, 마이크로 작업(125) 각각에 대하여, 특정 마이크로 작업(125)에 의해 사용될 컴퓨터 시스템의 하나 이상의 리소스의 이용률이 하나 이상의 유휴 기준을 충족하는지에 대한 판정이 이루어진다. 특정 리소스에 대한 유휴 기준은 하나 이상의 요인에 기초할 수 있다. 예를 들어, 일 실시예에서, CPU 이용률은 CPU 리소스 이용률에 대한 유휴 기준으로서 사용된다. 따라서, 마이크로 작업(125)은 마이크로 작업(125)이 필요로 하는 컴퓨터 시스템의 리소스가 충분히 유휴 상태일 때에만 실행된다. 일 실시예에서, 유휴 기준은 리소스 임계값에 기초한다. 예를 들어, 리소스 임계값이 사용될 수 있는데, MJS 가능 애플리케이션(115)의 마이크로 작업(125)은 다른 프로세스에 의한 리소스 이용률이 MJS 가능 애플리케이션(115)이 지정한 임계값 이하인 경우에만 실행된다. 아래에 설명되는 일 예의 API는 일부 리소스 임계 파라미터의 하나의 예를 포함한다. 그러나, 프로세스(300)는 이들 리소스 임계 파라미터에 한정되지 않는다.
일 실시예에서, 마이크로 작업(125)의 스케쥴링은 시간 간격에 기초한다. 일 실시예에서, 컴퓨터 작업의 실행은 기간에 걸쳐 분배된다. 예를 들어, 컴퓨터 작업은 여러 시간에 걸쳐 분배될 수 있다. 컴퓨터 작업이 얼마나 많은 마이크로 작 업(125)으로 나누어지는지에 기초하여, 시간에 걸쳐 마이크로 작업(125)을 분배할 방식에 대한 결정이 이루어질 수 있다. 연속하는 마이크로 작업들(125) 사이의 시간이 일정할 필요는 없다.
일 실시예에서, 컴퓨터 작업을 시작한 애플리케이션 프로그램이 진행 과정에 맞춰 운용되며, 컴퓨터 시스템이 부팅된 채 남아있는 한 계속해서 운용되지만, 아무런 작업도 수행될 필요가 없는 동안에는 유휴 상태로 남게 된다. 예를 들어, 바이러스 검출 애플리케이션 프로그램에 대한 디스크 조각모음기가 계속해서 운용된다. 따라서, 컴퓨터 작업이 완료하더라도, 애플리케이션 프로그램은 계속해서 유휴 모드로 운용되며 다음 작업 구간을 기다린다. 따라서, 애플리케이션 프로그램은 수행할 또 다른 컴퓨터 작업을 가질 때 다시 시작될 필요가 없다. 그 결과, 애플리케이션 프로그램은 애플리케이션 프로그램을 시작하는 것을 나타내는 추가의 리소스를 소비하지 않는다. 애플리케이션 프로그램이 해야 할 또 다른 컴퓨터 작업을 갖는다고 판정하는 경우, 컴퓨터 작업은 마이크로 작업(125)으로 나누어지고, 마이크로 작업(125)은 시간에 걸쳐 실행된다. 예를 들어, 디스크 조각모음기 애플리케이션 프로그램은 컴퓨터의 저장 매체에 대한 변화에 기초하여 추가의 저장 매체 조각모음이 행해져야 한다고 판정할 수 있다.
일 예의 API
본 발명의 실시예는 MJS 가능 애플리케이션(115)이 MJS(110)와 인터페이스할 수 있게 해주기 위한 API이다. 일 예의 API는 CPU, 디스크, 및 네트워크에 대하여 다음의 리소스 임계 파라미터를 갖는다.
● CPU 이용률 임계값
● 펜딩(pending) 디스크 I/O 카운트 임계값
● 네트워크 이용률 임계값
상기 파라미터는 각각의 마이크로 작업(125)에 대하여 지정될 수 있다. 즉, 상이한 마이크로 작업(125)에 상이한 리소스 임계 파라미터가 할당될 수 있다. 예를 들어, 네트워크를 사용하는 마이크로 작업(125)의 경우, 네트워크 임계값이 사용될 수 있다. 그러나, 네트워크를 사용하지 않는 마이크로 작업(125)의 경우에는 네트워크 임계값이 제로일 수 있다. 따라서, 본 발명의 실시예에 따르면, 미세 리소스 관리가 제공된다.
특정 예로서, MJS 가능 애플리케이션(115)은 CPU 이용률이 50% 이하이고 I/O 디스크 이용률이 40% 이하이고 네트워크 트래픽이 60% 이하인 경우에만 특정 마이크로 작업(125)이 실행되도록 요청할 수 있다. 전혀 없는 경우도 비롯하여, 임의의 조합의 리소스 임계값 요인들이 사용될 수 있다. 본 발명의 실시예에 따르면, CPU 이용률 임계값은 임의의 다른 작업의 것과는 대조적으로 MJS의 CPU 사용 사이를 구별한다.
다음의 2개 파라미터는 리소스 이용률이 얼마나 빈번하게 측정되어야 하는지를 지정하는데 사용된다.
● CPU 이용률 윈도우
● 네트워크 이용률 윈도우
CPU 이용률 윈도우 파라미터는 CPU 이용이 계산되는 시간 윈도우를 정의한 다. 예를 들어, 마지막 n 밀리초에 걸친 CPU 이용률이 평균화된다. 네트워크 이용률 윈도우는 네트워크 이용률이 계산되는 시간 윈도우를 정의한다. 이들 파라미터는 MJS(110)의 내부적인 것일 수 있다. 그러나, MJS 가능 애플리케이션(115)은 이들 파라미터에 우선할 수 있다. 펜딩 디스크 I/O는 어느 시점에서든 절대적이고, 그에 따라 계산될 필요가 없다.
마이크로 작업(125)이 시간에 걸쳐 얼마나 분배되는지를 제어하도록 필수의(mandatory) 유휴 시간 파라미터는 MJS 가능 애플리케이션(115)으로부터 MJS에 전달될 수 있다. 필수의 유휴 시간 파라미터는 선택적인 것이다. 또한, 사용된다면, 필수의 유휴 파라미터는 제로의 값을 가질 수 있다.
● 필수의 유휴 시간
MJS(110)는 모든 마이크로 작업(125)이 실행된 후에 시스템 유휴 시간으로서 정의되는 “유휴 시간”을 추적한다. 앞서 언급한 바와 같이, MJS 가능 애플리케이션(115)(들)은 MJS(110)와의 마이크로 작업(125)을 대기할 수 있다. MJS 큐 상에 아무 마이크로 작업(125)도 없다면, MJS(110)는 지정된 필수의 유휴 시간 동안 기다린 다음 웨이크업(wake up)하여 추가의 작업을 수행하도록 MJS 가능 애플리케이션(115)(들)에 권한을 부여한다. 예를 들어, MJS 가능 조각모음기는 먼저 디스크 드라이브를 조각모음하도록 다수의 마이크로 작업(125)을 실행한 다음, MJS(110)에 의해 중지될 수 있다. 지정된 필수의 유휴 시간 후에, MJS(110)는 추가의 작업을 허가하도록 MJS 가능 조각모음기를 호출한다. 예를 들어, MJS 가능 조각모음기는 메모리를 해제(release)하는 것과 같은 청소(clean-up) 작업을 실행할 수 있다. 필 수의 유휴 시간은 MJS 가능 애플리케이션(115)에 의해 조정될 수 있는 디폴트 파라미터일 수 있다.
다음의 파라미터는 리소스 이용률이 임계값보다 높은 경우 마이크로 작업(125)의 실행을 기다리는 것에 관련된 것이다.
● 대기 시간
● 최대 대기 시간
리소스 이용률이 현재 너무 높아서 마이크로 작업을 실행할 수 없다고 MJS(110)가 판정하는 경우, MJS(110)는 지정된 대기 시간 동안 기다린 다음, 리소스 이용률을 다시 체크한다. 대기 시간 파라미터는 MJS(110)가 리소스 이용률이 너무 높다고 판정할 때마다 증가될 수 있다. 예를 들어, MJS(110)는 최대 대기 시간에 도달할 때까지 대기 시간 파라미터를 증가시킬 수 있다. 이들 파라미터는 MJS 가능 애플리케이션(115)이 처음에 시작될 때 MJS 가능 애플리케이션(115)에 의해 지정될 수 있다. MJS 가능 애플리케이션(115)은 자신의 실행 시간 동안 이들 파라미터를 조정할 수 있다.
하드웨어 개요
도 4는 본 발명의 실시예가 구현될 수 있는 컴퓨터 시스템(400)을 도시하는 블록도이다. 프로세스(300)의 단계들은 시스템(400)의 컴퓨터 판독가능 매체 중 하나 이상에 명령으로 저장되고, 컴퓨터 시스템(400)의 프로세서 상에서 실행된다. 컴퓨터 시스템(400)은 정보를 통신하기 위해 버스(402) 또는 기타 통신 메커니즘을 포함하고, 정보를 처리하기 위해 버스(402)와 연결된 프로세서(404)를 포함한다. 컴퓨터 시스템(400)은 또한 프로세서(404)에 의해 실행될 명령 및 정보를 저장하기 위해 버스(402)에 연결된 RAM 또는 기타 동적 저장 장치와 같은 메인 메모리(406)를 포함한다. 메인 메모리(406)는 또한 프로세서(404)에 의해 실행될 명령의 실행 중에 임시 변수 또는 기타 즉각 정보를 저장하기 위해 사용될 수도 있다. 컴퓨터 시스템(400)은 또한 프로세서(404)에 대한 정적 정보 및 명령을 저장하기 위해 버스(402)에 연결된 ROM(408) 또는 기타 정적 저장 장치를 더 포함한다. 정보 및 명령을 저장하기 위해, 자기 디스크 또는 광학 디스크와 같은 저장 장치(410)가 제공되고 버스(402)에 연결된다. 컴퓨터 시스템(400)은 임의의 수의 프로세서(404)를 가질 수 있다. 예를 들어, 일 실시예에서 컴퓨터 시스템(400)은 다중 프로세서 시스템이다. 프로세서(404)는 임의의 수의 코어를 가질 수 있다. 일 실시예에서, 프로세서(404)는 다중 코어 프로세서(404)이다. 컴퓨터 시스템(400)은 하이퍼 스레드(hyper-threaded) 기계로 사용될 수 있다.
컴퓨터 시스템(400)은 컴퓨터 사용자에게 정보를 표시하기 위해 CRT와 같은 디스플레이(412)에 버스(402)를 통하여 연결될 수 있다. 프로세서(404)에 정보 및 커맨드 선택을 전달하기 위해 영숫자 및 기타 키를 포함하는 입력 장치(414)가 버스(402)를 통하여 연결된다. 다른 유형의 사용자 입력 장치로는 프로세서에 방향 정보 및 커맨드 선택을 전달하고 디스플레이(412) 상의 커서 이동을 제어하기 위해 마우스, 트랙볼 또는 커서 방향키와 같은 커서 제어(416)가 있다. 이 입력 장치는 통상적으로 장치가 평면 내의 위치를 지정할 수 있게 해주는 2축, 즉 제1축(예컨대, x축) 및 제2축(예컨대, y축)의 2개의 자유도를 갖는다.
본 발명은 여기에 설명된 기술을 구현하기 위한 컴퓨터 시스템(400)의 사용에 관한 것이다. 본 발명의 일 실시예에 따르면, 이들 기술들은 프로세서(404)가 메인 메모리(406)에 포함된 하나 이상의 명령의 하나 이상의 시퀀스를 실행하는 것에 응답하여 컴퓨터 시스템(400)에 의해 수행된다. 이러한 명령은 저장 장치(410)와 같은 또 다른 기계 판독가능 매체로부터 메인 메모리(406) 내에 읽어넣을 수 있다. 메인 메모리(406)에 포함된 명령 시퀀스의 실행으로 프로세서(404)로 하여금 여기에 설명된 프로세스 단계들을 수행하게 한다. 대안의 실시예에서, 본 발명을 구현하는데 소프트웨어 명령을 대신하여 또는 이와 함께 하드와이어드(hard-wired) 회로가 사용될 수 있다. 따라서, 본 발명의 실시예는 하드웨어 회로 및 소프트웨어의 임의의 특정 조합에 한정되지 않는다.
여기에서 사용되는 용어 “기계 판독가능 매체”는 기계를 특정 방식으로 동작시키는 데이터를 제공하는데 참여하는 임의의 매체를 칭한다. 컴퓨터 시스템(400)을 사용하여 구현된 실시예에서, 다양한 기계 판독가능 매체가 예를 들어 프로세서(404)에 실행할 명령을 제공하는데 수반된다. 이러한 매체는 비휘발성 매체, 휘발성 매체, 및 전송 매체를 포함하지만 이에 한정되는 것은 아닌 수많은 형태를 취할 수 있다. 비휘발성 매체는 예를 들어 저장 장치(410)와 같은 광학 또는 자기 디스크를 포함한다. 휘발성 매체는 메인 메모리(406)와 같은 동적 메모리를 포함한다. 전송 매체는 버스(402)를 구성하는 와이어를 비롯하여 동축 케이블, 구리 와이어 및 광섬유를 포함한다. 전송 매체는 또한 전파 및 적외선 데이터 통신 중에 발생하는 것들과 같은 음향 또는 광파의 형태를 취할 수 있다. 이러한 모든 매체는 기계로 명령을 판독하는 물리적 메커니즘이 매체에 의해 수송된 명령을 검출할 수 있도록 실체적(tangible)이어야 한다.
일반적인 형태의 기계 판독가능 매체는 예를 들어 플로피 디스크, 플렉서블 디스크, 하드 디스크, 자기 테이프 또는 임의의 기타 자기 매체, CD-ROM, 임의의 기타 광학 매체, 펀치카드, 페이퍼테이프, 홀 패턴을 구비한 임의의 기타 물리적 매체, RAM, PROM, EPROM, FLASH-EPROM, 임의의 기타 메모리 칩 또는 카트리지, 아래에 기재되는 바와 같은 반송파, 또는 컴퓨터가 판독할 수 있는 임의의 기타 매체를 포함한다.
다양한 형태의 기계 판독가능 매체는 프로세서(404)에 실행할 하나 이상의 명령의 하나 이상의 시퀀스를 수송하는 데에 수반될 수 있다. 예를 들어, 명령은 먼저 원격 컴퓨터의 자기 디스크 상에 수송될 수 있다. 원격 컴퓨터는 자신의 동적 메모리로 명령을 로딩하고, 모뎀을 사용하여 전화선을 통해 명령을 보낼 수 있다. 컴퓨터 시스템(400)에 대해 국부적인 모뎀은 전화선을 통해 데이터를 수신하고 적외선 송신기를 사용하여 데이터를 적외선 신호로 변환할 수 있다. 적외선 검출기는 적외선 신호로 수송된 데이터를 수신할 수 있고, 적합한 회로가 버스(402)를 통해 데이터를 둘 수 있다. 버스(402)는 메인 메모리(406)에 데이터를 수송하며, 메인 메모리(406)로부터 프로세서(404)는 명령을 검색하고 실행한다. 메인 메모리(406)에 의해 수신된 명령은 프로세서(404)에 의한 실행 전이나 후에 저장 장치(410) 상에 선택적으로 저장될 수 있다.
컴퓨터 시스템(400)은 또한 버스(402)에 연결된 통신 인터페이스(418)를 포 함한다. 통신 인터페이스(418)는 로컬 네트워크(422)에 접속되어 있는 네트워크 링크(420)에 연결하며 양방향 데이터 통신을 제공한다. 예를 들어, 통신 인터페이스(418)는 데이터 통신 접속을 대응하는 유형의 전화선에 제공하는 ISDN(integrated services digital network) 카드 또는 모뎀일 수 있다. 다른 예로서, 통신 인터페이스(418)는 데이터 통신 접속을 호환성 LAN에 제공하는 LAN 카드일 수 있다. 무선 링크도 또한 구현될 수 있다. 임의의 이러한 구현에서, 통신 인터페이스(418)는 다양한 유형의 정보를 나타내는 디지털 데이터 스트림을 수송하는 전기, 전자기, 또는 광학 신호를 송신 및 수신한다.
네트워크 링크(420)는 통상적으로 다른 데이터 장치에 하나 이상의 네트워크를 통하여 데이터 통신을 제공한다. 예를 들어, 네트워크 링크(420)는 호스트 컴퓨터(424) 또는 ISP(426)에 의해 동작되는 데이터 장비에 로컬 네트워크(422)를 통한 접속을 제공할 수 있다. 이어서 ISP(426)는 지금은 일반적으로 "인터넷"(428)으로 불리는 월드 와이드 패킷 데이터 통신 네트워크를 통하여 데이터 통신 서비스를 제공한다. 로컬 네트워크(422) 및 인터넷(428)은 둘 다 디지털 데이터 스트림을 수송하는 전기, 전자기 또는 광학 신호를 사용한다. 컴퓨터 시스템(400)에 대하여 디지털 데이터를 수송하는 다양한 네트워크를 통한 신호와 네트워크 링크(420)와 통신 인터페이스(418)를 통한 신호는 정보를 수송하는 반송파의 예시적인 형태이다.
컴퓨터 시스템(400)은 네트워크(들), 네트워크 링크(420) 및 통신 인터페이스(418)를 통하여 프로그램 코드를 비롯하여 메시지를 보내고 데이터를 수신할 수 있다. 인터넷 예에서, 서버(430)는 인터넷(428), ISP(426), 로컬 네트워크(422) 및 통신 인터페이스(418)를 통하여 애플리케이션 프로그램에 대하여 요청된 코드를 전송할 수 있다.
수신 코드는 수신될 때 프로세서(404)에 의해 실행될 수 있고, 그리고/또는 추후 실행을 위해 저장 장치(410) 또는 기타 비휘발성 저장장치에 저장될 수 있다. 이 방식으로, 컴퓨터 시스템(400)은 반송파의 형태로 애플리케이션 코드를 획득할 수 있다.
전술한 명세서에서, 본 발명의 실시예는 구현예마다 다양할 수 있는 다수의 특정 상세사항과 관련하여 설명되었다. 따라서 본 발명이 무엇인지 그리고 본 출원인이 본 발명에 대하여 의도하는 것이 무엇인지 단독으로 독점적으로 나타내는 것은 임의의 후속 보정을 포함하여 본 출원으로부터 나오는 특정 형태의 청구항 세트이다. 이러한 청구항에 포함된 용어에 대하여 본 명세서에서 명백하게 설명된 임의의 정의는 청구항에 사용되는 용어의 의미를 좌우할 것이다. 따라서, 청구항에 명백하게 인용되지 않은 어떠한 한정, 구성요소, 특성, 특징, 이점 또는 속성도 어떠한 방식으로든 이러한 청구항의 범위를 한정하여서는 안 된다. 그에 따라 명세서 및 도면은 한정적 의미가 아니라 예시적인 것으로서 간주되어야 할 것이다.

Claims (29)

  1. 기계 구현 방법으로서,
    컴퓨터 작업을 복수의 마이크로 작업(micro-job)으로 나누는 단계로서, 상기 컴퓨터 작업을 나누는 단계는 상기 컴퓨터 작업에 리소스의 소유권이 주어지는 동안인 할당된 시간에 기초하여 상기 마이크로 작업의 사이즈를 선택하는 단계를 포함하는 것인, 단계; 및
    상기 복수의 마이크로 작업을 상기 리소스를 사용하여 실행(execute)시킴으로써 상기 컴퓨터 작업을 실행하는 단계를 포함하는 기계 구현 방법.
  2. 청구항 1에 있어서,
    상기 마이크로 작업의 사이즈를 선택하는 단계는 각각의 마이크로 작업이 상기 컴퓨터 작업에 상기 마이크로 작업을 실행하는데 사용된 리소스의 소유권이 주어지는 동안인 할당된 시간 내에 실행을 완료할 수 있도록 상기 마이크로 작업의 사이즈를 선택하는 단계를 포함하는 것인 기계 구현 방법.
  3. 청구항 2에 있어서,
    상기 컴퓨터 작업은 개별적인 마이크로 작업 각각의 실행을 상기 할당된 시간보다 작거나 상기 할당된 시간과 같은 시간 내에 완료함으로써 완료되는 것인 기계 구현 방법.
  4. 청구항 1에 있어서,
    상기 컴퓨터 작업을 실행하는 단계는,
    특정 마이크로 작업을 운용(run)하는데 필요한 하나 이상의 리소스가 하나 이상의 유휴 기준에 따르는지의 여부를 판정하는 단계; 및
    상기 특정 마이크로 작업을 운용하는데 필요한 하나 이상의 리소스의 이용률이 하나 이상의 유휴 기준을 따른다는 판정에 응답하여, 상기 특정 마이크로 작업을 상기 할당된 시간 내에 완료하도록 실행시키는 단계를 포함하는 것인, 기계 구현 방법.
  5. 청구항 1에 있어서,
    상기 컴퓨터 작업을 실행하는 단계는,
    연속하는 마이크로 작업들의 실행 사이에 대기할 시간 길이를 결정하는 단계를 포함하는 것인, 기계 구현 방법.
  6. 청구항 5에 있어서,
    상기 시간 길이를 결정하는 단계는 상기 컴퓨터 작업이 나누어지는 마이크로 작업의 수 및 상기 컴퓨터 작업이 분배되어질 기간에 기초하는 것인 기계 구현 방법.
  7. 청구항 1에 있어서,
    상기 컴퓨터 작업을 실행하는 단계는,
    연속하는 마이크로 작업들의 실행 사이에 시간 간격을 대기하는 단계를 포함하는 것인 기계 구현 방법.
  8. 청구항 1에 있어서,
    상기 컴퓨터 작업을 실행하는 단계는,
    연속하는 마이크로 작업들의 실행 사이에 다수의 동작을 대기하는 단계를 포함하는 것인 기계 구현 방법.
  9. 청구항 1에 있어서,
    상기 컴퓨터 작업을 실행하는 단계는,
    연속하는 마이크로 작업들의 실행 사이에 다수의 퀀텀(quantum)을 대기하는 단계를 포함하는 것인 기계 구현 방법.
  10. 청구항 1에 있어서,
    상기 퀀텀의 적어도 둘은 서로 상이한 사이즈로 이루어지는 것인 기계 구현 방법.
  11. 청구항 1에 있어서,
    상기 마이크로 작업의 적어도 하나는 스레드(thread)의 일부분을 포함하는 것인 기계 구현 방법.
  12. 청구항 1에 있어서,
    상기 할당된 시간은 퀀텀인 것인 기계 구현 방법.
  13. 기계 구현 방법으로서,
    코드 부분에 리소스의 소유권이 주어지는 동안의 시간량을 할당하는 운영 시스템의 제어 하에 실행할 컴퓨터 작업으로부터 마이크로 작업으로 분할하는 단계로서, 상기 마이크로 작업의 사이즈는 상기 마이크로 작업이 할당된 시간 내에 실행을 완료할 것으로 예상되도록 선택되는 것인, 단계; 및
    상기 마이크로 작업을 상기 할당된 시간 내에 완료하도록 실행시키는 단계로서, 상기 마이크로 작업은 상기 할당된 시간의 종료 이전에 상기 리소스의 소유권을 양도하는 것인, 단계를 포함하는 기계 구현 방법.
  14. 청구항 13에 있어서,
    상기 컴퓨터 작업으로부터 복수의 마이크로 작업으로 분할하는 단계로서, 상기 마이크로 작업 각각의 사이즈는 각각의 마이크로 작업이 상기 할당된 시간 내에 실행을 완료할 것으로 예상되도록 선택되는 것인, 단계; 및
    상기 각각의 마이크로 작업을 각자의 마이크로 작업에 대해 할당된 시간 내 에 완료하도록 실행시키는 단계로서, 상기 각각의 마이크로 작업은 상기 각자의 마이크로 작업에 대해 할당된 시간의 종료 이전에 상기 리소스의 소유권을 양도하는 것인, 단계를 더 포함하는 기계 구현 방법.
  15. 청구항 13에 있어서,
    상기 각각의 마이크로 작업을 실행시키는 단계는 상기 컴퓨터 작업이 완료하도록 하는 것인 기계 구현 방법.
  16. 청구항 13에 있어서,
    상기 마이크로 작업을 완료하도록 실행시키는 단계는,
    상기 마이크로 작업을 운용하는데 필요한 하나 이상의 리소스가 하나 이상의 유휴 기준에 따르는지의 여부를 판정하는 단계; 및
    상기 마이크로 작업을 운용하는데 필요한 하나 이상의 리소스의 이용률이 하나 이상의 유휴 기준을 따른다는 판정에 응답하여, 상기 마이크로 작업을 상기 할당된 시간 내에 완료하도록 실행시키는 단계를 포함하는 것인, 기계 구현 방법.
  17. 청구항 13에 있어서,
    상기 마이크로 작업으로 분할하는 단계는,
    상기 할당된 시간 내에 상기 리소스를 사용하여 실행될 수 있는 상기 컴퓨터 작업의 동작의 수를 결정하는 단계; 및
    상기 컴퓨터 작업으로부터 상기 동작의 수보다 작거나 상기 동작의 수와 같은 수로 분할하여 상기 마이크로 작업을 형성하는 단계를 포함하는 것인, 기계 구현 방법.
  18. 청구항 13에 있어서,
    상기 마이크로 작업은 스레드의 일부분을 포함하는 것인 기계 구현 방법.
  19. 청구항 13에 있어서,
    상기 할당된 시간은 퀀텀인 것인 기계 구현 방법.
  20. 기계 구현 방법으로서,
    코드 부분에 리소스의 소유권이 주어지는 동안의 시간량을 할당하는 운영 시스템의 제어 하에 실행할 컴퓨터 작업을 복수의 마이크로 작업으로 나누는 단계로서, 상기 컴퓨터 작업을 나누는 단계는 상기 컴퓨터 작업에 리소스의 소유권이 주어지는 동안의 시간량에 기초하여 상기 마이크로 작업의 사이즈를 선택하는 단계를 포함하는 것인, 단계; 및
    기간에 걸쳐 상기 컴퓨터 작업의 실행을 분배(spread)하는 단계를 포함하는 기계 구현 방법.
  21. 청구항 20에 있어서,
    상기 컴퓨터 작업의 실행을 분배하는 단계는 상기 컴퓨터 작업의 2개의 연속하는 마이크로 작업들의 실행 사이에 대기할 시간 길이를 결정하는 단계를 포함하는 것인 기계 구현 방법.
  22. 청구항 21에 있어서,
    상기 시간 길이를 결정하는 단계는 상기 컴퓨터 작업이 나누어지는 마이크로 작업의 수 및 상기 컴퓨터 작업이 분배되어질 기간에 기초하는 것인 기계 구현 방법.
  23. 청구항 20에 있어서,
    상기 기간에 걸쳐 상기 컴퓨터 작업의 실행을 분배하는 단계는,
    특정 마이크로 작업을 운용하는데 필요한 하나 이상의 리소스가 하나 이상의 유휴 기준에 따르는지의 여부를 판정하는 단계; 및
    상기 특정 마이크로 작업을 운용하는데 필요한 하나 이상의 리소스의 이용률이 하나 이상의 유휴 기준을 따른다는 판정에 응답하여, 상기 특정 마이크로 작업을 상기 할당된 시간 내에 완료하도록 실행시키는 단계를 포함하는 것인 기계 구현 방법.
  24. 청구항 21에 있어서,
    상기 컴퓨터 작업의 실행을 분배하는 단계는 상기 컴퓨터 작업의 2개의 연속 하는 마이크로 작업들의 실행 사이에 길이를 대기하는 단계를 포함하는 것인 기계 구현 방법.
  25. 청구항 21에 있어서,
    상기 컴퓨터 작업의 실행을 분배하는 단계는 상기 컴퓨터 작업의 2개의 연속하는 마이크로 작업들의 실행 사이에 다수의 동작을 대기하는 단계를 포함하는 것인 기계 구현 방법.
  26. 청구항 21에 있어서,
    상기 컴퓨터 작업의 실행을 분배하는 단계는 상기 컴퓨터 작업의 2개의 연속하는 마이크로 작업들의 실행 사이에 다수의 퀀텀을 대기하는 단계를 포함하는 것인 기계 구현 방법.
  27. 청구항 21에 있어서,
    상기 퀀텀의 적어도 둘은 서로 상이한 사이즈로 이루어지는 것인 기계 구현 방법.
  28. 청구항 21에 있어서,
    상기 마이크로 작업의 적어도 하나는 스레드의 일부분을 포함하는 것인 기계 구현 방법.
  29. 청구항 21에 있어서,
    상기 할당된 시간은 퀀텀인 것인 기계 구현 방법.
KR1020097000685A 2006-06-19 2007-06-06 컴퓨터 마이크로 작업 KR101377195B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US11/471,466 2006-06-19
US11/471,466 US8239869B2 (en) 2006-06-19 2006-06-19 Method, system and apparatus for scheduling computer micro-jobs to execute at non-disruptive times and modifying a minimum wait time between the utilization windows for monitoring the resources
US11/546,072 2006-10-10
US11/546,072 US8056083B2 (en) 2006-10-10 2006-10-10 Dividing a computer job into micro-jobs for execution

Publications (2)

Publication Number Publication Date
KR20090024255A true KR20090024255A (ko) 2009-03-06
KR101377195B1 KR101377195B1 (ko) 2014-03-25

Family

ID=38610635

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097000685A KR101377195B1 (ko) 2006-06-19 2007-06-06 컴퓨터 마이크로 작업

Country Status (8)

Country Link
EP (2) EP2413240A1 (ko)
JP (1) JP5299869B2 (ko)
KR (1) KR101377195B1 (ko)
AU (1) AU2007261611A1 (ko)
CA (1) CA2654423A1 (ko)
RU (1) RU2450330C2 (ko)
TW (1) TW200813819A (ko)
WO (1) WO2007149228A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI486048B (zh) * 2008-09-12 2015-05-21 Chi Mei Comm Systems Inc 手機圖片轉換系統及方法
JP2012003341A (ja) * 2010-06-14 2012-01-05 Toshiba Tec Corp 情報処理システム、クライアント端末装置、サーバ装置、クライアント端末プログラムおよびサーバプログラム
FR3004825B1 (fr) * 2013-04-19 2015-04-24 Krono Safe Procede d'allocation temporelle de taches permettant une recuperation d'erreur deterministe en temps reel
RU2538920C2 (ru) * 2013-05-06 2015-01-10 Общество с ограниченной ответственностью "Аби ИнфоПоиск" Способ распределения задач сервером вычислительной системы, машиночитаемый носитель информации и система для реализации способа

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0385642A (ja) * 1989-08-30 1991-04-10 Toshiba Corp Cpu負荷制御装置
DE19500957A1 (de) * 1994-07-19 1996-01-25 Bosch Gmbh Robert Verfahren zur Steuerung von technischen Vorgängen oder Prozessen
JP2001242730A (ja) * 2000-02-29 2001-09-07 Canon Inc 画像形成装置
US7234139B1 (en) * 2000-11-24 2007-06-19 Catharon Productions, Inc. Computer multi-tasking via virtual threading using an interpreter
JP2004272366A (ja) * 2003-03-05 2004-09-30 Sumitomo Rubber Ind Ltd 業務監視方法

Also Published As

Publication number Publication date
RU2008149048A (ru) 2010-07-27
AU2007261611A1 (en) 2007-12-27
AU2007261611A2 (en) 2009-07-02
RU2450330C2 (ru) 2012-05-10
EP2038747A1 (en) 2009-03-25
CA2654423A1 (en) 2007-12-27
JP5299869B2 (ja) 2013-09-25
EP2413240A1 (en) 2012-02-01
WO2007149228A1 (en) 2007-12-27
JP2009541852A (ja) 2009-11-26
TW200813819A (en) 2008-03-16
KR101377195B1 (ko) 2014-03-25

Similar Documents

Publication Publication Date Title
US9727372B2 (en) Scheduling computer jobs for execution
US8615765B2 (en) Dividing a computer job into micro-jobs
US9507631B2 (en) Migrating a running, preempted workload in a grid computing system
US9588809B2 (en) Resource-based scheduler
KR101373786B1 (ko) 자원-기반 스케쥴러
KR101377195B1 (ko) 컴퓨터 마이크로 작업
CN111989651A (zh) 在多核系统中管理内核服务的方法和装置
CN114846446A (zh) 用于分配处理器资源的方法、计算单元和视频监控装置

Legal Events

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

Payment date: 20170119

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee