KR20010045288A - 다중 데이터 관리 미들웨어 시스템에서의 공유메모리를이용한 스키마 관리 방법 - Google Patents

다중 데이터 관리 미들웨어 시스템에서의 공유메모리를이용한 스키마 관리 방법 Download PDF

Info

Publication number
KR20010045288A
KR20010045288A KR1019990048532A KR19990048532A KR20010045288A KR 20010045288 A KR20010045288 A KR 20010045288A KR 1019990048532 A KR1019990048532 A KR 1019990048532A KR 19990048532 A KR19990048532 A KR 19990048532A KR 20010045288 A KR20010045288 A KR 20010045288A
Authority
KR
South Korea
Prior art keywords
memory
schema
shared memory
manager
shared
Prior art date
Application number
KR1019990048532A
Other languages
English (en)
Inventor
서정민
송주원
Original Assignee
이계철
한국전기통신공사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 이계철, 한국전기통신공사 filed Critical 이계철
Priority to KR1019990048532A priority Critical patent/KR20010045288A/ko
Publication of KR20010045288A publication Critical patent/KR20010045288A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

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

Abstract

1. 청구범위에 기재된 발명이 속한 기술분야
본 발명은 다중 데이터 관리 미들웨어 시스템에서의 공유메모리를 이용한 스키마 관리 방법에 관한 것임.
2. 발명이 해결하려고 하는 기술적 과제
본 발명은, 여러 개의 데이터 관리 미들웨어 서버가 동시에 실행될 때 여러 서버에 의해 동시에 접근되는 스키마를 공유 메모리를 이용하여 관리하기 위한 공유메모리를 이용한 스키마 관리 방법과 상기 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하고자 함.
3. 발명의 해결방법의 요지
본 발명은, 요청의 종류를 판단하는 제 1 단계; 스키마 정보를 담을 수 있는 메모리를 할당하여 스키마를 생성하는 제 2 단계; 메모리 읽기 요청을 하여 변경하고자 하는 스키마를 읽은 후 메모리 쓰기를 요청하여 스키마를 변경하는 제 3 단계; 공유메모리 관리기에 메모리 읽기를 요청하여 스키마를 읽는 제 4 단계; 및 상기 공유메모리 관리기에 메모리 해제를 요청하여 스키마를 해제하는 제 5 단계를 포함함.
4. 발명의 중요한 용도
본 발명은 다중 데이터 관리 미들웨어 시스템 등에 이용됨.

Description

