KR101889749B1 - 메시지 스케줄링 방법 - Google Patents

메시지 스케줄링 방법 Download PDF

Info

Publication number
KR101889749B1
KR101889749B1 KR1020170092364A KR20170092364A KR101889749B1 KR 101889749 B1 KR101889749 B1 KR 101889749B1 KR 1020170092364 A KR1020170092364 A KR 1020170092364A KR 20170092364 A KR20170092364 A KR 20170092364A KR 101889749 B1 KR101889749 B1 KR 101889749B1
Authority
KR
South Korea
Prior art keywords
message
thread
control thread
queue
mode
Prior art date
Application number
KR1020170092364A
Other languages
English (en)
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 주식회사 티맥스데이터
Priority to KR1020170092364A priority Critical patent/KR101889749B1/ko
Priority to US15/693,732 priority patent/US10372517B2/en
Application granted granted Critical
Publication of KR101889749B1 publication Critical patent/KR101889749B1/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/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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. 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]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

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

Abstract

본 개시의 일 실시예에 따라 컴퓨팅 장치의 하나 이상의 프로세서에서 수행되는 메시지 스케줄링 방법 및 장치가 개시된다. 컴퓨팅 장치의 하나 이상의 프로세서에서 수행되는 메시지 스케줄링 방법에 관한 것으로서, 제어 스레드에서 클라이언트로부터 메시지를 수신하는 단계, 상기 제어 스레드에서 메시지의 내용에 기초하여 수신된 상기 메시지에 플래그를 부가하는 단계, 상기 제어 스레드에서 플래그가 부가된 메시지를 큐에 저장시키는 단계 및 상기 제어 스레드에서 상기 큐에 저장된 메시지를 상기 플래그에 기초하여 각각의 워커 스레드로 할당하는 단계를 포함할 수 있다.

Description

