한 개의 서버 프로세스와 한 개의 클라이언트 프로세스로 구성된 모델.
서버 - 일부 리소스를 관리, 이 리소스를 조적해서 클라이언트에게 서비스를 제공하는 단말기
클라이언트 - 서비스를 사용하는 사용자 혹은 사용자의 단말기
FTP 서버
클라이언트를 위해 저장하고 읽어오는 디스크 파일들을 관리.
트랜잭션
클라이언트-서버 모델에서 근본적인 연산. 아래 네 단계로 구성된다.
대표적인 예) 월드 와이드 웹(WWW)
서버 - 웹 서버(IIS, Apache)
클라이언트 - 웹 브라우저(FireFox, IE)
File in UNIX
Linux내에서 파일이란 시스템에서의 역할을 나타내는 타입을 말한다.
일반 파일, 디렉토리, 소켓, 파이프, Symbolic link, 문자, 블록 장치
표준 입출력 디렉토리
0 : 표준 입력(Standard Input / STDIN_FILENO
)
1 : 표준 출력(Standard Output / STDOUT_FILENO
)
2 : 표준 에러(Standard Error / STDERR_FILENO
)
💡 POSIX 표준
운영체제간 호환성 유지를 위한 표준. POSIX를 따르는 운영체제는 UNIX 계열의 운영체제라고 보면된다.
아래 코드처럼 표준 입/출, 에러는 지정되어 프로세스가 시작되면서 자동으로 할당된다. 따라서 이후 할당되는 파일 디스크립터는 3부터 시작된다.
Index로서의 File Directory
파일 디스크립터의 값은 프로세스가 유지하고 있는 FD Table의 index이다.
FD Table의 엔트리는 FD Flag와 File Table의 Index를 가진다.
File Table의 엔트리는 mode, inode(또는 vnode), offset을 가진다.
inode Table의 엔트리는 파일의 메타 데이터를 가지고 있다.
→ 파일의 메타 데이터는 파일의 크기, 디바이스 ID, 사용자 ID, 파일 모드(권한), 타임 스탬프(생성, 최종접근, 최종 수정 시간) 등…
+) 프로세스가 시스템 호출을 통해서 파일 디스크립터를 사용해 커널에 작업을 요청하게 된다. 그리고 커널이 File Table과 inode(vnode) Table에 접근하여 파일의 메타 데이터를 참조하게 된다. 따라서 프로세스가 직접 파일 데이터에 접근하지 않는다.
FD의 제거
파일이 닫히면 FD는 제거된다.