다중 데이터 관리 미들웨어 시스템에서의 공유메모리를 이용한 스키마 관리 방법{METHOD FOR MANAGING SCHEMA USING SHARED MEMORY IN MULTIPLE DATA MANAGEMENT MIDDLEWARE SYSTEM}
본 발명은 다중 데이터 관리 미들웨어 시스템에서의 공유메모리를 이용한 스키마 관리 방법과 상기 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체에 관한 것으로, 특히 여러 개의 데이터 관리 미들웨어 서버가 동시에 실행될 때 여러 서버에 의해 동시에 접근되는 스키마를 공유 메모리를 이용하여 관리하기 위한 공유메모리를 이용한 스키마 관리 방법과 상기 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다.
여기서, 데이터 관리 미들웨어 시스템이란 사용자에게 전역(Global) 질의를 사용할 수 있게 하여 다른 종류의 데이터베이스 관리 시스템들의 데이터베이스들을 자신의 데이터베이스인 것처럼 처리하지만 실제로 데이터는 저장하지 않는 시스템이다. 이 시스템은 클라이언트(또는 응용 프로그램)와 여러 데이터베이스 관리 시스템 사이에 존재하면서 클라이언트로부터의 전역 질의를 각 데이터베이스 관리 시스템의 지역 질의어로 변경하여 질의를 수행하도록 한 후 그 결과들을 모아서 다시 클라이언트에게 전달하는 역할을 한다.
한편, 종래의 다중 데이터 관리 미들웨어 시스템은 여러 개의 중앙 처리 장치를 동시에 사용하는 방법을 고려하지 않았다.
그런데, 최근의 컴퓨터 하드웨어는 여러 개의 중앙 처리 장치가 있는 형태로 발전되고 있다. 따라서, 이러한 기계의 성능을 충분히 이용하기 위해서는 다중 데이터 관리 미들웨어 서버가 하나의 기계에서 동시에 수행될 수 있어야 한다. 이를 위해서 이들 여러 서버가 공유해야 하는 자료를 관리할 수 있는 새로운 방법이 요구된다.
본 발명은, 상기한 바와 같은 요구에 부응하기 위하여 안출된 것으로, 여러 개의 데이터 관리 미들웨어 서버가 동시에 실행될 때 여러 서버에 의해 동시에 접근되는 스키마를 공유 메모리를 이용하여 관리하기 위한 공유메모리를 이용한 스키마 관리 방법과 상기 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는데 그 목적이 있다.
도 1 은 본 발명이 적용되는 다중 데이터 관리 미들웨어 시스템의 구성예시도.
도 2 는 본 발명에 따른 공유메모리를 이용한 스키마 관리 방법중 스키마를 관리하기 위한 스키마 관리기의 동작 흐름도.
도 3a 및 도 3b 는 본 발명에 따른 공유메모리를 이용한 스키마 관리 방법중 공유메모리를 관리하기 위한 공유 메모리 관리기의 동작 흐름도.
*도면의 주요 부분에 대한 부호의 설명
11 : 브로커 21~2n : 미들웨어 서버
31 : 스키마 관리기 41 : 공유메모리 관리기
51 : 공유메모리 관리기 정보 테이블
상기 목적을 달성하기 위한 본 발명은, 다중 데이터 관리 미들웨어 시스템에 적용되는 공유메모리를 이용한 스키마 관리 방법에 있어서, 요청의 종류를 판단하는 제 1 단계; 스키마 정보를 담을 수 있는 메모리를 할당하여 스키마를 생성하는 제 2 단계; 메모리 읽기 요청을 하여 변경하고자 하는 스키마를 읽은 후 메모리 쓰기를 요청하여 스키마를 변경하는 제 3 단계; 공유메모리 관리기에 메모리 읽기를 요청하여 스키마를 읽는 제 4 단계; 및 상기 공유메모리 관리기에 메모리 해제를 요청하여 스키마를 해제하는 제 5 단계를 포함하여 이루어진 것을 특징으로 한다.
또한, 상기 본 발명은, 상기 미들웨어 서버가 구동되어 있을때 현재 종료되는 미들웨어 서버가 마지막인 경우에 할당된 모든 공유메모리 세그먼트와 세마포어를 해제하여 상기 공유메모리 관리기를 종료하는 제 6 단계를 더 포함하여 이루어진 것을 특징으로 한다.
그리고, 본 발명은, 대용량 프로세서를 구비한 다중 데이터 관리 미들웨어 시스템에, 요청의 종류를 판단하는 기능; 스키마 정보를 담을 수 있는 메모리를 할당하여 스키마를 생성하는 기능; 메모리 읽기 요청을 하여 변경하고자 하는 스키마를 읽은 후 메모리 쓰기를 요청하여 스키마를 변경하는 기능; 공유메모리 관리기에 메모리 읽기를 요청하여 스키마를 읽는 기능; 및 상기 공유메모리 관리기에 메모리 해제를 요청하여 스키마를 해제하는 기능을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
또한, 상기 본 발명은, 상기 미들웨어 서버가 구동되어 있을때 현재 종료되는 미들웨어 서버가 마지막인 경우에 할당된 모든 공유메모리 세그먼트와 세마포어를 해제하여 상기 공유메모리 관리기를 종료하는 기능을 더 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
상술한 목적, 특징들 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해 질 것이다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일실시예를 상세히 설명한다.
도 1 은 본 발명이 적용되는 다중 데이터 관리 미들웨어 시스템의 구성예시도이다.
도 1에 도시된 바와 같이, 다중 데이터 관리 미들웨어 시스템(이하, 간략히 미들웨어 시스템이라 표현)은 브로커(11)와, 미들웨어 서버(21~2n)와, 스키마 관리기(31~3n)와, 공유메모리 관리기(41~4n)로 구성된다.
여기서, 브로커(11)는 미들웨어 서버(21~2n)의 구동과 종료를 수행하기 위한 프로세스로서 각 미들웨어 서버(21~2n)의 상태 정보를 유지한다. 또한, 미들웨어 서버(21~2n)의 구동 요청이 들어오면 브로커(11)는 새로운 미들웨어 서버(21~2n)를 구동한다. 이때, 브로커(11)는 구동된 모든 미들웨어의 수를 유지하여 새로 구동되는 미들웨어 서버(21~2n)가 첫번째로 구동되는 미들웨어 서버(21~2n)인지를 알려준다. 이는 첫번째로 구동되는 미들웨어 서버(21~2n)에서 공유메모리를 사용하는데 필요한 초기화 작업들을 수행해야 되기 때문이다.
또한, 하나의 미들웨어 시스템(21)의 스키마 관리기(31)는 공유메모리 관리기(41)를 통하여 스키마 정보인 클래스를 생성, 삭제, 변경 등의 연산을 수행하고, 수행된 이 내용은 다른 미들웨어 시스템의 스키마 관리기에서 접근할 수 있게 된다.
한편, 미들웨어 서버(21~2n)에서 공유메모리 관리기(41~4n)는 일정한 크기의 메모리 블록을 미리 할당받은 후 그 메모리 블록 내에서 메모리 노드를 할당함으로써, 운영체제 내부의 잦은 메모리 할당 함수 호출에 따른 속도 저하를 방지한다. 또한, 메모리 노드를 해제할 때는 실제로 해제하지 않고 프리(free) 메모리 리스트에 연결하여 다음번 메모리 노드 할당시에 다시 사용한다. 스키마뿐만 아니라 공유메모리 관리기(41~4n)의 내용 또는 여러 미들웨어 서버(21~2n)도 공유해야 하므로 이 관리기 또한 공유 메모리 상에 있어야 한다. 따라서, 각각의 미들웨어 서버(21~2n)는 여러 개의 공유메모리 관리기(41~4n)를 가질 수 있다.
또한, 공유메모리 관리기(41~4n)는 미들웨어 서버(21~2n)가 처음 구동되면서 초기화되는데 다른 미들웨어 서버(21~2n)도 같이 접근할 수 있도록 하기 위해서 모든 미들웨어 서버(21~2n)에 알려져 있는 위치에 공유메모리 관리기(41~4n) 정보를 저장해야 한다. 이러한 위치와 기타 다른 정보를 가지는 자료구조로서, 공유 메모리 관리기 정보 테이블이 있다. 이 테이블에서 일부는 모든 미들웨어 서버에 동일한 값을 가지고, 일부는 자신의 미들웨어 서버에 지역적인 값을 가진다.
공유메모리 관리기 정보 테이블(51)는 세그먼트 단위로 할당되는데 유일한 키 값에 대해서 유일한 세그먼트를 할당함과 동시에 세그먼트 번호를 넘겨준다. 그러므로 공유메모리 관리기(41~4n)를 위한 키 값이 모든 미들웨어 서버(21~2n)에 알려져 있으므로 그 미들웨어 서버들은 같은 공유메모리 관리기(41~4n)에 접근할 수 있고 이 관리기가 관리하는 스키마를 공유메모리 상에서 연산할 수 있다.
도 2 는 본 발명에 따른 공유메모리를 이용한 스키마 관리 방법중 스키마를 관리하기 위한 스키마 관리기의 동작 흐름도이다.
도 2에 도시된 바와 같이, 스키마를 생성할 때는 먼저 클라이언트 또는 미들웨어 서버(21)의 다른 모듈로부터 스키마의 생성, 변경, 읽기 및 쓰기에 대한 요청을 받은 후(201) 요청의 종류를 판단한다(202).
판단결과, 스키마 생성에 대한 요청을 받으면 록을 걸고(203) 메모리 할당 요청을 한다(204).
이때, 공유메모리 관리기(41)는 적절한 메모리 노드를 미들웨어 서버(21)의 스키마 관리기(31)에게 전달한다.
이어서, 스키마 관리기(31)는 이 메모리에 새로운 스키마 정보를 쓰고(205) 록을 해제한 후(206) 클라이언트 또는 미들웨어 서버(21)의 다른 모듈로부터 스키마의 생성, 변경, 읽기 및 쓰기에 대한 요청을 받는 과정(201)으로 넘어간다.
이렇게, 스키마 정보는 공유메모리 상에 있으므로 다른 미들웨어 서버도 접근하여 그 정보를 읽거나 변경할 수 있다.
판단결과, 스키마 변경에 대한 요청을 받으면 록을 걸고(207) 메모리 읽기 요청을 하여(208) 메모리로부터 변경하고자 하는 스키마 정보를 읽은 후(209) 메모리 쓰기 요청을 한다(210).
이어서, 메모리에 스키마 정보를 쓰고(211) 록을 해제한 후(212) 클라이언트 또는 미들웨어 서버(21)의 다른 모듈로부터 스키마의 생성, 변경, 읽기 및 쓰기에 대한 요청을 받는 과정(201)으로 넘어간다.
판단결과, 스키마 읽기에 대한 요청을 받으면 록을 걸고(213) 메모리 읽기에 대한 요청을 한다(214).
이어서, 메모리로부터 스키마 정보를 읽고(215) 록을 해제한 후(216) 클라이언트 또는 미들웨어 서버(21)의 다른 모듈로부터 스키마의 생성, 변경, 읽기 및 쓰기에 대한 요청을 받는 과정(201)으로 넘어간다.
판단결과, 스키마 해제에 대한 요청을 받으면 록을 걸고(217) 메모리 해제에 대한 요청을 하면(218) 록을 해제한 후(219) 클라이언트 또는 미들웨어 서버(21)의 다른 모듈로부터 스키마의 생성, 변경, 읽기 및 쓰기에 대한 요청을 받는 과정(201)으로 넘어간다.
한편, 본 발명에 따른 공유 메모리 관리 동작 흐름도에 대한 설명을 하기에 앞서 자료구조에 대해 먼저 살펴보면 다음과 같다.
첫째로, 공유 메모리 관리기 정보 테이블은 아래의 정보를 공유 메모리 관리기의 개수만큼 포함한다. 그러나, 이 테이블은 모든 미들웨어 서버마다 하나씩 유지하지만 서로 공유하는 자료는 아니다.
공유 메모리 관리기 정보 테이블에서, 메모리_관리기_이름은 공유 메모리 관리기 이름으로, 각 미들웨어 서버는 여러 개의 공유메모리 관리기를 갖는 것을 말하고, 메모리_세그먼트_키는 공유메모리 관리기를 위한 공유 메모리 세그먼트를 할당받기 위한 키 값으로 모든 미들웨어 서버에 미리 고정적으로 알려져 있는 값을 말한다. 메모리_세그먼트_록_키는 각 공유메모리 관리기 및 그 공유메모리 관리기에 의해 할당된 메모리 블록을 록킹할 때 사용되는 세마포어를 생성하기 위한 키 값으로, 이 키 값에 대해서 하나의 세마포어가 생성되고 이후의 공유 메모리를 사용할 때 생성된 세마포어 값을 이용하여 록킹 또는 록 해제를 할 수 있다. 메모리_세그먼트_록_번호는 공유메모리 세그먼트들을 록킹 또는 록 해제하기 위한 세마포어로서 메모리_세그먼트_록_키에 의해서 생성되고, 메모리_세그먼트_인덱스는 다른 미들웨어 서버로부터 할당된 메모리 세그먼트를 어태치(attach)하기 위해서 사용되는 인덱스로, 자신의 미들웨어 서버가 새로운 메모리 블록을 할당할 때 메모리_세그먼트_키의 인덱스를 저장한다. 또한, 메모리 관리기 포인터는 공유 메모리 관리기에 대한 포인터로서, 메모리_세그먼트_키 값에 의해 할당된 공유 메모리를 가리킨다. 메모리_록_플래그는 록킹을 위한 세마포어를 갖고, 메모리_록해제_플래그는 록 해제를 위한 세마포어를 갖는다.
둘째로, 공유메모리 관리기는 할당된 메모리 블록과 해제된 메모리 노드를 위한 프리 리스트를 관리한다. 각 미들웨어 서버마다 하나 이상씩 유지되는 공유 메모리 관리기는 다음과 같은 구조를 가진다.
데이터_관리_미들웨어_수는 현재 공유 메모리를 공유하는 미들웨어 서버의 총 수로서, 새로운 미들웨어 서버가 구동될 때마다 1씩 증가하고 종료될 때마다 1씩 감소하며, 0이 되면 지금까지 할당되었던 공유 메모리들과 세마포어들을 해제한다. 메모리_세그먼트_번호는 공유메모리 관리기를 위한 메모리 세그먼트에 대한 유일한 번호이고, 메모리_포인터는 공유메모리 관리기 세그먼트에 대한 포인터이고, 메모리_블록_인덱스는 이 공유메모리 관리기에 할당한 메모리 블록의 최근 인덱스로서, 처음 메모리 블록을 할당하면 1이 되고 이후부터 1씩 증가한다. 각 데이터 관리 미들웨어는 공유되는 이 값과 자신의 공유 메모리 관리기 정보 테이블의 메모리_세그먼트_인덱스와 비교하여 그 사이의 인덱스만큼 공유 메모리를 어태치(attach)한다. 메모리_블록_크기는 한번에 할당될 메모리 블록의 크기를 나타내고, 메모리_블록_수는 할당된 메모리 블록의 수를 나타내며, 메모리_블록_포인터는 최근에 할당된 메모리 블록에 대한 포인터이며, 메모리_프리_블록은 프리 노드들만 포함하는 프리 메모리 블록에 대한 포인터로서, 노드로만 이루어져 있는 메모리 블록을 나타낸다. 또한, 현재_메모리_포인터는 가장 최근에 할당된 메모리 블록에서 다음에 할당될 메모리 노드를 가리키는 포인터를 가르키고, 메모리_프리_리스트_포인터는 프리 노드 리스트에 대한 포인터를 가르킨다.
셋째로, 메모리 블록의 헤더는 다음과 같은 정보를 포함한다.
다음_메모리_블록_포인터는 이전에 할당된 공유 메모리 블록에 대한 포인터를 나타내고, 메모리_세그먼트_번호는 현재 메모리 블록에 대한 공유메모리 세그먼트 번호를 나타내며, 메모리_포인터는 현재 메모리 블록에 대한 공유 메모리 포인터를 나타내고, 메모리_블록_크기는 메모리 블록의 크기를 나타낸다. 또한, 시작_메모리_포인터는 메모리 블록에서 헤더를 제외한 실제 데이터가 들어간 시작 위치를 나타내고, 끝_메모리_포인터는 메모리 블록에서 마지막 데이터가 들어간 위치를 나타낸다.
도 3a 및 도 3b 는 본 발명에 따른 공유메모리를 이용한 스키마 관리 방법중 공유메모리를 관리하기 위한 공유 메모리 관리기의 동작 흐름도이다.
도 3a 및 도 3b에 도시된 바와 같이, 공유메모리 관리기 정보 테이블(51)이 초기화되면(301), 미들웨어 서버(21)는 공유메모리의 내용을 수정해야 하므로 다른 미들웨어 서버가 접근할 수 없도록 록킹하고, 공유메모리 관리기(41)를 초기화시킨 후, 다른 미들웨어 서버들이 공유메모리 관리기(41)를 초기화할 수 있도록 록을 해제한다(302).
이어서, 미들웨어 서버(21)의 스키마 관리기(31) 또는 다른 모듈로부터 메모리를 할당/쓰기, 읽기, 해제 및 공유메모리 관리기 종료여부에 대한 요청을 받아서(303) 요청의 종류를 판단한다(304).
판단결과, 메모리 할당/쓰기 요청을 받으면 록을 걸고(305) 메모리 세그먼트를 어태치(attach)한 후(306) 할당된 메모리 블록이 있는지를 확인한다(307).
확인결과, 없으면 프리 리스트나 프리 메모리 블록에 노드를 할당할 공간이 있는지를 확인하여(308), 있으면 프리 리스트에서 메모리 노드를 할당한 후(309) 록을 해제하고(313) 없으면 새 메모리 블록을 할당한 후(310) 할당된 메모리 블록이 있는지를 확인하는 과정(307)으로 넘어간다.
확인결과, 있으면 메모리 블록에 노드를 할당할 공간이 있는지를 확인하여(311) 있으면 메모리 노드를 할당하고(312) 록을 해제한 후(313) 미들웨어 서버(21)의 스키마 관리기(31) 또는 다른 모듈로부터 메모리를 할당/쓰기, 읽기, 해제 및 공유메모리 관리기(41) 종료여부에 대한 요청을 받는 과정(303)으로 넘어가고, 없으면 프리 리스트나 프리 메모리 블록에 노드를 할당할 공간이 있는지를 확인하는 과정(308)으로 넘어간다.
판단결과, 메모리 읽기 요청을 받으면 록을 걸어(314) 메모리 값을 페치시켜(315) 록을 해제한 후(316) 미들웨어 서버(21)의 스키마 관리기(31) 또는 다른 모듈로부터 메모리를 할당/쓰기, 읽기, 해제 및 공유메모리 관리기(41) 종료여부에 대한 요청을 받는 과정(303)으로 넘어간다.
판단결과, 메모리 해제 요청을 받으면 록을 걸고(317) 메모리 세그먼트를 어태치한 후(318) 프리 리스트에 노드를 추가하고(319) 공유메모리 관리기(41) 정보를 변경한다(320). 이어서, 록을 해제한 후(321) 미들웨어 서버(21)의 스키마 관리기(31) 또는 다른 모듈로부터 메모리를 할당/쓰기, 읽기, 해제 및 공유메모리 관리기(41) 종료여부에 대한 요청을 받는 과정(303)으로 넘어간다.
판단결과, 공유메모리 관리기(41)를 종료할 것을 요청하면 록을 걸고(322) 메모리 세그먼트를 어태치한 후(323) 마지막 미들웨어 서버(21)인지를 확인한다(324).
확인결과, 틀리면 전체 데이터 관리 미들웨어 수를 1감소시키고(325) 록을해제한 후(326) 미들웨어 서버(21)의 스키마 관리기(31) 또는 다른 모듈로부터 메모리를 할당/쓰기, 읽기, 해제 및 공유메모리 관리기(41) 종료여부에 대한 요청을 받는 과정(303)으로 넘어간다.
확인결과, 맞으면 모든 메모리 블록과 프리 메모리 블록을 해제하고(327) 공유메모리 관리기(41)의 메모리 세그먼트를 해제한 후(328), 모든 세마포어를 해제하고(329) 시스템을 종료한다.
이와 같이, 본 발명에 따른 공유메모리를 관리하기 위한 공유 메모리 관리기의 동작에 대한 상세한 설명에 대해 살펴보면 다음과 같다.
먼저, 공유메모리 관리기의 정보 테이블에 대한 초기화 단계는 가장 먼저 구동되는 미들웨어 서버에 의해서 행해진다. 브로커는 새로운 미들웨어 서버를 구동할 때 첫번째로 구동되는 미들웨어 서버인지를 알려준다. 새로 구동된 미들웨어 서버는 먼저 공유메모리 관리기 정보 테이블을 초기화하고 공유메모리 관리기를 초기화한다. 공유메모리 관리기 정보 테이블은 공유메모리 관리기 개수의 항목을 가진다. 즉, i번째 공유 메모리 관리기에 대한 초기화를 살펴보면, 메모리_세그먼트_키 = 세그먼트_키_기준값 + (브로커 포트 번호 * 세그먼트_키_간격) + ( ( 세그먼트_키_간격 / 공유 메모리 관리기의 총 수) * i)이다. 여기서, 세그먼트_키_기준값 및 세그먼트_키_간격은 상수이다.
세그먼트_키_기준값은 공유메모리 관리기를 위한 메모리_세그먼트_키 값의 단위를 나타낸다. 만약 이 값이 100,000이면 모든 공유 메모리 관리기를 위한 메모리_세그먼트_키 값은 100,000보다 크거나 같고 200,000보다는 작다.
(브로커 포트 번호 * 세그먼트_키_간격)은 한 호스트에 여러 개의 브로커가 구동되어 있는 경우에 각 브로커의 미들웨어 서버마다 유일한 메모리_세그먼트_키 값을 가지도록 한다. 브로커 포트 번호는 브로커마다는 다르지만 모든 미들웨어 서버에게는 알려져 있는 값이기 때문이다. 그러므로, 같은 브로커에서 구동된 미들웨어 서버인 경우에 이 값은 서로 같으므로 메모리_세그먼트_키를 계산할 때 고려의 대상이 되지 않는다.
( ( 세그먼트_키_간격 / 공유 메모리 관리기의 총 수) * i)는 한 브로커에서 구동된 미들웨어 서버 내의 여러 공유 메모리 관리기의 메모리_세그먼트_키의 단위를 나타낸다. i가 증가함에 따라서 메모리_세그먼트_키의 값은 ( 세그먼트_키_간격 / 공유 메모리 관리기의 총 수) 만큼 증가하기 때문이다.
즉, 메모리_세그먼트_록_키 = (록_키_기준값 * i) + 브로커 포트 번호이다. 여기서, 록_키_기준값은 상수이다.
브로커 포트 번호는 여러 브로커에서 구동된 미들웨어 서버의 공유메모리 관리기가 서로 다른 메모리_세그먼트_록_키 값을 가질 수 있도록 하며, (록_키_기준값 * i)는 같은 브로커에 의해 구동된 미들웨어 서버의 여러 공유메모리 관리기가 i라는 인덱스에 의해서 서로 다른 록(lock)키를 가질 수 있도록 하는 역할을 한다.
예를 들어서, 브로커 포트번호가 2333이고 공유메모리 관리기의 수가 5일 때 메모리_세그먼트_키와 메모리_록_키 값은 각각 다음과 같이 서로 유일한 값이된다. 다른 브로커에 의해 구동된 미들웨어 서버에 대한 값들도 서로 유일한 값이다.
첫 번째 공유 메모리 관리기: 100000 + 2333000, 0 + 2333
두 번째 공유 메모리 관리기: 100000 + 2333200, 10000 + 2333
세 번째 공유 메모리 관리기: 100000 + 2333400, 20000 + 2333
네 번째 공유 메모리 관리기: 100000 + 2333600, 30000 + 2333
다섯 번째 공유 메모리 관리기: 100000 + 2333800, 40000 + 2333
이와 같이, 공유 메모리 관리기 정보 테이블에서 이외의 값들은 실행되면서 변경된다.
다음, 공유메모리 관리기 정보 테이블이 초기화되고 나면, 미들웨어 서버는 공유메모리의 내용을 수정해야 하므로 다른 미들웨어 서버가 접근할 수 없도록 록킹한다. 록킹은 공유메모리 관리기 정보 테이블의 메모리_세그먼트_록_번호에 대하여 록킹을 한다. 만일 이 값이 0보다 작으면 해당 공유 메모리 관리기에 대하여 세마포어가 생성되지 않았음을 나타내므로 메모리_세그먼트_록_키를 이용하여 세마포어를 생성하여 메모리_세그먼트_록_번호에 할당한 후 록킹한다. 만일, 이 세마포어가 다른 미들웨어 서버에 의해 록킹되어 있으면 록이 해제될 때까지 기다려야 한다. 그리고, 처음 구동되는 미들웨어 서버이면 공유메모리 관리기를 위한 메모리_세그먼트_키에 해당하는 메모리 세그먼트를 새로 할당받고, 공유메모리 관리기의 메모리_세그먼트_번호와 메모리_포인터를 초기화한다. 처음이 아니라면 메모리_세그먼트_키에 해당하는 메모리 세그먼트를 어태치(attach)함으로써, 다른 미들웨어 서버가 초기화한 공유메모리 관리기 정보를 공유한다. 그리고, 공유메모리 관리기 정보 테이블의 메모리_세그먼트_인덱스부터 시작해서 공유 메모리 관리기의 메모리_블록_인덱스까지 1씩 증가하면서 다른 미들웨어 서버가 할당한 세그먼트들을 모두 어태치(attach)한다. 그리고 공유메모리 관리기 정보 테이블의 메모리_세그먼트_인덱스 값에 공유메모리 관리기의 메모리_블록_인덱스를 할당하여 다음에 반복적으로 어태치(attach)되는 것을 피하도록 한다. 마지막으로 공유 메모리 관리기의 데이터_관리_미들웨어_수를 1 증가한다. 또한, 현재 공유 메모리 관리기에 대한 메모리_세그먼트_록_번호에 대한 록을 해제하여 다른 미들웨어 서버들이 공유 메모리 관리기 초기화를 진행할 수 있도록 한다.
이어서, 스키마를 생성하거나 삭제, 변경하는 작업들은 실제로는 공유메모리를 할당하여 쓰기, 읽기, 또는 해제하는 작업들이다. 다음은 이 각각의 작업들에 대하여 설명한다.
메모리를 할당할 것을 요청하기 위해서 먼저 공유메모리 관리기 정보 테이블의 메모리_세그먼트_인덱스부터 시작해서 공유 메모리 관리기의 메모리_블록_인덱스까지, 다른 미들웨어 서버에 의해 할당된 모든 공유메모리 세그먼트를 어태치(attach)하면서 공유메모리 관리기 정보 테이블의 메모리_세그먼트_인덱스를 1씩 증가해 나간다.
만일, 기존에 할당된 메모리 블록이 없으면, (공유 메모리 관리기 정보 테이블의 메모리_세그먼트_키 + 공유 메모리 관리기의 메모리_블록_인덱스)의 키를 이용하여 새로운 메모리 블록을 할당한다. 그리고, 공유메모리 관리기의 메모리_블록_인덱스를 1을 증가하고, 공유메모리 관리기 정보 테이블의 메모리_세그먼트_인덱스에 공유메모리 관리기의 메모리_블록_인덱스를 할당한다. 새로 할당된 메모리 블록의 헤더에 메모리_세그먼트_번호와 메모리_포인터를 각각 할당한다. 그리고, 이 메모리 블록에서 한 노드를 할당한다.
만일 기존에 할당된 메모리 블록이 있으면 최신 메모리 블록에 한 노드를 할당할 만한 공간이 있는지 검사한다. 공간이 있으면 그 블록에서 노드를 할당한다.
또한, 만일 기존에 할당된 메모리 블록에서 공간이 부족하면 프리 리스트 또는 프리 블록에서 할당한다. 이때의 방식은 옵션에 따라서 첫번째 프리 메모리 이용 방식(first-fit) 또는 최적 크기의 프리 메모리 이용방식(best-fit)을 사용한다. 프리 리스트 또는 프리 블록에서도 공간이 없으면 위에 설명한 방식대로 새로운 메모리 블록을 할당하고 노드를 할당한다.
한편, 메모리 해제를 요청하기 위해서는 공유메모리 관리기 정보 테이블의 메모리_세그먼트_인덱스부터 시작해서 공유 메모리 관리기의 메모리_블록_인덱스까지, 다른 미들웨어 서버에 의해 할당된 모든 공유 메모리 세그먼트를 어태치(attach)한다. 해제할 노드에 프리된 노드임을 표시를 하고 인접한 노드가 프리 노드이면 합쳐서 더 큰 프리 노드를 만든 후 프리 리스트에 연결하고 공유메모리 관리기의 정보를 변경한다. 이와 같이 노드에 대한 메모리 해제 요청은 실제적인 메모리 해제 함수를 호출하지 않고 프리 리스트에 연결한다. 실제적인 메모리 해제는 공유메모리 관리기를 종료할 때 발생한다.
메모리 쓰기 요청을 하기위해서는 스키마를 생성하거나 변경할 때 메모리 쓰기 요청을 한다. 공유메모리 관리기에서는 메모리 할당 요청과 메모리 쓰기 요청이 같은 과정을 거친다. 그러나 스키마 관리기에서 메모리 쓰기 요청은 쓰고자 하는 내용을 할당된 메모리에 쓰는 과정을 더 포함한다.
메모리 읽기 요청을 하기위해서는 스키마를 변경하거나 찾기를 할 때 메모리 읽기 요청을 한다. 이 요청은 공유메모리 관리기 록킹(공유 메모리 관리기 정보 테이블의 메모리_세그먼트_록_번호 이용)하여 메모리를 페치시키고 읽기 및 공유메모리 록 해제의 순서로 처리한다.
마지막으로 공유메모리 관리기를 종료하기 위해서는 여러 미들웨어 서버가 구동되어 있을 때 현재 종료되는 미들웨어 서버가 마지막인 경우에만 지금까지 할당된 모든 공유메모리 세그먼트와 세마포어를 해제한다. 그 과정을 살펴보면, 먼저 공유메모리 관리기 정보 테이블의 메모리_세그먼트_록_번호를 이용하여 공유 메모리 관리기를 록킹한다. 현재 종료되는 미들웨어 서버가 마지막이 아닌 경우에 공유메모리 관리기의 데이터_관리_미들웨어_수를 1감소하고 록을 해제한다. 마지막인 경우에는 모든 메모리 블록을 일단 어태치(attach)한 후 모든 메모리 블록과 프리 메모리 블록을 해제한다. 그리고, 공유메모리 관리기에 대한 메모리 세그먼트와 세마포어를 해제한다.
이상에서 설명한 본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 명백할 것이다.
상기한 바와 같은 본 발명은, 특정한 마스터 서버가 스키마를 독점적으로 관리하지 않으므로 마스터 서버와 미들웨어 서버 사이의 통신에 따른 비용을 절감할 수 있고, 미들웨어 서버에 서로 독립적으로 실행될 수 있는 효과가 있다.
따라서, 본 발명은 미들웨어 서버뿐만 아니라 여러 개의 서버가 동시에 독립적으로 실행되면서 같은 내용의 자료에 접근해야 하는 시스템에도 응용될 수 있는 효과가 있다.

