COM, ATL 67

COM 기본 개념 ~~ 정리해 보자

COM(Component Object Model) - 가상함수 테이블을 메모리게 구축하고 Virtual Table을 통해 함수를 호출하는 표준 정의 - 인터페이스(접근방법)와 구현(캡슐화)의 분리 - 모든 COM 인터페이스는 IUnknown의 AddRef(), Release(), QueryInterface() 함수로 시작 - 인터페이스 : 개체와 클라이언트간의 규약 - 사용자와 소프트웨어가 따로 사용하는 이름이 존재 - 일반적으로 인터페이스명은 I로 시작 - 모든 인터페이스는 GUID(Globally Unique Identification)를 가짐(=IID) - IID : 128 bit 구조체 형식, IP와 시간에 대한 알고리즘으로생성하므로 세계에서 유일한 ID - Implementation에서는 강제로..

COM, ATL 2008.08.08

Process/Thread/Apartment

윈도우는 멀티스레드 운영체제이다. 잘 짜여진 멀티스레드 프로그램은 기존의 프로그래밍 방법만으로는 쉽게 구현하기 힘든 편의성을 제공한다. 또한 여러 개의 프로세서를 사용한 멀티프로세스 시스템의 장점을 최대한 살릴려면 멀티스레드 프로그램을 이용해야만 하는 경우도 많다. 이러한 장점에 반해 멀티스레드 프로그램은 분명히 매우 복잡하다. 단순히 몇몇 API만으로 스레드를 생성하고 사용할 수 있지만 단순히 그래서는 멀티스레드 프로그램의 장점을 전혀 살릴 수 없다. 오히려 시스템 전체적인 성능을 낮추는 요인이 될 수 도 있다. 분명 이 글은 멀티스레딩에 관한 책은 아니지만 이러한 점에 대해 조금은 언급을 하도록 하자. 윈도우는 멀티스레드 운영체제이다. 하나의 스레드는 하나의 실행 단위이다. 하지만 멀티프로세스 시스템..

COM, ATL 2008.08.02

Single Threaded Apartment(STA)에서 고려해야 할 몇가지 것들

Single Threaded Apartment(STA)에서 고려해야 할 몇가지 것들 STA component안에서의 Long Blocking Call은 회피해야 한다. 이것은 엄밀히 말하면, Deadlock Condition은 아니다. 단지, Multiple threads가 해당 STA 안에는 존재할 수 있으며, 단지, 하나의 Thread만 처리되도록 Synchronization이 되는 구조이므로 하나의 Thread가 다른 Apartment로 Call out 하여 Call return을 기다릴 때, 그리고, 이것이 불행히도 시간이 오래 걸리는 RPC, Socket 통신과 같은 류라면, 이와 관련 없는 다른 Thread들은 starvation 현상이 발생할 수 있다. 이는 performance에 영향을 미..

COM, ATL 2008.08.02

TLS(Thread Local Storage)

TLS(Thread Local Storage) 1. 요약 TLS(Thread Local Storage)는 스레드 별로 고유한 저장공간을 가질 수 있는 방법입니다. 2. 본문 각각의 스레드는 고유한 스택을 갖기 때문에 스택 변수( 지역 변수)는 스레드 별로 고유합니다. 예를 들어서 각각의 스레드가 같은 함수를 실행한다고 해도 그 함수에서 정의된 지역변수는 실제로 서로 다른 메모리 공간에 위치한다는 의미입니다. 그러나 정적 변수나 전역 변수의 경우에는 프로세스 내의 모든 스레드에 의해서 공유됩니다. 이 역시 예를 들고 싶지만, 다 이해하셨으리라 믿고 생략하겠습니다. 그렇습니다. TLS는 정적, 전역 변수를 각각의 스레드에게 독립적으로 만들어 주고 싶을 때 사용하는 것입니다. 다시 말해서, 분명히 같은 문장(..

COM, ATL 2008.07.30

COM+ 소개 - MTS(Microsoft Transaction Server) 후속작

COM+ 소개 1997년 가을 마이크로소프트의 MTS 개발팀과 COM 개발팀이 통합된 후, 만들어낸 첫번째 제품이 COM+이며, COM+는 마이크로소프트의 COM(Component Object Model)과 마이크로소프트 트랜잭션 서버(Microsoft Transaction Server, MTS)의 다음 버전이다. COM+는 스레드 할당(thread allocation)과 보안(security) 같은 자원 관리 작업들을 처리함으로써, 개발자들의 수고를 덜었다. 그리고, 스레드 풀링(thread pooling), 객체 풀링(object pooling), JIT(just-in-time) 객체 활성화를 제공함으로써, 응용 프로그램의 확장성을 개발자의 수고 없이 향상시켰다. 또한, 트랜잭션 지원(transact..

COM, ATL 2008.07.28

분산객체 시스템(COM,COm+,DCOM,MTS) 에 대한 개념-2

분산객체 시스템(COM,COm+,DCOM,MTS) 에 대한 개념-2 MTS 2004/12/14 12:36 http://blog.naver.com/saga111/120008481356 이 포스트를 보낸곳 () 트랜잭션 기존의 MTS 환경에서와 마찬가지로 COM+ 환경에서도 컴포넌트 수준에서 분산 트랜잭션에 쉽게 참여할 수 있다. MTS에서 분산 트랜잭션 처리를 마이크로소프트 분산 트랜잭션 조정자(DTC)를 통해 처리했듯이 COM+ 환경 역시 동일한 방법으로 분산 트랜잭션을 처리한다. 마이크로소프트는 트랜잭션을 처리하기 위해 객체 지향 개념의 two-phase 커밋을 지원하는 OLE 트랜잭션을 설계하였으며 MS DTC로 하여금 수행하게 만들었다. 최초의 MS DTC는 마이크로소프트 SQL 서버의 한 제품으로..

COM, ATL 2008.07.28