문(컴퓨팅)

Doors (computing)

도어는 Unix 컴퓨터 시스템의 프로세스 간 통신 설비입니다.프로시저 호출의 형식을 제공합니다.

역사

도어는 Sun Microsystems의해 Spring 운영 체제의 핵심 부분으로 개발되었으며, 이후 버전 2.5에서 문서화되지 않은 내부 [1]인터페이스로 Solaris에 추가되었습니다.이러한 기능은 Solaris 2.6에서 문서화되어 있습니다.Solaris의 최신 버전에서는 다음과 같은 많은 장소에서 Doors를 사용합니다.nscd(이름 서비스 캐시 데몬) 및 syslog.

Linux 포트는 2003년에 출시되었지만 버전 2.4.[2]18에서만 사용할 수 있습니다.

개요

도어 서브시스템은 커널을 지원하는 사용자 공간 라이브러리로 구현되며 스레드에 크게 의존합니다.이는 오버헤드를 줄이도록 설계되었으며 Solaris 구현에서는 효율을 극대화하기 위해 몇 가지 어셈블리 코드를 사용합니다.

문은 서버 프로세스(스레드를 사용해야 함)에 의해 생성되고 클라이언트 프로세스에 의해 호출됩니다.하나의 프로세스가 문을 생성하고 호출할 수 있습니다.문을 작성할 때 서버는 클라이언트 대신 도어 라이브러리에 의해 호출되는 서버 절차를 지정해야 합니다.대부분의 리모트 프로시저 콜시스템과는 달리 각 도어에는 서버 프로시저가1개밖에 없습니다서버는 도어를 파일에 "첨부"할 수 있기 때문에 클라이언트는 파일을 여는 것만으로 그 도어에 접속할 수 있습니다.이 명령어는 "D"의 'type'을 가진 파일을 표시합니다(디렉토리의 'd'와 혼동하지 마십시오).다음은 예를 제시하겠습니다.

Drw-r--r-- 1 jmorrison dev 876 Dec 8 19:43 myfile

클라이언트 사용door_call()문의 서버 프로시저를 호출하여 메모리의 연속 영역과 파일 기술자 목록을 인수로 전달하고 다른 연속 영역과 파일 기술자 목록을 가져옵니다.어느 한 영역이 비어 있는 경우도 있습니다.보통 2C struct는 입력 데이터용과 출력 데이터용으로 정의됩니다(또는 태그 부착 유니언을 사용하여 ioctl 시스템 호출과 거의 동일한 방법으로 도어 프로시저가 여러 동작을 제공할 수 있습니다).모든 파일 기술자에는 플래그 워드가 붙습니다.DOOR_RELEASEflag 는, 송신 프로세스에서 파일 기술자를 복제한 후에 닫도록 요구합니다.문을 참조하는 파일 기술자가 전송되면 시스템은 플래그 워드에 해당 문의 속성을 기록합니다.

도어는 프로시저 또는 프로시저 그룹을 나타낼 뿐만 아니라 스테이트풀 데이터 오브젝트를 나타낼 수 있기 때문에 프로세스 간에 이러한 오브젝트에 대한 참조를 전달할 수 있습니다.이러한 도어는 일반적으로 태그가 부착된 결합을 입력 데이터로 사용하며 각 태그 값은 다른 방법을 나타냅니다.

또한 Doors 시스템은 클라이언트와 서버가 서로에 대한 정보를 얻을 수 있는 방법을 제공합니다.예를 들어, 서버는 클라이언트의 사용자 또는 프로세스 ID를 확인하여 액세스 제어를 구현할 수 있습니다.

일반적으로 도어 라이브러리는 서버 프로세스에서 콜을 처리하기 위한 스레드 풀을 만들고 관리합니다.단, 이 동작을 덮어쓸 수 있습니다.Doors 시스템은 어떠한 형태의 동기화도 제공하지 않지만 서버는 일반 스레드 수준 동기화 프리미티브를 사용할 수 있습니다.도어를 사용하여 공유 메모리 세그먼트에 대한 액세스를 동기화할 수 있으므로 단일 복사 데이터 [3]전송이 가능합니다.

도어 개념은 X/OpenX매우 유사합니다.ATMI API 사양: 클라이언트 프로세스가 서버 프로세스의 노출된 기능을 호출합니다.door_call()와 유사하다tpcall()XATMI 클라이언트에서는door_return()와 유사하다tpreturn()XATMI 서버에 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "dsvclockd(1M): Using Doors to Implement Inter-Process Readers/Writer Locks". meem simplex. June 14, 2005. Archived from the original on 2012-10-22. Retrieved 2012-03-20.
  2. ^ "Namefs and Solaris Doors for Linux".
  3. ^ [데드링크]http://developers.sun.com/solaris/articles/fastSockets.html

외부 링크