Claims (11)

  1. 다중 데이터 관리 미들웨어 시스템에 적용되는 공유메모리를 이용한 스키마 관리 방법에 있어서,
    요청의 종류를 판단하는 제 1 단계;
    스키마 정보를 담을 수 있는 메모리를 할당하여 스키마를 생성하는 제 2 단계;
    메모리 읽기 요청을 하여 변경하고자 하는 스키마를 읽은 후 메모리 쓰기를 요청하여 스키마를 변경하는 제 3 단계;
    상기 공유메모리 관리기에 메모리 읽기를 요청하여 스키마를 읽는 제 4 단계; 및
    상기 공유메모리 관리기에 메모리 해제를 요청하여 스키마를 해제하는 제 5 단계
    를 포함하는 공유메모리를 이용한 스키마 관리 방법.
  2. 제 1 항에 있어서,
    상기 미들웨어 서버가 구동되어 있을때 현재 종료되는 미들웨어 서버가 마지막인 경우에 할당된 공유메모리 세그먼트와 세마포어를 해제하여 상기 공유메모리 관리기를 종료하는 제 6 단계
    를 더 포함하는 공유메모리를 이용한 스키마 관리 방법.
  3. 제 2 항에 있어서,
    상기 제 6 단계는,
    스키마 관리기로부터 요청을 받는 제 7 단계;
    공유메모리 관리기 정보 테이블을 이용하여 상기 공유메모리 관리기를 록킹한 후 메모리 세크먼트를 어태치하는 제 8 단계;
    마지막 데이터 관리 미들웨어인지를 판단하는 제 9 단계;
    상기 제 9 단계의 판단결과, 마지막이 아니면 전체 데이터 관리 미들웨어 수를 소정 개수 감소시키고 록을 해제한 후 상기 제 7 단계로 넘어가는 제 10 단계; 및
    상기 제 9 단계의 판단결과, 마지막이면 모든 메모리 블록과 프리 메모리 블록의 해제 및 상기 공유메모리 관리기의 메모리 세그먼트를 해제하고, 모든 세마포어를 해제하는 제 11 단계
    를 포함하는 공유메모리를 이용한 스키마 관리 방법.
  4. 제 1 항 내지 제 3 항중 어느 한 항에 있어서,
    상기 제 2 단계는,
    록을 걸고 메모리 할당 요청에 따라 메모리 블록 및 노드를 할당하는 제 12 단계; 및
    메모리에 스키마 정보를 쓰고 록을 해제하는 제 13 단계
    를 포함하는 공유메모리를 이용한 스키마 관리 방법.
  5. 제 4 항에 있어서,
    상기 제 12 단계는,
    상기 스키마 관리기로부터 메모리를 할당할 것을 요청받는 제 14 단계;
    공유메모리를 록킹하고 메모리 세그먼트를 어태치하는 제 15 단계;
    할당된 메모리 블록이 있는지를 확인하는 제 16 단계;
    상기 제 16 단계의 확인결과, 있으면 메모리 블록에 노드를 할당할 공간이 있는지를 확인하는 제 17 단계;
    상기 제 17 단계의 확인결과, 있으면 메모리 노드를 할당하고 록을 해제한 후 상기 제 14 단계로 넘어가는 제 18 단계;
    상기 제 16 단계 및 상기 제 17 단계의 확인결과, 없으면 프리리스트나 프리메모리 블록에 노드를 할당할 공간이 있는지를 확인하는 제 19 단계; 및
    상기 제 19 단계의 확인결과, 있으면 프리리스트에서 메모리 노드를 할당하고 록을 해제한 후 상기 제 14 단계로 넘어가고, 없으면 새 메모리 블록을 할당한 후 상기 제 16 단계로 넘어가는 제 20 단계
    를 포함하는 공유메모리를 이용한 스키마 관리 방법.
  6. 제 1 항 내지 제 3 항중 어느 한 항에 있어서,
    상기 제 3 단계는,
    록을 걸고 메모리 읽기를 요청하여 메모리값을 페치시키는 제 12 단계;
    메모리로부터 스키마 정보를 읽은 후 메모리 쓰기를 요청에 따라 메모리 블록 및 노드를 할당하는 제 13 단계; 및
    메모리에 스키마 정보를 쓰고 록을 해제하는 제 14 단계
    를 포함하는 공유메모리를 이용한 스키마 관리 방법.
  7. 제 6 항에 있어서,
    상기 제 13 단계는,
    상기 스키마 관리기로부터 메모리 쓰기를 요청받는 제 15 단계;
    공유메모리를 록킹하고 메모리 세그먼트를 어태치하는 제 16 단계;
    할당된 메모리 블록이 있는지를 확인하는 제 17 단계;
    상기 제 17 단계의 확인결과, 있으면 메모리 블록에 노드를 할당할 공간이 있는지를 확인하는 제 18 단계;
    상기 제 18 단계의 확인결과, 있으면 메모리 노드를 할당하고 록을 해제한 후 상기 제 15 단계로 넘어가는 제 19 단계;
    상기 제 17 단계 및 상기 제 18 단계의 확인결과, 없으면 프리리스트나 프리메모리 블록에 노드를 할당할 공간이 있는지를 확인하는 제 20 단계; 및
    상기 제 20 단계의 확인결과, 있으면 프리리스트에서 메모리 노드를 할당하고 록을 해제한 후 상기 제 15 단계로 넘어가고, 없으면 새 메모리 블록을 할당한 후 상기 제 17 단계로 넘어가는 제 21 단계
    를 포함하는 공유메모리를 이용한 스키마 관리 방법.
  8. 제 1 항 내지 제 3 항중 어느 한 항에 있어서,
    상기 제 4 단계는,
    록을 걸고 메모리 읽기를 요청하여 메모리값을 페치시키는 제 12 단계; 및
    메모리로부터 스키마 정보를 읽고 록을 해제하는 제 13 단계
    를 포함하는 공유메모리를 이용한 스키마 관리 방법.
  9. 제 1 항 내지 제 3 항중 어느 한 항에 있어서,
    상기 제 5 단계는,
    록을 걸고 메모리 해제를 요청하는 제 12 단계;
    메모리 세그먼트를 어태치하고, 프리리스트에 노드를 추가하는 제 13 단계; 및
    상기 공유메모리 관리기의 정보를 변경하여 록을 해제하는 제 14 단계
    를 포함하는 공유메모리를 이용한 스키마 관리 방법.
  10. 대용량 프로세서를 구비한 다중 데이터 관리 미들웨어 시스템에,
    요청의 종류를 판단하는 기능;
    스키마 정보를 담을 수 있는 메모리를 할당하여 스키마를 생성하는 기능;
    메모리 읽기 요청을 하여 변경하고자 하는 스키마를 읽은 후 메모리 쓰기를요청하여 스키마를 변경하는 기능;
    상기 공유메모리 관리기에 메모리 읽기를 요청하여 스키마를 읽는 기능; 및
    상기 공유메모리 관리기에 메모리 해제를 요청하여 스키마를 해제하는 기능
    을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  11. 제 10 항에 있어서,
    상기 미들웨어 서버가 구동되어 있을때 현재 종료되는 미들웨어 서버가 마지막인 경우에 할당된 공유메모리 세그먼트와 세마포어를 해제하여 상기 공유메모리 관리기를 종료하는 기능
    을 더 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매
    체.
