(19) 대한민국특허청(KR)
(12) 등록특허공보(B1)
(45) 공고일자 2017년10월10일
(11) 등록번호 10-1783840
(24) 등록일자 2017년09월26일
(51) 국제특허분류(Int. Cl.)
G06Q 10/08 (2012.01) G06F 17/30 (2006.01)
(52) CPC특허분류
G06Q 10/08 (2013.01)
G06F 17/30 (2013.01)
(21) 출원번호 10-2015-0135414
(22) 출원일자 2015년09월24일
심사청구일자 2015년09월24일
(65) 공개번호 10-2017-0036354
(43) 공개일자 2017년04월03일
(56) 선행기술조사문헌
JP2011048785 A*
KR1020110066564 A*
*는 심사관에 의하여 인용된 문헌
(73) 특허권자
(주)토탈소프트뱅크
부산광역시 해운대구 반송로513번길 66-39(
석대동)
(72) 발명자
설성욱
부산광역시 동래구 명장로22번길 112 , 304호(
안락동)
최진석
부산광역시 남구 수영로39번가길 83 대도라이프
101동 1411호
(뒷면에 계속)
(74) 대리인
김윤배
전체 청구항 수 : 총 6 항 심사관 : 이충근
(54) 발명의 명칭 부분적 멀티 쓰레드 방식을 이용한 경합관리자 시스템 및 경합관리 방법
(57) 요 약
본 발명은, 멀티쓰레드 방식의 위치 결정을 위한 시스템에서, 경합관리자 개념을 도입한 부분적 멀티 쓰레드 방
식을 이용한 경합관리자 시스템 및 경합관리 방법을 제공하는 것으로, (a) 병렬서버(10,20,30)가, 자신에게 접속
해 있는 클라이언트로부터 경합 요청이 발생하면(S11), 시스템 데이터베이스 또는 분산캐시(12,22,32)에 저장되
(뒷면에 계속)
대 표 도 - 도3
등록특허 10-1783840
- 1 -
어 있는 데이터들을 검색하여 조건에 부합하는 후보들을 검색하여(S21), 경합관리자(90)에게 후보 등록을 신청하
는 단계(S23); (b) 경합관리자(90)가, 각 병렬서버로부터 등록 신청을 받은 후보들을 분산캐시(12)의 후보군 메
모리에 등록하고(S31), 각 후보에 대해 다른 경합을 위한 후보들과의 관계성을 확인하여, 배타적 관계에 있는 후
보들 목록을 후보에 대한 추가 정보로서 저장하는 단계; (c) 상기 (b) 단계 이후, 후보 등록이 끝난 병렬서버가
해당 경합 요청에 대한 처리를 경합관리자에게 요청하는 단계(S25); 및 (d) 상기 경합관리자가, 순차적으로 경합
요청을 처리하되(S33~S34), 각 후보 선정은, 해당 경합 요청의 해로 선택된 후보에 대해 해당 후보와 배타적 관
계에 있는 다른 경합의 후보들을 후보군 메모리에서 제거하고, 해로 선택되지 않은 나머지 해당 경합의 후보들
및 이후 수행될 대기중인 경합들의 후보 중에서 배타적 관계 조건으로 해가 될 수 없는 후보를 제외함으로써 이
루어지는, 후보 선정 단계; 를 포함하는 것을 특징으로 한다.
(72) 발명자
김재훈
부산광역시 해운대구 재반로42번길 23
이훈
부산광역시 해운대구 센텀중앙로 145
더샵센텀파크1차아파트 104동 903호
등록특허 10-1783840
- 2 -
명 세 서
청구범위
청구항 1
연결망(80)에 접속된 두 개 이상의 서버 노드(10,20,30);
상기 연결망(80)에 접속되며, 상기 두 개 이상의 서버 노드(10,20,30)의 어느 하나에 각각 요청을 하는 두 개
이상의 클라이언트(40,50,60);
상기 연결망(80)에 접속된 시스템 데이터베이스(70); 및
상기 연결망(80)에 접속되며, 상기 두 개 이상의 서버 노드(10,20,30) 및 상기 두 개 이상의 클라이언트
(40,50,60)와 통신하는 경합관리자(90);
를 포함하며,
상기 두 개 이상의 노드(10,20,30)의 각각의 노드는, 각각의 애플리케이션(11,21,31)과 각각의 서버 노드 간의
메모리 정보를 공유하는 각각의 분산캐시(12,22,32)를 포함하며,
상기 각각의 분산캐시는, 상기 경합관리자(90)를 실행하기 위한 프로그램이 저장된 제1 공간(121)과 오브젝트들
에 대한 후보 정보를 갖는 제2 공간(122)으로 이루저지며,
상기 각각의 서버 노드(10,20,30)는, 상기 제1 공간(121)으로부터 코드를 불러와서 상기 제2 공간(122)의 정보
를 참조하여 경합관리를 실행하되,
상기 각각의 서버 노드가 시스템 데이터베이스(70)나 분산 캐시(12,22,32)에 저장되어 있는 데이터들을 검색하
여 조건에 부합하는 후보들을 검색하여(S21), 상기 경합관리자에 후보 등록을 신청하며(S23), 상기 경합관리자
(90)가 등록 신청한 후보들을 분산캐시의 후보군 메모리에 등록하고(S31), 각 후보에 대해 이미 후보군 메모리
에 들어있는 다른 경합을 위한 후보들과의 관계성을 확인하여 배타적 관계에 있는 후보들 목록을 후보에 대한
추가 정보로서 저장하는 절차를 상호 병렬적으로 실행하고,
각각의 서버 노드로부터의 해당 경합 요청을 상기 경합관리자가 순차적으로 처리하되, 해당 경합 요청의 해로
선택된 후보에 대해 해당 후보와 배타적 관계에 있는 다른 경합의 후보들을 후보군 메모리에서 제거하고, 해로
선택되지 않은 나머지 해당 경합의 후보 및 이후 수행될 대기중인 경합들의 후보 중에서 배타적 관계 조건으로
해가 될 수 없는 후보를 제외하는 방식으로 처리하되,
상기 경합관리자가 본격적으로 경합 요청을 처리하기 전에, 유효 후보가 존재하는지 여부를 판단하여, 유효 후
보가 존재하는 경우에 상기 경합 요청의 처리(S33~S34)를 본격적으로 진행하고, 유효 후보가 존재하지 않는 경
우에는, 해당 경합을 요청했던 서버 노드에 다시 후보 등록을 지시하는 것을 특징으로 하는 부분적 멀티 쓰레드
방식을 이용한 경합관리자 시스템.
청구항 2
삭제
청구항 3
제 1 항에 있어서,
상기 경합은 컨테이너 터미널에서의 오브젝트들의 의사결정 요청인 것을 특징으로 하는 부분적 멀티 쓰레드 방
식을 이용한 경합관리자 시스템.
청구항 4
분산캐시를 갖는 병렬서버 시스템에서의 멀티 쓰레드 방식을 이용한 경합관리자 시스템의 경합관리 방법으로서,
(a) 병렬서버(10,20,30)가, 자신에게 접속해 있는 클라이언트로부터 경합 요청이 발생하면(S11), 시스템 데이터
베이스 또는 분산캐시(12,22,32)에 저장되어 있는 데이터들을 검색하여 조건에 부합하는 후보들을 검색하여
등록특허 10-1783840
- 3 -
(S21), 경합관리자(90)에게 후보 등록을 신청하는 단계(S23);
(b) 경합관리자(90)가, 각 병렬서버로부터 등록 신청을 받은 후보들을 분산캐시(12)의 후보군 메모리에 등록하
고(S31), 각 후보에 대해 다른 경합을 위한 후보들과의 관계성을 확인하여, 배타적 관계에 있는 후보들 목록을
후보에 대한 추가 정보로서 저장하는 단계;
(c) 상기 (b) 단계 이후, 후보 등록이 끝난 병렬서버가 해당 경합 요청에 대한 처리를 경합관리자에게 요청하는
단계(S25); 및
(e) 상기 경합관리자가, 순차적으로 경합 요청을 처리하되(S33~S34), 각 후보 선정은, 해당 경합 요청의 해로
선택된 후보에 대해 해당 후보와 배타적 관계에 있는 다른 경합의 후보들을 후보군 메모리에서 제거하고, 해로
선택되지 않은 나머지 해당 경합의 후보들 및 이후 수행될 대기중인 경합들의 후보 중에서 배타적 관계 조건으
로 해가 될 수 없는 후보를 제외함으로써 이루어지는, 후보 선정 단계;
를 포함하며,
상기 (e) 단계 이전에,
(d) 특정 경합의 후보들이 모두 이전에 수행된 경합들의 해와의 배타적 관계에 의해 배제되는 경우가 존재하면,
상기 경합관리자는 본격적으로 경합 요청을 처리하기 전에, 유효 후보가 존재하는지 여부를 판단하여(S32), 유
효 후보가 존재하는 경우에 상기 (e) 단계로 진행하여 상기 경합 요청의 처리(S33~S34)를 본격적으로 진행하고,
유효 후보가 존재하지 않는 경우에는, 해당 경합을 요청했던 쓰레드에 다시 후보를 검색해 등록하도록 지시하는
단계;
를 더 포함하는 것을 특징으로 하는 부분적 멀티 쓰레드 방식을 이용한 경합관리자 시스템의 경합관리 방법.
청구항 5
분산캐시를 갖는 멀티 쓰레드 방식을 이용한 경합관리자 시스템의 경합관리 방법으로서,
(a) 멀티 쓰레드 방식의 멀티 태스킹을 행하는 서버가, 각 쓰레드에게 속한 클라이언트로부터 경합 요청이 발생
하면(S11), 시스템 데이터베이스 또는 분산캐시(12,22,32)에 저장되어 있는 데이터들을 검색하여 조건에 부합하
는 후보들을 검색하여(S21), 경합관리자(90)에게 후보 등록을 신청하는 단계(S23);
(b) 경합관리자(90)가, 상기 쓰레드로부터 등록 신청을 받은 후보들을 분산캐시(12)의 후보군 메모리에 등록하
고(S31), 각 후보에 대해 다른 경합을 위한 후보들과의 관계성을 확인하여, 배타적 관계에 있는 후보들 목록을
후보에 대한 추가 정보로서 저장하는 단계;
(c) 상기 (b) 단계 이후, 상기 서버가, 후보 등록이 끝난 쓰레드에 대응하는 해당 경합 요청에 대한 처리를 경
합관리자에게 요청하는 단계(S25); 및
(e) 상기 경합관리자가, 순차적으로 경합 요청을 처리하되(S33~S34), 각 후보 선정은, 해당 경합 요청의 해로
선택된 후보에 대해 해당 후보와 배타적 관계에 있는 다른 경합의 후보들을 후보군 메모리에서 제거하고, 해로
선택되지 않은 나머지 해당 경합의 후보들 및 이후 수행될 대기중인 경합들의 후보 중에서 배타적 관계 조건으
로 해가 될 수 없는 후보를 제외함으로써 이루어지는, 후보 선정 단계;
를 포함하며,
상기 (e) 단계 이전에,
(d) 특정 경합의 후보들이 모두 이전에 수행된 경합들의 해와의 배타적 관계에 의해 배제되는 경우가 존재하면,
상기 경합관리자는 본격적으로 경합 요청을 처리하기 전에, 유효 후보가 존재하는지 여부를 판단하여(S32), 유
효 후보가 존재하는 경우에 상기 (e) 단계로 진행하여 상기 경합 요청의 처리(S33~S34)를 본격적으로 진행하고,
유효 후보가 존재하지 않는 경우에는, 해당 경합을 요청했던 쓰레드에 다시 후보를 검색해 등록하도록 지시하는
단계;
를 더 포함하는 것을 특징으로 하는 부분적 멀티 쓰레드 방식을 이용한 경합관리자 시스템의 경합관리 방법.
청구항 6
삭제
등록특허 10-1783840
- 4 -
청구항 7
제 4 항 또는 제 5 항에 있어서,
상기 (e) 단계 이후에,
(f) 상기 경합관리자는, 상기 서버에 해를 응답하고(S35), 의사 결정의 해를 출력하도록 하는 단계(S36);
를 더 포함하는 것을 특징으로 하는 부분적 멀티 쓰레드 방식을 이용한 경합관리자 시스템의 경합관리 방법.
청구항 8
제 4 항 또는 제 5 항에 있어서,
상기 경합은 컨테이너 터미널에서의 오브젝트들의 의사결정 요청인 것을 특징으로 하는 부분적 멀티 쓰레드 방
식을 이용한 경합관리자 시스템의 경합관리 방법.
발명의 설명
기 술 분 야
본 발명은 다수의 오브젝트들의 위치 결정 요청을 멀티 쓰레드 시스템을 이용하여 수행시, 일부는 멀티 쓰레드[0001]
방식을 적용하고, 일부는 동기화하여 순차 직렬방식으로 수행함으로써, 성능 저하도 막고 위치 결정 실패도 방
지하기 위한, 부분적 멀티 쓰레드 방식을 이용한 경합관리자 시스템 및 경합관리 방법에 관한 것이다.
배 경 기 술
컨테이너 터미널에 반입되는 컨테이너들을 어디에 장치(적재)할지 결정함에 있어, 먼저 반입된 컨테이너가 장치[0002]
되는 위치는 뒤에 반입되는 컨테이너의 장치 위치를 결정하는 데 영향을 끼친다. 예를 들어 다수 컨테이너 터미
널에서는 특정 위치에 20ft 컨테이너가 먼저 장치되었을 경우 그 옆 공간에는 40ft 컨테이너를 장치할 수 없고,
그 역도 성립한다.
한편, 제1 종래기술로서, 컨테이너 터미널 운영 시스템을 단일서버로 운영하는 경우, 이러한 컨테이너 반입 요[0003]
청을 동기화(synchronize)하여 순차적으로 처리하기 때문에 길이가 서로 다른 컨테이너를 옆에 장치하는 문제는
발생하지 않는다.
그러나, 복잡화 다중화 되어가는 현대적인 컨테이너 터미널 운영 시스템에서는, 시스템의 성능 향상을 위해, 도[0004]
1에서 보는 바와 같이, 서버를 병렬화하여 시스템을 구성할 수 있다.
도 1은 분산캐시를 적용한 병렬서버 시스템 구성도의 일례이다. [0005]
참고로, 병렬서버란, 서버/클라이언트 형태의 시스템에서 서버 프로그램이 한 대의 컴퓨터에서 동작하는 대신[0006]
여러 대의 컴퓨터에서 동작하는 경우 이러한 서버를 병렬서버라 하며, 컴퓨터는 각각의 메모리를 가지며 한 컴
퓨터의 메모리를 변경하는 것은 물리적으로 다른 컴퓨터의 메모리에 아무런 영향을 끼치지 않는바, 이러한 물리
적 한계를 네트워크 통신을 통해 극복하여, 한 컴퓨터의 메모리 내용을 변경하면 다른 컴퓨터의 대응하는 메모
리도 함께 변경되도록 하는 소프트웨어 제품군을 분산캐시라 한다.
이상의 분산캐시를 적용한 병렬서버 시스템을 좀더 설명하면, 인터넷이나 인트라넷 등의 연결망(80)에 '노드[0007]
1'(10), '노드2'(20) 및 '노드N'(30)이 연결되며, 한편으로는 클라이언트들(40,50,60)과 시스템 데이터베이스
(70)가 연결되어 있다.
그리고, 각 노드(10,20,30)는, 각각의 애플리케이션(11,21,31)과 분산캐시(12,22,32)를 포함하는바, 도 1에서[0008]
주황색으로 표시된 부분이 분산캐시에 해당한다.
그런데, 이와 같이 서버를 병렬화하여 서로 다른 두 대의 서버 컴퓨터에서 길이가 서로 다른 컨테이너에 대한[0009]
반입 요청이 발생할 경우, 각 서버 컴퓨터는 서로 상이한 오브젝트들의 후보들을 개별적으로 동시에
등록특허 10-1783840
- 5 -
처리하느라, 그들 간의 배타적 관계를 인식하지 못하고, 서로 옆자리, 심지어는 같은 자리를 장치 위치로 결정
할 위험성이 존재한다.
혹은 이러한 문제점을 해결하려고 순차 동기적으로 처리하게 되면, 자원이 충분히 활용되지 못한다는 문제점이[0010]
발생하게 되는바, 예를들어 위치 결정에 시간이 많이 소요된다는 문제점이 발생하게 된다. 즉, 상기 배타적 관
계의 후보들을 원만하게 처리하기 위해서는, 서로 다른 서버 컴퓨터 사이에도 동기화 처리가 필요하며, 이는 분
산캐시 제품의 잠금(lock) 기능을 이용하여 구현할 수는 있지만, 이 경우 병렬서버를 도입하는 취지가 크게 퇴
색된다.
참고로, 경합이란, 클라이언트가 서버에 요청을 보내고 서버가 이에 대한 답을 제시할 때, 한 클라이언트에 대[0011]
한 요청을 처리하고 나면 그와 같은 답을 다른 클라이언트의 요청에 대해 줄 수 없는 경우들이 존재하는바 (예:
좌석 예약 시스템에서 같은 자리를 두 명의 고객에게 제공할 수 없음), 이와 같이 어느 클라이언트가 먼저 서버
에 요청하느냐에 따라 결과가 달라지는 의사결정 요청을 본 명세서에서는 경합이라 한다.
아울러, 후보란, 경합을 처리함에 있어 클라이언트의 요청에 부합하는 답이 될 수 있는 데이터들을 말한다. 후[0012]
보들 사이에는 어느 후보가 보다 적합한 답인지 비교를 위해 점수 계산을 할 수 있으며, 이는 본 발명을 적용할
각 분야마다 개별적으로 구현해야 할 부분이다. 일례로, 컨테이너 장치장에서는, 효율적으로 하적 및 선적이 가
능한 정도를 수치화할 수 있고, 혹은 컨테이너 크기나 내장된 제품의 특성, 혹은 고객이 원하는 정도까지를 더
고려하여 수치화할 수 있을 것이다.
아울러, 배타적 관계란, 경합 A의 후보 a와 경합 B의 후보 b 사이에, 경합 A를 먼저 처리해서 a가 답이 되었을[0013]
경우, 이후 처리될 경합 B에 대해 b를 답으로 할 수 없고, 그 역도 성립하는 경우, a와 b는 배타적 관계라
한다. a와 b는 물리적으로 같은 데이터일 수도 있고 (예: 좌석 예약이나 컨테이너 장치장에서 같은 자리), 아닐
수도 있다 (예: 옆자리가 빈 좌석이거나 빈 장치장이나, 인접해서는 안 되는 관계일 경우). 관계성 확인 논리는
본 발명을 적용할 각 분야마다 개별적으로 구현해야 할 부분이다.
아울러, 이러한 문제는 제1 종래기술에서와 같이, 컨테이너 터미널 운영 시스템을 단일서버로 운영하는 경우라[0014]
도, CPU 성능 향상에 따라, 멀티쓰레드 방식으로 태스킹이 이루어질 경우에는, 역시 상기 제2 종래기술에서와
같은 문제점이 발생할 수 있다.
발명의 내용
해결하려는 과제
본 발명은 이상의 종래기술들의 문제점을 개선하기 위한 것으로, 하나의 서버든, 여러 대의 서버든, 멀티쓰레드[0015]
방식의 위치 결정을 위한 시스템에서, 경합관리자 개념을 도입한 부분적 멀티 쓰레드 방식을 이용한 경합관리자
시스템 및 경합관리 방법을 제공하는 것이다.
즉, 컨테이너와 같은 오브젝트의 위치를 결정하는 단계를, 후보등록 단계와 후보선정 단계 둘로 나누어 후보등[0016]
록은 병렬 처리를 허용하고, 후보선정만 동기화하여 수행함으로써 병렬서버의 성능 저하를 가능한 한 억제하는
것을 본 발명의 목표로 한다.
한편, 본 발명은 컨테이너 터미널 이외에도 일반적으로 적용 가능하다. 예를 들어 좌석 예약 시스템에서 조건을[0017]
입력하고 그에 부합하는 좌석을 조회하여 예약하려는 순간 이미 다른 사용자가 먼저 예약했다는 오류가 발생하
면서 예약이 실패하는 경우를 빈번히 찾아볼 수 있다. 본 발명을 이용하면 다른 사용자가 먼저 예약한 좌석은
자동적으로 선정 조건에서 배제되고 유사한 조건의 다른 좌석을 제시할 수 있다.
즉, 본 발명은 병렬서버나 멀티쓰레드 방식 (이하, 본 명세서 및 청구범위에서 '멀티쓰레드 방식'이라고 통칭한[0018]
다) 의 오브젝트들의 위치 결정을 위한 모든 시스템에 적용 가능하다.
과제의 해결 수단
상술한 목적을 달성하기 위한 본 발명의 일 측면에 따른 부분적 멀티 쓰레드 방식을 이용한 경합관리자 시스템[0019]
등록특허 10-1783840
- 6 -
은, 연결망(80)에 접속된 두 개 이상의 서버 노드(10,20,30); 상기 연결망(80)에 접속되며, 상기 두 개 이상의
서버 노드(10,20,30)의 어느 하나에 각각 요청을 하는 두 개 이상의 클라이언트(40,50,60); 상기 연결망(80)에
접속된 시스템 데이터베이스(70); 및 상기 연결망(80)에 접속되며, 상기 두 개 이상의 서버 노드(10,20,30) 및
상기 두 개 이상의 클라이언트(40,50,60)와 통신하는 경합관리자(90); 를 포함하며, 상기 두 개 이상의 노드
(10,20,30)의 각각의 노드는, 각각의 애플리케이션(11,21,31)과 각각의 서버 노드 간의 메모리 정보를 공유하는
각각의 분산캐시(12,22,32)를 포함하며, 상기 각각의 분산캐시는, 상기 경합관리자(90)를 실행하기 위한 프로그
램이 저장된 제1 공간(121)과 오브젝트들에 대한 후보 정보를 갖는 제2 공간(122)으로 이루저지며, 상기 각각의
서버 노드(10,20,30)는, 상기 제1 공간(121)으로부터 코드를 불러와서 상기 제2 공간(122)의 정보를 참조하여
경합관리를 실행하되, 상기 각각의 서버 노드가 시스템 데이터베이스(70)나 분산 캐시(12,22,32)에 저장되어 있
는 데이터들을 검색하여 조건에 부합하는 후보들을 검색하여(S21), 상기 경합관리자에 후보 등록을 신청하며
(S23), 상기 경합관리자(90)가 등록 신청한 후보들을 분산캐시의 후보군 메모리에 등록하고(S31), 각 후보에 대
해 이미 후보군 메모리에 들어있는 다른 경합을 위한 후보들과의 관계성을 확인하여 배타적 관계에 있는 후보들
목록을 후보에 대한 추가 정보로서 저장하는 절차를 상호 병렬적으로 실행하고, 각각의 서버 노드로부터의 해당
경합 요청을 상기 경합관리자가 순차적으로 처리하되, 해당 경합 요청의 해로 선택된 후보에 대해 해당 후보와
배타적 관계에 있는 다른 경합의 후보들을 후보군 메모리에서 제거하고, 해로 선택되지 않은 나머지 해당 경합
의 후보 및 이후 수행될 대기중인 경합들의 후보 중에서 배타적 관계 조건으로 해가 될 수 없는 후보를 제외하
는 방식으로 처리하되, 상기 경합관리자가 본격적으로 경합 요청을 처리하기 전에, 유효 후보가 존재하는지 여
부를 판단하여, 유효 후보가 존재하는 경우에 상기 경합 요청의 처리(S33~S34)를 본격적으로 진행하고, 유효 후
보가 존재하지 않는 경우에는, 해당 경합을 요청했던 서버 노드에 다시 후보 등록을 지시하는 것을 특징으로 한
다.
삭제[0020]
더욱 바람직하게는, 상기 경합은 컨테이너 터미널에서의 오브젝트들의 의사결정 요청인 것을 특징으로 한다.[0021]
한편, 상술한 목적을 달성하기 위한 본 발명의 다른 측면에 따른 분산캐시를 갖는 병렬서버 시스템에서의 부분[0022]
적 멀티 쓰레드 방식을 이용한 경합관리자 시스템의 경합관리 방법은, (a) 병렬서버(10,20,30)가, 자신에게 접
속해 있는 클라이언트로부터 경합 요청이 발생하면(S11), 시스템 데이터베이스 또는 분산캐시(12,22,32)에 저장
되어 있는 데이터들을 검색하여 조건에 부합하는 후보들을 검색하여(S21), 경합관리자(90)에게 후보 등록을 신
청하는 단계(S23); (b) 경합관리자(90)가, 각 병렬서버로부터 등록 신청을 받은 후보들을 분산캐시(12)의 후보
군 메모리에 등록하고(S31), 각 후보에 대해 다른 경합을 위한 후보들과의 관계성을 확인하여, 배타적 관계에
있는 후보들 목록을 후보에 대한 추가 정보로서 저장하는 단계; (c) 상기 (b) 단계 이후, 후보 등록이 끝난 병
렬서버가 해당 경합 요청에 대한 처리를 경합관리자에게 요청하는 단계(S25); 및 (e) 상기 경합관리자가, 순차
적으로 경합 요청을 처리하되(S33~S34), 각 후보 선정은, 해당 경합 요청의 해로 선택된 후보에 대해 해당 후보
와 배타적 관계에 있는 다른 경합의 후보들을 후보군 메모리에서 제거하고, 해로 선택되지 않은 나머지 해당 경
합의 후보들 및 이후 수행될 대기중인 경합들의 후보 중에서 배타적 관계 조건으로 해가 될 수 없는 후보를 제
외함으로써 이루어지는, 후보 선정 단계; 를 포함하며, 상기 (e) 단계 이전에, (d) 특정 경합의 후보들이 모두
이전에 수행된 경합들의 해와의 배타적 관계에 의해 배제되는 경우가 존재하면, 상기 경합관리자는 본격적으로
경합 요청을 처리하기 전에, 유효 후보가 존재하는지 여부를 판단하여(S32), 유효 후보가 존재하는 경우에 상기
(e) 단계로 진행하여 상기 경합 요청의 처리(S33~S34)를 본격적으로 진행하고, 유효 후보가 존재하지 않는 경우
에는, 해당 경합을 요청했던 쓰레드에 다시 후보를 검색해 등록하도록 지시하는 단계; 를 더 포함하는 것을 특
징으로 한다.
또는, 상기 방법은, (a) 멀티 쓰레드 방식의 멀티 태스킹을 행하는 서버가, 각 쓰레드에게 속한 클라이언트로부[0023]
터 경합 요청이 발생하면(S11), 시스템 데이터베이스 또는 분산캐시(12,22,32)에 저장되어 있는 데이터들을 검
색하여 조건에 부합하는 후보들을 검색하여(S21), 경합관리자(90)에게 후보 등록을 신청하는 단계(S23); (b) 경
합관리자(90)가, 상기 쓰레드로부터 등록 신청을 받은 후보들을 분산캐시(12)의 후보군 메모리에 등록하고
(S31), 각 후보에 대해 다른 경합을 위한 후보들과의 관계성을 확인하여, 배타적 관계에 있는 후보들 목록을 후
보에 대한 추가 정보로서 저장하는 단계; (c) 상기 (b) 단계 이후, 상기 서버가, 후보 등록이 끝난 쓰레드에 대
응하는 해당 경합 요청에 대한 처리를 경합관리자에게 요청하는 단계(S25); 및 (e) 상기 경합관리자가, 순차적
등록특허 10-1783840
- 7 -
으로 경합 요청을 처리하되(S33~S34), 각 후보 선정은, 해당 경합 요청의 해로 선택된 후보에 대해 해당 후보와
배타적 관계에 있는 다른 경합의 후보들을 후보군 메모리에서 제거하고, 해로 선택되지 않은 나머지 해당 경합
의 후보들 및 이후 수행될 대기중인 경합들의 후보 중에서 배타적 관계 조건으로 해가 될 수 없는 후보를 제외
함으로써 이루어지는, 후보 선정 단계; 를 포함하며, 상기 (e) 단계 이전에, (d) 특정 경합의 후보들이 모두 이
전에 수행된 경합들의 해와의 배타적 관계에 의해 배제되는 경우가 존재하면, 상기 경합관리자는 본격적으로 경
합 요청을 처리하기 전에, 유효 후보가 존재하는지 여부를 판단하여(S32), 유효 후보가 존재하는 경우에 상기
(e) 단계로 진행하여 상기 경합 요청의 처리(S33~S34)를 본격적으로 진행하고, 유효 후보가 존재하지 않는 경우
에는, 해당 경합을 요청했던 쓰레드에 다시 후보를 검색해 등록하도록 지시하는 단계; 를 더 포함하는 것을 특
징으로 한다.
삭제[0024]
또한 바람직하게는, 상기 (e) 단계 이후에, (f) 상기 경합관리자는, 상기 서버에 해를 응답하고(S35), 의사 결[0025]
정의 해를 출력하도록 하는 단계(S36);를 더 포함하는 것을 특징으로 한다.
가장 바람직하게는, 상기 경합은 컨테이너 터미널에서의 오브젝트들의 의사결정 요청인 것을 특징으로 한다.[0026]
발명의 효과
상기한 바와 같이 본 발명에 관한 부분적 멀티 쓰레드 방식을 이용한 경합관리자 시스템 및 경합관리 방법에 의[0027]
하면, 다수의 오브젝트들의 위치 결정을 멀티 쓰레드 방식이나 병렬 서버 시스템으로 구현할 경우, 상이한 오브
젝트들의 위치 결정이 동일 위치로 중복 결정되거나 인접하여서는 안 되는 오브젝트들이 인접하게 되는 등의 위
치 결정 실패 가능성을 방지하면서도, 멀티 쓰레드 방식이나 병렬 서버 시스템의 성능을 가급적 떨어뜨리지 않
고서 수행가능하다는 장점이 있다.
본 발명의 추가적인 목적과 효과들은, 이하에서 도면을 참조하여 설명하는 본 발명을 실시하기 위한 구체적인[0028]
내용으로부터 보다 명확해질 것이다.
도면의 간단한 설명
도 1은 제2 종래기술에 의한 분산캐시를 적용한 병렬서버 시스템 구성도이고, [0029]
도 2는 본 발명의 제1 실시예에 따른 컨테이너 터미널에 대한 경합관리자 적용 사례를 보여주는 도면이고,
도 3은 본 발명의 제1 실시예에 따른 경합관리 방법의 핵심이 되는 흐름도이고,
도 4는 본 발명의 제1 실시예에 따른 경합관리자 모듈의 클래스 설계이고,
도 5는 본 발명의 제1 실시예에 따른 경합관리 방법에서 서로 배타적 관계에 있는 경우에 대한 경합관리자 실행
사례이고,
도 6은 종래의 전체 풀이과정을 동기화한 경우(좌)와 본 발명의 제1 실시예에 따른 경합관리자를 적용한 경우
(우)의 성능 비교이고,
도 7은 종래의 전체 풀이과정을 동기화한 경우와, 본 발명의 제1 실시예에 따른 경합관리자에 복수후보를 등록
한 경우, 및 본 발명의 제2 실시예에 따른 경합관리자에 단일후보를 등록한 경우의 컨테이너 터미널 위치 선정
문제 해 비교이고,
도 8은 본 발명의 제1 실시예에 따른 경합관리자에 복수후보를 등록한 경우(좌)와 본 발명의 제2 실시예에 따른
단일후보를 등록한 경우(우)의 성능 비교이고,
도 9는 본 발명의 제3 실시예에 따른 컨테이너 터미널에 대한 경합관리자 적용 사례를 보여주는 도면이다.
발명을 실시하기 위한 구체적인 내용
등록특허 10-1783840
- 8 -
이하에서는, 본 발명과 관련된 부분적 멀티 쓰레드 방식을 이용한 경합관리자 시스템 및 경합관리 방법의 실시[0030]
예를 도 2 내지 도 9를 참조하여 상세하게 설명한다.
다만, 첨부된 도면 및 실시예는 본 발명의 내용을 보다 쉽게 개시하기 위하여 설명되는 것일 뿐, 본 발명의 범[0031]
위가 첨부된 도면 및 실시예의 범위로 한정되는 것이 아님은 당해 기술 분야의 통상의 지식을 가진 자라면 용이
하게 알 수 있을 것이다.
(제1 실시예)[0032]
우선, 본 발명의 제1 실시예에 관한 부분적 멀티 쓰레드 방식을 이용한 경합관리자 시스템 및 경합관리 방법의[0033]
실시예를 도 2 내지 도 6을 참조하여 상세하게 설명한다.
도 2는 본 발명의 제1 실시예에 따른 컨테이너 터미널에 대한 경합관리자 적용 사례를 보여주는 도면이고, 도 3[0034]
은 본 발명의 제1 실시예에 따른 경합관리 방법의 핵심이 되는 흐름도이고, 도 4는 본 발명의 제1 실시예에 따
른 경합관리자 모듈의 클래스 설계이고, 도 5는 본 발명의 제1 실시예에 따른 경합관리 방법에서 서로 배타적
관계에 있는 경우에 대한 경합관리자 실행 사례이고, 도 6은 종래의 전체 풀이과정을 동기화한 경우(좌)와 본
발명의 제1 실시예에 따른 경합관리자를 적용한 경우(우)의 성능 비교이다.
먼저, 도 2는, 컨테이너 터미널에 대한 경합관리자 적용 사례로서, 각 노드 간의 메모리 정보를 공유하는 분산[0035]
캐시 메모리(12)는, 도 4의 경합관리자(90)를 실행하기 위한 프로그램이 저장된 공간(121)과 일례로 터미널의
위치에 대한 지리적 정보를 갖는 3D 맵을 저장하는 공간(122)으로 구분되며, 이들은 각각 각 노드(10,20,30)와
연결되어 있다.
각 노드(10,20,30)는, 상기 경합관리자 실행 프로그램이 저장된 공간(121)으로부터 코드를 불러와서 상기 터미[0036]
널 위치 정보가 저장된 공간(122)의 정보를 참조하여 경합관리를 실행하는바, 각 노드(10,20,30)의 경합관리 동
작을 나타내는 코드 중에서, 하늘색으로 표시된 부분("boundary getBestSlot()", "setSlot()")은 후보 데이터
를 데이터베이스/메모리로부터 조회하고 결과를 저장하는 부분이고, 빨간색으로 표시된 부분("addCandidate()",
"doCoptetion()")은 후보를 경합관리자에 등록하고 경합을 요청하는 부분을 나타낸다.
이상의 경합관리 방법의 구체적인 처리 단계들을, 도 1의 시스템 구성도, 도 2의 블럭도 및 도 3의 흐름도, 그[0037]
리고 도 4의 경합관리자 모듈의 구조도를 참조하여, 상세히 설명한다.
1) 각 노드들(10,20,30)은, 자신에게 접속해 있는 클라이언트(도 1의 40,50,60)로부터 경합 요청이 발생하면[0038]
(S11), 데이터베이스(도 1의 70) 또는 메모리(12,22,32)에 저장되어 있는 데이터들을 검색하여 조건에 부합하는
후보들을 검색하여(S21), 후보 검색에 성공하게 되면(S22), 경합관리자에 후보 등록을 신청한다(S23).
2) 경합관리자(도 4의 90)는, 각 노드가 등록 신청한 후보들을 분산캐시(12)의 후보군 메모리에 등록한다(S31).[0039]
이때 각 후보에 대해 이미 후보군 메모리에 들어 있는 다른 경합을 위한 후보들과의 관계성을 확인하여, 배타적
관계에 있는 후보들 목록을 후보에 대한 추가 정보로서 저장한다.
3) 이후, 각 노드가 후보 등록이 종료되었는지를 판단하여(S24), 후보 등록이 끝나지 않은 경우에는, 끝날 때까[0040]
지 계속해서 진행하고, 후보 등록이 끝난 노드는, 해당 경합 요청에 대한 처리를 경합관리자에게 요청한다
(S25). 이 요청은 동기화된 큐에 등록되며, 이후 단계에서 순차적으로 처리된다.
4) 경합관리자는, 큐에 등록된 순서대로 순차적으로 경합 요청을 처리한다(S33~S34). 이 과정에서 해당 경합 요[0041]
청을 위해 등록된 후보들을 후보군 메모리에서 아래와 같이 처리한다.
i) 해당 경합 요청의 해로 선택된 후보에 대해, 해당 후보와 배타적 관계에 있는 다른 경합의 후보들을 후보군[0042]
메모리에서 제거한다.
ii) 해로 선택되지 않은 나머지 해당 경합의 후보들을 후보군 메모리에서 제거한다.[0043]
iii) 이상을 통해 후보군 메모리는 이후 수행될 대기중인 경합들의 후보 중에서 배타적 관계 조건으로 해가 될[0044]
수 없는 후보를 제외한 후보들만을 갖게 된다.
등록특허 10-1783840
- 9 -
5) 간혹 특정 경합의 후보들이 모두 이전에 수행된 경합들의 해와의 배타적 관계에 의해 배제되는 경우가 존재[0045]
한다. 따라서, 상기 경합관리자는 본격적으로 경합 요청을 처리하기 전에, 유효 후보가 존재하는지 여부를 판단
할 필요가 있다(S32). 그리하여 상기 S32 판단 결과, 유효 후보가 존재하는 경우에, 상기 경합 요청의 처리
(S33~S34)를 본격적으로 진행하고, 유효 후보가 존재하지 않는 경우에는, 해당 경합을 요청했던 노드는 다시 후
보를 검색해 등록해야 하며(S21), 유효한 후보가 존재하지 않을 경우 이 경합의 해는 존재하지 않는다.
6) 이후, 경합관리자는, 각 서버 노드에 해를 응답하고(S35), 의사 결정의 해를 출력함으로써(S36), 종료된다.[0046]
혹은, 상기 S22 단계에서, 후보 검색이 성공하지 못했을 경우에도 에러를 출력하면서 강제로 종료한다.
참고로, 도 4는, 경합관리자 모듈의 클래스 설계이다. 의사 결정 후보(PositioningCandidate)(91) 중에서, 배타[0047]
성(relation)을 미리 등록한 메모리 자료구조(Candidate)(92)를 형성하며, 경합관리자 프로그램
(CompetitionManager)(93)이 후보들(candidates), 경합(competitions) 및 결과(results)를 매핑하고, 경합
(Competition)(94)이 이루어지도록 한다. 부재번호 92', 93' 및 94' 는, 이들과 인터페이싱을 위한 자원들이다.
이제, 상기 경합 요청 처리 단계(S33~S34)들의 실제 예를, 상기 도 3의 흐름도, 도 4의 경합관리자 모듈의 구조[0048]
도 및 도 5의 경합 관리의 일례를 참조하여 더 상세히 설명한다.
일례로, 도 5에서의 경합 A에 a1, a2 두 개의 후보가 있고, 경합 B에 b1, b2, b3 세 개의 후보가 있고, a2와 b1[0049]
이 서로 배타적 관계에 있는 경우에 대한 경합관리자 실행 사례를 살펴본다.
극단적인 예로서, '경합 A'는 '컨테이너 A'가 야적될 위치를 결정하는 경합을 나타내고, 그러한 가능성으로서[0050]
후보 'a1'은 그 위치가 'DK'블록의 27번행 6번열 1층이라고 가정하고, 후보 'a2'는 그 위치가 'DL'블록의 1번행
6번열 2층이라고 가정하며, '경합 B'는 '컨테이너 B'가 야적될 위치를 결정하는 경합을 나타내고, 그러한 가능
성으로서 후보 'b1'도 그 위치가 'DL'블록의 1번행 6번열 2층이라고 가정하며, 후보 'b2'는 그 위치가 'DJ'블록
의 1번행 5번열 3층이라고 가정한다.
아울러, 미리 설정된 여러 가지 요인을 종합적으로 판단하여, 후보 'a1'은 점수가 100점이고, 후보 'a2'는 200[0051]
점으로 '경합 A'의 후보로는 후보 'a2'가 점수가 가장 높으며 ('DL'블록의 1번행 6번열 2층이 컨테이너 A로서의
최적 위치임), 한편, 후보 'b1'은 점수가 300점이고, 후보 'b2'는 200점이며, 후보 'b3'는 100점으로 '경합 B'
의 후보로는 후보 'b1'이 점수가 가장 높다 (역시 'DL'블록의 1번행 6번열 2층이 컨테이너 B로서도 최적
위치임). 따라서, 후보 'a2'와 후보 'b1'은 동일한 위치로서 서로 배타적 관계에 있다 (관련성 변수인
'relation'=1).
먼저, 왼쪽 흐름은 예를들어 경합 A가 먼저 호출된 경우로서, 경합 A부터 순차적으로 처리되어야 하므로, 먼저[0052]
경합 A의 후보 중에서 가장 점수가 높은 (컨테이너 A로서의 최적 위치인) 후보 'a2'가 선정된다(S33).
이후, 도 3의 S34 단계에서와 같이, 해당 의사결정이 완료된 후보 'a1'은 후보들에서 제거되고, 계속해서 순차[0053]
적으로 경합 B를 수행하게 되는바, 역시 경합 B의 후보 중에서 가장 점수가 높은 (컨테이너 B로서의 최적 위치
인) 후보 'b1'을 고려하지만, 후보 'a2'와 배타적 관계이므로 후보들에서 제거되고, 다음 점수가 높은 후보
'b2'를 선정하게 된다. 역시, 이후 해당 의사결정이 완료된 후보 'b3'은 후보들에서 제거된다.
상기 예에서는 후보 'a2'와 후보 'b1'이 그 위치가 'DL'블록의 1번행 6번열 2층으로서 동일하므로 상호 배타적[0054]
인 것으로 예를 들었으나, 반드시 이에 한정되는 것은 아니고, 다른 예로서 상호 화학반응을 일으킬 수 있는 위
험물 내장 컨테이너들로서 얼마 간격 이상을 반드시 이격하여야 한다든지, 혹은 컨테이너의 길이가 서로 달라서
적재시 공간의 효율성이 현저히 떨어지는 경우에도 상호 배타적으로 처리될 수 있으며, 이러한 상호 배타성은
미리 등록하여 두고, 의사결정시 이를 이미 감안하게 되면, 나중에 의사결정 후에 중복해서 위치결정이 되거나
위치결정 실패로 돌아가거나 이로 인하여 발생되는 추가의 문제점 등 (처음부터 다시 의사결정을 하여야 하는
등) 을 해소할 수 있어, 효율적이다.
한편, 도 5의 오른쪽 흐름은, 경합 B가 먼저 호출된 경우의 의사결정의 흐름을 나타내며, 노란 색으로 표시된[0055]
후보가 각각 해로 선택된다. 즉, 경합 B에서는 후보 'b1'이 선정되고, 이후 배타적인 관계인 후보 'a2'가 삭제
됨으로 인하여 후보 'a1'이 대신 선정되는 과정을 나타낸다.
등록특허 10-1783840
- 10 -
본 발명은 경합을 병렬서버, 혹은 멀티 쓰레드 처리방식에서 병렬로 처리함에 있어, 반드시 동기화가 필요한 부[0056]
분인 해를 구하는 단계만을 동기화(순차처리)하였다. 그 외의 후보 등록 단계는 병렬 처리가 가능하면서도, 후
보를 등록하는 것만으로는 해결되지 않는 문제들을 해결하기 위해 후보 간의 배타적 관계 등록, 해 결정에 따른
후보 배제 등의 단계를 추가함으로써 경합의 수행 순서가 어떻게 되든 해를 구할 수 있는 일반적인 해법을 제시
한다.
즉, 기존의 순차적 알고리즘(완전 동기화)에서는 효율성을 위해 보다 나은 후보가 발견되면 그보다 낮은 점수의[0057]
후보들을 즉시 배제하는 것이 일반적이다. 예를 들어 도 5의 예에서 경합 A가 먼저 수행된다고 가정할 때 'a1'
을 먼저 발견하고 'a2'를 발견했다면 'a2'가 'a1'보다 나은 해이므로 'a1'을 즉시 배제한다. 하지만 병렬서버에
서는 'a2'가 다른 경합에 의해 유효하지 않은 해가 될 가능성이 존재하므로 'a1'을 즉시 배제하는 대신 다른 먼
저 수행된 경합들이 완료될 때까지 유지함으로써 해로 선택될 수 있는 가능성을 남겨둔다.
본 발명을 통해 실제적으로 해를 찾는 데 소요되는 시간이 절감되었다. 도 6은, 전체 풀이과정을 동기화한 경우[0058]
(좌)와 본 발명의 제1 실시예의 경합관리자를 적용한 경우(우)의 성능 비교 그래프로서, 동일한 문제를 2개 서
버 노드에서 각각 3개의 쓰레드로 50회 반복적으로 푸는 테스트를 진행한 결과, 후보 등록 단계를 분리하지 않
고 문제 풀이과정 전체를 동기화한 경우 평균 523ms가 소요된 반면 (도 6의 좌측), 본 발명의 제1 실시예에 따
른 경합관리자를 적용하고 후보 등록 단계를 부분적으로 병렬화한 경우 평균 328ms가 소요되었다 (도 6의 우
측).
(제2 실시예)[0059]
이제, 본 발명의 제2 실시예에 관한 부분적 멀티 쓰레드 방식을 이용한 경합관리자 시스템 및 경합관리 방법의[0060]
또다른 실시예를, 도 6 내지 도 8을 참조하여 상세하게 설명한다.
도 6은 종래의 전체 풀이과정을 동기화한 경우(좌)와 본 발명의 제1 실시예에 따른 경합관리자를 적용한 경우[0061]
(우)의 성능 비교이고, 도 7은 종래의 전체 풀이과정을 동기화한 경우와, 본 발명의 제1 실시예에 따른 경합관
리자에 복수후보를 등록한 경우, 및 본 발명의 제2 실시예에 따른 경합관리자에 단일후보를 등록한 경우의 컨테
이너 터미널 위치 선정 문제 해 비교이고, 도 8은 본 발명의 제1 실시예에 따른 경합관리자에 복수후보를 등록
한 경우(좌)와 본 발명의 제2 실시예에 따른 단일후보를 등록한 경우(우)의 성능 비교이다.
한편, 문제에 따라서는 차선의 해를 허용하지 않고, 앞서 이루어진 경합의 결과를 반영한 상태에서의 최적의 해[0062]
를 요구하는 경우가 있다. 이는 각 서버 노드가 후보를 등록할 때 가장 높은 점수의 후보만을 단일후보로 등록
하는 방법으로 해결할 수가 있다.
도 7은, 전체 풀이과정을 동기화한 경우와, 경합관리자에 복수후보를 등록한 경우, 경합관리자에 단일후보를 등[0063]
록한 경우의 컨테이너 터미널 위치 선정 문제 해의 비교표이다.
일례로, 상기 도 5에서도 가정한 바대로, 『'경합 A' ('컨테이너 A'가 야적될 위치를 결정하는 경합) 의 후보[0064]
'a1'의 위치가 'DK'블록의 27번행 6번열 1층이고, 후보 'a2'는 그 위치가 'DL'블록의 1번행 6번열 2층이라고 가
정하며, '경합 B' ('컨테이너 B'가 야적될 위치를 결정하는 경합) 의 후보 'b1'은 그 위치가 'DL'블록의 1번행
6번열 2층이고, 후보 'b2'은 그 위치가 'DJ'블록의 1번행 5번열 3층이라고 가정했을 때, 후보 'a1'은 점수가
100점이고, 후보 'a2'는 200점으로 '경합 A'의 후보로는 후보 'a2'가 점수가 가장 높으며 ('DL'블록의 1번행 6
번열 2층이 컨테이너 A로서의 최적 위치임), 한편 후보 'b1'은 점수가 300점이고, 후보 'b2'는 200점이며, 후보
'b3'는 100점으로 '경합 B'의 후보로는 후보 'b1'이 점수가 가장 높다 (역시 'DL'블록의 1번행 6번열 2층이 컨
테이너 B로서도 최적 위치이다)』 고, 제1 실시예에서와 같이 가정했을 때, 후보 'a2'와 후보 'b1'은 서로 배타
적 관계에 있게 된다.
더욱이, 경합 B가 먼저 호출된 경우일 때, 복수후보를 등록 가능하다면, 상기 제1 실시예에서와 같이, 경합 B에[0065]
서는 후보 'b1'이 선정되고, 이후 배타적인 관계인 후보 'a2'가 삭제됨으로 인하여 후보 'a1'이 대신 선정되므
로, 도 7의 중간 열의 2번에서와 같이, 후보 'b1' 선정에 의해 컨테이너 B가 'DL'블록의 1번행 6번열 2층에 적
재되고, 이후 후보 'a2'가 삭제되고, 후보 'a1' 선정에 의해 컨테이너 A가 'DK'블록의 27번행 6번열 1층에 적재
되면 된다 (도 7의 중간 열의 3번의 적색 문자열참조).
그러나, 만약 컨테이너 C는 일례로 대형 컨테이너로서 혹은 특수 화학물질이 들어 있어서 반드시 'DL'블록에만[0066]
등록특허 10-1783840
- 11 -
적재되어야 한다면, 상기 후보 'a1'은 배제되어야 한다.
즉, 실시예 1 (도 7의 중간 라인) 에서와 같이, 복수후보 등록 시에는, 차선의 해를 선택하면서 결과가 달라지[0067]
는 경우가 있으나, 제2 실시예에서와 같이 단일후보만 등록 가능한 경우의 전체 풀이 과정을 동기화한 경우와
같은 최적의 해를 구한다.
이렇게 하면, 단일후보가 다른 경합에 의해 배제될 경우, 경합관리자가 해당 서버 노드에 후보 재선정을 요구하[0068]
므로 (도 3의 S32 에서 S21로의 피드백), 후보 선정 과정을 여러 차례 반복하면서, 당연히 제1 실시예의 복수후
보 등록이 가능한 경우에 비해 성능이 저하된다. 그러나, 그럼에도 불구하고 제2 실시예의 경우에도, 종래의 전
체 동기화의 경우보다는 성능이 뛰어남을 알 수 있다.
도 8은, 경합관리자에 복수후보를 등록한 경우(좌)와 단일후보를 등록한 경우(우)의 성능 비교 그래프이다. 즉,[0069]
도 8의 좌측 그래프 (도 6의 우측 그래프) 에서 보는 바와 같은 "경합관리자에 복수후보를 등록한 제1 실시예의
경우" (328ms) 보다는, 도 8의 우측 그래프에서 보는 바와 같은 "경합관리자에 단수후보 만을 등록가능한 제2
실시예의 경우" (390ms)에는 다소 떨어진다.
하지만 동일한 알고리즘에 입력값만 변경하여 해를 구할 수 있다는 것은 본 발명의 범용성을 입증하며, 간혹 긴[0070]
지연이 발생하긴 하지만, 그럼에도 불구하고 평균 수행 속도는 390ms로, 동일한 조건에서의 종래기술의 전체 동
기화의 평균 주행 속도 523ms 보다는 월등히 빠른 결과를 얻었다.
(제3 실시예)[0071]
다른 한편, 본 발명의 제1 및 제2 실시예에 대한 변형예로서의 제3 실시예에 관한 부분적 멀티 쓰레드 방식을[0072]
이용한 경합관리자 시스템 및 경합관리 방법의 또다른 실시예를, 도 9를 참조하여 상세하게 설명한다.
본 발명의 제3 실시예에 따른 컨테이너 터미널에 대한 경합관리자 적용 사례를 보여주는 도 9에서 보듯이, 도 2[0073]
의 제1 실시에의 블록도와의 차이점은, 하나의 서버 노드(10 또는 20)에서 두 개 이상의 쓰레드(101,102 또는
201,202)가 멀티태스킹되고 있다는 점이다.
이때, 서버 노드의 성능이 허락하는 한, 쓰레드의 개수는 제한이 없고, 따라서 하나의 서버 노드가 충분히 많은[0074]
쓰레드를 충분히 멀티 태스킹 가능하다면, 제3 실시예에서의 서버는 단일 서버여도 상관없다.
도 9에서 각 쓰레드의 의사 결정 처리 방법은, 제1 또는 제2 실시에와 동일하며, 그 동작 주체가 도 2의 서버[0075]
노드(10,20,30) 대신 도 9에서는 쓰레드(101,102)로 바뀌었을 뿐이다.
즉, 도 9에서, 각 쓰레드 간의 메모리 정보를 공유하는 분산캐시 메모리(12)는, 경합관리자(90)를 실행하기 위[0076]
한 프로그램이 저장된 공간(121)과 위치 정보가 저장된 공간(122)으로 이루어지며, 서버(10)는 각 쓰레드(101,
102)의 요청에 따라, 경합관리자(90)를 실행하기 위한 프로그램이 저장된 공간(121)에 저장된 데이터로서 후보
등록을 동시에 병렬처리하고, 후보 선정은 각 쓰레드의 경합 요청 순서대로 순차적 처리를 하되, 일례로 터미널
내 야드 위치 정보가 저장된 공간(122)으로부터의 데이터로 장치 가능한 빈 공간을 검색하여 후보 선정을 행하
고 일단 선정된 위치는 예약된 위치 검색에서 제외시키는 등의 경합 처리를 행하게 된다.
한편, 이상의 시스템을 구축하기 위한 하드웨어 요건은 다음과 같다.[0077]
i) 입력: DB/메모리 상에 존재하는 후보 데이터 클라이언트 PC에서 장비 동작에 따라 생성되는 이벤트 데이터[0078]
(예: 크레인이 컨테이너를 차량에 싣는 이벤트가 발생했을 때, 차량이 이 컨테이너를 어디로 이동시켜야 할지에
대해 서버는 DB/메모리에서 적합한 위치를 검색하여 결정함)
ii) 처리: CPU/메모리 (예: CPU는 메모리에 후보 데이터를 등록하고 의사결정을 수행한 뒤 후보 데이터를 메모[0079]
리에서 삭제한다.)
iii) 출력: DB 클라이언트 디스플레이 (예: 서버는 의사결정 수행 결과를 DB에 저장하고, 클라이언트에 메시[0080]
지를 전송해 수행 결과를 표시한다.)
이상, 본 발명을 하나의 실시예를 가지고 설명하였으나, 본 발명이 반드시 상기 실시예에 제한되는 것은[0081]
등록특허 10-1783840
- 12 -
아니며, 일례로 컨테이너 화물 터미널에서의 컨테이너의 적재를 위한 시스템 뿐만이 아니고, 상술하였듯이 좌석
예약 시스템이나 기타 다수의 오브젝트들의 의사 결정을 위한 시스템에서도, 본 발명의 기술 사상 내에서 별다
른 기술사상의 추가 없이도 곧바로 적용가능하다 할 것이다.
따라서, 이상에서 설명한 본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기[0082]
술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능함은 본 발명이 속하는 기술 분야
에서 통상의 지식을 가진 자에게 있어서 명백할 것이다.
부호의 설명
10,20,30 : 노드 11,21,31 : 애플리케이션[0083]
12,22,32 : 분산캐시 40,50,60 : 클라이언트
70 : 시스템 데이터베이스 80 : 연결망
90 : 경합관리자
101,102 : 제1 노드의 쓰레드
도면
도면1
등록특허 10-1783840
- 13 -
도면2
도면3
등록특허 10-1783840
- 14 -
도면4
도면5
등록특허 10-1783840
- 15 -
도면6
도면7
도면8
등록특허 10-1783840
- 16 -
도면9
등록특허 10-1783840
- 17 -
부분적 멀티 쓰레드 방식을 이용한 경합관리자 시스템 및 경합관리 방법(System and method of competition manager using semi-multithread)
2018. 3. 20. 21:06