TIL-2024/05/03

박상우·2024년 5월 3일
0

📝 TIL

목록 보기
28/45
post-thumbnail

클라이언트-서버 프로그래밍 모델

한 개의 서버 프로세스와 한 개의 클라이언트 프로세스로 구성된 모델.

서버 - 일부 리소스를 관리, 이 리소스를 조적해서 클라이언트에게 서비스를 제공하는 단말기

클라이언트 - 서비스를 사용하는 사용자 혹은 사용자의 단말기


FTP 서버

클라이언트를 위해 저장하고 읽어오는 디스크 파일들을 관리.


트랜잭션

클라이언트-서버 모델에서 근본적인 연산. 아래 네 단계로 구성된다.

  1. 클라이언트가 서비스를 필요로 할 때, 클라이언트는 한 개의 요청(Request)을 서버에 보냄으로서 트랜잭션 개시.
  2. 서버는 요청을 받고, 해석하고, 리소스를 조작한다.
  3. 서버는 응답(Response)을 클라이언트로 보내고, 다음 요청을 대기하는 상태로 전환.
  4. 클라이언트는 응답을 받고 처리.

대표적인 예) 월드 와이드 웹(WWW)

서버 - 웹 서버(IIS, Apache)

클라이언트 - 웹 브라우저(FireFox, IE)

File Descriptor

  • 시스템에서 할당한 파일을 대표하는 음수가 아닌 0 또는 양수의 값.
  • 프로세스에서 열린 파일의 목록을 관리하는 테이블(File Table)의 index

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는 제거된다.

  • 파일 닫기 - 파일 테이블에서 해당 엔트리를 제거하면서, 파일 디스크립터를 해제한다.
  • 프로세스 종료 - 프로세스가 종료되면 프로세스와 연관되어 있는 파일 디스크립터를 운영체제가 자동으로 반환한다.
  • FD 복사(dup2, dup) - dup2 시스템 호출을 사용하면, 사용 중인 파일 디스크립터를 복사할 때, 목표 파일 디스크립터를 해제(close)하고, 복사 작업을 진행한다.
profile
나도 잘하고 싶다..!

0개의 댓글