KR1019990048532A 1999-11-04 1999-11-04 다중 데이터 관리 미들웨어 시스템에서의 공유메모리를이용한 스키마 관리 방법 KR20010045288A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990048532A KR20010045288A (ko) 1999-11-04 1999-11-04 다중 데이터 관리 미들웨어 시스템에서의 공유메모리를이용한 스키마 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990048532A KR20010045288A (ko) 1999-11-04 1999-11-04 다중 데이터 관리 미들웨어 시스템에서의 공유메모리를이용한 스키마 관리 방법

Publications (1)

Publication Number Publication Date
KR20010045288A true KR20010045288A (ko) 2001-06-05

Family

ID=19618458

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990048532A KR20010045288A (ko) 1999-11-04 1999-11-04 다중 데이터 관리 미들웨어 시스템에서의 공유메모리를이용한 스키마 관리 방법

Country Status (1)

Country Link
KR (1) KR20010045288A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100804897B1 (ko) * 2001-08-11 2008-02-20 엘지노텔 주식회사 이중화 시스템에서 스키마 변경 방법
KR20140068909A (ko) * 2011-09-29 2014-06-09 오라클 인터내셔날 코포레이션 트랜잭셔널 미들웨어 머신 환경에서 자가-튜닝 락킹 매커니즘을 지원하기 위한 시스템 및 방법
CN114095568A (zh) * 2021-06-02 2022-02-25 北京机电工程研究所 一种基于中间件技术的消息传送装置和方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100804897B1 (ko) * 2001-08-11 2008-02-20 엘지노텔 주식회사 이중화 시스템에서 스키마 변경 방법
KR20140068909A (ko) * 2011-09-29 2014-06-09 오라클 인터내셔날 코포레이션 트랜잭셔널 미들웨어 머신 환경에서 자가-튜닝 락킹 매커니즘을 지원하기 위한 시스템 및 방법
CN114095568A (zh) * 2021-06-02 2022-02-25 北京机电工程研究所 一种基于中间件技术的消息传送装置和方法
CN114095568B (zh) * 2021-06-02 2023-09-12 北京机电工程研究所 一种基于中间件技术的消息传送装置和方法

