KR101429684B1 - 리소스 처리 방법 및 장치 - Google Patents

리소스 처리 방법 및 장치 Download PDF

Info

Publication number
KR101429684B1
KR101429684B1 KR1020120095748A KR20120095748A KR101429684B1 KR 101429684 B1 KR101429684 B1 KR 101429684B1 KR 1020120095748 A KR1020120095748 A KR 1020120095748A KR 20120095748 A KR20120095748 A KR 20120095748A KR 101429684 B1 KR101429684 B1 KR 101429684B1
Authority
KR
South Korea
Prior art keywords
node
resource
state
locked
determining whether
Prior art date
Application number
KR1020120095748A
Other languages
English (en)
Other versions
KR20140030487A (ko
Inventor
문종욱
Original Assignee
주식회사 시큐아이
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 시큐아이 filed Critical 주식회사 시큐아이
Priority to KR1020120095748A priority Critical patent/KR101429684B1/ko
Publication of KR20140030487A publication Critical patent/KR20140030487A/ko
Application granted granted Critical
Publication of KR101429684B1 publication Critical patent/KR101429684B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

본 발명은, 가비지 콜렉터에 의해 리소스를 처리하는 방법 및 장치에 관한 것으로서, 상기 리소스의 일부를 구성하는 일 노드를 선택하고, 그 상태를 판단하고, 상기 노드 상태 판단 후에 노드를 락하여 제거하며, 노드의 제거 전에 노드의 변경 여부를 검증하므로써 가비지 콜렉션의 처리 속도 및 효율, 신뢰성을 향상시킬 수 있다.

Description

리소스 처리 방법 및 장치{METHOD FOR PROCESSING RESOURCE AND DEVICE THEREOF}
본 발명은 리소스 처리 방법 및 장치에 관한 것으로서, 특히, 프로세서의 일 기능인 가비지 콜렉터(garbage collector)가 데이터 또는 메모리와 같은 리소스의 처리를 효율적으로 수행하기 위한 방법 및 장치에 관한 것이다.
가비지 콜렉션(garbage collection)이란 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요 없게 된 영역을 해제하는 프로세서의 기능 중 하나이다. 이에 따라 가비지 콜렉션이 지원되는 환경에서는 프로그래머가 동적으로 할당한 메모리 영역의 전체를 완벽하게 관리할 필요가 없어진다. 가비지 콜렉션은 메모리 누수와 메모리 해제 실수를 막는 수단으로서 새로운 정보의 저장을 위해 불필요한 자료를 식별해서 메모리에서 삭제하는 소프트웨어 전략이다.
한편, 가비지 콜렉션은 비용이 소요되는 작업으로서 일단 작업이 시작되면 CPU를 일정 시간 점유하게 된다. 또한, 가비지 콜렉션이 일어나는 타이밍이나 점유 시간을 미리 예측하기 어렵기 때문에 실시간 시스템에는 적합하지 않는 경우가 많으며, 멀티스레드 프로그래밍에서는 참조 카운터 및 가비지 콜렉션을 사용하지 않으면 스레드 간 공유하고 있는 메모리나 객체의 해제가 어려운 경우가 많다.
이와 같이, 멀티 코어 프로그래밍 환경에서 네트워킹에 관련한 주요 자료 구조는 실시간 가비지 콜렉션이 요구되는 경우가 많이 있다. 대표적으로 라우팅 분야의 라우트 캐시, 방화벽과 같은 보안 모듈의 세션 처리 등을 들 수 있다.
또한, 멀티 코어 프로그래밍 환경에서 주요 공유 리소스에 대한 레이스 컨디션(race condition)을 회피하기 위해 락(lock)을 이용해서 공유 리소스를 보호 할 수 있다. 그러나, 락의 사용 시, 처리를 위한 프로세서의 개수가 일정 개수 이상 늘어나게 되면 처리 성능이 더 이상 오르지 못하고 특정 성능에 대해 수렴 현상(saturation)이 생긴다.
한편, 프로세서가 공유 리소스를 접근하데 있어서, 리소스를 읽기(read)만 하거나, write, insert, delete와 같이 변경하는 경우가 있다. 네트워킹에 관련한 주요 자료 구조들은 주로 읽기 위한 속성을 가지고 있고, 특히, RCU(read copy update)는 락 없이도 안전하게 노드 트래버설(Node Traversal)을 할 수 있다. 그러나, RCU를 사용하더라도 프로세서들간 리소스에 대한 경쟁은 수반되므로 lock을 이용하여 공유 자원에 대한 접근을 보호할 필요가 있다.
그러나, 최근 들어 고속의 패킷 처리를 하는 방화벽이나 여타 보안 장비의 경우 점차 CPS(Connection Per Second) 처리량이 중요해지고 있다. 높은 CPS를 달성하기 위해서는 Connection Setup과 Connection Teardown이 모두 필요하다. 예컨대, Connection Setup 시에는 세션 노드를 공유 자원에 삽입(Insert)하는 일이 요구되고, Connection Teardown 시에는 Timeout된 세션 노드를 공유 자원에서 제거(Delete)하는 일이 요구된다.
Connection Setup 과정은 패킷이 유입된 경우 그 패킷이 신규 세션일 때 일어나는 일종의 event driven적인 특성이 있고, Connection Teardown 는 보통 타임아웃(timeout)되어 유효하지 아니한 노드를 지속적으로 폴링(polling)하여 타임아웃된 노드가 발견되면 이를 제거하는 방법으로 구현된다.
여기서, Connection Setup 과정은 패킷 처리 과정 도중에도 작업 가능하므로 기존 working thread에 코드가 삽입이 되는데 반해, Connection Teardown 과정은 별도의 Garbage Connecting Thread를 생성하거나, 주기적인 timer handler에 의해 구현될 수 있다.
초당 수십만 세션이 생성 또는 소멸 되는 망에서는 Connection Teardown 처리가 신속해야 하고, 고속 CPS 처리를 위해 가비지 콜렉션(Garbage Collection)의 실시간 처리가 요구되고 있다.
이 경우, Connection Setup 과정의 Insert 동작과, Connection Teardown 처리를 위한 Delete 동작은 일반적으로 락(lock) 처리가 요구되는데, 다른 프로세스 또는 쓰레드가 락 경쟁(lock contention)에 의해 방해를 받아 프로세서 전체의 성능이 크게 떨어지게 되는 문제점이 생긴다.
본 발명은, 상술한 문제점을 해결하기 위하여 공유 자원을 충분히 보호하면서도 실시간 가비지 콜렉션이 가능한 방법을 제공하도록 한다.
본 발명은, 가비지 콜렉션 과정에서 수반되는 락의 회수를 최소화함으로써 전체 프로세서의 성능을 유지하도록 한다.
본 발명은 락을 수행하지 않고 행한 노드 트래버설 과정에서 발생 가능한 노드 변경의 경우도 다시 검증하도록 함으로써 가비지 콜렉션의 신뢰성을 높이도록 한다.
본 발명의 일 실시예에 따른 가비지 콜렉터에 의해 리소스를 처리하는 방법은, 상기 리소스의 일부를 구성하는 일 노드를 선택하는 단계; 상기 선택된 일 노드의 상태를 판단하는 단계; 상기 노드 상태 판단 후 상기 선택된 일 노드를 락하는 단계; 상기 락한 일 노드의 변경 여부를 판단하는 단계; 및 상기 락한 일 노드를 제거하는 단계를 포함한다.
본 발명의 일 실시예에 따른 프로세서를 포함하고, 프로세서에 의해 실행되는 가비지 콜렉터에 의해 리소스를 처리하는 장치는, 상기 리소스의 일부를 구성하는 일 노드를 선택하는 단계; 상기 선택된 일 노드가 유효한 지를 판단하여 노드의 처리 여부를 결정하는 단계; 상기 노드의 처리 여부 결정 후 상기 선택된 일 노드를 락하는 단계; 상기 락한 일 노드의 변경 여부를 판단하는 단계; 및 상기 락한 일 노드를 제거하는 단계를 포함하는 동작을 실행한다.
본 발명에 따르면 프로세서의 전체 성능을 유지하면서 실시간으로 가비지 콜렉션을 수행할 수 있다.
본 발명에 따르면 가비지 콜렉션의 신뢰성을 높일 수 있다.
도 1a 내지 도 1c는 해시트 링크트 리스트(hashed linked list)로 형성된 리소스에 대해 가비지 콜렉션을 행하는 동작을 도식화하고 있다.
도 2는 종례의 리소스 처리 방법에 대한 순서도를 나타낸다.
도 3a 내지 도 3c는 해시트 링크트 리스트로 형성된 리소스에 대해 가비지 콜렉션 과정에서의 검증 동작을 도식화하고 있다.
도 4는 본 발명의 일 실시예에 따른 리소스 처리 방법에 대한 순서도를 나타낸다.
이하 첨부된 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 바람직한 실시예를 상세히 설명한다. 다만, 본 발명의 바람직한 실시예에 대한 동작 원리를 상세하게 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
한편, 본 명세서에서 설명되는 가비지 콜렉터는 본 발명의 리소스 처리 장치에 의해 동작하거나, 리소스 처리 장치를 구성하는 프로세서에 의해 동작할 수 있는 프로세스 또는 프로그램의 하나일 수 있고 동작 주체 또는 디바이스의 구성에 대해 한정은 없다. 또한, 본 명세서에서 설명되는 리소스는 가비지 콜렉터에 의해 처리 가능한 데이터 또는 메모리 등으로 예시될 수 있다. 본 명세서에서는 본 발명의 리소스가 해시트 링크트 리스트로 형성되는 자료 구조로 예시되어 설명되지만 본 발명의 범위는 이에 한정되지 않는다.
도 1a 내지 도 1c는 해시트 링크트 리스트로 형성된 리소스에 대해 가비지 콜렉션을 행하는 동작을 도식화하고 있다.
도 1a를 참조하면 임의의 포맷을 가진 리소스(200) 및 가비지 콜렉터(100)가 도시되고 있다. 도 1a에서 나타내는 바와 같이, 리소스(200)는 해시트 링크트 리스트로 형성되는 자료 구조일 수 있으며, 엔트리를 의미하는 키(key) 및 해당 키 값을 해시된 영역으로 분리하여 복수개의 링크트 리스트로 구성될 수 있다. 해시트 링크드 리스트로 구성된 리소스(200)는 복수의 헤드(210, 229, 230, 240, 250) 및 각 헤드로부터 연결되는 노드의 리스트로 구성될 수 있다. 각 헤드는 연결되는 적어도 하나의 노드를 가질 수도 있지만, 헤드(250)와 같이 노드를 가지지 않을 수 있다. 도 1a 에서 나타내는 바와 같이, 가비지 콜렉터(100)는 복수의 헤드 중 하나의 헤드(210)를 선택하고, 선택된 헤드로부터 접속되는 노드를 순차적으로 화살표 방향(211)으로 탐색하면서 노드에 대한 가비지 콜렉션을 수행할 수 있다. 헤드(210)에 대한 노드의 탐색 및 처리가 모두 끝나면 가비지 콜렉터(100)는 다른 헤드(220, 230, 240, 250) 중 하나의 헤드를 다시 선택하고 선택된 헤드로부터 노드를 탐색한다. 즉, 가비지 콜렉터(100)가 헤드(210)를 선택하고, 헤드(210)로부터 연결되는 노드들(212, 214, 216)을 순차적으로 탐색할 수 있다. 그러나, 가비지 콜렉터(100)가 가비지 콜렉션을 수행하는데 있어서, 그 순서 및 각 노드의 탐색에 대해 정해진 방법은 없다.
도 1b에서는 가비지 콜렉터(100)가, 선택된 헤드(210)에 최초로 연결되는 노드(212)를 선택하고, 선택된 노드의 상태를 판단하여 노드의 처리 여부를 결정할 수 있다. 노드의 상태는 유효 상태 또는 무효 상태를 포함할 수 있고, 무효 상태는, 예컨대, 노드가 타임아웃(timeout) 등과 같은 소정 조건 또는 이벤트에 해당하여 사용되지 않는 지에 의해 결정될 수 있다. 만일 노드(212)가 타임아웃인 경우라면 노드에 대해 가비지 콜렉션을 수행할 필요가 있으며, 노드(212)의 제거 전에 노드(212)를 락(lock)하여 다른 프로세스 등에 의해 노드가 변경되는 것을 방지할 수 있다. 여기서, 노드(212)의 락 처리는 타임아웃으로 판단되어 무효한 노드에 대해 다른 프로세스 등의 억세스 등을 제한하고 가비지 콜렉터(100)만이 배타적으로 억세스할 수 있도록 하는 동작일 수 있다.
한편, 본 명세서에서는 노드를 탐색, 가비지 콜렉션 과정에서, 해당 노드를 탐색하여 처리 여부를 결정하는데 노드 락 없이 수행하고, 노드가 타임아웃된 경우에서야 해당 노드를 락하여 처리할 수 있다. 타임아웃으로 판단된 노드(212)는, 해당 노드(212)를 헤드(210) 및 복수 노드(212, 214, 216, 216)로 구성된 링크트 리스트로부터 제거될 수 있다. 이 경우, 가비지 콜렉터(100)는 노드(212)에 대한 메모리도 함께 해제할 수 있다. 만일, 노드(212)가 아직 타임아웃이 아닌 경우로서 노드(212) 상태가 유효한 경우에는 다음 노드(214)로 이동할 수 있다.
도 1c를 참조하면, 타임 아웃으로 판단된 노드(212)가 제거된 이후의 리소스(200)를 예시하고 있다. 가비지 콜렉터(100)는 제거된 노드(212) 의 다음 노드(214)로 이동하여 노드의 처리 여부를 결정하는 등의 동작을 반복할 수 있다. 즉, 선택된 노드가 아직 유효한 경우는 다시 다른 노드를 선택하는 등의 동작을 반복하여 전체 리소스(200)에 대한 가비지 콜렉션이 수행될 수 있다. 또한, 상술한 바와 같이, 본 발명에 의하면, 노드의 탐색, 이동 및 처리 여부를 결정하는 과정은 해당 노드의 락 없이 수행되므로 다른 프로세스 등의 노드 억세스가 가능하고, 결론적으로 전체 프로세서의 성능이 가비지 콜렉션 동작에 의해 방해되거나 속도가 감소되는 일을 최소화할 수 있다.
도 2는 리소스 처리 방법에 대한 순서도를 나타낸다. 도 2에서 예시되는 순서도는 노드의 리소스 처리에 있어서 해당 노드를 먼저 락 처리한 후, 노드의 처리 여부 결정 및 노드 제거와 같은 가비지 처리를 수행하는 일반적 예를 설명하고 있다.
단계(S11)에서, 가비지 콜렉션의 대상인 리소스에 대해 노드를 탐색하면서 가비지 처리할 노드를 선택한다.
단계(S12)에서, 선택된 노드를 먼저 락 처리하여 다른 프로세스 등의 접근을 제한한다.
단계(S13)에서, 락한 노드가 타임아웃된 지를 판단한다. 락한 노드가 타임아웃되지 아니한 경우는 락한 노드를 락 해제(unlock)하여(S16) 다시 노드를 탐색, 선택하는 과정을 반복한다(단계S11 이후).
단계(S14)에서, 락한 노드가 타임아웃으로 판단된 경우에는 해당 노드를 리소스로부터 제거한다.
단계(S15)에서, 해당 노드에 대한 메모리를 해제한다.
도 2에서 예시하는 바와 같이, 가비지 콜렉션을 위해 탐색되는 노드가 타임아웃되지 아니한 경우에서의 동작 경로(L1)는 노드의 탐색 및 노드 상태의 판단만 수행하는 것으로서 가비지 처리 과정에서 빈번하게 발생되는 동작 구간일 수 있다. 한편, 탐색되는 노드가 타임아웃된 경우의 동작 경로(L2)는 가비지 처리를 수반하기 때문에 경로(L1)와 비교하여 시간 및 비용(프로세스 점유율)이 더 소요될 뿐만 아니라, 전체 가비지 처리 과정에서 비교적 드물게 발생되는 동작 구간일 수 있다. 즉, 빈번하게 발생되는 구간(L1)이든, 드물게 발생되는 구간(L2)이든 간에 L1, L2 구간 모두 탐색되는 노드 전체에 대하여 락 처리를 수행하기 때문에 락 처리의 시간 및 비용이 소요된다. 또한, 다른 프로세스는 락한 노드에 대해 접근이 제한되므로 전체 프로세서의 성능도 저해되게 된다.
본 발명에서는 모든 노드에 대해 락 처리를 수행하는 대신 타임아웃으로 판단된 노드에 대해서만 락처리를 수행하므로써 상술한 동작 경로(L1)에 소요되는 시간 및 비용을 감소시키도록 한다. 즉, 전체 노드가 타임아웃이 되지 않을 것으로 먼저 가정하여 노드의 선택 및 노드 상태 판단을 수행하고, 드물게 발생되는 타임아웃 노드에 대해서만 그때 그때 판단하여 선택적으로 락 처리를 수행함으로써 가비지 콜렉션의 처리 속도를 빠르게 할 수 있다.
한편, 노드 상태를 판단하는 과정이 락 없이 수행되기 때문에, 노드 상태의 판단(S13) 및 노드의 제거(S14) 사이에 예상되지 않는 노드의 변경이 생길 수 있다. 예컨대, 단계(S13) 및 단계(S14)의 시간 사이에서 다른 프로세스가 제거하고자 하는 노드를 사용 또는 삭제할 수 있고, 새로운 노드를 추가할 수도 있기 때문이다. 이처럼 본 특허에서 제안하는 긍정적인 투기성( optimistic speculation )으로 인해 빈번한 처리 구간을 락 없이 처리함으로 다중 처리 시스템에서 상당한 성능을 기대할 수 있지만, 락 없이 접근한 반대 급부로 원자성을 가지지 않은 상태에서 노드의 상태를 확인 한 상태이다. 그러므로 이러한 방식에서 존재할 수 있는 위험성은 검증 과정을 통해 해결한다. 이에 대해서는 이하에서 설명한다.
도 3a 내지 도 3c는 해시트 링크트 리스트로 형성된 리소스에 대해 가비지 수집 과정에서의 검증 동작을 도식화하고 있다. 도 3a를 참조하면, 가비지 콜렉터(100)가 헤드(220)에 연결되는 노드들(222, 224)에 대하여 가비지 콜렉션을 수행하고 있다. 가비지 콜렉터(100)는 노드(222)를 선택하고, 해당 노드의 상태를 판단한다. 이 경우, 노드(222)의 선택 및 노드 상태 판단에서 노드(222)의 락 처리를 수행하지 않는다. 도 3a에서는 노드(222)의 상태가 유효한 경우로서 가비지 콜렉터(100)는 다음 노드(224)로 이동할 수 있다.
도 3b에서 노드(224)를 선택하고, 해당 노드(224)를 타임아웃으로 판단할 수 있다. 가비지 콜렉터(100)는 해당 노드(224)를 제거하여야 하지만, 이 때 다른 프로세스(300)가 노드(224)에 대해 접근할 수 있다. 이 경우, 가비지 콜렉터(100)의 노드(224) 제거 전에, 다른 프로세스(300)가 노드(224)를 읽기만 하는 경우는 문제가 없지만, 노드(224)를 변경하는 경우는 문제가 된다.
도 3c에서, 타임아웃으로 판단된 노드(224)의 제거 전에, 락 처리를 수행해서 해당 리소스 접근에 대한 원자성을 보장 받은 후, 가비지 콜렉터(100)는 이전 노드(222)로 이동하고, 이전 노드(222)를 기반으로 다음 노드(224)가 여전이 타임아웃으로 상태를 유지하는 지를 판단함으로써 노드(224)의 변경 여부를 판단할 수 있다. 즉, 노드(224)의 제거 전에 노드(224)에 대한 검증 처리가 수행되는 것이다. 현재 노드(224)의 변경 여부를 판단함에 있어서, 이전 노드(222)가 참조 또는 기준이 되므로, 가비지 콜렉터(100)는 가비지 콜렉션의 수행과정에서 기 선택되었던 노드들에 대한 정보를 저장할 수 있다.
한편, 이전 노드(222) 이 후에 연결되는 노드가 여전히 타임아웃으로 판단된 노드(224)인 경우에는 노드(224)의 변경이 없는 경우이므로 또 현재 락 처리 중인 상태이므로 해당 리소스 접근에 대한 원자성을 보장 받았으므로 노드(224)를 안정적으로 제거할 수 있다.
한편, 이전 노드(222) 이후에 연결되는 노드(224)가 존재하지 않거나, 노드(224) 상태가 변경된 경우, 또는, 노드(222) 및 노드(224) 사이에 새로운 노드가 추가된 경우에는 노드가 변경된 경우이므로, 노드(224)를 락 해제(unlock)하고, 다시 노드의 탐색을 수행할 수 있다. 이 때 노드의 탐색은 해당 노드(224)가 포함된 링크트 리스트의 헤드(220)로부터 수행될 수 있다.
도 4는 본 발명의 일 실시예에 따른 리소스 처리 방법에 대한 순서도를 나타낸다. 도 4에서 예시되는 실시예는 본발명의 리소스 처리 방법 과정에서 수행되는 노드의 상태 판단 후 락 처리 및 노드의 검증 과정을 모두 포함하고 있다.
단계(S21)에서, 노드를 탐색하여 가비지 처리할 노드를 선택한다.
단계(S22)에서, 선택된 노드가 타임아웃되는 지와 같은 노드의 상태를 판단한다.
단계(S23)에서, 선택된 노드가 타임아웃되어 무효하다면 본 단계에서 노드를 락한다. 즉, 타임아웃의 판단 여부까지 노드를 락처리 하지 않아 처리 속도를 향상시킬 수 있다.
단계(S24)에서, 타임아웃으로 판단된 노드가 락 처리 이전에 변경되었는 지를 판단한다. 타임아웃의 판단(S22) 및 락 처리(S23) 사이에 예상하지 않는 노드의 변경이 생길 경우를 대비하여 노드를 다시 한번 검증한다. 한편, 락한 노드의 상태가 변경되는 경우에는 노드를 락 해제(unlock)하고(S27) 다른 노드를 선택한다(S21).
단계(S25)에서, 타임아웃으로 판단하여 락한 노드가 변경되지 아니한 경우, 즉, 노드의 상태가 타임아웃으로서 유지되는 경우 노드를 제거한다.
단계(S26)에서, 제거된 노드에 대한 메모리를 해제한다.
상술한 바와 같이, 본 발명에 따른 리소스 처리 방법에 의하면, 락의 상태 판단을 락 처리 없이 수행함으로써, 동작 구간(L3)의 처리 속도 및 효율이 증대될 수 있다. 또한, 예상치 못한 노드의 변경을 대비하여 검증 과정을 수행함으로써 가비지 콜렉션의 신뢰성을 높일 수 있다. 한편, 도 2의 순서도와 비교하여, 빈번하게 발생되는 동작 구간(L3)의 처리 속도가 빨라지고, 드물게 발생되는 동작 구간(L4)의 처리 시간은 이전과 유사하게 유지될 수 있다. 도 2의 순서도와 비교하여, 노드를 검증하는 단계(S24)가 추가되지만 검증의 시간 및 그, 로드(load)는 락처리(S23)와 비교하여 경미하기 때문에, 본 발명에 따른 가비지 콜렉션의 처리 속도가 빨라질 수 있는 것이다.
이상, 본 발명에 따른 리소스 처리 방법에 대해 설명하였다. 본 발명은 리소스 처리 방법을 수행하는 가비지 콜렉터 또는 가비지 콜렉터를 동작시키는 프로세서가 포함된 임의의 장치에 대해서도 적용될 수 있다. 아울러, 본발명에 따른 리소스 처리 방법은 전자적 기록 코드로 기록되어 컴퓨터상에서 실행 가능하도록 하는 전자적 기록 매체에 대해서도 적용될 수도 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 설명하였다. 그러나, 본 발명의 실시예는 당업계에서 통상의 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되어지는 것으로, 본 발명의 범위가 상기의 실시예에 한정되는 것은 아니며, 여러 가지 다른 형태로 변형이 가능함은 물론이다.

Claims (10)

  1. 가비지 콜렉터에 의해 리소스를 처리하는 방법에 있어서,
    상기 리소스의 일부를 구성하는 일 노드를 선택하는 단계;
    상기 선택된 일 노드의 상태를 판단하는 단계;
    상기 노드 상태 판단 후 상기 선택된 일 노드를 락하는 단계;
    상기 락한 일 노드의 변경 여부를 판단하는 단계; 및
    상기 락한 일 노드를 제거하는 단계를 포함하고,
    상기 노드 상태는 노드의 유효 상태 또는 무효 상태를 포함하고, 상기 노드가 타임아웃(timeout)이 된 경우 상기 노드를 무효한 것으로 판단하는 것을 특징으로 하는 리소스 처리 방법.
  2. 제1항에 있어서,
    상기 리소스는 복수의 헤드 및 각 헤드로부터 시리얼 방식으로 연결 가능한 노드로 구성되는 hashed linked list로 형성되고,
    상기 일 노드를 선택하는 단계는 상기 복수의 헤드 중 하나의 헤드를 선택하고, 선택된 헤드로부터 연결되는 노드를 순차적으로 탐색하는 단계를 포함하는 리소스 처리 방법.
  3. 제1항에 있어서,
    상기 변경 여부를 판단하는 단계는,
    이전에 선택된 노드를 기반으로 상기 선택된 노드가 여전히 타임아웃 상태를 유지하는지 여부를 판단하여, 타임아웃 상태를 유지하는 경우 상기 선택된 노드는 변경되지 않았다고 판단하고, 타임아웃 상태를 유지하지 않은 경우 상기 선택된 노드는 변경되었다고 판단하는 것을 특징으로 하는 리소스 처리 방법.
  4. 제3항에 있어서,
    상기 락하는 단계는 상기 무효한 것으로 판단한 노드를 배타적으로 억세스하는 것을 포함하는 리소스 처리 방법.
  5. 제1항에 있어서,
    상기 선택된 노드를 저장하는 단계를 더 포함하고,
    상기 락한 일 노드의 변경 여부는, 이전에 선택된 노드를 기반으로 선택된 노드의 제거 또는 새로운 노드가 발생한 경우 상기 락한 일 노드의 상태가 변경되는 것을 포함하는 리소스 처리 방법.
  6. 제1항에 있어서,
    상기 락한 일 노드의 상태가 유지되는 경우, 락한 노드를 제거하고,
    상기 락한 일 노드의 상태가 변경되는 경우, 상기 노드를 락 해제하고 다른 노드를 선택하는 단계를 더 포함하는 리소스 처리 방법.
  7. 제1항에 있어서,
    상기 선택한 일 노드가 유효한 경우 다른 노드를 선택하는 단계를 더 포함하는 리소스 처리 방법.
  8. 제1항에 있어서,
    상기 노드를 제거한 후 제거된 노드에 대한 메모리를 해제하는 단계를 더 포함하는 리소스 처리 방법.
  9. 제1항에 있어서,
    상기 리소스는, 메모리 또는 데이터로 구성되고,
    상기 리소스를 구성하는 일 노드는 상기 가비지 콜렉터의 리소스 처리 단위를 포함하는 리소스 처리 방법.
  10. 프로세서를 포함하고, 프로세서에 의해 실행되는 가비지 콜렉터에 의해 리소스를 처리하는 장치에 있어서,
    상기 리소스의 일부를 구성하는 일 노드를 선택하는 단계;
    상기 선택된 일 노드가 유효한 지를 판단하여 노드의 처리 여부를 결정하는 단계;
    상기 노드의 처리 여부 결정 후 상기 선택된 일 노드를 락하는 단계;
    상기 락한 일 노드의 변경 여부를 판단하는 단계; 및
    상기 락한 일 노드를 제거하는 단계를 포함하는 동작을 실행하고,
    상기 노드 상태는 노드의 유효 상태 또는 무효 상태를 포함하고, 상기 노드가 타임아웃(timeout)이 된 경우 상기 노드를 무효한 것으로 판단하는 것을 특징으로 하는 장치.
KR1020120095748A 2012-08-30 2012-08-30 리소스 처리 방법 및 장치 KR101429684B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120095748A KR101429684B1 (ko) 2012-08-30 2012-08-30 리소스 처리 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120095748A KR101429684B1 (ko) 2012-08-30 2012-08-30 리소스 처리 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20140030487A KR20140030487A (ko) 2014-03-12
KR101429684B1 true KR101429684B1 (ko) 2014-08-14

Family

ID=50642917

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120095748A KR101429684B1 (ko) 2012-08-30 2012-08-30 리소스 처리 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101429684B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03266148A (ja) * 1990-03-16 1991-11-27 Nec Corp ファイル更新方式

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03266148A (ja) * 1990-03-16 1991-11-27 Nec Corp ファイル更新方式

Also Published As

Publication number Publication date
KR20140030487A (ko) 2014-03-12

Similar Documents

Publication Publication Date Title
US11314562B2 (en) Systems and methods for performing concurrency restriction and throttling over contended locks
CN105893120B (zh) 一种线程同步资源的获取方法和装置
JP3611295B2 (ja) コンピュータシステム、メモリ管理方法及び記憶媒体
Crain et al. No hot spot non-blocking skip list
JPH07191944A (ja) 多重プロセッサによる多数の資源への命令におけるデッドロックを防止するためのシステムおよび方法
RO130379B1 (ro) Explorare pentru software rău intenţionat cu căutare în avans
US10802890B2 (en) System and method for multidimensional search with a resource pool in a computing environment
US10754770B2 (en) Work stealing of partially-marked objects
KR101634403B1 (ko) 공유 디스크 데이터베이스 시스템에서 락 통신들을 감소시키기 위한 접근 방법들
US11675622B2 (en) Leader election with lifetime term
JP6859518B2 (ja) サーバへの攻撃を防ぐ方法及びデバイス
CN111444147A (zh) 一种数据页创建方法、装置、终端设备及存储介质
CN110675255A (zh) 在区块链中并发执行交易的方法和装置
WO2015085914A1 (zh) 数据库访问方法和装置
CN101470627B (zh) 一种mips平台下并行多核配置锁的实现方法
KR101429684B1 (ko) 리소스 처리 방법 및 장치
JP4139613B2 (ja) データ処理方法
US20160371225A1 (en) Methods for managing a buffer cache and devices thereof
RU2526282C2 (ru) Способ синхронизации доступа к разделяемым ресурсам вычислительной системы и обнаружения и устранения повисших блокировок с использованием блокировочных файлов
CN115809150A (zh) 一种分布式死锁检测方法、装置及电子设备
CN109962861B (zh) 一种报文统计方法及装置
CN112181617A (zh) 一种基于特定索引结构的高效调度算法
KR101233664B1 (ko) 멀티 코어 시스템에서 메모리 셔플링을 이용한 메모리 해킹 방지 방법 및 장치
CN113535412B (zh) 用于跟踪锁的方法、设备和计算机程序产品
Patel et al. Using {Trātṛ} to tame Adversarial Synchronization

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180802

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190801

Year of fee payment: 6