메시지 스케줄링 방법{MESSAGE SCHEDULING METHOD}
본 개시는 메시지 스케줄링 방법에 관한 것으로서, 보다 구체적으로는 데이터베이스 관리 시스템에서 메시지 스케줄링 방법에 관한 것이다.
기존 임베디드 데이터베이스로 많이 사용되는 라이브러리 방식의 DB인 SQLite는 OS 파일 락(lock)을 사용하였다. 예를 들면 클라이언트 A와 B가 있을 때, 두 클라이언트가 같은 DB에 접근하려고 하면 먼저 접근한 클라이언트 A가 DB 파일 전체에 락을 걸어 후에 접근한 클라이언트 B는 해당 DB에 접근할 수 없도록 한다. 이에 따라 데이터베이스에 대한 동시성(concurrency)이 저하된다는 문제와 더불어 파일 락을 사용하여 오버헤드가 크다는 단점이 있었다.
또한, 기존에 클라이언트 서버 모델을 사용하는 DBMS는 위와 마찬가지로 공유자원인 크리티컬 섹션에 두 클라이언트가 접근하게 되면, 먼저 접근한 클라이언트가 락을 잡는다. 락은 오버헤드가 있어 성능을 저하시킨다.
즉, 메시지를 처리하기 위하여 다수의 스레드 또는 프로세스에서 락 경쟁을 하면서 처리하기 때문에 순수하게 락 경쟁에 의해 발생하는 CPU오버헤드가 존재하였다. 이렇게 락을 자주 사용하는 구조에서는 락 오버헤드로 인한 성능상의 불이익과 더불어 사용자 프로그래밍(SQL 작성)오류로 인해 데드락이 발생하기 쉽다는 문제점이 있다.
따라서, 데이터베이스 관리 시스템에서 동시성을 향상시키고 정합성(integrity)을 유지하기 위한 방법에 대한 수요가 존재한다.
대한민국 공개특허공보 10-2009-0119032(2009.11.19)는 하드웨어 운영체제 기반 및 공유형 캐시 기반의 멀티 프로세서 시스템에 관한 발명으로, 대기 큐, 작업상태 등의 작업 정보를 제어 스레드에 저장을 하고, 저장된 정보에 우선순위를 부여하여 작업을 실행하는 시스템에 관한 구성이 개시되어 있다.
본 개시는 전술한 배경기술에 대응하여 안출된 것으로, 메시지 스케줄링 방법을 제공하기 위한 것이다.
전술한 바와 같은 과제를 실현하기 위한 본 개시의 일 실시예에 따라 컴퓨팅 장치의 하나 이상의 프로세서에서 수행되는 메시지 스케줄링 방법이 개시된다. 상기 방법은 제어 스레드에서 클라이언트로부터 메시지를 수신하는 단계, 상기 제어 스레드에서 메시지의 내용에 기초하여 수신된 상기 메시지에 플래그를 부가하는 단계, 상기 제어 스레드에서 플래그가 부가된 메시지를 큐에 저장시키는 단계 및 상기 제어 스레드에서 상기 큐에 저장된 메시지를 상기 플래그에 기초하여 각각의 워커 스레드로 할당하는 단계를 포함할 수 있다.
대안적으로, 상기 메시지는 배타적으로 처리가 필요한 독점 모드 메시지 또는 병렬적 처리가 가능한 공유 모드 메시지일 수 있다.
대안적으로, 상기 플래그는 배타적으로 처리가 필요한 독점 모드 메시지 및 병렬적 처리가 가능한 공유 모드 메시지를 구분하기 위한 정보를 포함할 수 있다.
대안적으로, 상기 제어 스레드에서 메시지의 내용에 기초하여 수신된 상기 메시지에 플래그를 부가하는 단계는 상기 제어 스레드에서 메시지의 내용에 기초하여 해당 메시지가 배타적으로 처리되어야 하는지 병렬적으로 처리가 가능한지 여부를 판단하여 해당 메시지를 처리하기 위한 동작 모드를 판단하는 단계 및 상기 제어 스레드의 판단에 기초하여 상기 메시지에 플래그를 부가하는 단계를 포함할 수 있다.
대안적으로, 상기 독점 모드는 상기 메시지의 내용이 정합성을 위하여 배타적으로 처리되어야 하는 경우의 동작 모드로서, 상기 독점 모드 메시지가 하나의 워커 스레드에 의하여 처리되고, 상기 독점 모드 메시지의 처리가 완료된 경우에 상기 큐에 저장된 다음 메시지가 상기 워커 스레드에 의하여 처리되는 동작 모드이고, 그리고 상기 공유 모드는 상기 메시지의 내용이 병렬적으로 처리 가능한 경우의 동작 모드로서, 하나 이상의 상기 공유 모드 메시지가 하나 이상의 워커 스레드에 의하여 병렬적으로 처리되는 동작 모드일 수 있다.
대안적으로, 상기 제어 스레드에서 상기 큐에 저장된 메시지를 상기 플래그에 기초하여 각각의 워커 스레드로 할당하는 단계는 상기 제어 스레드에서 상기 큐에 저장된 메시지의 플래그에 기초하여 상기 메시지가 독점 모드 메시지인지 공유 모드 메시지인지 여부를 판단하는 단계, 상기 메시지가 상기 독점 모드 메시지인 경우, 상기 제어 스레드가 독점 모드 메시지를 하나의 워커 스레드에 할당하는 단계 및 상기 제어 스레드에서 상기 워커 스레드로부터 보고 받기까지 다음 메시지의 할당을 대기시키는 단계를 포함할 수 있다.
대안적으로, 상기 제어 스레드에서 상기 큐에 저장된 메시지를 상기 플래그에 기초하여 각각의 워커 스레드로 할당하는 단계는 상기 제어 스레드가 상기 큐에 저장된 메시지의 플래그에 기초하여 상기 메시지가 독점 모드 메시지인지 공유 모드 메시지인지 여부를 판단하는 단계, 상기 메시지가 공유 모드 메시지인 경우, 상기 제어 스레드가 상기 공유 모드 메시지를 하나의 워커 스레드에 할당하는 단계, 상기 제어 스레드는 상기 큐에 저장된 다음 메시지가 독점 모드 메시지 인지 공유 모드 메시지인지 여부를 판단하는 단계 및 상기 다음 메시지가 독점 모드 메시지인 경우, 상기 제어 스레드에서 상기 워커 스레드의 작업이 종료되기까지 상기 다음 메시지의 할당을 대기시키고, 그리고 상기 다음 메시지가 공유 모드 메시지인 경우, 상기 제어 스레드가 상기 공유 모드 메시지를 다른 워커 스레드로 할당하는 단계를 포함할 수 있다.
대안적으로, 상기 제어 스레드에서 상기 클라이언트로부터 수신한 메시지를 각각의 워크그룹에 대응하는 큐에 저장하는 단계를 포함할 수 있고, 그리고 상기 워크그룹은 정합성이 유지되어야 하는 최소단위를 말한다.
대안적으로, 제어 스레드는 상이한 워크그룹에 속하는 큐에 각각 저장된 독점 모드 메시지를 병렬적으로 워커 스레드에 할당할 수 있다.
대안적으로, 상기 제어 스레드에서 워커 스레드로부터 메시지 수행 결과를 수신하는 단계 및 상기 제어 스레드에서 수신한 상기 메시지 수행 결과를 클라이언트에게 전달하는 단계를 더 포함할 수 있다.
대안적으로, 상기 제어 스레드에서 상기 수신된 메시지를 비동기적으로 백업 데이터베이스에 업데이트하기 위해 백업 데이터베이스 큐에 상기 메시지를 저장하는 단계, 상기 제어 스레드에서 백업 데이터베이스 큐에 있는 상기 메시지를 워커 스레드로 할당하는 단계 및 상기 제어 스레드에서 상기 워커 스레드로부터 메시지 수행 결과를 수신하는 단계를 더 포함할 수 있다.
추가적으로, 본 개시의 일 실시예에 따라 메시지 스케줄링을 제공하기 위한 컴퓨팅 장치가 개시된다. 상기 장치는 클라이언트로부터 메시지를 수신하고, 그리고 메시지 내용에 기초하여 상기 메시지에 플래그를 부가하고 그리고 상기 메시지를 큐에 저장시키는 제어 스레드를 포함하고, 제어 스레드로부터 수신된 메시지를 할당 받아 상기 메시지에 따라 동작을 수행하는 워커 스레드를 포함 및 메시지 내용에 따른 상기 플래그가 부가된 메시지를 저장하는 큐를 포함할 수 있다.
또한, 본 개시의 일 실시예에 따른 인코딩된 명령들을 포함하는 컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 프로그램을 개시한다. 상기 컴퓨터 프로그램은 컴퓨터 시스템의 하나 이상의 프로세서들에 의해 실행되는 경우, 상기 하나 이상의 프로세서들로 하여금 메시지 스케줄링을 제공하기 위한 이하의 단계들을 수행하도록 하며, 상기 단계들은 제어 스레드에서 클라이언트로부터 메시지를 수신하는 단계, 상기 제어 스레드에서 메시지의 내용에 기초하여 수신된 상기 메시지에 플래그를 부가하는 단계, 상기 제어 스레드에서 플래그가 부가된 메시지를 큐에 저장시키는 단계 및 상기 제어 스레드에서 상기 큐에 저장된 메시지를 상기 플래그에 기초하여 각각의 워커 스레드로 할당하는 단계를 포함할 수 있다.
본 개시는 메시지 스케줄링 방법을 제공할 수 있다.
상기 언급된 본 개시내용의 특징들이 상세하게, 보다 구체화된 설명으로, 이하의 실시예들을 참조하여 이해될 수 있도록, 실시예들 중 일부는 첨부되는 도면에서 도시된다. 또한, 도면과의 유사한 참조번호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭하는 것으로 의도된다. 그러나 첨부된 도면들은 단지 본 개시내용의 특정한 전형적인 실시예들만을 도시하는 것일 뿐, 본 개시의 범위를 한정하는 것으로 고려되지는 않으며, 동일한 효과를 갖는 다른 실시예들이 충분히 인식될 수 있다는 점을 유의하도록 한다.
도 1은 본 개시의 일 실시예에 따른 시스템을 나타낸 구성도이다.
도 2는 본 개시의 일 실시예에 따른 컴퓨팅 장치의 프로세서에서 수행되는 메시지 스케줄링 방법을 나타내는 순서도(Flow-chart) 이다.
도 3a는 본 개시의 실시예에 따른 하나의 워크그룹에 대한 독점 모드(Exclusive Mode)의 경우 메시지를 처리하는 동작에 대한 개념도이다.
도 3b는 본 개시의 실시예에 따른 다수의 워크그룹에 대한 독점 모드(Exclusive Mode)의 경우 메시지를 처리하는 동작에 대한 개념도이다.
도 4a은 본 개시의 실시예에 따른 하나의 워크그룹에 대한 공유 모드(Shared Mode)의 경우 메시지를 처리하는 동작에 대한 개념도이다.
도 4b은 본 개시의 실시예에 따른 다수의 워크그룹에 대한 공유 모드(Shared Mode)의 경우 메시지를 처리하는 동작에 대한 개념도이다.
도 5는 본 개시의 실시예들에 따른 메시지 스케줄링 방법을 활용한 비동기적 데이터 백업 과정의 개략도이다.
도 6는 본 개시의 실시예들이 구현될 수 있는 예시적인 컴퓨팅 환경에 대한 간략하고 일반적인 개략도이다.
다양한 실시예들이 이제 도면을 참조하여 설명된다. 본 명세서에서, 다양한 설명들이 본 개시의 이해를 제공하기 위해서 제시된다. 그러나 이러한 실시예들은 이러한 구체적인 설명 없이도 실행될 수 있음이 명백하다. 다른 예들에서, 공지된 구조 및 장치들은 실시예들의 설명을 용이하게 하기 위해서 블록 다이어그램 형태로 제공된다.
본 명세서에서 사용되는 용어 "컴포넌트", "모듈", "시스템" 등은 컴퓨터-관련 엔티티, 하드웨어, 펌웨어, 소프트웨어, 소프트웨어 및 하드웨어의 조합, 또는 소프트웨어의 실행을 지칭한다. 예를 들어, 컴포넌트는 프로세서상에서 실행되는 처리과정, 프로세서, 객체, 실행 스레드, 프로그램, 및/또는 컴퓨터일 수 있지만, 이들로 제한되는 것은 아니다. 예를 들어, 컴퓨팅 장치에서 실행되는 애플리케이션 및 컴퓨팅 장치 모두 컴포넌트일 수 있다. 하나 이상의 컴포넌트는 프로세서 및/또는 실행 스레드 내에 상주할 수 있고, 일 컴포넌트는 하나의 컴퓨터 내에 로컬화될 수 있고, 또는 2개 이상의 컴퓨터들 사이에 분배될 수 있다. 또한, 이러한 컴포넌트들은 그 내부에 저장된 다양한 데이터 구조들을 갖는 다양한 컴퓨터 판독가능한 매체로부터 실행할 수 있다. 컴포넌트들은 예를 들어 하나 이상의 데이터 패킷들을 갖는 신호(예를 들면, 로컬 시스템, 분산 시스템에서 다른 컴포넌트와 상호작용하는 하나의 컴포넌트로부터 데이터 및/또는 신호를 통해 다른 시스템과 인터넷과 같은 네트워크를 통한 데이터)에 따라 로컬 및/또는 원격 처리들을 통해 통신할 수 있다.
더불어, "포함한다" 및/또는 "포함하는"이라는 용어는, 해당 특징 및/또는 구성요소가 존재함을 의미하지만, 하나 이상의 다른 특징, 구성요소 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않는 것으로 이해되어야 한다. 또한, 달리 특정되지 않거나 단수 형태를 지시하는 것으로 문맥상 명확하지 않은 경우에, 본 명세서와 청구범위에서 단수는 일반적으로 "하나 또는 그 이상"을 의미하는 것으로 해석되어야 한다.
본 개시의 목적 및 효과, 그리고 그것들을 달성하기 위한 기술적 구성들은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 본 개시를 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 개시의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 개시에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다.
그러나 본 개시는 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있다. 단지 본 실시예들은 본 개시가 완전하도록 하고, 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 개시의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 개시는 청구항의 범주에 의해 정의될 뿐이다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 본 개시의 일 실시예에 따른 시스템을 나타낸 구성도이다. 상기 도 1에 대한 설명은 도 3a, 도4a에 도시된 예시와 같은 하나의 DB 워크그룹에서의 동작에 대한 설명이고, 다수의 DB 워크그룹에 대한 설명은 도 3b, 도 4b에 대한 설명에서 자세히 후술한다.
본 개시의 일 실시예에 따르면 적어도 하나 이상의 클라이언트(110), 컴퓨팅 장치(100)가 본 개시의 시스템에 포함될 수 있다. 상기 컴퓨팅 장치(100)는 프로세서(130) 및 메모리(150)를 포함할 수 있다. 상기 프로세서(130)는 하나 이상의 제어 스레드(131) 및 하나 이상의 워커 스레드(133)를 포함할 수 있다. 또한, 상기 메모리(150)는 데이터베이스(DB), 데이터베이스 관리시스템(DataBase Management System; DBMS)(151) 및 DB 워크그룹(workgroup) 큐(queue)(153)를 포함할 수 있다.
제어 스레드(control thread)(131)는 상기 컴퓨팅 장치의 프로세서의 스레드 중 하나로서, 클라이언트로부터 수신된 메시지를 워커 스레드에 할당하여 워커 스레드가 메시지를 처리하도록 제어할 수 있다. 제어 스레드(131)는 본 개시의 일 실시예에 따라서 메시지의 할당을 제어하여 워커 스레드(133)의 동작을 제어할 수 있다.
워커 스레드(133)는 상기 컴퓨팅 장치의 프로세서의 스레드 중 하나로서, 할당된 메시지를 처리할 수 있다. 워커 스레드(133)는 하나 이상 존재할 수 있으며, 본 개시의 컴퓨팅 장치(100)의 동작 모드에 따라 복수의 워커 스레드(133)는 각각 병렬적으로 메시지를 처리할 수도 있고, 한번에 하나의 워커 스레드(133)만 하나의 메시지를 처리할 수도 있다.
프로세서(130)의 제어 스레드(131)에서 클라이언트(110)로부터 메시지를 수신할 수 있다. 상기 메시지는 배타적으로 처리가 필요한 독점 모드(Exclusive mode) 메시지 또는 병렬적 처리가 가능한 공유 모드(Shared mode) 메시지일 수 있다.
보다 구체적으로, 데이터베이스는 데이터의 정합성, 빠른 속도, 안정성이 중요하다. 이를 위해서 본 개시의 일 실시예에 따른 컴퓨팅 장치(100)는 메시지의 내용에 따라 동작 모드를 구분하여 처리방법을 달리 함으로써 효율적 처리를 도모한다. 프로세서(130)의 제어 스레드(131)는 클라이언트(110)로부터 메시지를 수신하는 경우, 메시지 내용에 기초하여 동작 모드를 구분하여 메시지를 처리할 수 있다. 상기 메시지는 데이터베이스의 내용을 쓰기(write)하는 메시지와 데이터베이스 내용을 읽기(read)하는 메시지를 포함할 수 있다. 따라서, 본 개시의 일 실시예에 따라 컴퓨팅 장치(100)는 데이터베이스의 내용을 쓰기(write)하는 메시지는 독점 모드로 진행하여 데이터의 정합성 및 안정성을 도모하고, 데이터베이스 내용을 읽기(read)하는 메시지는 공유 모드로 진행하여 병렬적 처리를 하여 빠른 처리를 도모한다.
예를 들어, 독점 모드 메시지는 데이터베이스의 내용을 쓰기(write)하는 종류의 메시지로 주로 구조화된 질의 언어(Structured Query Language; SQL)의 DML(Data Manipulation Language)중에서 insert, update, delete와 같은 데이터베이스의 내용에 수정이 이뤄지는 메시지가 이에 해당된다. 공유 모드 메시지는 데이터베이스의 내용을 읽기(read)하는 종류의 메시지로 SQL의 DML(Data Manipulation Language)중에서 select 메시지가 이에 해당한다. 상기 메시지 종류에 대한 설명은 예시일뿐, 본 개시는 이에 제한되지 않는다.
프로세서(130)의 제어 스레드(131)에서 수신된 메시지에 메시지 내용에 기초하여 플래그를 부가할 수 있다. 상기 플래그는 배타적으로 처리가 필요한 독점 모드 메시지 및 병렬적 처리가 가능한 공유 모드 메시지를 구분하기 위한 정보를 포함할 수 있다.
보다 구체적으로, 프로세서(130)의 제어 스레드(131)가 클라이언트로부터 메시지를 수신하는 경우, 제어 스레드는 수신된 메시지에 메시지 내용에 기초하여 플래그를 부가한다. 수신된 메시지에 상기 플래그를 부가하는 이유는 제어 스레드(131)가 큐에 저장된 메시지를 워커 스레드(133)로 할당할 때 메시지의 동작 모드를 구분하여 처리하기 위함이다. 상기 플래그에는 배타적으로 처리가 필요한 독점 모드 메시지 및 병렬적 처리가 가능한 공유 모드 메시지를 구분하기 위한 정보가 포함되어 있다.
상기 독점 모드는 상기 메시지의 내용이 정합성을 위하여 배타적으로 처리되어야 하는 경우의 동작 모드이다. 상기 독점 모드는 독점 모드 메시지가 하나의 워커 스레드(133)에 의하여 독점적으로 처리되고, 상기 독점 모드 메시지의 처리가 완료될 때까지 상기 큐에 저장된 다음 메시지가 워커 스레드(133)로 할당되지 않는다. 상기 워커 스레드(133)가 상기 제어 스레드(131)에 독점 모드 메시지의 처리가 완료됨을 보고하면 그 이후에 제어 스레드(131)는 다음 메시지를 워커 스레드(133)로 할당하게 된다. 즉, 독점 모드 메시지가 처리되는 동안은 한번에 하나의 메시지만 워커 스레드(133)에 의해 처리될 수 있다.
예를 들어, 컴퓨팅 장치(100)가 하나 이상의 클라이언트(110)로부터 하나 이상의 메시지를 수신한 경우, 제어 스레드(131)는 메시지 내용에 따라 insert, update, delete 또는 select 메시지임을 나타내는 플래그를 부가하여 큐(153)에 저장할 수 있다. 제어 스레드(131)가 첫번째 메시지인 insert 메시지, 다음 메시지인 select 메시지를 차례로 수신한 경우, 제어 스레드(131)는 첫번째 메시지인 insert 메시지는 독점 모드 메시지임을 나타내는 플래그를 부가하여 큐(153)에 저장시킨다. 제어 스레드(131)는 워커 스레드(133)에 insert 메시지를 할당하기 전에, 워커 스레드(133)에서 상기 insert 메시지와 동시 실행이 불가능한 다른 메시지(예를 들어, 상기 insert 메시지와 동일 워크그룹에 속한 메시지)를 실행 중인지 체크하고, 다른 메시지를 실행하지 않는 경우 큐(153)에 저장된 insert 메시지를 워커 스레드(133)에 할당 시킨다. 그리고 제어 스레드(131)는 다음 메시지인 select 메시지는 공유 모드 메시지임을 나타내는 플래그를 부가하여 큐(153)에 저장 시킨다. 이후 제어 스레드(131)는 워커 스레드(133)로부터 첫번째 메시지 처리의 완료를 보고 받은 후에 다음 메시지인 select 메시지를 워커 스레드(133)로 할당하여 처리하게 한다. 상기 독점 모드에 대한 설명은 예시일뿐, 본 개시는 이에 제한되지 않는다.
공유 모드는 상기 메시지의 내용이 병렬적으로 처리 가능한 경우의 동작 모드이다. 상기 공유 모드는 데이터의 정합성과 관계가 없는 메시지의 신속한 처리를 위하여 하나 이상의 메시지를 병렬 처리할 수 있는 동작 모드이다. 상기 공유 모드는 공유 모드 메시지가 하나의 워커 스레드(133)에 할당이 되고, 저장된 다음 공유 모드 메시지가 다른 워커 스레드(133)에 할당이 되어 상기 공유 모드 메시지를 동시에 병렬적으로 처리하는 것이다. 즉, 공유 모드 메시지의 경우는 여러 개의 워커 스레드(133)에 의해 메시지가 동시에 처리될 수 있다.
예를 들어, 컴퓨팅 장치(100)가 하나 이상의 클라이언트(110)로부터 하나 이상의 메시지를 수신한 경우, 제어 스레드(131)가 메시지 내용에 따라 insert, update, delete 메시지 또는 select 메시지임을 나타내는 플래그를 부가한다. 제어 스레드(131)에 첫번째 메시지가 select 메시지, 다음 메시지도 select 메시지를 차례로 수신된 경우, 수신된 메시지는 모두 공유 모드 메시지이다. 따라서 제어 스레드(131)는 첫번째 select 메시지를 워커 스레드(133)로 할당하고, 제어 스레드(131)는 워커 스레드(133)로부터 완료 보고를 받을 필요 없이 다음 메시지인 select 메시지를 다른 워커 스레드(133)로 할당하게 된다. 이에 따라 클라이언트(110)로부터 수신된 메시지가 하나 이상의 워커 스레드(133)에 의해 동시에 처리가 가능해짐으로써 처리속도가 향상 되게 된다. 상기 공유 모드에 대한 설명은 예시일뿐, 본 개시는 이에 제한되지 않는다.
프로세서(130)의 제어 스레드(131)는 플래그가 부가된 메시지를 큐(153)에 저장시킬 수 있다. 보다 구체적으로, 제어 스레드(131)는 플래그가 부가된 메시지를 대응되는 DB 워크그룹 큐(153)에 메시지를 받은 순서대로 저장시킬 수 있다. 큐(153)는 워크그룹에 대응하여 워크그룹 별로 존재할 수 있다. 워크그룹은 데이터 정합성이 유지되어야 하는 최소 단위일 수 있다. 워크그룹은 예를 들어, 복수의 테이블을 포함하는 하나의 데이터베이스로 구성될 수 있다. 또한, 워크그룹은 복수의 데이터베이스의 집합으로 구성될 수 있다. 본 개시의 일 실시예에서 동일한 워크그룹에서는 데이터의 정합성이 유지되어야 하고, 서로 다른 워크그룹 사이에서는 데이터 정합성의 유지가 불필요할 수 있다. 제어 스레드(131)는 메시지를 수신하여 메시지의 정보에 기초하여 해당 메시지가 어느 워크그룹에 관련한 메시지인지를 결정할 수 있고, 플래그를 부가하여 해당 워크그룹에 대응하는 큐(153)에 저장할 수 있다.
예를 들어, 제어 스레드(131)는 메시지 정보에 기초하여 해당 메시지가 목적하는 데이터베이스를 식별할 수 있고, 이에 따라 식별된 워크그룹 큐(153)에 해당 메시지를 저장시킬 수 있다. 상기 예시는 본 개시를 설명하기 위한 예시일 뿐, 본 개시는 이에 제한되지 않는다.
프로세서(130)의 제어 스레드(131)는 상기 큐에 저장된 메시지를 상기 플래그에 기초하여 각각의 워커 스레드(133)로 할당할 수 있다. 상기 제어 스레드(131)가 각각의 워커 스레드(133)로 할당할 때, 제어 스레드(131)에서 상기 큐에 저장된 메시지의 플래그에 기초하여 상기 메시지가 독점 모드 메시지인지 공유 모드 메시지인지 여부를 판단하고 이에 기초하여 워커 스레드(133)에 할당할 수 있다.
상기 메시지가 상기 독점 모드 메시지인 경우, 상기 제어 스레드(131)는 독점 모드 메시지를 하나의 워커 스레드(133)에 할당할 수 있다. 상기 제어 스레드(131)는 상기 워커 스레드(133)로부터 상기 할당된 메시지 처리의 완료를 보고 받기까지 다음 메시지의 할당을 대기할 수 있다. 또한, 제어 스레드(131)는 독점 모드 메시지를 할당하고자 하는 경우에 해당 독점 모드 메시지에 대응하는 워크그룹의 메시지(예를 들어, 현재 워크그룹1에 대한 독점 모드 메시지를 할당하고자 하는 경우에, 워크그룹1에 대한 이전 독점 모드 메시지가 워커 스레드에서 처리중인 경우)가 워커 스레드(133)에서 처리 중인 경우, 처리 완료를 기다려 상기 독점 모드 메시지를 워커 스레드(133)에 할당할 수 있다. 워커 스레드(133)에서 메시지가 처리 중인 때에 독점 모드 메시지가 할당되는 경우에도 정합성에 영향이 있을 수 있기 때문에, 정합성을 유지하기 위한 필요가 있는 경우 제어 스레드(131)는 워커 스레드(133)의 메시지 처리 완료 후 독점 모드 메시지를 할당할 수 있다.
보다 구체적으로, 제어 스레드(131)가 큐에 저장된 메시지를 플래그에 기초하여 워커 스레드(133)로 할당할 때, 제어 스레드(131)는 메시지에 부가된 플래그에 기초하여 메시지가 독점 모드 메시지인지 공유 모드 메시지인지 여부를 판단할 수 있다. 메시지가 독점 모드 메시지인 경우, 상기 제어 스레드(131)는 독점 모드 메시지를 하나의 워커 스레드(133)에 할당을 할 수 있다. 상기 제어 스레드(131)에서 상기 할당된 메시지의 처리의 완료를 상기 할당 받은 워커 스레드(133)로부터 보고 받기까지 다른 워커 스레드(133)에 다음 메시지의 할당을 대기할 수 있다. 상기 워커 스레드(133)는 다음 메시지 할당을 대기하는 동안 상기 제어 스레드(131)는 미리 다음 메시지가 독점 모드 메시지인지 공유 모드 메시지인지 여부를 판단할 수 있고 또는 할당 받은 상기 워커 스레드(133)로부터 메시지 처리의 완료를 보고 받은 후, 독점 모드 메시지인지 공유 모드 메시지인지 여부를 판단할 수도 있다.
예를 들어, 수신된 메시지의 내용이 DML 중에서 insert, update, delete와 같은 데이터베이스의 내용에 수정이 이뤄지는 메시지인 경우 독점 모드로 동작할 수 있다. 이 경우 제어 스레드(131)는 insert, update, delete와 같은 메시지를 하나의 워커 스레드(133)로 할당을 하고 제어 스레드(131)가 워커 스레드(133)로부터 상기 할당된 메시지 처리의 완료를 보고 받기까지 다음 메시지의 할당을 대기하는 동안 메시지에 부가된 플래그에 기초하여 메시지의 동작 모드를 판단할 수도 있고 또는 제어 스레드(131)가 워커 스레드(133)로부터 상기 할당된 메시지 처리의 완료를 보고 받은 후 메시지의 동작 모드를 판단할 수도 있다. 상기 예시는 본 개시를 설명하기 위한 예시일 뿐, 본 개시는 이에 제한되지 않는다.
상기 메시지가 상기 공유 모드 메시지인 경우, 상기 제어 스레드(131)는 상기 공유 모드 메시지를 하나의 워커 스레드(133)에 할당할 수 있다. 상기 제어 스레드(131)는 상기 큐에 저장된 다음 메시지가 독점 모드 메시지인지 공유 모드 메시지인지 여부를 판단할 수 있다. 상기 다음 메시지가 독점 모드 메시지인 경우, 상기 제어 스레드(131)에서 상기 워커 스레드(133)의 작업이 종료되기까지 상기 다음 메시지의 할당을 대기시키고, 그리고 상기 다음 메시지가 공유 모드 메시지인 경우, 상기 제어 스레드(131)는 다음 메시지를 공유 모드인 상기 메시지의 처리 완료 여부와 무관하게 다른 워커 스레드(133)로 할당할 수 있다.
예를 들어, 수신된 메시지의 내용이 DML 중에서 데이터베이스의 읽기 전용 메시지인 select 메시지인 경우 공유 모드로 동작할 수 있다. 이 경우 상기 제어 스레드(131)는 select 메시지를 하나의 상기 워커 스레드(133)로 할당할 수 있다. 상기 제어 스레드(131)는 상기 큐에 저장된 다음 메시지가 독점 모드 메시지인지 공유 모드 메시지인지 여부를 판단할 수 있다. 상기 다음 메시지가 데이터베이스의 내용에 수정이 이뤄지는 독점 모드 메시지인 경우(즉 독점 모드 메시지), 상기 제어 스레드(131)는 상기 워커 스레드(133)의 작업이 종료되기까지 상기 다음 메시지의 할당을 대기시키고, 그리고 상기 다음 메시지가 공유 모드 메시지인 경우, 상기 제어 스레드(131)는 상기 공유 모드 메시지를 다른 워커 스레드(133)로 할당할 수 있다. 상기 예시는 본 개시를 설명하기 위한 예시일 뿐, 본 개시는 이에 제한되지 않는다.
메모리(150)는 본 개시의 일 실시예에 따라 컴퓨팅 장치(100)가 메시지 스케줄링 방법을 제공하기 위해 필요한 명령 및 정보들을 저장할 수 있다. 상기 메모리(150)는 데이터베이스 관리 시스템(DataBase Management System; DBMS)(151), DB 워크그룹(workgroup) 큐(queue)(153) 및 데이터베이스(DB)를 포함할 수 있다. DBMS(151)은 데이터베이스를 조작하는 별도의 소프트웨어 프로세서로서 메모리상에 로드되어 구동될 수 있다. DB 워크그룹 큐(153)는 각각의 워크그룹에 대응하며 메시지가 일시적으로 저장될 수 있는 저장 공간을 포함한다. 데이터베이스(DB)는 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합을 의미한다. 상기 데이터베이스(DB)는 상기 메모리(150)에 위치할 수도 있으며, 외부 장치에 위치할 수도 있다.
상기 메모리(150)는 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등), 램(Random Access Memory, RAM), SRAM(Static Random Access Memory), 롬(Read-Only Memory, ROM), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), 자기 메모리, 자기 디스크, 광디스크 중 적어도 하나의 타입의 저장매체를 포함할 수 있으나 본 개시는 이에 제한되지 않는다.
본 개시의 일 실시예에 따르면, 메시지 내용에 따라 동작모드를 달리하여 메시지를 스케줄링하게 되면, 메시지를 받아 실행하는 워커 스레드(133)는 공유 자원에 대해 락을 잡지 않고 수행할 수 있다. 이로써, DB로 접근시 락 경쟁으로 인한 CPU 오버헤드가 발생하지 않는다. 이것은 임베디드 시스템이나 계산 성능이 낮은 개인용 PC에서 성능 향상에 도움을 줄 수 있으며, 또한 락의 경쟁으로 인한 데드락이 발생할 경우의 수를 원천 차단함으로써 DB 안정성을 도모할 수 있다.
도 2는 본 개시의 일 실시예에 따른 컴퓨팅 장치의 프로세서에서 수행되는 메시지 스케줄링 방법을 나타내는 순서도(Flow-chart) 이다. 상기 도 2에 대한 설명은 도 3a, 도4a에 도시된 예시와 같은 하나의 DB 워크그룹에서의 동작에 대한 설명이고, 다수의 DB 워크그룹에 대한 설명은 도 3b, 도 4b에 대한 설명에서 자세히 후술한다.
프로세서(130)의 제어 스레드(131)는 클라이언트(110)로부터 메시지를 수신할 수 있다(210). 수신된 상기 메시지는 배타적으로 처리가 필요한 독점 모드(Exclusive mode) 메시지 또는 병렬적 처리가 가능한 공유 모드(Shared mode) 메시지일 수 있다.
보다 구체적으로, 데이터베이스의 정합성, 안정성을 위하여 본 개시의 일 실시예에 따른 컴퓨팅 장치(100)는 메시지의 내용에 따라 동작 모드를 구분하여 처리방법을 달리 함으로써 효율적 처리를 도모한다. 프로세서(130)의 제어 스레드(131)가 클라이언트(110)로부터 메시지를 수신하는 경우, 메시지 내용에 기초하여 동작 모드를 구분하여 메시지를 처리할 수 있다. 상기 메시지는 데이터베이스의 내용을 쓰기(write)하는 메시지와 데이터베이스 내용을 읽기(read)하는 메시지를 포함할 수 있다. 따라서, 본 개시의 일 실시예에 따라 컴퓨팅 장치(100)는 데이터베이스의 내용을 쓰기(write)하는 메시지는 독점 모드로 진행하여 데이터의 정합성 및 안정성을 도모하고, 데이터베이스 내용을 읽기(read)하는 메시지는 공유 모드로 진행하여 병렬적 처리를 하여 빠른 처리를 도모한다.
예를 들어, 독점 모드 메시지는 데이터베이스의 내용을 쓰기(write)하는 종류의 메시지로 주로 구조화된 질의 언어(Structured Query Language; SQL)의 DML(Data Manipulation Language)중에서 insert, update, delete와 같은 데이터베이스에 수정이 이뤄지는 메시지가 이에 해당된다. 공유 모드 메시지는 데이터베이스의 내용을 읽기(read)하는 종류의 메시지로 SQL의 DML(Data Manipulation Language)중에서 select 메시지가 이에 해당한다. 상기 메시지 종류에 대한 설명은 예시일뿐, 본 개시는 이에 제한되지 않는다.
프로세서(130)의 제어 스레드(131)에서 메시지의 내용에 기초하여 수신된 상기 메시지에 플래그를 부가할 수 있다(230). 상기 플래그는 배타적으로 처리가 필요한 독점 모드 메시지 및 병렬적 처리가 가능한 공유 모드 메시지를 구분하기 위한 정보를 포함할 수 있다.
보다 구체적으로, 프로세서(130)의 제어 스레드(131)가 클라이언트(110)로부터 메시지를 수신하는 경우, 제어 스레드(131)는 메시지 내용에 기초하여 수신된 메시지에 플래그를 부가할 수 있다. 수신된 메시지에 상기 플래그를 부가하는 이유는 제어 스레드(131)가 큐에 저장된 메시지를 워커 스레드(133)로 할당할 때 메시지의 동작 모드를 구분하여 처리하기 위함이다. 상기 플래그에는 배타적으로 처리가 필요한 독점 모드 메시지 및 병렬적 처리가 가능한 공유 모드 메시지를 구분하기 위한 정보가 포함되어 있다.
상기 독점 모드는 상기 메시지의 내용이 정합성을 위하여 배타적으로 처리되어야 하는 경우의 동작 모드이다. 상기 독점 모드는 독점 모드 메시지가 하나의 워커 스레드(133)에 의하여 독점적으로 처리되고, 상기 독점 모드 메시지의 처리가 완료될 때까지 상기 큐에 저장된 다음 메시지가 워커 스레드(133)로 할당되지 않는다. 상기 워커 스레드(133)가 상기 제어 스레드(131)에 독점 모드 메시지의 처리가 완료됨을 보고하면 그 이후에 제어 스레드(131)는 다음 메시지를 워커 스레드(133)로 할당하게 된다. 즉, 독점 모드 메시지가 처리되는 동안은 한번에 하나의 메시지만 워커 스레드(133)에 의해 처리될 수 있다.
예를 들어, 컴퓨팅 장치(100)가 하나 이상의 클라이언트(110)로부터 하나 이상의 메시지를 수신한 경우, 제어 스레드(131)는 메시지 내용에 따라 insert, update, delete 또는 select 메시지임을 나타내는 플래그를 부가하여 큐(153)에 저장할 수 있다. 제어 스레드(131)가 첫번째 메시지인 insert 메시지, 다음 메시지인 select 메시지를 차례로 수신한 경우, 제어 스레드(131)가 첫번째 메시지인 insert 메시지를 독점 모드 메시지임을 나타내는 플래그를 부가하여 큐(153)에 저장 시킨다. 제어 스레드(131)가 워커 스레드(133)로 insert 메시지를 할당하기 전에 워커 스레드(133)에서 상기 insert 메시지와 동시 실행이 불가능한 다른 메시지(예를 들어, 상기 insert 메시지와 동일 워크그룹에 속한 메시지)를 실행 중인지 체크하고, 다른 메시지를 실행하지 않는 경우 큐(153)에 저장된 insert 메시지를 워커 스레드(133)에 할당 시킨다. 그리고 제어 스레드(131)는 다음 메시지인 select 메시지는 공유 모드 메시지임을 나타내는 플래그를 부가하여 큐(153)에 저장시킨다. 이후 제어 스레드(131)는 워커 스레드(133)로부터 첫번째 메시지 처리의 완료를 보고 받은 후에 다음 메시지인 select 메시지를 워커 스레드(133)로 할당하여 처리하게 한다. 상기 독점 모드에 대한 설명은 예시일뿐, 본 개시는 이에 제한되지 않는다.
공유 모드는 상기 메시지의 내용이 병렬적으로 처리 가능한 경우의 동작 모드이다. 상기 공유 모드는 데이터의 정합성과 관계가 없는 메시지이므로 신속한 처리를 위하여 하나 이상의 메시지를 병렬 처리할 수 있는 동작 모드이다. 상기 공유 모드는 공유 모드 메시지가 하나의 워커 스레드(133)에 할당이 되고, 저장된 다음 공유 모드 메시지가 다른 워커 스레드(133)에 할당이 되어 상기 공유 모드 메시지를 동시에 병렬적으로 처리하는 것이다. 즉, 공유 모드 메시지의 경우는 여러 개의 워커 스레드(133)에 의해 메시지가 동시에 처리될 수 있다.
예를 들어, 컴퓨팅 장치(100)가 하나 이상의 클라이언트(110)로부터 하나 이상의 메시지를 수신한 경우, 제어 스레드(131)가 메시지 내용에 따라 insert, update, delete 메시지 또는 select 메시지임을 나타내는 플래그를 부가한다. 제어 스레드(131)에 첫번째 메시지가 select 메시지, 다음 메시지도 select 메시지를 차례로 수신된 경우, 수신된 메시지는 모두 공유 모드 메시지이다. 따라서 제어 스레드(131)는 첫번째 select 메시지를 워커 스레드(133)로 할당하고, 제어 스레드(131)는 워커 스레드(133)로부터 완료 보고를 받을 필요 없이 다음 메시지인 select 메시지를 다른 워커 스레드(133)로 할당하게 된다. 이에 따라 클라이언트(110)로부터 수신된 메시지가 하나 이상의 워커 스레드(133)에 의해 동시에 처리가 가능해짐으로써 처리속도가 향상 되게 된다. 상기 공유 모드에 대한 설명은 예시일뿐, 본 개시는 이에 제한되지 않는다.
프로세서(130)의 제어 스레드(131)는 플래그가 부가된 메시지를 큐(153)에 저장시킬 수 있다(250). 보다 구체적으로, 제어 스레드(131)는 플래그가 부가된 메시지를 해당하는 DB 워크그룹 큐(153)에 메시지를 받은 순서대로 저장시킬 수 있다. 큐(153)는 워크그룹에 대응하여 워크그룹 별로 존재할 수 있다. 워크그룹은 데이터 정합성이 유지되어야 하는 최소 단위일 수 있다. 워크그룹은 예를 들어, 복수의 테이블을 포함하는 하나의 데이터베이스로 구성될 수 있다. 또한, 워크그룹은 복수의 데이터베이스의 집합으로 구성될 수 있다. 본 개시의 일 실시예에서 동일한 워크그룹에서는 데이터의 정합성이 유지되어야 하고, 서로 다른 워크그룹 사이에서는 데이터 정합성의 유지가 불필요할 수 있다. 제어 스레드(131)는 메시지를 수신하여 메시지의 정보에 기초하여 해당 메시지가 어느 워크그룹에 관련한 메시지인지를 결정할 수 있고, 플래그를 부가하여 해당 워크그룹에 대응하는 큐(153)에 저장할 수 있다.
예를 들어, 제어 스레드(131)는 메시지 정보에 기초하여 해당 메시지가 목적하는 데이터베이스를 식별할 수 있고, 이에 따라 식별된 워크그룹 큐(153)에 해당 메시지를 저장시킬 수 있다. 상기 예시는 본 개시를 설명하기 위한 예시일 뿐, 본 개시는 이에 제한되지 않는다.
프로세서(130)의 제어 스레드(131)에서 상기 큐에 저장된 메시지를 상기 플래그에 기초하여 각각의 워커 스레드(133)로 할당할 수 있다(270). 상기 제어 스레드(131)가 각각의 워커 스레드(133)로 할당할 때, 제어 스레드(131)는 상기 큐에 저장된 메시지의 플래그에 기초하여 상기 메시지가 독점 모드 메시지인지 공유 모드 메시지인지 여부를 판단하고, 이에 기초하여 메시지를 할당할 수 있다.
상기 메시지가 상기 독점 모드 메시지인 경우, 상기 제어 스레드(131)는 독점 모드 메시지를 하나의 워커 스레드(133)에 할당할 수 있다. 상기 제어 스레드(131)는 상기 워커 스레드(133)로부터 상기 할당된 메시지 처리의 완료를 보고 받기까지 다음 메시지의 할당을 대기할 수 있다. 또한, 제어 스레드(131)는 독점 모드 메시지를 할당하고자 하는 경우에 해당 독점 모드 메시지에 대응하는 워크그룹의 메시지가 워커 스레드(133)에서 처리 중인 경우, 처리 완료를 기다려 상기 독점 모드 메시지를 워커 스레드(133)에 할당할 수 있다. 워커 스레드(133)에서 메시지가 처리 중인 때에 독점 모드 메시지가 할당되는 경우에도 정합성에 영향이 있을 수 있기 때문에, 정합성을 유지하기 위한 필요가 있는 경우 제어 스레드(131)는 워커 스레드(133)의 메시지 처리 완료 후 독점 모드 메시지를 할당할 수 있다.
보다 구체적으로, 제어 스레드(131)는 메시지에 부가된 플래그에 기초하여 메시지가 독점 모드 메시지인지 공유 모드 메시지인지 여부를 판단할 수 있다. 상기 메시지가 상기 독점 모드 메시지인 경우, 상기 제어 스레드(131)는 독점 모드 메시지를 하나의 워커 스레드(133)에 할당할 수 있다. 상기 제어 스레드(131)는 상기 워커 스레드(133)로부터 상기 할당된 메시지 처리의 완료를 보고 받기까지 다음 메시지의 할당을 대기할 수 있다. 또한, 제어 스레드(131)는 독점 모드 메시지를 할당하고자 하는 경우에 해당 독점 모드 메시지에 대응하는 워크 그룹의 메시지가 워커 스레드(133)에서 처리 중인 경우, 처리 완료를 기다려 상기 독점 모드 메시지를 워커 스레드에 할당할 수 있다. 워커 스레드(133)에서 메시지가 처리 중인 때에 독점 모드 메시지가 할당되는 경우에도 정합성에 영향이 있을 수 있기 때문에, 정합성을 유지하기 위한 필요가 있는 경우 제어 스레드(131)는 워커 스레드(133)의 메시지 처리 완료 후 독점 모드 메시지를 할당할 수 있다.
예를 들어, 수신된 메시지의 내용이 DML(Data Manipulation Language)중에서 insert, update, delete와 같은 데이터베이스의 내용에 수정이 이뤄지는 메시지인 경우 독점 모드로 동작할 수 있다. 이 경우 제어 스레드(131)는 insert 메시지를 하나의 워커 스레드(133)로 할당을 하고 제어 스레드(131)가 워커 스레드(133)로부터 메시지 처리 완료를 보고 받기까지 다음 메시지의 할당을 대기하는 동안 메시지에 부가된 플래그에 기초하여 메시지의 동작 모드를 판단할 수도 있고 또는 제어 스레드(131)가 워커 스레드(133)로부터 메시지 처리의 완료를 보고 받은 후 메시지의 동작 모드를 판단할 수도 있다. 상기 예시는 본 개시를 설명하기 위한 예시일 뿐, 본 개시는 이에 제한되지 않는다.
상기 메시지가 상기 공유 모드 메시지인 경우, 상기 제어 스레드(131)는 상기 공유 모드 메시지를 하나의 워커 스레드(133)에 할당할 수 있다. 상기 제어 스레드(131)는 상기 큐에 저장된 다음 메시지가 독점 모드 메시지인지 공유 모드 메시지인지 여부를 판단할 수 있다. 상기 다음 메시지가 독점 모드 메시지인 경우, 상기 제어 스레드(131)에서 상기 워커 스레드(133)의 작업이 종료되기까지 상기 다음 메시지의 할당을 대기시키고, 그리고 상기 다음 메시지가 공유 모드 메시지인 경우, 상기 제어 스레드(131)는 상기 다음 메시지를 공유 모드인 상기 메시지의 처리 완료 여부와 무관하게 다른 워커 스레드(133)로 할당할 수 있다.
예를 들어, 수신된 메시지의 내용이 DML 중에서 데이터베이스의 읽기 전용 메시지인 select 메시지인 경우 공유 모드로 동작할 수 있다. 이 경우 상기 제어 스레드(131)는 select 메시지를 하나의 상기 워커 스레드(133)로 할당할 수 있다. 상기 제어 스레드(131)는 상기 큐에 저장된 다음 메시지가 독점 모드 메시지인지 공유 모드 메시지인지 여부를 판단할 수 있다. 상기 다음 메시지가 데이터베이스의 내용에 수정이 이뤄지는 독점 모드 메시지인 경우, 상기 제어 스레드(131)는 상기 워커 스레드(133)의 작업이 종료되기 까지 상기 다음 메시지의 할당을 대기시키고, 그리고 상기 다음 메시지가 공유 모드 메시지인 경우, 상기 제어 스레드(131)는 상기 공유 모드 메시지를 다른 워커 스레드(133)로 할당할 수 있다. 상기 예시는 본 개시를 설명하기 위한 예시일 뿐, 본 개시는 이에 제한되지 않는다.
본 개시의 일 실시예에 따르면, 메시지 내용에 따라 동작모드를 달리하여 메시지를 스케줄링하게 되면, 메시지를 받아 실행하는 워커 스레드(133)는 공유 자원에 대해 락을 잡지 않고 수행할 수 있다. 이로써, DB로 접근시 락 경쟁으로 인한 CPU 오버헤드가 발생하지 않는다. 이것은 임베디드 시스템이나 계산 성능이 낮은 개인용 PC에서 성능 향상에 도움을 줄 수 있으며, 또한 락의 경쟁으로 인한 데드락이 발생할 경우의 수를 원천 차단함으로써 DB 안정성을 도모할 수 있다.
도 3a는 본 개시의 실시예에 따른 하나의 워크그룹에 대한 독점 모드(Exclusive Mode)의 경우 메시지를 처리하는 동작에 대한 개념도이다.
상기 컴퓨팅 장치(100)는 클라이언트 A(310) 및 클라이언트 B(311)로부터 메시지를 수신할 수 있다. 상기 메시지는 배타적으로 처리가 필요한 독점 모드 메시지 또는 병렬적으로 처리가 가능한 공유 모드 메시지일 수 있다. 예를 들어, 상기 독점 모드 메시지는 데이터베이스의 내용이 수정되는 insert, update 또는 delete 중 하나의 메시지를 포함할 수 있고, 상기 공유 모드 메시지는 select 메시지를 포함될 수 있다. 상기 예시는 본 개시를 설명하기 위한 예시일 뿐, 본 개시는 이에 제한되지 않는다.
상기 클라이언트 A(310)는 insert, select를 차례로 컴퓨팅 장치(100)에 요청하고, 상기 클라이언트 B(311)는 insert를 요청할 수 있다. 상기 컴퓨팅 장치(100)의 제어 스레드(131)는 각각의 요청 메시지를 수신하여 각각의 메시지가 목적하는 워크그룹을 식별하고, 식별된 워크그룹에 대응하는 큐에 각각의 메시지를 각각의 큐에 저장시킬 수 있다.
예를 들어, 도 3a의 예시에서 DB 워크그룹 큐(303)에 클라이언트 A(310)의 insert 메시지, 클라이언트 B(311)의 insert 메시지, 클라이언트 A(310)의 select 메시지가 순서대로 저장될 수 있다. 상기 DB 워크그룹 큐(303)는 클라이언트 A(310), B(311)가 접근하려고 하는 DB(304)에 대한 큐이다. 상기 DB 워크그룹 큐(303)의 첫번째 저장된 메시지는 클라이언트 A(310)로부터 받은 insert 메시지이며, 상기 메시지는 독점 모드(Exclusive mode)로 동작하는 메시지이다. 상기 제어 스레드(131)는 하나의 제1 워커 스레드(313)로 상기 insert 메시지를 할당하여 제1 워커 스레드(313)가 메시지를 처리하도록 할 수 있다. 상기 제1 워커 스레드(313)의 실행이 완료될 때까지 다른 메시지들(예를 들어, 클라이언트 B의 insert 메시지, 클라이언트 A의 select 메시지)은 대기시킬 수 있다. 이후 상기 제1 워커 스레드(313)는 상기 메시지 처리의 실행 완료를 상기 제어 스레드(131)에 보고할 수 있다. 또한, 상기 제어 스레드(131)는 다음 메시지인 클라이언트 B(311)로부터 받은 insert 메시지를 하나의 워커 스레드(제1 워커 스레드 및 제2 워커 스레드 중 하나)로 할당할 수 있다. 상기 예시는 본 개시를 설명하기 위한 예시일 뿐, 본 개시는 이에 제한되지 않는다.
도 3b는 본 개시의 실시예에 따른 다수의 워크그룹에 대한 독점 모드(Exclusive Mode)의 경우 메시지를 처리하는 동작에 대한 개념도이다.
본 개시의 일 실시예에서 시스템에 다수의 워크그룹이 존재할 수 있다. 워크그룹은 데이터의 정합성이 유지되어야 하는 최소 단위를 말한다. 상기 제어 스레드(131)는 상기 클라이언트로부터 수신한 메시지를 메시지 정보에 기초하여 각각의 워크그룹(예를 들어, 도 3b의 305, 307 또는 309)에 대응하는 큐에 저장할 수 있다. 즉, 다른 워크그룹이라 함은 다른 데이터베이스를 의미한다. 예를 들어, 한 개의 데이터베이스는 한 개의 워크그룹을 의미하며, 하나의 워크그룹은 여러 개의 테이블(table)을 포함할 수 있다.
제어 스레드(131)는 상기 클라이언트(110)로부터 수신한 메시지를 각각의 워크그룹에 대응하는 큐에 저장할 수 있다. 상기 제어 스레드(131)는 상기 클라이언트(110)로부터 메시지를 수신할 수 있고, 상기 제어 스레드(320)는 수신된 메시지의 정보에 따라 해당하는 워크그룹으로 할당할 수 있다. 제어 스레드(131)는 메시지 정보에 기초하여 해당 메시지가 목적하는 데이터베이스(즉 워크그룹)를 식별할 수 있고, 식별된 워크그룹 큐에 해당 메시지를 저장시킬 수 있다. 예를 들어, 제어 스레드(131)는 클라이언트 A(310)로부터 받은 메시지가 제1 DB에 관한 메시지이면 제1 DB 워크그룹 큐(305)에 메시지를 저장할 수 있다. 또한, 제어 스레드(131)는 클라이언트 B(311)로부터 받은 메시지가 제3 DB에 관한 메시지이면 제3 DB 워크그룹 큐(309)에 메시지를 저장할 수 있다. 상기 예시는 본 개시를 설명하기 위한 예시일 뿐, 본 개시는 이에 제한되지 않는다.
또한, 상기 제어 스레드(131)는 상이한 워크그룹에 속하는 큐에 각각 저장된 독점 모드 메시지를 병렬적으로 워커 스레드에 할당할 수 있다. 상이한 워크그룹간에는 정합성을 유지할 필요가 없기 때문이다. 보다 구체적으로, 워크그룹이 서로 상이한 경우, 제어 스레드(131)는 각각의 큐에 저장된 독점 모드 메시지를 병렬적으로 워커 스레드(360, 370, 380)에 할당할 수 있다. 따라서 워크그룹이 상이한 경우 메시지 내용이 독점 모드 메시지인지 공유 모드 메시지인지 여부에 관계없이 제어 스레드(131)는 메시지를 병렬적으로 워커 스레드(360, 370, 380)에 할당할 수 있고, 메시지를 할당 받은 각각의 워커 스레드는 동시에 작동 가능할 수 있다.
예를 들어, 도 3b의 예시는, 제1 워크그룹 큐(305)에 클라이언트 B(311)의 insert 메시지, 클라이언트 A(310)의 insert 메시지, 클라이언트 A(310)의 select 메시지가 저장되고, 제2 워크그룹 큐(307)에 클라이언트 A(310)의 insert 메시지, 클라이언트 B(311)의 insert 메시지, 클라이언트 A(310)의 select 메시지가 순서대로 저장된 경우일 수 있다. 상기 제1 워크그룹 큐(305)에 저장된 메시지와 제2 워크그룹 큐(307)에 저장된 메시지는 서로 상이한 워크그룹에 대한 메시지이므로, 상기 제1 워크그룹 큐(305)에 저장된 클라이언트 B(311)의 insert 메시지와 제2 워크그룹 큐(307)에 저장된 클라이언트 A(310)의 insert 메시지는 서로 정합성을 유지할 필요가 없다. 따라서 상기 제어 스레드(131)는 제1 워크그룹 큐(305)에 저장된 클라이언트 B(311)의 insert 메시지와 제2 워크그룹 큐(307)에 저장된 클라이언트 A(310)의 insert 메시지를 동시에 워커 스레드(360, 370)에 할당할 수 있다. 즉, 제1 워크그룹 큐(305)에 저장된 메시지와 제2 워크그룹 큐(307)에 저장된 메시지는 각각 병렬적으로 워커 스레드에 할당될 수 있다. 상기 예시는 본 개시를 설명하기 위한 예시일 뿐, 본 개시는 이에 제한되지 않는다.
도 4a은 본 개시의 실시예에 따른 하나의 워크그룹에 대한 공유 모드(Shared Mode)의 경우 메시지를 처리하는 동작에 대한 개념도이다.
상기 컴퓨팅 장치(100)는 클라이언트 A(310) 및 클라이언트 B(311)로부터 메시지를 수신할 수 있다. 수신된 상기 메시지는 배타적으로 처리가 필요한 독점 모드 메시지 또는 병렬적으로 처리가 가능한 공유 모드 메시지일 수 있다. 예를 들어, 상기 독점 모드 메시지는 insert, update, delete 중 하나의 메시지가 포함될 수 있고, 상기 공유 모드 메시지는 select 메시지가 포함될 수 있다. 상기 예시는 본 개시를 설명하기 위한 예시일 뿐, 본 개시는 이에 제한되지 않는다.
상기 클라이언트 A(310)가 select 메시지를 컴퓨팅 장치(100)에 요청하고, 상기 클라이언트 B(311)가 select 메시지를 요청할 수 있다. 상기 컴퓨팅 장치(100)의 제어 스레드(131)는 각각의 요청 메시지를 수신하여 각각의 메시지가 목적하는 워크그룹을 식별하고, 식별된 워크그룹에 대응하는 큐에 각각의 메시지를 각각의 큐에 저장시킬 수 있다.
예를 들어, 도4a의 예시에서 DB 워크그룹 큐(403)에 클라이언트 A(310)의 select 메시지, 클라이언트 B(311)의 select 메시지, 클라이언트 A(310)의 select 메시지가 순서대로 저장될 수 있다. 상기 DB 워크그룹 큐(403)는 클라이언트 A(310), B(311)가 접근하려고 하는 DB(404)에 대한 큐이다. 상기 DB 워크그룹 큐(403)의 첫번째 저장된 메시지는 클라이언트 A(310)로부터 받은 select 메시지이며, 상기 메시지는 공유 모드(Shared mode)로 동작하는 메시지이다. 상기 제어 스레드(131)는 하나의 제1 워커 스레드(413)로 상기 select 메시지를 할당하여 제1 워커 스레드(413)가 메시지를 처리하도록 할 수 있다. 전술한 독점 모드와 달리 상기 제1 워커 스레드(413)의 실행이 완료될 때까지 다른 메시지들을 대기시킬 필요없이 상기 제어 스레드(131)는 다음 메시지인 클라이언트 B(311)의 select 메시지를 제2 워커 스레드(415)로 할당할 수 있다. 즉 select 메시지는 공유 모드(shared mode)인 메시지로 동시에 여러 개의 워커 스레드에 의해 수행될 수 있다. 상기 예시는 본 개시를 설명하기 위한 예시일 뿐, 본 개시는 이에 제한되지 않는다.
도 4b은 본 개시의 실시예에 따른 다수의 워크그룹에 대한 공유 모드(Shared Mode)의 경우 메시지를 처리하는 동작에 대한 개념도이다.
본 개시의 일 실시예에 따라 다수의 워크그룹이 존재할 수 있다. 워크그룹은 데이터의 정합성이 유지되어야 하는 최소 단위를 말한다. 상기 제어 스레드(131)가 상기 클라이언트(110)로부터 수신한 메시지를 각각의 워크그룹(예를 들어, 도 4b의 405, 407 또는 409)에 대응하는 큐에 저장할 수 있다.
제어 스레드(131)는 상기 클라이언트(110)로부터 수신한 메시지를 메시지의 정보에 기초하여 각각의 워크그룹에 대응하는 큐에 저장할 수 있다. 상기 제어 스레드(131)는 상기 클라이언트(110)로부터 메시지를 수신할 수 있고, 상기 제어 스레드(131)는 수신된 메시지의 정보에 따라 해당하는 워크그룹으로 할당할 수 있다. 예를 들어, 제어 스레드(131)는 클라이언트 A(310)로부터 받은 메시지의 정보가 제1 DB에 관한 메시지이면 제1 DB 워크그룹 큐(405)로 메시지를 저장할 수 있다. 또한, 제어 스레드(131)는 클라이언트 B(311)로부터 받은 메시지의 정보가 제3 DB에 관한 메시지이면 제3 DB 워크그룹 큐(409)에 메시지를 저장할 수 있다. 상기 예시는 본 개시를 설명하기 위한 예시일 뿐, 본 개시는 이에 제한되지 않는다.
또한, 상기 제어 스레드(131)는 상이한 워크그룹에 속하는 큐에 각각 저장된 공유 모드 메시지를 병렬적으로 워커 스레드에 할당할 수 있다. 상이한 워크그룹 간에는 정합성을 유지할 필요가 없기 때문이다. 보다 구체적으로, 워크그룹이 서로 상이한 경우, 제어 스레드(131)는 각각의 큐에 저장된 공유 모드 메시지를 병렬적으로 워커 스레드(360, 370, 380)에 할당할 수 있다. 따라서 워크그룹이 상이한 경우 메시지 내용이 독점 모드 메시지인지 공유 모드 메시지인지 여부에 관계없이 제어 스레드(131)는 메시지를 병렬적으로 워커 스레드(360, 370, 380)에 할당할 수 있고, 메시지를 할당 받은 각각의 워커 스레드는 동시에 작동 가능할 수 있다.
예를 들어, 도 4b의 예시는, 제1 워크그룹 큐(405)에 클라이언트 A(310)의 select 메시지, 클라이언트 B(311)의 select 메시지, 클라이언트 A(310)의 select 메시지가 저장되고, 제3 워크그룹 큐(409)에 클라이언트 A(310)의 insert 메시지, 클라이언트 B(311)의 insert 메시지, 클라이언트 A(310)의 select 메시지가 순서대로 저장된 경우일 수 있다. 상기 제1 워크그룹 큐(405)에 저장된 메시지와 제3 워크그룹 큐(409)에 저장된 메시지는 서로 상이한 워크그룹에 대한 메시지이므로, 상기 제1 워크그룹 큐(405)에 저장된 클라이언트 A(310)의 select 메시지와 제3 워크그룹 큐(409)에 저장된 클라이언트 A(310)의 insert 메시지는 서로 정합성을 유지할 필요가 없다. 따라서 상기 제어 스레드(131)는 제1 워크그룹 큐(405)에 저장된 클라이언트 A(310)의 select 메시지와 제3 워크그룹 큐(409)에 저장된 클라이언트 A(310)의 insert 메시지를 동시에 워커 스레드(360, 370)에 할당할 수 있다. 즉, 제1 DB 워크그룹 큐(405)에 저장된 메시지와 제3 워크그룹 큐(409)에 저장된 메시지는 각각 병렬적으로 워커 스레드에 할당될 수 있다. 상기 예시는 본 개시를 설명하기 위한 예시일 뿐, 본 개시는 이에 제한되지 않는다.
본 개시의 일 실시예에 따르면, 메시지 내용에 따라 동작모드를 달리하여 메시지를 스케줄링하게 되면, 메시지를 받아 실행하는 워커 스레드(133)는 공유 자원에 대해 락을 잡지 않고 수행할 수 있다. 이로써, DB로 접근시 락 경쟁으로 인한 CPU 오버헤드가 발생하지 않는다. 이것은 임베디드 시스템이나 계산 성능이 낮은 개인용 PC에서 성능 향상에 도움을 줄 수 있으며, 또한 락의 경쟁으로 인한 데드락이 발생할 경우의 수를 원천 차단함으로써 DB 안정성을 도모할 수 있다.
도 5는 본 개시의 실시예들이 구현될 수 있는 메시지 스케줄링 방법을 활용한 비동기적 데이터 백업 과정의 개략도이다.
본 개시는 일 실시예에 따르면 상기 클라이언트(110)가 상기 프로세서에 DML을 요청(510)할 수 있다. 상기 DML에는 데이터베이스 내용의 수정을 가하는 insert, update, delete와 같은 메시지와 데이터베이스 내용을 읽기만 하는 select 메시지를 포함할 수 있다. 상기 컴퓨팅 장치(100)의 상기 프로세서(130)의 상기 제어 스레드(131)가 요청을 받아 메모리 데이터베이스(DB) 큐에 DML 메시지를 저장(520)할 수 있다. 상기 워커 스레드(133)는 메모리 데이터베이스(DB) 큐에 있는 DML 메시지를 처리(530)할 수 있다. 상기 워커 스레드(133)는 할당된 메시지의 수행의 성공, 실패 여부를 상기 제어 스레드(131)에 전달(540)할 수 있다. 상기 제어 스레드(131)는 메시지 수행여부의 결과를 상기 클라이언트(110)에게 전달(550)할 수 있다. 상기 메모리 데이터베이스(DB)는 인메모리 데이터베이스(DB)일 수 있으나 본 개시는 이에 제한되지 않는다.
또한, 상기 제어 스레드(131)는 DML 요청을 비동기적으로 백업 데이터베이스(Backup DB)에 업데이트 하기 위해서 백업 데이터베이스(Backup DB) 큐에 메시지를 저장(560)할 수 있다. 상기 워커 스레드(133)는 백업 데이터베이스(Backup DB) 큐에 있는 DML 메시지를 처리(570)할 수 있다. 상기 워커 스레드(133)가 메시지 수행의 성공, 실패 여부를 상기 제어 스레드(131)에게 전달(580)할 수 있다. 백업 데이터베이스는 디스크 데이터베이스일 수 있다.
전술한 본 개시의 일 실시예에 따라 메모리 데이터베이스에 insert, update, delete와 같은 메시지에 의해 데이터의 수정이 이루어졌을 경우 백업 데이터베이스에도 동일하게 수정하여 백업할 수 있다. 이로써, 나중에 메모리 데이터베이스와 백업 데이터베이스에 select 메시지를 통해 데이터를 조회했을 때 동일한 데이터가 있는지 확인할 수 있다. 상기 예시는 본 개시를 설명하기 위한 예시일 뿐, 본 개시는 이에 제한되지 않는다.
도 6는 본 개시의 실시예들이 구현될 수 있는 예시적인 컴퓨팅 환경에 대한 간략하고 일반적인 개략도이다.
본 개시가 일반적으로 하나 이상의 컴퓨터 상에서 실행될 수 있는 컴퓨터 실행가능 명령어와 관련하여 전술되었지만, 당업자라면 본 개시가 기타 프로그램 모듈들과 결합되어 및/또는 하드웨어와 소프트웨어의 조합으로서 구현될 수 있다는 것을 잘 알 것이다.
일반적으로, 프로그램 모듈은 특정의 태스크를 수행하거나 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조, 기타 등등을 포함한다. 또한, 당업자라면 본 개시의 방법이 단일-프로세서 또는 멀티프로세서 컴퓨터 시스템, 미니컴퓨터, 메인프레임 컴퓨터는 물론 퍼스널 컴퓨터, 핸드헬드 컴퓨팅 장치, 마이크로프로세서-기반 또는 프로그램가능 가전 제품, 기타 등등(이들 각각은 하나 이상의 연관된 장치와 연결되어 동작할 수 있음)을 비롯한 다른 컴퓨터 시스템 구성으로 실시될 수 있다는 것을 잘 알 것이다.
본 개시의 설명된 실시예들은 또한 어떤 태스크들이 통신 네트워크를 통해 연결되어 있는 원격 처리 장치들에 의해 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 둘다에 위치할 수 있다.
컴퓨터는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터에 의해 액세스 가능한 매체는 그 어떤 것이든지 컴퓨터 판독가능 매체가 될 수 있고, 이러한 컴퓨터 판독가능 매체는 휘발성 및 비휘발성 매체, 일시적(transitory) 및 비일시적(non-transitory) 매체, 이동식 및 비-이동식 매체를 포함한다. 제한이 아닌 예로서, 컴퓨터 판독가능 매체는 컴퓨터 판독가능 저장 매체 및 컴퓨터 판독가능 전송 매체를 포함할 수 있다. 컴퓨터 판독가능 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성 매체, 일시적 및 비-일시적 매체, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital video disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 기타 매체를 포함하지만, 이에 한정되지 않는다.
컴퓨터 판독가능 전송 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터등을 구현하고 모든 정보 전달 매체를 포함한다. 피변조 데이터 신호라는 용어는 신호 내에 정보를 인코딩하도록 그 신호의 특성들 중 하나 이상을 설정 또는 변경시킨 신호를 의미한다. 제한이 아닌 예로서, 컴퓨터 판독가능 전송 매체는 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체를 포함한다. 상술된 매체들 중 임의의 것의 조합도 역시 컴퓨터 판독가능 전송 매체의 범위 안에 포함되는 것으로 한다.
컴퓨터(1102)를 포함하는 본 개시의 여러가지 측면들을 구현하는 예시적인 환경(1100)이 나타내어져 있으며, 컴퓨터(1102)는 처리 장치(1104), 시스템 메모리(1106) 및 시스템 버스(1108)를 포함한다. 시스템 버스(1108)는 시스템 메모리(1106)(이에 한정되지 않음)를 비롯한 시스템 컴포넌트들을 처리 장치(1104)에 연결시킨다. 처리 장치(1104)는 다양한 상용 프로세서들 중 임의의 프로세서일 수 있다. 듀얼 프로세서 및 기타 멀티프로세서 아키텍처도 역시 처리 장치(1104)로서 이용될 수 있다.
시스템 버스(1108)는 메모리 버스, 주변장치 버스, 및 다양한 상용 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스에 추가적으로 상호 연결될 수 있는 몇가지 유형의 버스 구조 중 임의의 것일 수 있다. 시스템 메모리(1106)는 판독 전용 메모리(ROM)(1110) 및 랜덤 액세스 메모리(RAM)(1112)를 포함한다. 기본 입/출력 시스템(BIOS)은 ROM, EPROM, EEPROM 등의 비휘발성 메모리(1110)에 저장되며, 이 BIOS는 시동 중과 같은 때에 컴퓨터(1102) 내의 구성요소들 간에 정보를 전송하는 일을 돕는 기본적인 루틴을 포함한다. RAM(1112)은 또한 데이터를 캐싱하기 위한 정적 RAM 등의 고속 RAM을 포함할 수 있다.
컴퓨터(1102)는 또한 내장형 하드 디스크 드라이브(HDD)(1114)(예를 들어, EIDE, SATA)-이 내장형 하드 디스크 드라이브(1114)는 또한 적당한 섀시(도시 생략) 내에서 외장형 용도로 구성될 수 있음-, 자기 플로피 디스크 드라이브(FDD)(1116)(예를 들어, 이동식 디스켓(1118)으로부터 판독을 하거나 그에 기록을 하기 위한 것임), 및 광 디스크 드라이브(1120)(예를 들어, CD-ROM 디스크(1122)를 판독하거나 DVD 등의 기타 고용량 광 매체로부터 판독을 하거나 그에 기록을 하기 위한 것임)를 포함한다. 하드 디스크 드라이브(1114), 자기 디스크 드라이브(1116) 및 광 디스크 드라이브(1120)는 각각 하드 디스크 드라이브 인터페이스(1124), 자기 디스크 드라이브 인터페이스(1126) 및 광 드라이브 인터페이스(1128)에 의해 시스템 버스(1108)에 연결될 수 있다. 외장형 드라이브 구현을 위한 인터페이스(1124)는 USB(Universal Serial Bus) 및 IEEE 1394 인터페이스 기술 중 적어도 하나 또는 그 둘다를 포함한다.
이들 드라이브 및 그와 연관된 컴퓨터 판독가능 매체는 데이터, 데이터 구조, 컴퓨터 실행가능 명령어, 기타 등등의 비휘발성 저장을 제공한다. 컴퓨터(1102)의 경우, 드라이브 및 매체는 임의의 데이터를 적당한 디지털 형식으로 저장하는 것에 대응한다. 상기에서의 컴퓨터 판독가능 매체에 대한 설명이 HDD, 이동식 자기 디스크, 및 CD 또는 DVD 등의 이동식 광 매체를 언급하고 있지만, 당업자라면 집 드라이브(zip drive), 자기 카세트, 플래쉬 메모리 카드, 카트리지, 기타 등등의 컴퓨터에 의해 판독가능한 다른 유형의 매체도 역시 예시적인 운영 환경에서 사용될 수 있으며 또 임의의 이러한 매체가 본 개시의 방법들을 수행하기 위한 컴퓨터 실행가능 명령어를 포함할 수 있다는 것을 잘 알 것이다.
운영 체제(1130), 하나 이상의 애플리케이션 프로그램(1132), 기타 프로그램 모듈(1134) 및 프로그램 데이터(1136)를 비롯한 다수의 프로그램 모듈이 드라이브 및 RAM(1112)에 저장될 수 있다. 운영 체제, 애플리케이션, 모듈 및/또는 데이터의 전부 또는 그 일부분이 또한 RAM(1112)에 캐싱될 수 있다. 본 개시가 여러가지 상업적으로 이용가능한 운영 체제 또는 운영 체제들의 조합에서 구현될 수 있다는 것을 잘 알 것이다.
사용자는 하나 이상의 유선/무선 입력 장치, 예를 들어, 키보드(1138) 및 마우스(1140) 등의 포인팅 장치를 통해 컴퓨터(1102)에 명령 및 정보를 입력할 수 있다. 기타 입력 장치(도시 생략)로는 마이크, IR 리모콘, 조이스틱, 게임 패드, 스타일러스 펜, 터치 스크린, 기타 등등이 있을 수 있다. 이들 및 기타 입력 장치가 종종 시스템 버스(1108)에 연결되어 있는 입력 장치 인터페이스(1142)를 통해 처리 장치(1104)에 연결되지만, 병렬 포트, IEEE 1394 직렬 포트, 게임 포트, USB 포트, IR 인터페이스, 기타 등등의 기타 인터페이스에 의해 연결될 수 있다.
모니터(1144) 또는 다른 유형의 디스플레이 장치도 역시 비디오 어댑터(1146) 등의 인터페이스를 통해 시스템 버스(1108)에 연결된다. 모니터(1144)에 부가하여, 컴퓨터는 일반적으로 스피커, 프린터, 기타 등등의 기타 주변 출력 장치(도시 생략)를 포함한다.
컴퓨터(1102)는 유선 및/또는 무선 통신을 통한 원격 컴퓨터(들)(1148) 등의 하나 이상의 원격 컴퓨터로의 논리적 연결을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(들)(1148)는 워크스테이션, 컴퓨팅 디바이스 컴퓨터, 라우터, 퍼스널 컴퓨터, 휴대용 컴퓨터, 마이크로프로세서-기반 오락 기기, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있으며, 일반적으로 컴퓨터(1102)에 대해 기술된 구성요소들 중 다수 또는 그 전부를 포함하지만, 간략함을 위해, 메모리 저장 장치(1150)만이 도시되어 있다. 도시되어 있는 논리적 연결은 근거리 통신망(LAN)(1152) 및/또는 더 큰 네트워크, 예를 들어, 원거리 통신망(WAN)(1154)에의 유선/무선 연결을 포함한다. 이러한 LAN 및 WAN 네트워킹 환경은 사무실 및 회사에서 일반적인 것이며, 인트라넷 등의 전사적 컴퓨터 네트워크(enterprise-wide computer network)를 용이하게 해주며, 이들 모두는 전세계 컴퓨터 네트워크, 예를 들어, 인터넷에 연결될 수 있다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(1102)는 유선 및/또는 무선 통신 네트워크 인터페이스 또는 어댑터(1156)를 통해 로컬 네트워크(1152)에 연결된다. 어댑터(1156)는 LAN(1152)에의 유선 또는 무선 통신을 용이하게 해줄 수 있으며, 이 LAN(1152)은 또한 무선 어댑터(1156)와 통신하기 위해 그에 설치되어 있는 무선 액세스 포인트를 포함하고 있다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(1102)는 모뎀(1158)을 포함할 수 있거나, WAN(1154) 상의 통신 컴퓨팅 디바이스에 연결되거나, 또는 인터넷을 통하는 등, WAN(1154)을 통해 통신을 설정하는 기타 수단을 갖는다. 내장형 또는 외장형 및 유선 또는 무선 장치일 수 있는 모뎀(1158)은 직렬 포트 인터페이스(1142)를 통해 시스템 버스(1108)에 연결된다. 네트워크화된 환경에서, 컴퓨터(1102)에 대해 설명된 프로그램 모듈들 또는 그의 일부분이 원격 메모리/저장 장치(1150)에 저장될 수 있다. 도시된 네트워크 연결이 예시적인 것이며 컴퓨터들 사이에 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것을 잘 알 것이다.
컴퓨터(1102)는 무선 통신으로 배치되어 동작하는 임의의 무선 장치 또는 개체, 예를 들어, 프린터, 스캐너, 데스크톱 및/또는 휴대용 컴퓨터, PDA(portable data assistant), 통신 위성, 무선 검출가능 태그와 연관된 임의의 장비 또는 장소, 및 전화와 통신을 하는 동작을 한다. 이것은 적어도 Wi-Fi 및 블루투스 무선 기술을 포함한다. 따라서, 통신은 종래의 네트워크에서와 같이 미리 정의된 구조이거나 단순하게 적어도 2개의 장치 사이의 애드혹 통신(ad hoc communication)일 수 있다.
Wi-Fi(Wireless Fidelity)는 유선 없이도 인터넷 등으로의 연결을 가능하게 해준다. Wi-Fi는 이러한 장치, 예를 들어, 컴퓨터가 실내에서 및 실외에서, 즉 기지국의 통화권 내의 아무 곳에서나 데이터를 전송 및 수신할 수 있게 해주는 셀 전화와 같은 무선 기술이다. Wi-Fi 네트워크는 안전하고 신뢰성 있으며 고속인 무선 연결을 제공하기 위해 IEEE 802.11(a, b, g, 기타)이라고 하는 무선 기술을 사용한다. 컴퓨터를 서로에, 인터넷에 및 유선 네트워크(IEEE 802.3 또는 이더넷을 사용함)에 연결시키기 위해 Wi-Fi가 사용될 수 있다. Wi-Fi 네트워크는 비인가 2.4 및 5GHz 무선 대역에서, 예를 들어, 11Mbps(802.11a) 또는 54 Mbps(802.11b) 데이터 레이트로 동작하거나, 양 대역(듀얼 대역)을 포함하는 제품에서 동작할 수 있다.
본 개시의 기술 분야에서 통상의 지식을 가진 자는 정보 및 신호들이 임의의 다양한 상이한 기술들 및 기법들을 이용하여 표현될 수 있다는 것을 이해할 것이다. 예를 들어, 위의 설명에서 참조될 수 있는 데이터, 지시들, 명령들, 정보, 신호들, 비트들, 심볼들 및 칩들은 전압들, 전류들, 전자기파들, 자기장들 또는 입자들, 광학장들 또는 입자들, 또는 이들의 임의의 결합에 의해 표현될 수 있다.
본 개시의 기술 분야에서 통상의 지식을 가진 자는 여기에 개시된 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 프로세서들, 수단들, 회로들 및 알고리즘 단계들이 전자 하드웨어, (편의를 위해, 여기에서 "소프트웨어"로 지칭되는) 다양한 형태들의 프로그램 또는 설계 코드 또는 이들 모두의 결합에 의해 구현될 수 있다는 것을 이해할 것이다. 하드웨어 및 소프트웨어의 이러한 상호 호환성을 명확하게 설명하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들이 이들의 기능과 관련하여 위에서 일반적으로 설명되었다. 이러한 기능이 하드웨어 또는 소프트웨어로서 구현되는지 여부는 특정한 애플리케이션 및 전체 시스템에 대하여 부과되는 설계 제약들에 따라 좌우된다. 본 개시의 기술 분야에서 통상의 지식을 가진 자는 각각의 특정한 애플리케이션에 대하여 다양한 방식들로 설명된 기능을 구현할 수 있으나, 이러한 구현 결정들은 본 개시의 범위를 벗어나는 것으로 해석되어서는 안 될 것이다.
여기서 제시된 다양한 실시예들은 방법, 장치, 또는 표준 프로그래밍 및/또는 엔지니어링 기술을 사용한 제조 물품(article)으로 구현될 수 있다. 용어 "제조 물품"은 임의의 컴퓨터-판독가능 저장장치로부터 액세스 가능한 컴퓨터 프로그램, 캐리어, 또는 매체(media)를 포함한다. 예를 들어, 컴퓨터-판독가능 저장매체는 자기 저장 장치(예를 들면, 하드 디스크, 플로피 디스크, 자기 스트립, 등), 광학 디스크(예를 들면, CD, DVD, 등), 스마트 카드, 및 플래쉬 메모리 장치(예를 들면, EEPROM, 카드, 스틱, 키 드라이브, 등)를 포함하지만, 이들로 제한되는 것은 아니다. 또한, 여기서 제시되는 다양한 저장 매체는 정보를 저장하기 위한 하나 이상의 장치 및/또는 다른 기계-판독가능한 매체를 포함한다.
제시된 프로세스들에 있는 단계들의 특정한 순서 또는 계층 구조는 예시적인 접근들의 일례임을 이해하도록 한다. 설계 우선순위들에 기반하여, 본 개시의 범위 내에서 프로세스들에 있는 단계들의 특정한 순서 또는 계층 구조가 재배열될 수 있다는 것을 이해하도록 한다. 첨부된 방법 청구항들은 샘플 순서로 다양한 단계들의 엘리먼트들을 제공하지만 제시된 특정한 순서 또는 계층 구조에 한정되는 것을 의미하지는 않는다.
제시된 실시예들에 대한 설명은 임의의 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시를 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 본 개시의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이며, 여기에 정의된 일반적인 원리들은 본 개시의 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 그리하여, 본 개시는 여기에 제시된 실시예들로 한정되는 것이 아니라, 여기에 제시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다.