Similar Documents

Publication Publication Date Title
US7284098B2 (en) Message based inter-process for high volume data
US5835908A (en) Processing multiple database transactions in the same process to reduce process overhead and redundant retrieval from database servers
US9183156B2 (en) Read-copy update implementation for non-cache-coherent systems
US5522077A (en) Object oriented network system for allocating ranges of globally unique object identifiers from a server process to client processes which release unused identifiers
US7376744B2 (en) Using local locks for global synchronization in multi-node systems
US5737600A (en) Method and system for log management in a coupled data processing system
JP3199718B2 (ja) キャッシュ整合性維持方法
US4399504A (en) Method and means for the sharing of data resources in a multiprocessing, multiprogramming environment
US7831772B2 (en) System and methodology providing multiple heterogeneous buffer caches
EP0978069B1 (en) Structured data storage using globally addressable memory
US7664799B2 (en) In-memory space management for database systems
CN104346317B (zh) 共享资源访问方法和装置
US6675175B2 (en) Method and system for sharing catalogs in a multiprocessing system utilizing a shared processor
US20070143340A1 (en) System and method of time-based cache coherency maintenance in user file manager of object-based storage system
US5999976A (en) Parallel file system and method with byte range API locking
JPH05210637A (ja) 同時アクセス管理方法
CN107408132B (zh) 跨越多个类型的存储器移动分层数据对象的方法和系统
CN103559319A (zh) 分布式集群文件系统的缓存同步方法和设备
US5559979A (en) Table-based inter-system serialization control system
US20110302377A1 (en) Automatic Reallocation of Structured External Storage Structures
JP3437938B2 (ja) データ構造割当ての結果をプレビューする方法及び装置
US6389482B1 (en) Dynamic transitioning from a local pipe to a cross-system pipe
KR20010045288A (ko) 다중 데이터 관리 미들웨어 시스템에서의 공유메모리를이용한 스키마 관리 방법
CN101055543B (zh) 用于访问另一个进程的进程本地存储装置的方法和设备
US7185029B1 (en) Method and apparatus for maintaining, and updating in-memory copies of the first and second pointers to reference the new versions of the first and second control structures that indicate available and allocated portions of usable space in the data file

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination