KR20150113056A - 소프트웨어 애플리케이션을 위한 안전장치 라이센싱 - Google Patents

소프트웨어 애플리케이션을 위한 안전장치 라이센싱 Download PDF

Info

Publication number
KR20150113056A
KR20150113056A KR1020157022931A KR20157022931A KR20150113056A KR 20150113056 A KR20150113056 A KR 20150113056A KR 1020157022931 A KR1020157022931 A KR 1020157022931A KR 20157022931 A KR20157022931 A KR 20157022931A KR 20150113056 A KR20150113056 A KR 20150113056A
Authority
KR
South Korea
Prior art keywords
software program
instance
licensing
queue
determining
Prior art date
Application number
KR1020157022931A
Other languages
English (en)
Other versions
KR101731934B1 (ko
Inventor
이제키엘 크룩릭
Original Assignee
엠파이어 테크놀로지 디벨롭먼트 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 filed Critical 엠파이어 테크놀로지 디벨롭먼트 엘엘씨
Publication of KR20150113056A publication Critical patent/KR20150113056A/ko
Application granted granted Critical
Publication of KR101731934B1 publication Critical patent/KR101731934B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing
    • G06F21/1078Logging; Metering
    • G06F2221/0775

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)

Abstract

소프트웨어 프로그램의 라이센싱을 관리하기 위한 구현 및 기술이 일반적으로 설명된다.

Description

소프트웨어 애플리케이션을 위한 안전장치 라이센싱{FAIL-SAFE LICENSING FOR SOFTWARE APPLICATIONS}
여기에서 달리 지적되지 않는다면, 본 섹션에서 설명되는 접근법은 본 출원의 청구범위에 대한 종래 기술이 아니며, 본 섹션에 포함함으로써 종래 기술로 인정되어서는 안 된다.
현대 컴퓨팅 애플리케이션의 경우, 소프트웨어 애플리케이션의 여러 개의 인스턴스의 동시적인 실행이 발생할 수 있다. 예컨대, 가상 머신은 소프트웨어 애플리케이션의 설치를 포함하도록 구성될 수 있다. 이러한 가상 머신은 임의의 횟수에서 동시에 복사될 수 있고 시작될 수 있다. 가상 머신의 각각의 실행 사본(running copy)은 이후 소프트웨어 애플리케이션의 인스턴스를 실행시킬 수 있다.
소프트웨어 애플리케이션의 라이센싱을 관리하는 것은 라이센싱 서버를 통상적으로 수반할 수 있다. 예컨대, 소프트웨어 애플리케이션의 각각의 인스턴스는, 시작 시, 인가가 이루어질 수 있도록 라이센싱 서버에 접촉할 수 있다. 인가가 수신되지 않으면, 소프트웨어 애플리케이션의 인스턴스는 실행하는데 실패할 수 있다. 예컨대, 허용된 인스턴스의 최대 수가 이미 실행되고 있는 경우, 라이센싱 서버는 임의의 새로운 인스턴스에 대한 인가를 제공하지 않을 수 있다. 이와 같이, 새로운 인스턴스는 시작에 실패할 수 있다. 그러나, 라이센싱 서버가 이용가능하지 않게 되면, 소프트웨어 애플리케이션의 새로운 인스턴스는, 이용 가능한 라이센스가 기술적으로 존재하는 곳에서도, 시작하는 것에 실패할 수 있다.
추가적으로, 라이센싱 서버는 소프트웨어 애플리케이션의 인스턴스의 각각의 실행에 의한 주기적인 "체크인"을 요구할 수 있다. 예컨대, 일부 소프트웨어 애플리케이션은 다양한 컴퓨팅 메트릭(예컨대, 프로세서 코어 사용, 메모리 사용 등)에 기초하여 라이센싱될 수 있다. 소프트웨어 애플리케이션의 인스턴스를 각각의 실행에 의한 주기적인 체크인은 현재 사용을 결정하고 라이센싱 요구를 강화하도록 사용될 수 있다. 따라서, 소프트웨어 애플리케이션의 인스턴스에 의한 각각의 체크인에서, 인가는 인증될 수 있다. 인가가 인증되는 경우, 인스턴스는 계속하여 실행될 수 있다. 인가가 인증되지 않으면, 인스턴스는 종료될 수 있다. 그러나, 레이센싱 서버가 중단되는 경우, 소프트웨어 애플리케이션의 사본을 모두 실행하는 것은 결국 실패할 수 있다. 즉, 각각의 인스턴스가 체크인하는 것을 시도하는 경우, 인가는 라이센싱 서버가 이용 가능하지 않음에 따라 인증되지 않을 수 있다. 이와 같이, 인스턴스의 실행의 전체 배치가 결국 종료될 수 있다.
여기에서 상세하게 설명되는 것은 소프트웨어 프로그램의 라이센싱을 관리하기 위한 다양한 예시적인 방법이다. 예시적인 방법은, 소프트웨어 프로그램의 인스턴스에 의해, 라이센싱 큐를 질의하는 단계 - 라이센싱 큐는 소프트웨어 프로그램의 활성 인스턴스의 수의 표시를 포함함 -, 소프트웨어 프로그램의 인스턴스에 의해, 라이센싱 큐의 질의에 적어도 부분적으로 기초하여 소프트웨어 프로그램의 인스턴스가 인가되었는지 결정하는 단계, 및 소프트웨어 프로그램의 인스턴스가 인가되었다는 결정에 응답하여, 소프트웨어 프로그램의 인스턴스에 의해, 라이센싱 큐를 업데이트하는 단계를 포함할 수 있다.
일부 대안적이거나 또는 추가적인 예시적인 방법은 소프트웨어 프로그램의 인스턴스에 의해, 메시지에 대한 라이센싱 큐를 질의하는 단계, 라이센싱 큐의 질의에 적어도 부분적으로 기초하여, 소프트웨어 프로그램의 인스턴스에 의해, 결과를 수신하는 단계, 소프트웨어 프로그램의 인스턴스에 의해, 수신된 결과에 적어도 부분적으로 기초하여 소프트웨어 프로그램의 활성 인스턴스의 수를 결정하는 단계, 소프트웨어 프로그램의 인스턴스에 의해, 활성 인스턴스의 결정된 수에 적어도 부분적으로 기초하여 소프트웨어 프로그램의 인스턴스가 인가되었는지 결정하는 단계, 소프트웨어 프로그램의 인스턴스에 의해, 소프트웨어 프로그램의 인스턴스가 인가된다는 결정에 응답하여 고유 인스턴스 식별 태그를 생성하는 단계 및 소프트웨어 프로그램의 인스턴스에 의해, 소프트웨어 프로그램의 인스턴스가 인가된다는 결정에 응답하여 라이센싱 큐로 메시지를 포스팅하는 단계를 포함하고, 메시지는 소프트웨어 프로그램의 인스턴스가 활성화된다는 표시 및 생성된 고유 인스턴스 식별 태그의 표시를 포함한다.
본 개시는, 거기에 저장된 명령어를 갖는 다양한 예시적인 기계 판독가능 비 일시적인 저장 매체를 또한 기술하고, 그 명령어는, 실행되는 경우, 소프트웨어 프로그램의 인스턴스의 쿠오럼(quorum) 검출 모듈이, 메시지에 대한 소프트웨어 프로그램에 대응하는 라이센싱 큐를 질의하고, 라이센싱 큐의 질의에 적어도 부분적으로 기초하여 결과를 수신하고, 수신된 결과에 적어도 부분적으로 기초하여 소프트웨어 프로그램의 활성 인스턴스의 수를 결정하고, 소프트웨어 프로그램의 인스턴스가 활성 인스턴스의 결정된 수에 적어도 부분적으로 기초하여 인가되었는지 결정하고, 소프트웨어 프로그램의 인스턴스가 인가된다는 결정에 응답하여 고유 인스턴스 식별 태그를 생성하고, 소프트웨어 프로그램의 인스턴스가 인가된다는 결정에 응답하여, 라이센싱 큐로 메시지를 포스팅하는 것을 동작적으로 가능하게, 하고 메시지는 소프트웨어 프로그램의 인스턴스가 인가된다는 표시 및 생성된 고유 인스턴스 식별 태그의 표시를 포함한다.
본 개시는 추가적으로 소프트웨어 프로그램의 라이센싱을 관리하기 위한 예시적인 시스템을 추가적으로 기술한다. 예시적인 시스템은, 소프트웨어 프로그램의 인스턴스, 소프트웨어 프로그램에 대응하는 라이센싱 큐 및 소프트웨어 프로그램에 결합된 쿠오럼 검출 모듈을 포함할 수 있고, 쿠오럼 검출 모듈은 메시지에 대한 라이센싱 큐를 질의하고, 라이센싱 큐의 질의에 적어도 부분적으로 기초하여 결과를 수신하고, 결과에 적어도 부분적으로 기초하여 소프트웨어 프로그램의 활성 인스턴스의 수를 결정하고, 활성 인스턴스의 결정된 수에 적어도 부분적으로 기초하여 소프트웨어 프로그램의 인스턴스가 인가되는지 결정하고, 소프트웨어 프로그램의 인스턴스가 인가된다는 결정에 응답하여 고유 인스턴스 식별 태그를 생성하고, 소프트웨어 프로그램의 인스턴스가 인가된다는 결정에 응답하여, 라이센싱 큐로 메시지를 포스팅하는 것이 동작적으로 가능하고, 메시지는 소프트웨어 프로그램의 인스턴스가 활성이라는 표시 및 생성된 고유 인스턴스 식별 태그의 표시를 포함한다.
이상의 요약은 단순히 예시적인 것으로서 어떠한 방식으로든 제한적으로 의도된 것이 아니다. 이하의 상세한 설명과 도면을 참조함으로써, 상기 설명된 예시적인 양태들, 실시예들, 그리고 특징들에 더하여, 추가적인 양태들, 실시예들, 그리고 특징들 또한 명확해질 것이다.
대상은 명세서의 종결부에서 특히 언급되고 명확하게 청구된다. 본 개시의 전술한 특징 및 다른 특징은 첨부 도면과 함께, 다음의 설명과 첨부된 청구범위로부터 더욱 충분히 명백해질 것이다. 이들 도면은 본 개시에 따른 몇몇 실시예를 묘사할 뿐이고, 따라서, 범위를 제한하는 것으로 고려되어서는 안될 것임을 이해하면서, 본 개시는 첨부 도면의 사용을 통해 더 구체적이고 상세하게 설명될 것이다.
도 1은 소프트웨어 애플리케이션에게 안전장치 라이센싱을 제공하기 위한 예시적인 시스템의 블록도를 도시하고,
도 2는 소프트웨어 애플리케이션에게 안정장치 라이센싱을 제공하기 위한 예시적인 방법의 흐름도를 도시하고,
도 3은 예시적인 컴퓨터 프로그램 제품을 도시하고,
도 4는 예시적인 컴퓨팅 장치의 블록도를 도시하고, 모두 본 개시의 적어도 일부 실시예에 따라 배열된다.
본 개시의 전술한 특징 및 다른 특징은 첨부 도면과 결합하여, 다음의 설명 및 첨부된 청구범위로부터 더욱 충분히 명백해질 것이다. 이들 도면은 본 개시에 따른 단지 몇 개의 예시를 묘사할 뿐이고, 따라서, 본 개시의 범위를 제한하는 것으로 고려되어서는 안 될 것임을 이해하면서, 본 개시는 첨부 도면의 사용을 통해 더 구체적이고 상세하게 설명될 것이다.
이하의 상세한 설명에서 본 개시의 일부를 이루는 첨부된 도면들이 참조된다. 문맥에서 달리 지시하고 있지 않은 한, 일반적으로, 도면에서 유사한 부호들은 유사한 구성들을 나타낸다. 상세한 설명, 도면, 그리고 청구범위에 설명되는 예시 또는 실시예들은 제한적으로 해석되어서는 안 된다. 본 개시에서 제시되는 대상의 범위 또는 사상에서 벗어나지 않으면서도 다른 실시예들이 이용되거나, 다른 변경들이 이루어질 수 있다. 본 개시에 일반적으로 설명되고, 도면들에 도시되어 있는 본 개시의 양태들은 다양한 다른 구성으로 배열, 대체, 조합 및 설계될 수 있음과, 이 모두가 여기에서 명시적으로 고려되고, 본 개시의 일부를 이루고 있음이 기꺼이 이해될 것이다.
본 개시는, 그 중에서도, 소프트웨어 프로그램에게 안정장치 라이센싱을 제공하는 것에 관련된 방법, 장치, 시스템 및 컴퓨터 판독가능 매체를 기술한다.
일반적으로, 안정장치 라이센싱 시스템을 제공하는 기술이 설명된다. 적어도 일부 실시예의 안정장치 라이센싱 시스템은 특정 라이센싱 서버가 동작 중이어야 할 필요 없이도 너무 많은 라이센스가 사용 중인지 검출할 수 있다.
간략하게, 적어도 일부 실시예에서 소프트웨어 애플리케이션/프로그램의 인스턴스는 소프트웨어 애플리케이션의 전체적인 사용(예컨대, 다른 실행 인스턴스)를 관찰하도록 메시징 큐를 사용할 수 있다. 소프트웨어 애플리케이션의 각각의 인스턴스는 자체적으로 "셀프 폴리싱(self-police)"하도록 구성될 수 있다. 즉, 소프트웨어 애플리케이션의 각각의 인스턴스는 허락된 것보다 더 많은 사용이 관찰(예컨대 결정)되지 않는 한 실행되도록 구성될 수 있다. 이러한 경우에, 초과된 사용을 관찰한 소프트웨어 애플리케이션의 인스턴스는 스스로 종료할 수 있다. 일 예시로, 소프트웨어 애플리케이션의 실행 인스턴스는 메시징 큐로 주기적으로 "메시지를" 포스팅할 수 있다. 각각의 메시지는 메시지를 포스팅한 소프트웨어 애플리케이션의 인스턴스가 활성됨을 알릴 수 있다. 소프트웨어 애플리케이션의 임의의 특정 인스턴스는 메시징 큐로부터 메시지를 이후 검색할 수 있다. 소프트웨어 애플리케이션의 특정 인스턴스는, 메시지를 읽는 것에 적어도 부분적으로 기초하여, 소프트웨어 애플리케이션의 활성 인스턴스의 전체 수를 이후 결정할 수 있다. 소프트웨어 애플리케이션의 특정 인스턴스는 활성 인스턴스의 알려진 제한과 활성 인스턴스의 결정된 수를 비교할 수 있다. 소프트웨어 애플리케이션의 특정 인스턴스가 제한에 의해 허용된 것보다 더 많은 인스턴스가 실행 중임을 관찰하는 경우, 특정 인스턴스는 자체적으로 종료할 수 있다.
(본 개시를 전체에서 제공되는 다른 예시들뿐만 아니라)위의 예시는 단지 예시를 위해 주어진다. 그러나, 소프트웨어 애플리케이션의 라이센싱은 일부 안정장치 측정을 포함하도록 구성될 수 있음을 나타낸다. 여기에서 사용되는 바와 같이, "안정장치(fail-safe)"및/또는 "안전장치 라이센싱" 및/또는 그의 다른 가능한 변형은 라이센싱 시스템에서의 실패에도 불구하고 실질적으로 복구(예컨대, 실행을 계속)하도록 구성되는 소프트웨어 애플리케이션의 인스턴스를 지칭할 수 있다. 예컨대, 시작 후 또는 시작 시(또는 주기적인 체크인에서), 소프트웨어 애플리케이션의 인스턴스는 메시징 큐(예컨대, 메시징 큐로부터 메시지를 검색하는 것을 포함함)를 질의할 수 있다. 소프트웨어 애플리케이션의 인스턴스는, 메시징 큐의 질의에 적어도 부분적으로 기초하여, 활성화된 소프트웨어 애플리케이션의 다른 인스턴스의 전체 수를 관찰(예컨대, 결정)할 수 있다. 그러나, 소프트웨어 애플리케이션의 인스턴스는 허락된 것보다 더 많은 활성 인스턴스가 관찰되지 않는 한, 실행되도록 구성될 수 있다. 따라서, 소프트웨어 애플리케이션의 인스턴스가 메시징 큐로부터 메시지를 복구할 수 없으면(예컨대, 메시징 큐는 이용가능하지 않거나, 통신 장애가 메시징 큐와 인스턴스 사이에서 발생하는 등), 소프트웨어 애플리케이션의 인스턴스는 여전히 실행될 수 있다. 이와 같이, 실패의 단일의 포인트(예컨대, 메시징 큐가 이용가능하지 않게 됨)는 소프트웨어 애플리케이션의 인스턴스의 실행으로 하여금 중단되지 않게 할 수 있다. 단일의 라이센싱 서버가 활성화되고 임의의 주어진 시간에서 네트워크 상에서 접근 가능하거나 그렇지 않으면 소프트웨어 애플리케이션의 활성 인스턴스의 실행이 결국 실패할 수 있는 종래의 라이센싱 시스템과 대조적이다.
도 1은 본 개시의 적어도 일부 실시예에 따라 배열되는, 소프트웨어 애플리케이션에게 안정장치 라이센싱을 제공하기 위한 예시적인 시스템의 블록도를 도시한다.
도시된 바와 같이, 시스템(100)은 복수의 컴퓨팅 장치를 포함할 수 있다. 시스템(100)은 컴퓨팅 장치(102, 120, 130, 140 및 150)을 포함하는 것으로 도시된다. 컴퓨팅 장치(예컨대, 컴퓨팅 장치(102, 120, 130, 140 및/또는 150))는 가상 머신, 서버, 데스크탑, 컴퓨터, 워크스테이션, 랩탑 컴퓨터, 하드웨어를 포함하는 일부 다른 컴퓨팅 장치 및/또는 그의 임의의 조합을 포함할 수 있다. 컴퓨팅 장치(102, 120, 130, 140 및/또는 150)는 스마트폰, 태블릿 컴퓨터, 또는 소프트웨어 애플리케이션을 실행하는 것이 가능한 스마트폰, 태블릿 컴퓨터 또는 임의의 다른 장치를 또한 포함할 수 있다. 일부 실시예에서, 컴퓨팅 장치의 유형은 동일할 필요는 없다. 예컨대, 컴퓨팅 자치(102)는 서버일 수 있고, 컴퓨팅 장치(120)는 워크스테이션일 수 있고, 컴퓨팅 장치(130)는 워크스테이션에서 실행되는 가상 머신일 수 있고, 컴퓨팅 장치(140)는 다른 워크스테이션일 수 있고, 컴퓨팅 장치(150)는 랩탑 컴퓨터일 수 있다. 일부 실시예에서, 컴퓨팅 장치 중 하나 이상은 동일한 컴퓨팅 하드웨어에 실질적으로 대응할 수 있다. 예컨대, 컴퓨팅 장치(예컨대, 컴퓨팅 장치(102, 120, 130, 140 및/또는 150)가 서버 상에서 실행되는 가상 머신이라면, 이러한 가상 머신은 동일한 서버 상에서 실행될 수 있다.
컴퓨팅 장치(102)는 라이센싱 큐(110)를 실행하도록 구성될 수 있다. 일반적으로, 라이센싱 큐(110)는 메시지(112)(예컨대, 메시지(112a, 112b, 112c 또는 112d), 메시지(112n)까지를 포함하는 메시지)가 포스팅 및/또는 검색될 수 있는 임의의 유형의 큐일 수 있다. 예컨대, 컴퓨팅 장치(102)는 시스템(100) 내에서 다른 컴퓨팅 장치(예컨대, 컴퓨팅 장치(120, 130, 140 및/또는 150)로 통신으로(예컨대, 인터넷을 통해, 무선 통신 링크를 통해, 유산 통신 링크를 통해 및/또는 그와 유사한 것을 통해) 결합될 수 있다. 따라서, 라이센싱 큐(110)는 이러한 컴퓨팅 장치 사이에서 메시지 트래픽을 용이하게 하도록 구성될 수 있다. 일부 예시에서, 라이센싱 큐(110)는 메시징 큐잉 프로토콜(예컨대, 어드밴스드 메시징 큐잉 프로토콜, 메시지 큐 원격측정 전송 프로토콜, 스트리밍 텍스트 지향 메시징 프로토콜 및/또는 그와 유사한 것)을 사용하여 구현될 수 있다. 일부 예시에서, 클라우드 컴퓨팅 서비스는 라이센싱 큐(110)를 제공할 수 있다.
예컨대, 일부 클라우드 컴퓨팅 서비스는 큐를 설립 및/또는 사용하기 위한 능력을 포함할 수 있다. 이와 같이, 클라우드 컴퓨팅 큐잉에 의해 제공되는 큐는 라이센싱 큐(110)를 구현하도록 사용될 수 있다. 제공된 큐는 메시지(112)를 위한 일시적인 저장소로 행동할 수 있다. 메시지(112)는 시스템(100) 내에서 다른 컴퓨팅 장치(예컨대, 컴퓨팅 장치(120, 130, 140 및/또는 150)에 의해(예컨대, 클라우드 컴퓨팅 큐잉 서비스 제공자에 의해 제공되는 API 등을 사용하여), 제공되는 큐로 포스팅될 수 있다. 추가적인 예시에서, 동일한 클라우드 컴퓨팅 서비스는 컴퓨팅 장치(120, 130, 140 및/또는 150)를 구현하도록 사용될 수 있다.
일부 실시예에서, 다른 컴퓨팅 장치 중 모두에 대해 라이센싱 큐(110)를 실행하거나 아니면 유지하는 것에 더하여, 컴퓨팅 장치(102)는 라이센싱 큐(110)에 의해 추적되는 소프트웨어 프로그램을 실행하도록 허용되는 컴퓨팅 장치 중 하나로 스스로 구성될 수 있다. 예컨대, 컴퓨팅 장치(102)는 그러한 실시예에서, 소프트웨어 프로그램을 실행시키도록 라이센싱되는 워크 스테이션, 랩탑 등일수 있고, 그러한 경우에 컴퓨팅 장치(102)는 라이센싱 큐(110)로 향하는 다른 컴퓨팅 장치로부터 질의를 수신하는 것뿐만 아니라, 자신의 소프트웨어 프로그램에 대한 라이센스 이용가능성을 입증하도록 유지하는 라이센싱 큐(110)로 내부적인 질의를 수행할 수 있다.
시스템(100) 내에서 다른 컴퓨팅 장치 각각은 소프트웨어 애플리케이션의 적어도 하나의 인스턴스를 실행하도록 구성될 수 있다. 예컨대, 컴퓨팅 장치(120, 130, 140 및 150)는 각각의 소프트웨어 애플리케이션 인스턴스(122, 132, 142 및 152)와 함께 구성되도록 도시된다. 본 개시의 일부 실시예에서, 컴퓨팅 장치(예컨대, 컴퓨팅 장치(120, 130, 140 및/또는 150))는 소프트웨어 애플리케이션의 하나 이상의 인스턴스를 실행할 수 있다. 그러나, 표현의 간단성을 위해 도 1에서 도시되지 않는다. 각각의 소프트웨어 애플리케이션 인스턴스는 쿠오럼 검출 모듈을 포함할 수 있다. 소프트웨어 애플리케이션 인스턴스(122, 132, 142 및 152)는 각각의 쿠오럼 검출 모듈(124, 134, 144 및 154)를 포함하는 것으로 도시된다.
일반적으로, 일부 실시예의 각각의 쿠오럼 검출 모듈은 전술된 바와 같이, 자신의 대응하는 소프트웨어 애플리케이션 인스턴스의 안전장치 라이센싱을 용이하게 하도록 구성될 수 있다. 쿠오럼 검출 모듈(예컨대 쿠오럼 검출 모듈(124, 134, 144 및/또는 154)) 중 임의의 하나는 전술된 바와 같이, 안전장치 라이센싱을 용이하게 하도록 구성될 수 있음에도, 도 1은 설명의 용이성을 위해 쿠오럼 검출 모듈(124)의 시각으로부터 아래에서 더 기술된다. 이것은 제한하는 것으로 의도된 것이 아니며, 시스템(100) 내부의 임의의 다른 쿠오럼 검출 모듈(예컨대, 쿠오럼 검출 모듈(134, 144 및/또는 154)은 다음의 설명에서 쿠오럼 검출 모듈(124)에 대체될 수 있다.
전술된 바와 같이, 안전장치 라이센싱을 제공하기 위하여, 쿠오럼 검출 모듈(124)는 동적으로 실행되는 시스템(100) 내 소프트웨어 애플리케이션 인스턴스(예컨대, 소프트웨어 애플리케이션 인스턴스(122, 132, 142 및/또는 152))의 수를 결정하도록 구성될 수 있다. 일반적으로, 쿠오럼 검출 모듈(124)은 라이센싱 큐(110)와 통신하는 것에 적어도 부분적으로 기초하여 시스템(100) 내의 활성 소프트웨어 애플리케이션 인스턴스의 수를 결정할 수 있다. 일반적으로, 쿠오럼 검출 모듈(124)은 포스팅, 질의, 독출(reading), 및/또는 인터넷, 유선 통신 링크, 데이터센터 네트워크 링크, 무선 통신 링크 및/또는 컴퓨팅 장치(120)와 컴퓨팅 장치(102) 사이에 존재하거나 설립될 수 있는 임의의 적절한 통신 링크를 통해 라이센싱 큐(110)와 통신함으로써 라이센싱 큐(110)와 통신할 수 있다. 예컨대, 컴퓨팅 장치(120 및 102)는 동일한 LAN의 일부로 구현될 수 있다. 따라서, 쿠어럼 검출 모듈(124)은 무선 및/또는 유산 LAN 연결을 통해 라이센싱 큐와 통신할 수 있다. 다른 예시로써, 컴퓨팅 장치(102)는 클라우드 컴퓨팅 환경에서 구현될 수 있다. 이와 같이, 쿠오럼 검출 모듈(124)은 인터넷 연결을 통해 라이센싱 큐(110)와 통신할 수 있다.
쿠오럼 검출 모듈(124)에 의해 시스템(100)에서 동적으로 실행 중인 소프트웨어 애플리케이션 인스턴스의 수의 결정을 용이하게 하기 위해, 쿠오럼 검출 모듈(124, 134, 144 및/또는 154) 각각은 그들의 대응하는 소프트웨어 애플리케이션 인스턴스(예컨대, 소프트웨어 애플리케이션 인스턴스(122, 132, 142 및/또는 152))가 동적으로 실행되는지 나타내도록 라이센싱 큐(110)를 업데이트하도록 구성될 수 있다.
일부 예시에서, 쿠오럼 검출 모듈(124, 134, 144 및/또는 154) 각각은 컴퓨팅 장치(120)로의 통신 링크를 통해, 라이센싱 큐(110)로 메시지(112)(예컨대, 메시지(112a, 112b, 112c 또는 112d)에서 메시지(112n)까지) 중 하나 이상을 포스팅함으로써 라이센싱 큐(110)를 업데이트하도록 구성될 수 있다. 이와 같이, 메시지(예컨대, 메시지(112a, 112b, 112c 및/또는 112d)) 각각은 시스템(100) 내의 특정 소프트웨어 애플리케이션 인스턴스(예컨대, 소프트웨어 애플리케이션 인스턴스(122, 132, 142 및/또는 152))의 상태의 표시를 포함할 수 있다. 예컨대, 메시지(122a)는 소프트웨어 애플리케이션 인스턴스(132)가 동적으로 실행 중이라는 표시를 포함할 수 있다. 일부 예시에서, 메시지(112)(예컨대, 메시지(112a, 112b, 112c 및/또는 112d) 중 둘 이상은 동일한 소프트웨어 애플리케이션 인스턴스의 상태의 표시를 포함할 수 있다. 예컨대, 메시지(112a 및 112b)는 소프트웨어 애플리케이션 인스턴스(132)가 동적으로 실행 중이라는 표시를 포함할 수 있다. 일부 예시에서, 메시지(112)(예컨대, 메시지(112a, 112b, 112c 및/또는 112d))는 시스템(100) 내 특정 소프트웨어 애플리케이션 인스턴스에 대응하는 UUID(Universally Unique Identifier)를 포함할 수 있다. 일부 예시에서, 메시지(112)(예컨대, 메시지(112a, 112b, 112c 및/또는 112d))는 SMS 메시지, 적절한 메시징 포맷 또는 라이센싱 큐(110)에 저장 가능한 데이터 및/또는 임의의 통신일 수 있다.
쿠오럼 검출 모듈(124)은 라이센싱 큐(110)로부터 동적으로 실행 중인 시스템(100) 내 소프트웨어 애플리케이션 인스턴스(예컨대, 소프트웨어 애플리케이션 인스턴스(122, 132, 142 및/또는 152))의 수를 결정하도록 구성될 수 있다. 일반적으로 쿠오럼 검출 모듈은 라이센싱 큐(110)를 질의 및/또는 독출하도록 구성될 수 있다. 더 특히, 쿠오럼 검출 모듈(124)는 메시지(112)(예컨대, 메시지(112a, 112b, 112c 및/또는 112d))를 독출하기 위해 라이센싱 큐(110)를 질의할 수 있다. 쿠오럼 검출 모듈(124)는 메시지(112)의 독출에 적어도 부분적으로 기초하여 현재 실행 중인 시스템(100) 내 소프트웨어 애플리케이션 인스턴스(예컨대, 소프트웨어 애플리케이션 인스턴스(122, 132, 144 및/또는 152))의 수를 이후 결정할 수 있다. 추가적으로, 쿠오럼 검출 모듈(124)은 동시에 실행되는 소프트웨어 애플리케이션 인스턴스의 제한과 현재 실행되는 소프트웨어 애플리케이션 인스턴스의 결정된 수를 비교할 수 있다. 쿠오럼 검출 모듈(124)은 비교에 적어도 부분적으로 기초하여, 소프트웨어 애플리케이션 인스턴스(122)가 인가되는지 이후 결정할 수 있다. 나아가, 소프트웨어 애플리케이션 인스턴스(122)의 실행이 인가되는지에 대한 결정에 적어도 부분적으로 기초하여, 쿠오럼 검출 모듈(124)은 소프트웨어 애플리케이션 인스턴스(122)로 하여금 종료되게 할 수 있다. 예컨대, 쿠오럼 검출 모듈(124)은 동적으로 실행되는 소프트웨어 애플리케이션 인스턴스의 결정된 수가 허용된 제한보다 큰 경우 소프트웨어 애플리케이션 인스턴스(122)로 하여금 종료되게 할 수 있다.
일부 예시에서, 쿠오럼 검출 모듈(예컨대, 쿠오럼 검출 모듈(124, 134, 144 또는 154))은 자신의 대응하는 소프트웨어 애플리케이션 인스턴스(예컨대, 소프트웨어 애플리케이션 인스턴스(122, 132, 142 또는 152)의 최초 개시 후에 시간의 일부 양에서만 라이센싱 큐(110)로 메시지(112)(예컨대, 메시지(112a, 112b, 112c 및/또는 112d)) 중 하나를 포스팅할 수 있다. 이러한 예시는 라이센싱이 활성 인스턴스의 전체 수에 기초하는 경우 및/또는 주기적인 체크인이 사용되지 않는 경우에 구현될 수 있다. 체크인 절차의 일부 유형을 사용하는 대안적이거나 추가적인 예시에서, 쿠오럼 검출 모듈(예컨대, 쿠오럼 검출 모듈(124, 134, 144 또는 154)은 라이센싱 큐(110)로 메시지(112)(예컨대, 메시지(112a, 112b, 112c 및/또는 112d)) 중 하나를 반복적으로(예컨대, 실행 중 설정되거나 무작위 간격에서, 설정되거나 무작위의 시간 간격 등에서) 포스팅할 수 있다. 일부 예시에서, 메시지(112)(예컨대, 메시지(112a, 112b, 112c 및/또는 112d))는 시간 스탬프를 포함할 수 있다.
일반적으로, 시스템(100)은 단일 사이트 내부에, 함께 네트워킹되는 복수의 사이트에서, 데이터센터에서, 클라우드 컴퓨팅 환경에서, 또는 컴퓨팅 장치가 쿠오럼 검출 모듈에 의해 메시지의 독출 및 포스팅을 용이하게 하도록 라이센싱 큐와 연결하거나 그렇지 않으면 통신할 수 있는 임의의 구성에서 배치될 수 있다.
도 2는 본 개시의 적어도 일부 실시예에 따라 배열되는, 소프트웨어 애플리케이션의 안전장치 라이센싱을 제공하기 위한 예시적인 방법(200)의 흐름도를 도시한다. 이러한 구성은 여기에서 상세하게 설명되는 예시적인 방법을 예시하도록 블록도를 이용한다. 이러한 블록도는 처리 단계, 기능적인 동작, 이벤트 및/또는 동작 등으로 기술될 수 있고, 하드웨어, 소프트웨어, 펌웨어 및/또는 그의 조합에 의해 수행될 수 있고, 도시되는 정확한 순서에서 반드시 수행될 필요는 없다. 상세하게 설명되는 기능적인 블록에 대한 수많은 대안법 또는 추가적인 것(및/또는 그의 조합)은 다양한 구현예에서 수행될 수 있다. 예컨대, 도면에 도시되지 않은 개재하는 동작 및/또는 도면에 도시되지 않은 추가적인 동작이 이용될 수 있으며 그리고/또는 도면에 도시된 동작의 일부는 제거될 수 있다. 일부 예시에서, 일 도면에서 도시된 동작은 다른 도면에 관해 논의된 기법을 사용하여 수행될 수 있다. 추가적으로, 일부 예시에서, 이러한 도면에서 도시된 동작은 병렬 처리 기법을 사용하여 수행될 수 있다. 전술된 것, 그리고 다른 재배열, 대체, 변화, 수정 등은 청구된 대상의 범위로부터 벗어나지 않으면서 이루어질 수 있다.
추가적으로, 도 2는 도 1에 도시된 시스템(100)의 요소를 참조하여 기술된다. 그러나, 기술된 실시예는 이러한 도시에 제한되는 것은 아니다. 더 상세하게, 도 1에 도시된 일부 요소는 여기에서 상세하게 기술된 방법의 일부 구현예로부터 제거될 수 있다. 추가적으로, 도 1에 도시되지 않은 다른 요소는 예시적인 방법을 구현하도록 사용될 수 있다.
도 2의 방법(200)으로 이제 돌아가서, 간략하게 기술하면, 방법(200)은 시스템(100) 내부의 쿠오럼 검출 모듈 중 임의의 하나에 의해 수행될 수 있다. 쿠오럼 검출 모듈 중 임의의 하나는 방법(200)을 수행할 수 있으나, 예시된 예시는 설명의 용이성을 위해, 방법을 수행하는 쿠오럼 검출 모듈(124)를 참조하여, 제공된다. 그러나, 이러한 특징은 제한하는 것으로 의도되는 것은 아니며, 시스템(100) 내부의 임의의 다른 쿠오럼 검출 모듈이 다음의 설명에서 쿠오럼 검출 모듈(124)에 대체될 수 있다.
블록(210) "라이센싱 큐를 질의"에서 시작하여, 쿠오럼 검출 모듈(124)은 라이센싱 큐(110)를 질의하도록 구성되는 로직 및/또는 특징을 포함할 수 있다. 일반적으로, 블록(210)에서, 쿠오럼 검출 모듈(124)은 라이센싱 큐(110)로부터 메시지(112)(예컨대, 메시지(112a, 112b, 112c 및/또는 112d))를 독출할 수 있다. 블록(210)에서 블록(220) "라이선스 큐를 질의하는 것에 적어도 부분적으로 기초하여 소프트웨어 프로그램의 인스턴스가 인가되는지 결정"으로 계속하여, 쿠오럼 검출 모듈(124)은 라이센싱 큐(110)를 질의하는 것(예컨대, 메시지(112)를 독출)에 적어도 부분적으로 기초하여 소프트웨어 애플리케이션의 인스턴스(122)가 인가되는지 결정하도록 구성되는 로직 및/또는 특징을 포함할 수 있다.
예컨대, 소프트웨어 애플리케이션 인스턴스(132)가 동적으로 실행되고, 쿠오럼 검출 모듈(134)이 라이센싱 메시지 큐(110)로, 그를 나타내는 메시지(112a)를 포스팅했다고 가정한다. 소프트웨어 애플리케이션 인스턴스(142)가 동적으로 실행되고 있고, 쿠오럼 검출 모듈(144)이 라이센싱 메시지 큐(110)로, 그를 나타내는 메시지(112b)를 포스팅했다고 더 가정한다. 이러한 가정하에, 쿠오럼 검출 모듈(124)은 메시지(112a 및 112b)를 독출할 수 있고, 메시지를 독출하는 것에 적어도 부분적으로 기초하여, 소프트웨어 애플리케이션 인스턴스(132 및 142) 둘 모두가 시스템(100)에서 활성화되었음을 결정할 수 있다. 후속적으로, 블록(220)에서, 쿠오럼 검출 모듈(124)은 소프트웨어 애플리케이션 인스턴스(122)가 인가되는지 결정하기 위해 허용된 사용과 결정된 사용(예컨대, 두 인스턴스)을 비교하도록 구성될 수 있다. 나아가, 소프트웨어 애플리케이션의 세 개의 동시의 인스턴스가 시스템(100)에서 인가된다고 더 가정한다. 이와 같이, 쿠오럼 검출 모듈(124)은 블록(220)에서 소프트웨어 애플리케이션(122)이 인가된다고 결정할 수 있다. 그러나, 예컨대, 소프트웨어 애플리케이션의 두 개의 동시의 인스턴스만이 시스템(100)에서 인가되는 경우, 쿠오럼 검출 모듈(124)은 소프트웨어 애플리케이션 인스턴스(122)가 인가되지 않는다고 결정할 수 있다. 쿠오럼 검출 모듈(124)은 소프트웨어 애플리케이션 인스턴스(122)로 하여금 종료되거나 그렇지 않으면 불활성되게 하도록 더 구성될 수 있다. 일부 예시에서, 소프트웨어 애플리케이션 인스턴스(122)는 정지되거나, 잠재워지거나, 종료되거나, 전원이 꺼지거나 또는 소프트웨어 애플리케이션(122)이 라이센스를 위반하는 것을 방지하는 일반적인 임의의 동작을 수행할 수 있다. 일부 예시에서, 쿠오럼 검출 모듈(124)은 소프트웨어 애플리케이션(122)을 종료하기 위해 타이머를 사용할 수 있다. 예컨대, 종료는 소프트웨어 애플리케이션 인스턴스(122)가 (예컨대, 라이센싱 큐(110)를 재질의함으로써)반복적으로 체킹되는 동안 주기적인 시간 동안 지연될 수 있다. 인가가 입증되면, 쿠오럼 검출 모듈(124)은 종료 또는 다른 불활성화를 중단할 수 있다. 이는 라이센싱 준수가 제한에 가까운 경우 시스템(100) 내부의 소프트웨어 애플리케이션 인스턴스 사이의 종료의 변동을 막을 수 있다.
일부 실시예에서, (예컨대, 블록(210) 등에서)쿠오럼 검출 모듈(124)은 라이센싱 큐(110)가 질의되지 못할 경우, 소프트웨어 애플리케이션(122)가 인가되지 않는다고 결정할 수 있다. 예컨대, 라이센싱 큐(110)가 시간의 특정량이 경과된 후, 쿠오럼 검출 모듈(124)에 의한 질의에 응답하지 않는 경우, 쿠오럼 검출 모듈(124)은 블록(220)에서, 소프트웨어 애플리케이션(122)이 인가되지 않는다고 결정하도록 구성될 수 있다. 다른 예시로, 라이센싱 큐(110)가 쿠오럼 검출 모듈(124)에 의한 질의의 설정된 수에 응답하지 않는 경우, 쿠오럼 검출 모듈(124)은 블록(220)에서, 소프트웨어 애플리케이션 인스턴스(122)가 인가되지 않는다고 결정하도록 구성될 수 있다.
일부 구현예에서, 여기에서 기술된 제한(예컨대, 허용된 인스턴스의 수, 전체 허용된 컴퓨팅 메트릭 등)과 같은 라이센스 조건은 각각의 소프트웨어 애플리케이션 인스턴스 내에 프로그래밍될 수 있다. 대안적이거나 추가적인 구현예에서, 쿠오럼 검출 모듈은 시스템(100) 내부의 위치에서 라이센싱 조건에 액세스할 수 있다. 예컨대, 라이센싱 조건은 시스템(100)의 메모리 위치에 저장될 수 있다. 일부 예시에서, 메모리 위치는 컴퓨팅 장치(예컨대, 컴퓨팅 장치(102, 120, 130, 140 또는 150) 중 하나 이상에, 컴퓨팅 장치에 통신으로 결합된 독립형 메모리 저장 장치에 그리고/또는 그의 일부 조합에 위치될 수 있다. 시스템(100) 내부의 임의의 쿠오럼 검출 모듈은 메모리 위치에 액세스함으로써 라이센싱 조건을 이후 결정할 수 있다. 일부 실시예에서, 라이센싱 조건은 쿠오럼 검출 모듈에 의해 해독될 수 있는, 암호화된 파일 내(예컨대, 전술된 메모리 위치 내) 저장될 수 있다.
일부 실시예에서, 쿠오럼 검출 모듈(124)은 전술된 바와 같이, 반복적으로 인가를 "체크" 또는 "입증"하도록 구성될 수 있다. 예컨대, 쿠오럼 검출 모듈은 (예컨대 블록(210및/또는 220)에서)소프트웨어 애플리케이션 인스턴스(122)의 최초 개시 후 또는 개시 시 소프트웨어 애플리케이션 인스턴스(122)가 인가되는지 결정하도록 구성될 수 있다. 추가적으로, 쿠오럼 검출 모듈은(예컨대, 블록(210 및/또는 220)을 반복함으로써) 소프트웨어 애플리케이션 인스턴스(122)가 소프트웨어 애플리케이션 인스턴스의 실행 동안 주기적으로 인가되는지 재결정하도록 구성될 수 있다.
블록(220)에서 블록(230) "라이센싱 큐 업데이트"로 계속하여, 쿠오럼 검출 모듈(124)은 소프트웨어 애플리케이션(122)이 활성화됨을 나타내는 메시지(112)(예컨대, 메시지(112a, 112b, 112c 또는 112d))를 생성하고, 라이센싱 큐(110)로 생성된 메시지를 포스팅하도록 구성되는 로직 및/또는 특징을 포함할 수 있다. 일부 예시에서, 쿠오럼 검출 모듈(124)은 (예컨대, 블록(220)에서) 소프트웨어 애플리케이션 인스턴스(122)가 인가된다고 결정되는 경우 블록(230)에서 동작을 단지 수행할 수 있다. 그러나, 전술된 바와 같이, 일부 예시에서, 소프트웨어 애플리케이션 인스턴스(122)는 허용된 것보다 더 많은 사용이 시스템 내에서 관찰되지 안는 한 허용될 수 있다. 따라서, 일부 실시예에서, 쿠오럼 검출 모듈(124)은 블록(210 및/또는 220)전에 블록(230)을 수행할 수 있다. 즉, 쿠오럼 검출 모듈(124)은 소프트웨어 애플리케이션 인스턴스(122)가 (예컨대, 쿠오럼 검출 모듈(124)에 의해, 사용자 등에 의해)종료될 때까지, 시작 시 및/또는 거기에서 반복되어 라이센싱 큐(110)로 메시지(112)(예컨대, 메시지(112a, 112b, 112c 및/또는 112d))를 생성하고 포스팅할 수 있다.
일부 예시에서, 도 2 및 그 외 다른 곳에 관해 기술된 방법은 다음의 슈도 코드에 적어도 부분적으로 기초하여 구현될 수 있다. 다음의 슈도 코드(pseudo code)는 파이선 프로그래밍 언어(python programming language) 및 클라우드 컴퓨팅 서비스와 함께 사용하기 위해 아마존®에 의해 제공되는 보토 라이브러리를 사용하였다.
#라이센싱 큐(110)에 연결 및/또는 그와 상호작용하도록 요구되는 임의의 라이브러리 임포트
from boto.sqs.connection import SQSConnection
conn = SQSConnection('<aws access key>','<aws secret key>')
import boto
#"라이센싱 큐(110)"에 대한 이용 가능한 큐를 체크하고, 발견되지 않는 경우 생성
LicenseQueue = boto.conn.get_all_queues(prefix='License Queue 110')
if not(LicenseQueue): LincenseQueue =
boto.conn.create_queu('licensing queue 110')
#메시지(112)에 대한 라이센싱 큐(110) 체크
MessageList = LicenseQueue.get_message()
if len(MessageList)>1 :
#MessageList를 통해 반복 및 소프트웨어 애플리케이션 인스턴스(122, 132, 142 및/또는 152)에 대한 고유 ID를 카운트
if LicenseCount>PermittedLicenses : <Enfrocement Action> else <Operate and post messages to LinceseQueue at intervals>
#반복적으로 메시지에 대해 다시 체크 및 고유 ID 카운트
일부 예시에서, 쿠오럼 검출 모듈(124)은 라이센싱 큐(110)를 설립하도록 구성될 수 있다. 예컨대, 블록(210)에서, 쿠오럼 검출 모듈(124)이 라이센싱 큐(110)가 시스템(100) 내부에 아직 존재하지 않는다고 결정하면, 쿠오럼 검출 모듈(124)은 라이센싱 큐(110)를 설립할 수 있다. 일부 구현예에서, 쿠오럼 검출 모듈(124)은 소프트웨어 애플리케이션 인스턴스(110)가 적어도 라이센싱 큐(110)가 시스템(100) 내부에서 발견 및/또는 설립될 때까지 실행되는 것을 방지할 수 있다. 이는 큐잉이 사용 불가능해지는 경우 예컨대 시스템 내의 소프트웨어 애플리케이션 인스턴스의 실행을 방지할 수 있다.
일부 실시예에서, 메시지(112)(예컨대, 메시지(112a, 112b, 112c 및/또는 112d)는 시스템(100)에 의해 반복적으로 아카이브에 수록될 수 있다. 메시지의 아카이브는 예컨대 시스템(100) 내부의 소프트웨어 애플리케이션의 실제 사용에 대한 경비(billing)을 결정하는데 후에 사용될 수 있다.
일부 실시예에서, 라이센싱 큐(100)는 소프트웨어 애플리케이션 인스턴스(122, 132, 142 및/또는 152)에 대응하는 소프트웨어 애플리케이션에 대한 벤더와 연관될 수 있다. 이와 같이, 소프트웨어 벤더는 라이센싱 큐(110)에 포스팅된 메시지(112)를 통해 (예커대, 데이터센터에서, 클라우드 컴퓨팅 서비스 내에서 사용되는 등의)그들의 소프트웨어 애플리케이션의 사용을 관찰 및/또는 기록하는 것이 가능할 수 있다. 예컨대, 소프트웨어 벤더는 라이센싱 큐(110)로부터 메시지(112)를 질의하여 메시지(112)에 적어도 부분적으로 기초하여 사용(예컨대, 활성 인스턴스의 전체 수, 대략적인 실행 시간, 고유 인스턴스 등)을 결정할 수 있다.
일부 실시예에서, 전술된 안전장치 라이센싱 기술은 전술된 것보다 더 복잡한 라이센싱 방식을 설명할 수 있다. 특히, 프로세서 이용에 기초한 라이센싱 요구는 예컨대 개시된 대상에 포함될 수 있다. 예컨대, 쿠오럼 검출 모듈(예컨대, 쿠오럼 검출 모듈(124, 134, 144 및/또는 154)은 그들 각각의 소프트웨어 애플리케이션 인스턴스에 대한 프로세서 이용량을 결정하도록 구성될 수 있다. 추가적으로, 쿠오럼 검출 모듈(예컨대, 쿠오럼 검출 모듈(124, 134, 144 및/또는 154)은 결정된 프로세서 이용의 표시를 포함하는 메시지(112)(예컨대, 메시지(112a, 112b, 112c 및/또는 112d)를 생성하도록 구성될 수 있다. 이와 같이, 특정 쿠오럼 검출 모듈이 메시지(112)를 독출하는 경우, 메시지를 독출하는 것에 적어도 부분적으로 기초하여 전체 프로세서 이용을 관찰(예컨대, 결정)할 수 있다. 특정 쿠오럼 검출 모듈은 이후 라이센싱 방식을 준수하여 지원하도록 적절한 동작을 취할수 있다(예컨대, 대응하는 소프트웨어 애플리케이션 인스터스 종료, 대응하는 소프트웨어 애플리케이션 인스턴스의 프로세서 이용을 감소시킴 등).
일부 실시예에서, 도 2 및 그 외 다른 곳에 관해 기술된 방법은 임의의 적절한 컴퓨팅 장치에서 실행 가능한 컴퓨터 프로그램 제품 등으로 구현될 수 있다. 예컨대, 소프트웨어 애플리케이션의 안전장치 라이센싱을 용이하게 하기 위한 컴퓨터 프로그램 제품이 제공될 수 있다. 예시적인 컴퓨터 프로그램 제품은 도 3 및 그 외 다른 곳에 관해 기술된다.
도 3은 본 개시의 적어도 일부 실시에 따라 배열되는, 예시적인 컴퓨터 프로그램 제품(300)을 도시한다. 컴퓨터 프로그램 제품(300)은 실행되는 경우, 여기에서 논의된 프로세스 및 방법의 실시예에 따라, 쿠오럼 검출 모듈로 하여금 소프트웨어 애플리케이션의 안전장치 라이센싱을 제공하는 것을 동작적으로 가능하게 하는 복수의 명령어를 저장하는 기계 판독가능 비일시적인 매체를 포함할 수 있다. 일 실시예의 컴퓨터 프로그램 제품(300)은 신호 베어링 매체(302)를 포함할 수 있다. 신호 베어링 매체(302)는 하나 이상의 프로세서에 의해 실행되는 경우, 컴퓨팅 장치로 하여금 여기에서 기술되는 기능성을 제공하는 것을 동작적으로 가능하게 할 수 있는 하나 이상의 기계 판독가능 명령어(304)를 포함할 수 있다. 다양한 예시에서, 여기에서 논의된 장치는 기계 판독가능 명령어 중 일부 또는 모두를 사용할 수 있다.
일부 예시에서, 기계 판독가능 명령어(304)는 소프트웨어 프로그램에 대응하는 라이센싱 큐로 메시지를 질의하는 것을 포함할 수 있다. 일부 예시에서, 기계 판독가능 명령어(304)는 라이센싱 큐의 질의에 적어도 부분적으로 기초한 결과를 수신하는 것을 포함할 수 있다. 일부 예시에서, 기계 판독가능 명령어(304)는 수신된 결과에 적어도 부분적으로 기초하여 소프트웨어 프로그램의 활성 인스턴스의 수를 결정하는 것을 포함할 수 있다. 일부 예시에서, 기계 판독가능 명령어(304)는 활성 인스턴스의 결정된 수에 적어도 부분적으로 기초하여 소프트웨어 프로그램의 인스턴스가 인가되는지 결정하는 것을 포함할 수 있다. 일부 예시에서, 기계 판독가능 명령어(304)는 소프트웨어 프로그램의 인스턴스가 인가된다는 결정에 응답하여 고유 인스턴스 식별 태그를 생성하는 것을 포함할 수 있다. 일부 예시에서, 기계 판독가능 명령어(304)는 소프트웨어 프로그램의 인스턴스가 인가된다는 결정에 응답하여, 소프트웨어 프로그램의 인스턴스가 활성화된다는 표시 및 생성된 고유 인스턴스 식별 태그의 표시를 포함하는 메시지를 라이센싱 큐에 포스팅하는 것을 포함할 수 있다. 일부 예시에서, 기계 판독가능 명령어(304)는 소프트웨어 프로그램의 인스턴스가 인가된다는 결정에 응답하여 소프트웨어 프로그램의 인스턴스의 실행을 종료하는 것을 포함할 수 있다.
일부 구현예에서, 신호 베어링 매체(302)는 하드 디스크 드라이브, CD(Compact Disk), DVD(Digital Video Disk), 디지털 테이프, 메모리 등과 같은 컴퓨터 판독 가능 매체(306)를 포함할 수 있으나, 이에 제한되지는 않는다. 일부 구현예에서, 신호 베어링 매체(302)는 메모리, 읽기/쓰기(R/W) CD, R/W DVD 등과 같은 기록 가능 매체(308)를 포함할 수 있으나, 이에 제한되지는 않는다. 일부 구현예에서, 신호 베어링 매체(302)는 디지털 및/또는 아날로그 통신 매체(예컨대, 광섬유 케이블, 도파관(waveguide), 유선 통신 링크, 무선 통신 링크 등)와 같은 통신 매체(310)를 포함할 수 있으나, 이에 제한되지는 않는다. 일부 예시에서, 신호 베어링 매체(302)는 기계 판독가능 비일시적인 매체를 포함할 수 있다.
일반적으로 도 2 및 여기에서 다른 부분에 관해 기술된 방법의 적어도 일부 실시예는 임의의 적절한 서버 및/또는 컴퓨팅 시스템에서 구현될 수 있다. 예시적인 시스템은 도 4 및 여기에서 다른 부분에 관해 기술될 수 있다. 일반적으로, 컴퓨터 시스템은 소프트웨어 애플리케이션의 안전장치 라이센싱을 제공하도록 구성될 수 있다.
도 4는, 본 개시의 적어도 일부 실시예에 따라 배열되는, 예시적인 컴퓨팅 장치(400)의 블록도를 도시한다. 다양한 예시에서, 컴퓨팅 장치(400)는 여기에서 논의되는 소프트웨어 애플리케이션의 안전장치 라이센싱하도록 구성될 수 있다. 기본 구성(401)의 일 예시에서, 컴퓨팅 장치(400)는 하나 이상의 프로세서(410) 및 시스템 메모리(420)을 포함할 수 있다. 메모리 버스(430)는 하나 이상의 프로세서(410) 및 시스템 메모리(420) 간의 통신을 위해 사용될 수 있다.
요구되는 구성에 따라, 프로세서(410)는 마이크로프로세서(μP), 마이크로컨트롤러(μC), 디지털 신호 프로세서(DSP) 또는 그 임의의 조합을 포함하는 임의의 유형일 수 있지만, 이에 한정되는 것은 아니다. 프로세서(410)는 레벨 1 캐시(411) 및 레벨 2 캐시(412)와 같은 하나 이상의 레벨의 캐싱, 프로세서 코어(413) 및 레지스터(414)를 포함할 수 있다. 예시적인 프로세서 코어(413)는 ALU(arithmetic logic unit), FPU(floating point unit), DSP 코어(digital signal processing core), 또는 그 임의의 조합을 포함할 수 있다. 예시적인 메모리 컨트롤러(415)는 또한 프로세서(410)와 사용될 수 있거나, 또는 일부 구현예에서, 메모리 컨트롤러(415)는 프로세서(410)의 내부 부품일 수 있다.
요구되는 구성에 따라, 시스템 메모리(420)는 (RAM과 같은) 휘발성 메모리, (ROM, 플래시 메모리 등과 같은) 비휘발성 메모리, 또는 그 임의의 조합을 포함할 수 있지만, 이에 한정되지 않는 임의의 유형일 수 있다. 시스템 메모리(420)는 운영 체제(421), 하나 이상의 애플리케이션(422), 및 프로그램 데이터(424)를 포함할 수 있다. 하나 이상의 애플리케이션(422)은, 여기에서 기술된 기능, 동작 및/또는 작동을 수행하도록 배열될 수 있는 쿠오럼 검출 모듈 애플리케이션(423) 및/또는 라이센싱 큐 애플리케이션(423)을 포함할 수 있다. 프로그램 데이터(424)는, 쿠오럼 검출 모듈 애플리케이션(423) 및/또는 라이센싱 큐 애플리케이션(423)과 함께 사용하기 위한 라이센싱, 메시지 및/또는 인가 데이터(425)를 포함할 수 있다. 일부 실시예에서, 하나 이상의 애플리케이션(422)은, 운영 체제(421) 상에서 프로그램 데이터(424)와 동작하도록 배열될 수 있다. 이러한 기술된 기본 구성은 파선(401) 내의 컴포넌트에 의해 도 4에 도시된다.
컴퓨팅 장치(400)는 추가적인 특징 또는 기능, 및 기본 구성(401)과 임의의 요구되는 장치와 인터페이스 간 통신을 용이하게 하기 위한 추가적인 인터페이스를 가질 수 있다. 예를 들면, 버스/인터페이스 컨트롤러(440)는 저장 인터페이스 버스(441)를 통한 기본 구성(401)과 하나 이상의 데이터 저장 장치(450) 간의 통신을 용이하게 하는데 사용될 수 있다. 데이터 저장 장치(450)는 분리형 저장 장치(451), 비분리형 저장 장치(452), 또는 그들의 조합일 수 있다. 분리형 저장 장치 및 비분리형 저장 장치의 예로는, 몇 가지 말하자면, 플렉서블 디스크 드라이브 및 하드 디스크 드라이브(HDD)와 같은 자기 디스크 장치, 컴팩트 디스크(CD) 드라이브 또는 디지털 다기능 디스크(DVD) 드라이브와 같은 광 디스크 드라이브, 고체 상태 드라이브(solid state drive; SSD), 및 테이프 드라이브가 포함된다. 예시적인 컴퓨터 저장 매체는, 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성의, 분리형 및 비분리형 매체를 포함할 수 있다.
시스템 메모리(420), 분리형 저장 장치(451) 및 비분리형 저장 장치(452)는 모두 컴퓨터 저장 매체의 예이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크(DVD) 또는 다른 광학 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 또는 원하는 정보를 저장하는데 사용될 수 있고 컴퓨팅 장치(400)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이에 한정되는 것은 아니다. 그러한 임의의 컴퓨터 저장 매체는 장치(400)의 일부일 수 있다.
컴퓨팅 장치(400)는 버스/인터페이스 컨트롤러(440)를 통한 다양한 인터페이스 장치(예를 들면, 출력 인터페이스, 주변 인터페이스 및 통신 인터페이스)로부터 기본 구성(401)으로의 통신을 용이하게 하기 위한 인터페이스 버스(442)도 포함할 수 있다. 예시적인 출력 인터페이스(460)는 그래픽 처리 유닛(461) 및 오디오 처리 유닛(462)을 포함하며, 이는 하나 이상의 A/V 포트(463)를 통해 디스플레이 또는 스피커와 같은 다양한 외부 장치로 통신하도록 구성될 수 있다. 예시적인 주변장치 인터페이스(470)는 직렬 인터페이스 컨트롤러(471) 또는 병렬 인터페이스 컨트롤러(472)를 포함하며, 이는 하나 이상의 I/O 포트(473)를 통해 입력 장치(예를 들면, 키보드, 마우스, 펜, 음성 입력 장치, 터치 입력 장치 등) 또는 다른 주변 장치(예를 들면, 프린터, 스캐너 등)와 같은 외부 장치와 통신하도록 구성될 수 있다. 예시적인 통신 인터페이스(480)는 네트워크 컨트롤러(481)를 포함하며, 이는 하나 이상의 통신 포트(482)를 통해 네트워크 통신 상에서의 하나 이상의 다른 컴퓨팅 장치(483)와의 통신을 용이하게 하도록 배치될 수 있다. 네트워크 통신 링크는 통신 매체의 일 예시일 수 있다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파 또는 다른 전송 메커니즘 같은 변조된 데이터 신호 내의 다른 데이터에 의해 구현될 수 있고, 임의의 정보 전달 매체를 포함할 수 있다. "변조된 데이터 신호"는 신호 내에 정보를 인코딩하기 위한 방식으로 설정되거나 변경된 특성 중 하나 이상을 갖는 신호일 수 있다. 제한적인지 않은 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체, 및 음파, 무선 주파수(RF), 마이크로웨이브, 적외선(IR) 및 다른 무선 매체와 같은 무선 매체를 포함할 수 있다. 여기서 사용되는 컴퓨터 판독가능 매체라는 용어는 저장 매체 및 통신 매체 둘 다를 포함할 수 있다.
컴퓨팅 장치(400)는, 휴대 전화, PDA(personal data assistant), 개인용 미디어 플레이어 장치, 무선 웹-워치(web-watch) 장치, 개인용 헤드셋 장치, 특수 용도 장치, 또는 위 기능 중 임의의 것을 포함하는 하이브리드 장치 같은 소형 폼 팩터(small-form factor)의 휴대용(또는 모바일) 전자 장치의 일부로서 구현될 수 있다. 컴퓨팅 장치(400)는 또한 랩톱 컴퓨터 및 랩톱이 아닌 컴퓨터 구성을 모두 포함하는 개인용 컴퓨터로서 구현될 수 있다. 또는 컴퓨팅 장치(400)는 무선 기지국 또는 다른 무선 시스템 또는 장치의 일부로 구현될 수 있다.
전술된 컴퓨팅 장치(400)의 다양한 실시예는 전술된 컴퓨팅 장치(102, 120, 130, 140 및/또는 150) 중 하나 이상을 구현하도록 사용될 수 있다. 예컨대, 컴퓨팅 장치(400)는 컴퓨팅 장치(102)를 구현하도록 사용될 수 있다. 따라서, 라이센싱 큐(110)(메시지(112)를 포함함)는 시스템 메모리(420)에서 저장되고 유지될 수 있다. 다른 실시예와 같이, 컴퓨팅 장치(400)는 컴퓨팅 장치(120, 130, 140 및/또는 150) 중 하나 이상을 구현하도록 사용될 수 있다. 따라서, 소프트웨어 애플리케이션(쿠오럼 검출 모듈을 포함함) 중 하나 이상은 시스템 메모리(420)에서 저장되고 유지될 수 있다.
이상의 상세한 설명의 일부분은 컴퓨터 메모리와 같은 컴퓨팅 시스템 메모리 내에 저장된 데이터 비트 또는 이진 디지털 신호 상에서의 동작의 알고리즘 또는 기호적 표현의 관점에서 제시된다. 이러한 알고리즘적인 설명 또는 표현은 데이터 프로세싱 분야의 당업자가 그들 연구의 실체를 다른 당업자에게 전달하기 위하여 사용하는 기법의 예시이다. 여기에서, 그리고 일반적으로, 알고리즘은 요구되는 결과로 이끄는 일관된 일련의 동작이나 유사한 프로세싱이 되도록 고려된다. 이러한 맥락에서, 동작 또는 프로세싱은 물리량의 물리적 조작을 수반한다. 보통, 반드시 필요하지는 않지만, 그러한 양은 저장, 전송, 조합, 비교나 아니면 조작될 수 있는 전기 또는 자기 신호의 형태를 취할 수 있다. 주로 일반 관습의 이유로, 비트, 데이터, 값, 요소, 심볼, 문자, 용어, 숫자 또는 번호 등으로 그러한 신호를 지칭하는 것이 때때로 편리함이 입증되었다. 그러나, 이들 및 유사한 용어 모두는 적절한 물리량과 연관될 것이고, 단지 편리한 라벨(label)임이 이해되어야 한다. 달리 구체적으로 언급되지 않는다면, 이하의 논의로부터 분명하게 될 바와 같이, 본 명세서의 논의에 걸쳐 "프로세싱", "컴퓨팅", "계산", "결정" 등과 같은 용어를 사용하는 것은, 컴퓨팅 장치의 메모리, 레지스터, 또는 기타 정보 저장 장치, 전송 장치, 또는 디스플레이 장치 내의 물리적 전자적 또는 자기적 양으로 표현된 데이터를 조작하거나 변환하는 컴퓨팅 장치의 동작이나 프로세스와 관련 있음이 인정된다.
청구된 대상은 범위에 있어 여기에서 설명된 특정 구현예로 제한되지 않는다. 예컨대, 일부 구현예는, 장치 또는 장치의 조합에서 동작하도록 사용되는 바와 같이 하드웨어일 수 있는 반면, 예컨대, 다른 구현예는 소프트웨어 및/또는 펌웨어일 수 있다. 마찬가지로, 청구된 대상은 이러한 점에서 제한되지 않지만, 일부 구현예는 신호 베어링 매체 및/또는 저장 매체(medium 및/또는 media)와 같이 하나 이상의 제품을 포함할 수 있다. 예컨대, CD-ROM, 컴퓨터 디스크, 플래시 메모리 등과 같은 이러한 저장 매체는, 예컨대, 컴퓨팅 시스템, 컴퓨팅 플랫폼, 또는 기타 시스템과 같은 컴퓨팅 장치에 의해 실행되는 경우, 예컨대, 앞서 설명된 구현예 중 하나와 같이 청구된 대상에 따라 프로세서의 실행을 일으킬 수 있는 저장된 명령어를 가질 수 있다. 하나의 가능성으로서, 컴퓨팅 장치는 하나 이상의 프로세싱 유닛 또는 프로세서, 디스플레이, 키보드 및/또는 마우스와 같은 하나 이상의 입력/출력 장치 및 정적 램(static random access memory), 동적 램(dynamic random access memory), 플래시 메모리 및/또는 하드 드라이브와 같은 하나 이상의 메모리를 포함할 수 있다.
시스템 양상들의 하드웨어와 소프트웨어 구현 사이에는 구별이 거의 없다. 하드웨어 또는 소프트웨어의 사용은 일반적으로 (그러나 어떤 맥락에서 하드웨어 및 소프트웨어 사이의 선택이 중요하게 될 수 있다는 점에서 항상 그런 것은 아니지만) 비용 대비 효율의 트레이드오프(tradeoff)를 나타내는 설계상 선택(design choice)이다. 여기에서 기술된 프로세스 및/또는 시스템 및/또는 다른 기술들이 영향 받을 수 있는 다양한 수단(vehicles)(예를 들어, 하드웨어, 소프트웨어 및/또는 펌웨어)이 있으며, 선호되는 수단은 프로세스 및/또는 시스템 및/또는 다른 기술이 사용되는 맥락(context)에 따라 변경될 것이다. 예를 들어, 만약 구현자가 속도 및 정확도가 중요하다고 결정하면, 구현자는 주로 하드웨어 및/또는 펌웨어(firmware) 수단을 선택할 수 있고, 만약 유연성이 중요하다면, 구현자는 주로 소프트웨어 구현을 선택할 수 있으며, 또는, 또 다른 대안으로서, 구현자는 하드웨어, 소프트웨어, 및/또는 펌웨어 중 일부 조합을 선택할 수 있다.
전술한 상세한 설명은 블록도, 흐름도, 및/또는 예시의 사용을 통해 장치 및/또는 프로세스의 다양한 실시예를 설명하였다. 그러한 블록도, 흐름도, 및/또는 예시가 하나 이상의 기능 및/또는 동작을 포함하는 한, 당업자라면 그러한 블록도, 흐름도, 또는 예시 내의 각각의 기능 및/또는 동작은 하드웨어, 소프트웨어, 펌웨어, 또는 실질적으로 그들 임의의 조합의 넓은 범위에 의해 개별적으로 및/또는 집합적으로 구현될 수 있다는 것이 이해될 것이다. 일 실시예에서, 여기에서 기술된 대상의 몇몇 부분은 ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array), DSP(Digital Signal Processor) 또는 다른 집적의 형태를 통해 구현될 수 있다. 그러나, 당업자라면, 여기에서 기술된 실시예의 일부 양상이, 하나 이상의 컴퓨터 상에 실행되는 하나 이상의 컴퓨터 프로그램(예를 들어, 하나 이상의 컴퓨터 시스템 상에 실행되는 하나 이상의 프로그램), 하나 이상의 프로세서 상에서 실행되는 하나 이상의 프로그램(예를 들어, 하나 이상의 마이크로프로세서 상에서 실행되는 하나 이상의 프로그램), 펌웨어 또는 실질적으로 그들의 조합으로서, 전체적으로 또는 부분적으로 균등하게 집적 회로에 구현될 수 있다는 것을 알 수 있으며, 소프트웨어 및/또는 펌웨어를 위한 코드의 작성 및/또는 회로의 설계는 본 개시에 비추어 당업자에게 자명할 것이다. 또한, 당업자라면, 여기에서 기술된 대상의 수단(mechanism)들이 다양한 형태의 프로그램 제품으로 분포될 수 있음을 이해할 것이며, 여기에서 기술된 대상의 예시는, 분배를 실제로 수행하는데 사용되는 신호 베어링 매체(signal bearing medium)의 특정 유형과 무관하게 적용됨을 이해할 것이다. 신호 베어링 매체의 예시는, 플로피 디스크, 하드 디스크 드라이브(HDD), CD(Compact Disc), DVD(Digital Versatile Disk), 디지털 테이프, 컴퓨터 메모리 등과 같은 판독가능 유형의 매체 및 디지털 및/또는 아날로그 통신 매체(예를 들어, 섬유 광학 케이블, 웨이브가이드, 유선 통신 링크, 무선 통신 링크 등)와 같은 전송 유형 매체를 포함할 수 있으나, 이에 제한되지는 않는다.
당업자라면, 여기서 설명된 형식으로 장치 및/또는 프로세스를 기술하고, 이후, 공학 실무를 사용하여 그러한 기술된 장치 및/또는 프로세스을 데이터 처리 시스템에 통합한다는 것은 당해 분야에서는 일반적이란 것을 인식할 것이다. 즉, 여기서 기술된 장치 및/또는 방법의 적어도 일부는 합당한 실험 량을 통해 데이터 처리 시스템에 통합될 수 있다. 당업자라면, 전형적인 데이터 처리 시스템은 일반적으로 시스템 유닛 하우징, 비디오 디스플레이 장치, 휘발성 및 비휘발성 메모리 같은 메모리, 마이크로프로세서 및 디지털 신호 프로세서와 같은 프로세서, 운영 체제, 드라이버, 그래픽 사용자 인터페이스 및 애플리케이션 프로그램과 같은 컴퓨터 엔티티(computational entities), 터치 패드 또는 스크린 같은 하나 이상의 상호작용 장치, 및/또는 피드백 루프 및 제어 모터(예를 들면, 위치 및/또는 속도를 감지하기 위한 피드백; 컴포넌트 및/또는 양(quantities)을 이동하고 및/또는 조정하기 위한 제어 모터)를 포함하는 제어 시스템 중 하나 이상을 일반적으로 포함한다는 것을 인식할 것이다. 전형적인 데이터 처리 시스템은 데이터 컴퓨팅/통신 및/또는 네트워크 컴퓨팅/통신 시스템에서 전형적으로 발견되는 바와 같은 임의의 적절한 상업적으로 이용 가능한 컴포넌트를 이용하여 구현될 수 있다.
여기에서 기술된 대상은 때때로 상이한 다른 컴포넌트 내에 포함되거나 접속된 상이한 컴포넌트를 도시한다. 도시된 그러한 아키텍처는 단순히 예시적인 것이고, 사실상 동일한 기능을 달성하는 다른 많은 아키텍처가 구현될 수 있다는 것이 이해되어야 한다. 개념적으로, 동일한 기능을 달성하기 위한 컴포넌트의 임의의 배치는 원하는 기능이 달성되도록 유효하게 "연관"된다. 이에 따라, 특정 기능을 달성하기 위해 여기서 결합된 임의의 두 개의 컴포넌트는, 아키텍처 또는 중간 컴포넌트와는 무관하게, 원하는 기능이 달성되도록 서로 "연관"된 것으로 볼 수 있다. 마찬가지로, 연관된 임의의 두 개의 컴포넌트는 또한 원하는 기능을 달성하기 위해 서로 "동작적으로 접속"되거나 또는 "동작적으로 연결"되는 것으로 간주될 수 있고, 그와 같이 연관될 수 있는 임의의 두 개의 컴포넌트는 또한 원하는 기능을 달성하기 위해 서로 "동작적으로 연결가능"한 것으로 볼 수 있다. 동작적으로 연결가능하다는 것의 특정예는 물리적으로 양립가능(mateable)하고 및/또는 물리적으로 인터액팅하는 컴포넌트 및/또는 무선으로 인터액팅이 가능하고 및/또는 무선으로 인터액팅하는 컴포넌트 및/또는 논리적으로 인터액팅하고 및/또는 논리적으로 인터액팅이 가능한 컴포넌트를 포함하지만, 이에 한정되는 것은 아니다.
여기에서 실질적으로 임의의 복수 및/또는 단수의 용어의 사용에 대하여, 당업자는 맥락 및/또는 응용에 적절하도록, 복수를 단수로 및/또는 단수를 복수로 해석할 수 있다. 다양한 단수/복수의 치환은 명확성을 위해 여기에서 명시적으로 기재될 수 있다.
당업자라면, 일반적으로 본 개시에 사용되며 특히 첨부된 청구범위(예를 들어, 첨부된 청구범위)에 사용된 용어들이 일반적으로 "개방적(open)" 용어(예를 들어, 용어 "포함하는"은 "포함하지만 이에 제한되지 않는"으로, 용어 "갖는"는 "적어도 갖는"으로, 용어 "포함하다"는 "포함하지만 이에 한정되지 않는" 등으로 해석되어야 함)로 의도되었음을 이해할 것이다. 또한, 당업자라면, 도입된 청구항의 기재사항의 특정 수가 의도된 경우, 그러한 의도가 청구항에 명시적으로 기재될 것이며, 그러한 기재사항이 없는 경우, 그러한 의도가 없음을 또한 이해할 것이다. 예를 들어, 이해를 돕기 위해, 이하의 첨부 청구범위는 "적어도 하나" 및 "하나 이상" 등의 도입 구절의 사용을 포함하여 청구항 기재사항을 도입할 수 있다. 그러나, 그러한 구절의 사용이, 부정관사 "하나"("a" 또는 "an")에 의한 청구항 기재사항의 도입이, 그러한 하나의 기재사항을 포함하는 예시들로, 그러한 도입된 청구항 기재사항을 포함하는 특정 청구항을 제한함을 암시하는 것으로 해석되어서는 안되며, 동일한 청구항이 도입 구절인 "하나 이상" 또는 "적어도 하나" 및 "하나"("a" 또는 "an")과 같은 부정관사(예를 들어, "하나"는 "적어도 하나" 또는 "하나 이상"을 의미하는 것으로 전형적으로 해석되어야 함)를 포함하는 경우에도 마찬가지로 해석되어야 한다. 이는 청구항 기재사항을 도입하기 위해 사용된 정관사의 경우에도 적용된다. 또한, 도입된 청구항 기재사항의 특정 수가 명시적으로 기재되는 경우에도, 당업자라면 그러한 기재가 전형적으로 적어도 기재된 수(예를 들어, 다른 수식어가 없는 "두개의 기재사항"을 단순히 기재한 것은, 전형적으로 적어도 두 개의 기재사항 또는 두 개 이상의 기재사항을 의미함)를 의미하도록 해석되어야 함을 이해할 것이다. 또한, "A, B 및 C 등 중의 적어도 하나"와 유사한 규칙이 사용된 경우에는, 일반적으로 그러한 해석은 당업자가 그 규칙을 이해할 것이라는 전제가 의도된 것이다(예를 들어, "A, B 및 C 중의 적어도 하나를 갖는 시스템"은, A만을 갖거나, B만을 갖거나, C만을 갖거나, A 및 B를 함께 갖거나, A 및 C를 함께 갖거나, B 및 C를 함께 갖거나, A, B, 및 C를 함께 갖는 시스템 등을 포함하지만 이에 제한되지 않음). "A, B 또는 C 등 중의 적어도 하나"와 유사한 규칙이 사용된 경우에는, 일반적으로 그러한 해석은 당업자가 그 규칙을 이해할 것이라는 전제가 의도된 것이다(예를 들어, "A, B 또는 C 중의 적어도 하나를 갖는 시스템"은, A만을 갖거나, B만을 갖거나, C만을 갖거나, A 및 B를 함께 갖거나, A 및 C를 함께 갖거나, B 및 C를 함께 갖거나, A, B, 및 C를 함께 갖는 시스템 등을 포함하지만 이에 제한되지 않음). 또한 당업자라면, 실질적으로 임의의 이접 접속어(disjunctive word) 및/또는 두 개 이상의 대안적인 용어들을 나타내는 구절은, 그것이 상세한 설명, 청구범위 또는 도면에 있는지와 상관없이, 그 용어들 중의 하나, 그 용어들 중의 어느 하나, 또는 그 용어들 두 개 모두를 포함하는 가능성을 고려했음을 이해할 것이다. 예를 들어, "A 또는 B"라는 구절은 "A" 또는 "B" 또는 "A 및 B"의 가능성을 포함하는 것으로 이해될 것이다.
본 명세서에서, "구현예", "일 구현예", "일부 구현예", 또는 "다른 구현예"에 대한 언급은 하나 이상의 구현예와 관련되어 기술된 특정 특징, 구조 또는 특성이 모든 구현예에서 필수적인 것은 아니지만, 적어도 일부 구현예에 포함될 수 있음을 의미할 수 있다. 앞선 설명에서 "구현예", 일 구현예" 또는 "일부 구현예"의 다양한 모습은 반드시 모두 동일한 구현예를 지칭하는 것은 아니다.
특정 예시적인 기법이 다양한 방법 및 시스템을 사용하여 여기에서 설명 및 도시되었으나, 청구되는 대상으로부터 벗어나지 않으면서, 다양한 다른 수정이 이루어질 수 있으며, 균등물로 대체될 수 있음이 당업자에 의해 이해되어야 한다. 또한, 여기에서 기술된 중심 개념으로부터 벗어나지 않으면서, 특정 상황을 청구된 대상의 교시에 대해 적합하게 하도록 만은 수정이 이루어질 수 있다. 따라서, 청구된 대상이 개시된 특정 예시에 제한되지는 않으나, 그러한 청구된 대상이 첨부된 청구항 및 그 균등물의 범위에 들어가는 모든 구현들을 또한 포함할 수 있도록 의도된 것이다.

Claims (31)

  1. 소프트웨어 프로그램의 라이센싱을 관리하기 위한 방법으로서,
    컴퓨팅 장치에서 실행 중인 상기 소프트웨어 프로그램의 인스턴스에 의해, 라이센싱 큐(licensing queue)로 질의(query)하는 단계 - 상기 라이센싱 큐는 소프트웨어 프로그램의 활성 인스턴스의 수의 표시를 포함함 -;
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 상기 라이센싱 큐의 상기 질의에 적어도 부분적으로 기초하여 상기 소프트웨어 프로그램의 상기 인스턴스가 인가되는지 결정하는 단계; 및
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 상기 소프트웨어 프로그램의 상기 인스턴스가 인가된다는 결정에 응답하여 상기 라이센싱 큐를 업데이트하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 소프트웨어 프로그램의 상기 인스턴스가 인가되지 않는다는 상기 소프트웨어 프로그램의 인스턴스에 의한 결정에 응답하여, 상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 상기 소프트웨어 프로그램의 상기 인스턴스의 종료를 개시하는 단계를 더 포함하는 방법.
  3. 소프트웨어 프로그램의 라이센싱을 관리하기 위한 방법으로서,
    컴퓨팅 장치에서 실행 중인 상기 소프트웨어 프로그램의 인스턴스에 의해 라이센싱 큐로 메시지를 질의하는 단계;
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 상기 라이센싱 큐의 상기 질의에 적어도 부분적으로 기초하여 결과를 수신하는 단계;
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 상기 수신된 결과에 적어도 부분적으로 기초하여 상기 소프트웨어 프로그램의 활성 인스턴스의 수를 결정하는 단계;
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 상기 활성 인스턴스의 결정된 수에 적어도 부분적으로 기초하여 상기 소프트웨어 프로그램의 상기 인스턴스가 인가되는지 결정하는 단계;
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 상기 소프트웨어 프로그램의 상기 인스턴스가 인가된다는 결정에 응답하여 고유 인스턴스 식별 태그(unique instance identification tag)를 생성하는 단계; 및
    상기 소프트에어 프로그램의 상기 인스턴스에 의해, 상기 소프트웨어 프로그램의 상기 인스턴스가 활성화된다는 표시 및 상기 생성된 고유 인스턴스 식별 태그의 표시를 포함하는 메시지를 상기 라이센싱 큐에 포스팅하는 단계
    를 포함하는 방법.
  4. 제3항에 있어서,
    상기 소프트웨어 프로그램의 상기 인스턴스가 인가되지 않는다는 상기 소프트웨어 프로그램의 상기 인스턴스에 의한 결정에 응답하여, 상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 상기 소프트웨어 프로그램의 상기 인스턴스의 실행을 종료하는 단계
    를 더 포함하는 방법.
  5. 제3항에 있어서,
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 특정 시간 간격에서 상기 라이센싱 큐로 메시지를 재질의(re-query)하는 단계;
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 상기 라이센싱 큐의 상기 재질의에 적어도 부분적으로 기초하여 추가적인 결과를 수신하는 단계;
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 상기 수신된 추가적인 결과에 적어도 부분적으로 기초하여 상기 소프트웨어 프로그램의 상기 결정된 활성 인스턴스의 수를 업데이트하는 단계;
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 상기 업데이트된 결정된 활성 인스턴스의 수에 적어도 부분적으로 기초하여 상기 소프트웨어 프로그램의 상기 인스턴스가 인가되는지의 결정을 업데이트하는 단계; 및
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 상기 소프트웨어 프로그램의 상기 인스턴스가 인가된다는 결정에 응답하여, 상기 소프트웨어의 상기 인스턴스가 활성화된다는 표시 및 상기 생성된 고유 인스턴스 식별 태그의 표시를 포함하는 상기 추가적인 메시지를 상기 라이센싱 큐로 포스팅하는 단계
    를 더 포함하는 방법.
  6. 제3항에 있어서,
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 상기 활성 인스턴스의 결정된 수에 적어도 부분적으로 기초하여 상기 소프트웨어 프로그램의 상기 인스턴스가 인가되는지 결정하는 단계는,
    상기 소포트웨어 프로그램의 허용되는 인스턴스의 최대 수를 결정하는 단계;및
    상기 소프트웨어 프로그램의 허용되는 인스턴스의 상기 결정된 최대 수를 상기 소프트웨어 프로그램의 활성 인스턴스의 상기 결정된 수에 비교하는 단계를 포함하는 것인, 방법.
  7. 제6항에 있어서,
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 상기 활성 인스턴스의 결정된 수에 적어도 부분적으로 기초하여 상기 소프트웨어 프로그램의 상기 인스턴스가 인가되는지 결정하는 단계는,
    상기 소프트웨어 프로그램의 활성 인스턴스의 상기 결정된 수가 상기 소프트웨어 프로그램의 허용되는 인스턴스의 상기 결정된 최대 수보다 더 작은 경우 상기 소프트웨어 프로그램의 상기 인스턴스가 인가되는 것으로 결정하는 단계를 더 포함하는 것인, 방법.
  8. 제3항에 있어서,
    상기 수신된 결과는 상기 라이센싱 큐 내 하나 이상의 메시지가 있다는 표시를 포함하고, 상기 소프트웨어 프로그램의 인스턴스에 의해, 상기 질의 결과에 적어도 부분적으로 기초하여 상기 소프트웨어 프로그램의 활성 인스턴스의 상기 수를 결정하는 단계는,
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 그 각각이 인스턴스 식별 태그의 표시를 포함하는 상기 하나 이상의 메시지를 수신하는 단계;
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 상기 수신된 하나 이상의 메시지에 적어도 부분적으로 기초하여 상기 고유 인스턴스 식별 태그의 수를 세는 단계; 및
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 상기 고유 식별 식별 태그의 세어진 수에 적어도 부분적으로 기초하여 상기 소프트웨어 프로그램의 활성 인스턴스의 상기 수를 결정하는 단계를 포함하는 것인, 방법.
  9. 제3항에 있어서,
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 상기 라이센싱 큐로 메시지를 질의하는 단계는,
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 상기 라이센싱 큐가 존재하는지 결정하는 단계; 및
    상기 소프트웨어 프로그램의 인스턴스에 의해, 상기 라이센싱 큐가 존재하지 않는다는 결정에 응답하여 상기 라이센싱 큐를 설립하는 단계를 포함하는 것인, 방법.
  10. 제3항에 있어서,
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 상기 라이센싱 큐로 메시지를 질의하는 단계는,
    상기 소프트웨어 프로그램의 상기 인스턴스에 의해, 특정 시간 간격 내에서 수신되는 읽히지 않은 메시지를 상기 라이센싱 큐로 질의하는 단계를 포함하는 것인, 방법.
  11. 제3항에 있어서,
    상기 소프트웨어 프로그램의 상기 인스턴스는 상기 컴퓨팅 장치 상에서 실행 중인 가상 머신 상에서 실행되는 것인, 방법.
  12. 기계 판독가능 비일시적인 매체는 거기에 저장되는 명령어를 가지고, 상기 명령어는 하나 이상의 프로세서에 의해 실행되는 경우 소프트웨어 프로그램의 인스턴스의 쿠오럼 검출 모듈(quorum detection module)로 하여금,
    상기 소프트웨어 프로그램에 대응하는 라이센싱 큐로 메시지를 질의하는 것;
    상기 질의에 응답하여 수신된 결과에 적어도 부분적으로 기초하여 상기 소프트웨어 프로그램의 활성 인스턴스의 수를 결정하는 것;
    상기 활성 인스턴스의 결정된 수에 적어도 부분적으로 기초하여 상기 소프트웨어 프로그램의 상기 인스턴스가 인가되는지 결정하는 것; 및
    상기 소프트웨어 프로그램의 상기 인스턴스가 인가된다는 결정에 응답하여, 상기 소프트웨어 프로그램의 상기 인스턴스가 활성된다는 표시를 포함하는 메시지를 포스팅하는 것을 동작적으로 가능하게 하는, 기계 판독가능 비일시적인 매체.
  13. 제12항에 있어서,
    상기 저장된 명령어는, 하나 이상의 프로세서에 의해 실행되는 경우, 상기 쿠오럼 검출 모듈로 하여금,
    상기 소프트웨어 프로그램의 상기 인스턴스가 인가되지 않는다는 결정에 응답하여 상기 소프트웨어 프로그램의 상기 인스턴스의 실행을 종료하는 것을 동작적으로 가능하게 하는, 기계 판독가능 비일시적인 매체.
  14. 제12항에 있어서,
    상기 저장된 명령어는, 하나 이상의 프로세서에 의해 실행되는 경우, 상기 쿠오럼 검출 모듈로 하여금,
    특정 시간 간격에서 상기 라이센싱 큐로 메시지를 재질의하는 것;
    상기 라이센싱 큐의 상기 재질의에 응답하여 수신된 추가적인 결과에 적어도 부분적으로 기초하여 상기 소프트웨어 프로그램의 활성 인스턴스의 상기 수의 상기 결정을 업데이트하는 것;
    상기 활성 인스턴스의 업데이트된 결정된 수에 적어도 부분적으로 기초하여 상기 소프트웨어 프로그램의 상기 인스턴스가 인가되는지의 상기 결정을 업데이트하는 것; 및
    상기 소프트웨어 프로그램의 상기 인스턴스가 인가된다는 결정에 응답하여, 상기 소프트웨어 프로그램의 상기 인스턴스가 활성화된다는 표시 및 상기 생성된 고유 인스턴스 식별 태그의 표시를 포함하는 추가적인 메시지를 상기 라이센싱 큐에 포스팅하는 것을 동작적으로 더 가능하게 하는 것인, 기계 판독가능 비일시적인 매체.
  15. 제12항에 있어서,
    상기 저장된 명령어는, 하나 이상의 프로세서에 의해 실행되는 경우, 상기 쿠오럼 검출 모듈로 하여금,
    상기 소프트웨어 프로그램의 허용되는 인스턴스의 최대 수를 결정하는 것; 및
    상기 소프트웨어 프로그램의 허용되는 인스턴스의 상기 결정된 최대 수를 상기 소프트웨어 프로그램의 활성 인스턴스의 상기 결정된 수에 비교하는 것을 동작적으로 더 가능하게 하는 것인, 기계 판독가능 비일시적인 매체.
  16. 제15항에 있어서,
    상기 저장된 명령어는, 하나 이상의 프로세서에 의해 실행되는 경우, 상기 쿠오럼 검출 모듈로 하여금,
    상기 소프트웨어 프로그램의 활성 인스턴스의 상기 결정된 수가 상기 소프트웨어 프로그램의 허용되는 인스턴스의 최대 수의 결정된 수보다 더 작다는 상기 결정에 응답하여 상기 소프트웨어 프로그램의 상기 인스턴스를 인가하는 것을 동작적으로 더 가능하게 하는 것인, 기계 판독가능 비일시적인 매체.
  17. 제12항에 있어서,
    상기 결과는 상기 라이센싱 큐에 하나 이상의 메시지가 있다는 표시를 포함하고, 상기 저장된 명령어는, 하나 이상의 프로세서에 의해 실행되는 경우, 상기 쿠오럼 검출 모듈로 하여금,
    상기 라이센싱 큐로부터 그 각각은 인스턴스 식별 태그의 표시를 포함하는 상기 하나 이상의 메시지를 읽는 것;
    상기 읽힌 하나 이상의 메시지에 적어도 부분적으로 기초하여 고유 인스턴스 식별 태그의 상기 수를 세는 것;
    상기 고유 식별 태그의 세어진 수에 적어도 부분적으로 기초하여 상기 소프트웨어 프로그램의 활성 인스턴스의 상기 수를 결정하는 것을 동작적으로 더 가능하게 하는 것인, 기계 판독가능 비일시적인 매체.
  18. 제12항에 있어서,
    상기 저장된 명령어는, 하나 이상의 프로세서에 의해 실행되는 경우, 상기 쿠오럼 검출 모듈로 하여금,
    상기 라이센싱 큐가 존재하는지 결정하는 것; 및
    상기 라이센싱 큐가 존재하지 않는다는 결정에 응답하여 상기 라이센싱 큐를 설립하는 것을 동작적으로 더 가능하게 하는 것인, 기계 판독가능 비일시적인 매체.
  19. 제12항에 있어서,
    상기 저장된 명령어는, 하나 이상의 프로세서에 의해 실행되는 경우, 상기 쿠오럼 검출 모듈로 하여금,
    선택된 시간 간격 내에서 상기 라이센싱 큐로 수신된 읽히지 않은 메시지를 질의하는 것을 동작적으로 더 가능하게 하는 것인, 기계 판독가능 비일시적인 매체.
  20. 제12항에 있어서,
    상기 소프트웨어 프로그램의 인스턴스는 컴퓨팅 장치 상에서 실행 중인 가상 머신 상에서 실행되는 것인, 기계 판독가능 비일시적인 매체.
  21. 제12항에 있어서,
    상기 저장된 명령어는, 하나 이상의 프로세서에 의해 실행되는 경우, 상기 쿠오럼 검출 모듈로 하여금,
    상기 소프트웨어 프로그램의 상기 인스턴스가 인가된다는 결정에 응답하여 고유 인스턴스 식별 태그를 생성하는 것을 동작적으로 더 가능하게 하고, 상기 메시지는 상기 생성된 고유 인스턴스 식별 태그의 표시를 더 포함하는 것인, 기계 판독가능 비일시적인 매체.
  22. 장치로서,
    하드웨어 저장 장치;
    소프트웨어 프로그램의 인스턴스;
    상기 하드웨어 저장 장치에 저장되고 상기 소프트웨어 프로그램에 대응하는 라이센싱 큐; 및
    상기 소프트웨어 프로그램에 결합되는 쿠오럼 검출 모듈로서, 상기 쿠오럼 검출 모듈은,
    라이센싱 큐로 메시지를 질의하는 것;
    상기 질의의 결과에 적어도 부분적으로 기초하여 상기 소프트웨어 프로그램의 활성 인스턴스의 수를 결정하는 것;
    상기 활성 인스턴스의 결정된 수에 적어도 부분적으로 기초하여 상기 소프트웨어 프로그램의 상기 인스턴스가 인가되는지 결정하는 것; 및
    상기 소프트웨어 프로그램의 상기 인스턴스가 인가된다는 결정에 응답하여, 상기 소프트웨어 프로그램의 상기 인스턴스가 활성화된다는 표시를 포함하는 메시지를 상기 라이센싱 큐에 포스팅하는 것이 동작적으로 가능한 것인, 장치.
  23. 제22항에 있어서,
    상기 쿠오럼 검출 모듈은,
    상기 소프트웨어 프로그램의 상기 인스턴스가 인가된다고 결정되자 않은 경우 상기 소프트웨어 프로그램의 상기 인스턴스의 실행을 종료하는 것이 더 동작적으로 가능한 것인, 장치.
  24. 제22항에 있어서,
    상기 쿠오럼 검출 모듈은,
    선택된 시간 간격에서 메시지를 상기 라이센싱 큐로 재질의하는 것;
    상기 재 질의로부터 추가적인 결과에 적어도 부분적으로 기초하여 상기 소프트웨어 프로그램의 활성 인스턴스의 상기 수의 결정을 업데이트하는 것;
    상기 활성 인스턴스의 업데이트된 결정된 수에 적어도 부분적으로 기초하여 상기 소프트웨어의 상기 인스턴스가 인가되는지의 상기 결정을 업데이트하는 것; 및
    상기 소프트웨어 프로그램의 상기 인스턴스가 인가된다는 결정에 응답하여, 상기 소프트웨어 프로그램의 상기 인스턴스가 활성화된다는 표시를 포함하는 추가적인 메시지를 상기 라이센싱 큐에 포스팅하는 것이 더 동작적으로 가능한 것인, 장치.
  25. 제22항에 있어서,
    상기 쿠오럼 검출 모듈은,
    상기 소프트웨어 프로그램의 허용되는 인스턴스의 최대 수를 결정하는 것; 및
    상기 소프트웨어 프로그램의 허용되는 인스턴스의 상기 결정된 최대 수를 상기 소프트웨어 프로그램의 활성 인스턴스의 상기 결정된 수에 비교하는 것이 더 동작적으로 가능한 것인, 장치.
  26. 제25항에 있어서,
    상기 쿠오럼 검출 모듈은,
    상기 소프트웨어 프로그램의 활성 인스턴스의 상기 결정된 수가 상기 소프트웨어 프로그램의 허용되는 인스턴스의 최대 수의 상기 결정된 수보다 더 작다는 것에 응답하여 상기 소프트웨어 프로그램의 상기 인스턴스가 인가된다고 결정하는 것이 더 동작적으로 가능한 것인, 장치.
  27. 제22항에 있어서,
    상기 결과는 라이센싱 큐에 하나 이상의 메시지가 있다는 표시를 포함하고, 상기 쿠오럼 검출 모듈은,
    상기 라이센싱 큐로부터 그 각각이 인스턴스 식별 태그의 표시를 포함하는 하나 이상의 메시지를 상기 라이센싱 큐로부터 읽는 것;
    상기 읽힌 하나 이상의 메시지에 적어도 부분적으로 기초하여 고유 인스턴스 식별 태그의 상기 수를 세는 것; 및
    상기 고유 인스턴스 식별 태그의 세어진 수에 적어도 부분적으로 기초하여 상기 소프트웨어 프로그램의 활성 인스턴스의 상기 수를 결정하는 것이 동작적으로 더 가능한 것인, 장치.
  28. 제22항에 있어서,
    상기 쿠오럼 검출 모듈은,
    상기 라이센싱 큐가 존재하는지 결정하는 것; 및
    라이센싱 큐가 존재하지 않는다는 결정에 응답하여 상기 라이센싱 큐를 설립하는 것이 동작적으로 더 가능한 것인, 장치.
  29. 제22항에 있어서,
    상기 쿠오럼 검출 모듈은,
    특정 시간 간격 내에서 수신된 읽히지 않은 메시지를 상기 라이센싱 큐로 질의하는 것이 동작적으로 더 가능한 것인, 장치.
  30. 제22항에 있어서,
    상기 소프트웨어 프로그램의 상기 인스턴스는 상기 컴퓨팅 장치 상에서 실행 중인 가상 머신 상에서 실행되는 것인, 장치.
  31. 제22항에 있어서,
    상기 쿠오럼 검출 모듈은,
    상기 소프트웨어 프로그램의 상기 인스턴스가 인가된다는 결정에 응답하여 고유 인스턴스 식별 태그를 생성하는 것이 동작적으로 더 가능하고, 상기 메시지는 상기 생성되는 고유 인스턴스 식별 태그의 표시를 더 포함하는 것인, 장치.
KR1020157022931A 2013-01-22 2013-01-22 소프트웨어 애플리케이션을 위한 안전장치 라이센싱 KR101731934B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/022516 WO2014116201A1 (en) 2013-01-22 2013-01-22 Fail-safe licensing for software applications

Publications (2)

Publication Number Publication Date
KR20150113056A true KR20150113056A (ko) 2015-10-07
KR101731934B1 KR101731934B1 (ko) 2017-05-11

Family

ID=51227877

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157022931A KR101731934B1 (ko) 2013-01-22 2013-01-22 소프트웨어 애플리케이션을 위한 안전장치 라이센싱

Country Status (3)

Country Link
US (1) US9436814B2 (ko)
KR (1) KR101731934B1 (ko)
WO (1) WO2014116201A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240056453A (ko) * 2022-10-21 2024-04-30 유러썸 리미티드 경보 시스템에서 처리되지 않은 경보를 관리하는 시스템 및 방법

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2964339T3 (es) * 2013-08-02 2024-04-05 Bothnic Information Co Ltd Dispositivo para permitir el programa, dispositivo de transacción del programa y procedimiento para permitir el programa del mismo
US10129220B2 (en) 2015-06-13 2018-11-13 Avocado Systems Inc. Application and data protection tag
US10397277B2 (en) 2015-06-14 2019-08-27 Avocado Systems Inc. Dynamic data socket descriptor mirroring mechanism and use for security analytics
US10193889B2 (en) 2015-06-14 2019-01-29 Avocado Systems Inc. Data socket descriptor attributes for application discovery in data centers
US10270810B2 (en) 2015-06-14 2019-04-23 Avocado Systems Inc. Data socket descriptor based policies for application and data behavior and security
US10148697B2 (en) 2015-06-16 2018-12-04 Avocado Systems Inc. Unified host based security exchange between heterogeneous end point security agents
US20160381076A1 (en) * 2015-06-23 2016-12-29 Avocado Systems Inc. Service level agreements and application defined security policies for application and data security registration
US10193930B2 (en) 2015-06-29 2019-01-29 Avocado Systems Inc. Application security capability exchange via the application and data protection layer
US10356068B2 (en) 2015-07-14 2019-07-16 Avocado Systems Inc. Security key generator module for security sensitive applications
US10354070B2 (en) 2015-08-22 2019-07-16 Avocado Systems Inc. Thread level access control to socket descriptors and end-to-end thread level policies for thread protection
US11429694B2 (en) 2018-08-17 2022-08-30 Amazon Technologies, Inc. Rule-based resource management system
US11700261B1 (en) * 2020-12-18 2023-07-11 T-Mobile Innovations Llc Tool for management of a pool of authorizations to use software
CN114978895B (zh) * 2022-07-25 2022-12-13 深圳市亿联无限科技有限公司 一种启动方法、系统、设备及计算机可读存储介质

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845065A (en) * 1994-11-15 1998-12-01 Wrq, Inc. Network license compliance apparatus and method
US20010011253A1 (en) * 1998-08-04 2001-08-02 Christopher D. Coley Automated system for management of licensed software
US6766305B1 (en) * 1999-03-12 2004-07-20 Curl Corporation Licensing system and method for freely distributed information
US6785713B1 (en) * 2000-05-08 2004-08-31 Citrix Systems, Inc. Method and apparatus for communicating among a network of servers utilizing a transport mechanism
US7278164B2 (en) * 2001-01-05 2007-10-02 Revit Technology Corporation Software usage/procurement management
US7882496B2 (en) 2004-06-01 2011-02-01 International Business Machines Corporation Method and system for metering execution of interpreted programs
US20060004667A1 (en) 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for collecting operating system license revenue using an emulated computing environment
US20060004591A1 (en) * 2004-07-02 2006-01-05 Johnson Joel A Web-based electronic export-import compliance and licensing processing system
CN1937628B (zh) 2005-09-21 2010-04-07 国际商业机器公司 用于管理数据处理目标实体的方法和系统
US20070265976A1 (en) * 2006-05-12 2007-11-15 Peter Helfer License distribution in a packet data network
US20080028218A1 (en) 2006-06-13 2008-01-31 Simon Jonathon B Software & license and physical/virtual machine asset management library application with check-out/check-in, front-end asset load, tracking, reporting, reconciliation and associated methods
US7900243B2 (en) 2006-10-19 2011-03-01 Oracle America, Inc. Method and system for managing execution of an application module
US8875266B2 (en) * 2007-05-16 2014-10-28 Vmware, Inc. System and methods for enforcing software license compliance with virtual machines
US8205241B2 (en) 2008-01-30 2012-06-19 Microsoft Corporation Detection of hardware-based virtual machine environment
US20090249329A1 (en) 2008-03-25 2009-10-01 Sambit Kumar Dash Limited service life through virtualized service images
US20090313665A1 (en) * 2008-06-17 2009-12-17 Tandberg Television Inc. Digital rights management licensing over third party networks
US10719587B2 (en) 2008-06-25 2020-07-21 Red Hat, Inc. Managing entitlements in a networked environment
US8595361B2 (en) 2009-02-10 2013-11-26 Novell, Inc. Virtual machine software license management
US8646098B2 (en) 2009-06-25 2014-02-04 Flexera Software Llc Method and system for software licensing under machine virtualization
KR100945476B1 (ko) 2009-09-10 2010-03-05 주식회사 파수닷컴 가상화 기술을 이용한 디지털 저작권 관리 장치 및 방법
US11132237B2 (en) 2009-09-24 2021-09-28 Oracle International Corporation System and method for usage-based application licensing in a hypervisor virtual execution environment
JP5678508B2 (ja) 2010-07-29 2015-03-04 日本電気株式会社 シンクライアントシステム、管理サーバ、仮想マシン作成管理方法及び仮想マシン作成管理プログラム
US8832686B2 (en) 2010-10-29 2014-09-09 Microsoft Corporation Inherited product activation for virtual machines
US8910157B2 (en) 2010-11-23 2014-12-09 International Business Machines Corporation Optimization of virtual appliance deployment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240056453A (ko) * 2022-10-21 2024-04-30 유러썸 리미티드 경보 시스템에서 처리되지 않은 경보를 관리하는 시스템 및 방법

Also Published As

Publication number Publication date
US9436814B2 (en) 2016-09-06
WO2014116201A1 (en) 2014-07-31
US20150213237A1 (en) 2015-07-30
KR101731934B1 (ko) 2017-05-11

Similar Documents

Publication Publication Date Title
KR101731934B1 (ko) 소프트웨어 애플리케이션을 위한 안전장치 라이센싱
CN106063185B (zh) 用于安全地共享数据的方法和装置
KR102111180B1 (ko) 동적 프리젠테이션과 데이터 구성을 사용하여 보안 모바일 협력 애플리케이션을 구축하기 위한 플랫폼
KR101492757B1 (ko) 애플리케이션 사용 정책 시행
US10019558B2 (en) Controlling licensable features of software using access tokens
US20150244717A1 (en) Trusted virtual computing system
US8910263B1 (en) Mobile device management profile distribution
CN103620556A (zh) 将应用绑定到设备能力
TWI528301B (zh) 操作處理方法和裝置
BR102013012756B1 (pt) Método implementado por computador, dispositivo de computação e meio não transitório legível por computador
RU2640653C2 (ru) Сетевое управление наборами защищенных данных
US9219710B2 (en) Seamless authentication with proxy servers
US20190171826A1 (en) Apparatus and method for blocking ransome ware using access control to the contents file
KR102390810B1 (ko) 보안 메모리 장치
US10419214B2 (en) Mobile device management delegate for managing isolated devices
WO2013048492A1 (en) Mechanism for providing a secure environment for acceleration of software applications at computing devices
US8655993B1 (en) Configuring networks in client computing devices
KR102226950B1 (ko) 항만물류 블록체인 네트워크 중앙 관리 방법 및 시스템
BR112014024551B1 (pt) Método e aparelho para controle de acesso a um servidor de aliança de rede ao vivo digital e meio de armazenamento legível por computador nãotransitório
CN105612731A (zh) 跨受信和非受信平台漫游互联网可访问应用状态
WO2014142883A1 (en) Systems, methods, and computer program products for providing a universal persistence cloud service
US20180157457A1 (en) Enforcing display sharing profiles on a client device sharing display activity with a display sharing application
AU2013401893B2 (en) Revocable platform identifiers
US11616769B2 (en) Runtime identity confirmation for restricted server communication control
US9887979B1 (en) Systems and methods for enabling users to launch applications without entering authentication credentials

Legal Events

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