Claims (14)

  1. 컴퓨팅 장치의 하나 이상의 프로세서에서 수행되는 메시지 스케줄링 방법으로서,
    제어 스레드에서 클라이언트로부터 메시지를 수신하는 단계;
    상기 제어 스레드에서 메시지의 내용에 기초하여 해당 메시지를 처리하기 위한 동작 모드를 판단하는 단계;
    상기 제어 스레드에서 판단된 상기 동작 모드에 기초하여 상기 메시지에 플래그를 부가하는 단계;
    상기 제어 스레드에서 플래그가 부가된 메시지를 큐에 저장시키는 단계; 및
    상기 제어 스레드에서 상기 큐에 저장된 메시지를 상기 플래그에 기초하여 각각의 워커 스레드로 할당하는 단계;
    를 포함하는,
    컴퓨팅 장치의 하나 이상의 프로세서에서 수행되는 메시지 스케줄링 방법.
  2. 제 1 항에 있어서,
    상기 메시지는,
    배타적으로 처리가 필요한 독점 모드 메시지 또는 병렬적 처리가 가능한 공유 모드 메시지인,
    컴퓨팅 장치의 하나 이상의 프로세서에서 수행되는 메시지 스케줄링 방법.
  3. 제 1 항에 있어서,
    상기 플래그는,
    배타적으로 처리가 필요한 독점 모드 메시지 및 병렬적 처리가 가능한 공유 모드 메시지를 구분하기 위한 정보를 포함하는,
    컴퓨팅 장치의 하나 이상의 프로세서에서 수행되는 메시지 스케줄링 방법.
  4. 제 1항에 있어서,
    상기 제어 스레드에서 메시지의 내용에 기초하여 해당 메시지를 처리하기 위한 동작 모드를 판단하는 단계는,
    상기 제어 스레드에서 메시지의 내용에 기초하여 해당 메시지가 배타적으로 처리되어야 하는지 병렬적으로 처리가 가능한지 여부를 판단하여 해당 메시지를 처리하기 위한 동작 모드를 판단하여 해당 메시지를 처리하기 위한 동작 모드를 판단하는 단계;
    를 포함하는,
    컴퓨팅 장치의 하나 이상의 프로세서에서 수행되는 메시지 스케줄링 방법.
  5. 제 2 항에 있어서,
    상기 독점 모드는,
    상기 메시지의 내용이 정합성을 위하여 배타적으로 처리되어야 하는 경우의 동작 모드로서, 상기 독점 모드 메시지가 하나의 워커 스레드에 의하여 처리되고, 상기 독점 모드 메시지의 처리가 완료된 경우에 상기 큐에 저장된 다음 메시지가 상기 워커 스레드에 의하여 처리되는 동작 모드이고, 그리고
    상기 공유 모드는,
    상기 메시지의 내용이 병렬적으로 처리 가능한 경우의 동작 모드로서, 하나 이상의 상기 공유 모드 메시지가 하나 이상의 워커 스레드에 의하여 병렬적으로 처리되는 동작 모드인,
    컴퓨팅 장치의 하나 이상의 프로세서에서 수행되는 메시지 스케줄링 방법.
  6. 제 1 항에 있어서,
    상기 제어 스레드에서 상기 큐에 저장된 메시지를 상기 플래그에 기초하여 각각의 워커 스레드로 할당하는 단계는,
    상기 제어 스레드에서 상기 큐에 저장된 메시지의 플래그에 기초하여 상기 메시지가 독점 모드 메시지인지 공유 모드 메시지인지 여부를 판단하는 단계;
    상기 메시지가 상기 독점 모드 메시지인 경우, 상기 제어 스레드가 독점 모드 메시지를 하나의 워커 스레드에 할당하는 단계; 및
    상기 제어 스레드에서 상기 워커 스레드로부터 보고 받기까지 다음 메시지의 할당을 대기하는 단계;
    를 포함하는,
    컴퓨팅 장치의 하나 이상의 프로세서에서 수행되는 메시지 스케줄링 방법.
  7. 제 1 항에 있어서,
    상기 제어 스레드에서 상기 큐에 저장된 메시지를 상기 플래그에 기초하여 각각의 워커 스레드로 할당하는 단계는,
    상기 제어 스레드가 상기 큐에 저장된 메시지의 플래그에 기초하여 상기 메시지가 독점 모드 메시지인지 공유 모드 메시지인지 여부를 판단하는 단계;
    상기 메시지가 공유 모드 메시지인 경우, 상기 제어 스레드가 상기 공유 모드 메시지를 하나의 워커 스레드에 할당하는 단계;
    상기 제어 스레드는 상기 큐에 저장된 다음 메시지가 독점 모드 메시지 인지 공유 모드 메시지인지 여부를 판단하는 단계; 및
    상기 다음 메시지가 독점 모드 메시지인 경우, 상기 제어 스레드에서 상기 워커 스레드의 작업이 종료되기까지 상기 다음 메시지의 할당을 대기시키고, 그리고 상기 다음 메시지가 공유 모드 메시지인 경우, 상기 제어 스레드가 상기 공유 모드 메시지를 다른 워커 스레드로 할당하는 단계;
    를 포함하는,
    컴퓨팅 장치의 하나 이상의 프로세서에서 수행되는 메시지 스케줄링 방법.
  8. 제 1 항에 있어서,
    상기 제어 스레드에서 상기 클라이언트로부터 수신한 메시지를 각각의 워크그룹에 대응하는 큐에 저장하는 단계;
    를 더 포함하고, 그리고
    상기 워크그룹은 정합성이 유지되어야 하는 최소단위인,
    컴퓨팅 장치의 하나 이상의 프로세서에서 수행되는 메시지 스케줄링 방법.
  9. 제 8 항에 있어서,
    상기 제어 스레드에서 상기 클라이언트로부터 수신한 메시지를 각각의 워크그룹에 대응하는 큐에 저장하는 단계는,
    상기 제어 스레드에서 상기 클라이언트로부터 메시지를 수신하는 단계; 및
    상기 제어 스레드에서 수신된 메시지의 정보에 따라 해당하는 워크그룹으로 할당하는 단계;
    를 포함하는,
    컴퓨팅 장치의 하나 이상의 프로세서에서 수행되는 메시지 스케줄링 방법.
  10. 제 8 항에 있어서,
    제어 스레드는 상이한 워크그룹에 속하는 큐에 각각 저장된 독점 모드 메시지를 병렬적으로 워커 스레드에 할당하는,
    컴퓨팅 장치의 하나 이상의 프로세서에서 수행되는 메시지 스케줄링 방법.
  11. 제 1 항에 있어서,
    상기 제어 스레드에서 워커 스레드로부터 메시지 수행 결과를 수신하는 단계; 및
    상기 제어 스레드에서 수신한 상기 메시지 수행 결과를 클라이언트에게 전달하는 단계;
    를 더 포함하는,
    컴퓨팅 장치의 하나 이상의 프로세서에서 수행되는 메시지 스케줄링 방법.
  12. 제 1 항에 있어서,
    상기 큐에 저장된 메시지가 상기 각각의 워커 스레드로 할당된 후 상기 제어 스레드에서 상기 수신된 메시지를 비동기적으로 백업 데이터베이스에 업데이트하기 위해 백업 데이터베이스 큐에 상기 메시지를 저장하는 단계;
    상기 제어 스레드에서 백업 데이터베이스 큐에 있는 상기 메시지를 워커 스레드로 할당하는 단계; 및
    상기 제어 스레드에서 상기 워커 스레드로부터 메시지 수행 결과를 수신하는 단계;
    를 더 포함하는,
    컴퓨팅 장치의 하나 이상의 프로세서에서 수행되는 메시지 스케줄링 방법.
  13. 메시지 스케줄링을 제공하기 위한 컴퓨팅 장치로서,
    제어 스레드에서 클라이언트로부터 메시지를 수신하고, 그리고 메시지 내용에 기초하여 해당 메시지를 처리하기 위한 동작 모드를 판단하고, 상기 제어 스레드에서 판단된 상기 동작 모드에 기초하여 상기 메시지에 플래그를 부가하고 그리고 상기 메시지를 큐에 저장시키는 제어 스레드;
    제어 스레드로부터 수신된 메시지를 할당 받아 상기 메시지에 따라 동작을 수행하는 워커 스레드; 및
    메시지 내용에 따른 상기 플래그가 부가된 메시지를 저장하는 큐;
    를 포함하는,
    메시지 스케줄링을 제공하기 위한 컴퓨팅 장치.
  14. 인코딩된 명령들을 포함하는 컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 프로그램으로서, 상기 컴퓨터 프로그램은 컴퓨터 시스템의 하나 이상의 프로세서들에 의해 실행되는 경우, 상기 하나 이상의 프로세서들로 하여금 메시지 스케줄링을 제공하기 위한 이하의 단계들을 수행하도록 하며, 상기 단계들은:
    제어 스레드에서 클라이언트로부터 메시지를 수신하는 단계;
    상기 제어 스레드에서 메시지의 내용에 기초하여 해당 메시지를 처리하기 위한 동작모드를 판단하는 단계;
    상기 제어 스레드에서 판단된 상기 동작 모드에 기초하여 상기 메시지에 플래그를 부가하는 단계;
    상기 제어 스레드에서 플래그가 부가된 메시지를 큐에 저장시키는 단계; 및
    상기 제어 스레드에서 상기 큐에 저장된 메시지를 상기 플래그에 기초하여 각각의 워커 스레드로 할당하는 단계;
    를 포함하는,
    컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램.


