9P (프로토콜)

9P(플랜 9 파일 시스템 프로토콜 또는 Styx)는 플랜 9 운영 체제용으로 개발된 네트워크 프로토콜로, 플랜 9 시스템의 구성 요소들을 연결해 준다. 파일들은 플랜 9의 중요한 객체들이다. 이들은 창, 네트워크 연결, 프로세스 등 운영 체제에서 이용할 수 있는 모든 것을 표현한다. NFS과는 달리 9P는 캐시 처리를 강화하고 합성 파일도 제공한다. (이를테면 프로세스를 표현하는 /proc)

9P는 플랜 9의 4번째 판을 위해 9P2000라는 이름으로 개정되었으며 다양하고도 중요한 개선 사항이 포함되었다. 인페르노 운영 체제의 최신 버전도 9P2000을 이용한다. 인페르노 파일 프로토콜은 원래 Styx로 불렸으나 기술적으로 늘 9P의 변종으로 취급되어왔다.

다른 변종인 9p2000.u는 유닉스 환경을 더 잘 지원하는 개정판이며 자세한 사항을 보려면 v9fs 9p2000.u를 참고하라. 유닉스용 9P의 서버 기능은 u9fs라고 부르며 플랜 9 배포판에 포함되어 있다. 리눅스용 커널 클라이언트 드라이버는 v9fs 프로젝트의 일부이다. 9P와 파생판들은 Styx on a Brick project와 같은 임베디드 환경에 응용하여 쓰이는 것을 볼 수 있다.

서버 응용 프로그램 
수많은 플랜 9 응용 프로그램들은 9P 서버의 형태를 지닌다. 눈에 띄는 예는 다음과 같다:
 acme: 프로그래머들을 위한 사용자 인터페이스
 리오(rio): 플랜 9 운영 체제
 플럼버(plumber): 프로세스 간 통신
 wikifs: 위키

추가된 기능 
9p는 다음의 메시지를 클라이언트와 서버 사이에서 내보낸다. 이 메시지들은 9p 서버에 포함되어야 하는 플랜 9 vfs 계층의 시작점(엔트리 포인트)과 일치한다.

 version 프로토콜 버전 탐색 
 error 오류 반환 
 flush  메시지 중단 
 auth, attach  연결 수행 메시지 표시 
 walk  디렉터리 계급 내려가기 
 create, open  기존의 파일이나 새로운 파일에 대한 입출력을 위한 피드(fid) 준비 
 read, write  데이터를 파일로, 또는 파일을 데이터로 송신 
 clunk  피드(fid)를 잊음 
 remove 서버로부터 파일 제거 
 stat, wstat  파일 특성 확인 및 변경

같이 보기 
 v9fs - u9fs: 유닉스 계열 운영 체제용 9P 추가 기능
 IL 프로토콜 - 랜(LAN) 환경에서 9P용으로 개발된 전송 프로토콜.
 분산 파일 시스템

각주

외부 링크 
 9P 리소스 cat-v.org의 페이지
 9P 설명서
 배포판 운영 체제를 위한 Styx 구조 - 롭 파이크와 데니스 리치 씀.
 The Organization of Networks in Plan 9 - 데이브 프레소토와 필 윈도보텀 씀.

응용 계층 프로토콜
네트워크 파일 시스템
인터넷 프로토콜 기반 네트워크 소프트웨어