본문 바로가기
전공/운영체제

[심화]Ch05. 프로세스 동기화_04)파일, 파이프, 소켓 프로그래밍

by 임 낭 만 2023. 4. 19.

<쉽게 배우는 운영체제> 교재를 참고하였습니다.

파일

순차 파일

  • 아무리 큰 파일이라도 파일 내의 데이터는 개념적으로 한 줄로 저장됨

파일의 화면 상태와 저장 상태
순차적 접근의 예

파일 기술자

  • open() 함수로 파일을 열면 파일 기술자 fd를 얻음
  • 파일 기술자는 파일 접근 권한 외에 현재 파일의 어느 위치를 읽고 있는지에 대한 정보도 보관
  • 처음 파일이 열리면 파일 기술자는 맨 앞에 위치
  • 파일에서 파일 기술자는 단 하나이고, 읽기를 하든 쓰기를 하든 파일 기술자는 계속 전진

파일 입출력 코드
파일을 처음 열었을 때 파일 기술자의 위치 & read 연산을 한 후 파일 기술자의 위치

파일을 이용한 통신

  • read( )와 write( ) 함수가 파일 기술자를 공유하며 통신

파일을 이용한 통신 코드


파이프

파이프를 이용한 통신

  • 파이프는 파일 기술자를 fd[2]와 같이 2개의 원소를 가진 배열로 정의
  • 배열에서 원소 하나는 읽기용이고 하나는 쓰기용으로 사용

파이프를 이용한 통신 코드


네트워킹

소켓을 이용한 네트워킹

클라이언트 / 서버의 통신 절차

클라이언트 쪽의 통신 절차

  • 처음에 socket( ) 구문으로 소켓을 생성하고 변수 sp로 이 소켓에 접근
  • 통신이 초기화되면 sp와 ad를 이용하여 서버와 connect( )를 시도
  • 연결이 이루어지면 소켓으로부터 5B를 읽어 화면에 출력하고 사용한 소켓 기술자를 닫은 후 클라이언트 프로그램을 끝냄

클라이언트 코드

서버 쪽의 통신 절차

  • 통신을 초기화한 후 소켓을 생성하고 bind( )를 이용하여 소켓을 등록
  • 통신이 끝나면 소켓 기술자를 닫고 무한 루프를 돔

서버 코드

댓글