KR1020170092364A 2017-07-21 2017-07-21 메시지 스케줄링 방법 KR101889749B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170092364A KR101889749B1 (ko) 2017-07-21 2017-07-21 메시지 스케줄링 방법
US15/693,732 US10372517B2 (en) 2017-07-21 2017-09-01 Message scheduling method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170092364A KR101889749B1 (ko) 2017-07-21 2017-07-21 메시지 스케줄링 방법

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020180087744A Division KR20190010508A (ko) 2018-07-27 2018-07-27 메시지 스케줄링 방법

Publications (1)

Publication Number Publication Date
KR101889749B1 true KR101889749B1 (ko) 2018-09-20

Family

ID=63719841

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170092364A KR101889749B1 (ko) 2017-07-21 2017-07-21 메시지 스케줄링 방법

Country Status (2)

Country Link
US (1) US10372517B2 (ko)
KR (1) KR101889749B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11360809B2 (en) * 2018-06-29 2022-06-14 Intel Corporation Multithreaded processor core with hardware-assisted task scheduling

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003256221A (ja) 2002-02-28 2003-09-10 Fujitsu Ltd 並列プロセス実行方法、及びマルチプロセッサ型コンピュータ
WO2011028694A1 (en) 2009-09-02 2011-03-10 Advanced Micro Devices, Inc. A lightweight service based dynamic binary rewriter framework
KR101638136B1 (ko) * 2015-05-14 2016-07-08 주식회사 티맥스 소프트 멀티 스레드 구조에서 작업 분배 시 스레드 간 락 경쟁을 최소화하는 방법 및 이를 사용한 장치
JP2017033095A (ja) * 2015-07-29 2017-02-09 エヌ・ティ・ティ・コムウェア株式会社 情報処理システム、情報処理方法、プログラム、及び情報処置装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6209018B1 (en) * 1997-11-13 2001-03-27 Sun Microsystems, Inc. Service framework for a distributed object network system
US7690003B2 (en) 2003-08-29 2010-03-30 Fuller Jeffrey C System and method for increasing data throughput using thread scheduling
US20070067770A1 (en) 2005-09-16 2007-03-22 Thomasson Christopher M System and method for reduced overhead in multithreaded programs
US7500037B2 (en) * 2007-01-30 2009-03-03 International Business Machines Corporation System, method and program for managing locks
KR100936601B1 (ko) 2008-05-15 2010-01-13 재단법인서울대학교산학협력재단 멀티 프로세서 시스템
US8505015B2 (en) * 2008-10-29 2013-08-06 Teradata Us, Inc. Placing a group work item into every prioritized work queue of multiple parallel processing units based on preferred placement of the work queues
US10019297B2 (en) * 2013-04-03 2018-07-10 Salesforce.Com, Inc. Systems and methods for implementing bulk handling in asynchronous processing
KR101465657B1 (ko) 2014-03-10 2014-12-10 성균관대학교산학협력단 가상머신을 위한 협력 스케줄링 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003256221A (ja) 2002-02-28 2003-09-10 Fujitsu Ltd 並列プロセス実行方法、及びマルチプロセッサ型コンピュータ
WO2011028694A1 (en) 2009-09-02 2011-03-10 Advanced Micro Devices, Inc. A lightweight service based dynamic binary rewriter framework
KR101638136B1 (ko) * 2015-05-14 2016-07-08 주식회사 티맥스 소프트 멀티 스레드 구조에서 작업 분배 시 스레드 간 락 경쟁을 최소화하는 방법 및 이를 사용한 장치
JP2017033095A (ja) * 2015-07-29 2017-02-09 エヌ・ティ・ティ・コムウェア株式会社 情報処理システム、情報処理方法、プログラム、及び情報処置装置

Also Published As

Publication number Publication date
US20190026169A1 (en) 2019-01-24
US10372517B2 (en) 2019-08-06

Similar Documents

Publication Publication Date Title
US10394847B2 (en) Processing data in a distributed database across a plurality of clusters
US9317519B2 (en) Storage system for eliminating duplicated data
US11882011B2 (en) Distributed workload reassignment following communication failure
US10241550B2 (en) Affinity aware parallel zeroing of memory in non-uniform memory access (NUMA) servers
KR102247249B1 (ko) 데이터베이스 관리 시스템에서 비동기적 데이터 처리를 위한 컴퓨터 프로그램
US8666958B2 (en) Approaches to reducing lock communications in a shared disk database
US9654582B2 (en) Enhanced shared memory based communication driver for improved performance and scalability
WO2015085826A1 (zh) 一种访问共享资源的方法及装置
CN110119304B (zh) 一种中断处理方法、装置及服务器
US20080244118A1 (en) Method and apparatus for sharing buffers
CN112148695A (zh) 一种资源锁管理方法及装置
US11231964B2 (en) Computing device shared resource lock allocation
US11216421B2 (en) Extensible streams for operations on external systems
KR101889749B1 (ko) 메시지 스케줄링 방법
US20200387412A1 (en) Method To Manage Database
KR20190010508A (ko) 메시지 스케줄링 방법
US10824640B1 (en) Framework for scheduling concurrent replication cycles
KR20210053830A (ko) 데이터베이스 관리 시스템에서 비동기적 데이터 처리를 위한 컴퓨터 프로그램
CN113051244A (zh) 数据访问方法和装置、数据获取方法和装置
US10938701B2 (en) Efficient heartbeat with remote servers by NAS cluster nodes
WO2021063242A1 (zh) 一种存储系统的元数据的发送方法及存储系统
KR20230163041A (ko) 액티브-액티브 데이터베이스 클러스터 환경에서 수행되는 인덱스를 관리하는 방법 및 장치
CN116974488A (zh) 数据索引方法、装置、设备及存储介质
WO2015145595A1 (ja) 計算機システム及び計算機システム管理方法

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant