본문 바로가기
CS/Operating System

[OS] 프로세스 간 통신

by 안녕나는현서 2021. 12. 5.
728x90

프로세스 간 통신

: 프로세스는 시스템 내에서 독립적으로 실행되기도 하고 데이터를 주고받으며 협업하기도 함

  • 프로세스 내부 데이터 통신 : 하나의 프로세스에 2개 이상의 스레드가 존재하는 경우의 통신, 전역변수, 파일 이용
  • 프로세스 간 데이터 통신 : 같은 컴퓨터에 있는 여러 프로세스끼리 통신, 공용파일, 파이프 이용
  • 네트워크를 이용한 데이터 통신 (= 네트워킹) : 여러 컴퓨터가 네트워크로 연결된 경우, 소켓 이용

 

- 프로세스 간 통신 분류

분류 방식 종류 설명
통신 방향 양방향 통신 데이터를 동시에 양방향으로 전송할 수 있는 구조 소켓
반양방향 통신 데이터를 양방향으로 전송할 수 있지만 동시 전송은 불가 무전기
단방향 통신 데이터를 한쪽 방향으로만 전송할 수 있는 구조 전역 변수, 파일, 파이프
통신 구현 방식 대기가 있는 통신 동기화 지원, 데이터를 받는 쪽은 대기 상태에 머물러 있음 파이프, 소켓
대기가 없는 통신 동지화 미지원, 바쁜 대기 사용하여 데이터 도착 여부 확인 전역 변수, 파일

* 바쁜 대기 (busy waiting) : 상태 변화를 살펴보기 위해 반복문을 무한 실행하며 기다리는 것 (데이터를 받는 쪽에서 데이터가 입력 되었는지 계속 확인해야 하는 상황 등)

* 동기화 (synchronization) : 바쁜 대기 문제를 해결하기 위해 데이터가 도착했음을 알려줌

 

프로세스 간 통신의 종류

- 전역 변수를 이용한 통신

  • 공동으로 관리하는 메모리를 사용하여 데이터를 주고 받음
  • 직접적으로 관련이 있는 프로세스 간 사용
  • 동기화 문제 : 전역 변수의 값이 변할 때까지 바쁜 대기를 돌면서 계속 주시해야 함

 

- 파일을 이용한 통신

  • 파일 열기 : open("com.txt", O_RDWR)
    • 사용하고자 하는 파일이 있는지, 파일이 있다면 쓰기 권한이 있는지 확인
    • 정상적으로 파일을 사용할 수 있다면 fd를 반환
    • fd (file descriptor, 파일 기술자) : 해당 파일에 접근할 수 있는 일종의 열쇠
    • O_RDWR : 읽기, 쓰기 작업을 하겠다는 표시
    • O_RDONLY : 읽기 전용으로 파일을 열겠다는 표시
  • 쓰기 연산 : write(fd, "Test", 5)
    • com.txt 파일에 Test라는 문자열을 씀
    • Test의 크기가 5B(문자열 끝을 알리는 null 포함)이기 때문에 5라고 명시
  • 읽기 연산 : read(fd, buf, 5)
    • com.txt 파일에서 5B를 읽어 변수 buf에 저장
  • 파일 닫기 : close(fd)
  • 부모-자식 관계 프로세스 간 통신에 많이 사용
  • 운영체제가 동기화 제공x : 부모 프로세스가 wait() 함수 이용하여 자식 프로세스의 작업이 끝날 때까지 기다렸다가 작업 시작

 

- 파이프를 이용한 통신

  • 운영체제가 제공하는 동기화 통신 방식
  • open() 함수로 기술자를 얻고 작업한 후 close() 함수로 마무리
  • 단방향통신이기 때문에 양방향 통신을 하려면 파이프가 2개 필요
  • 이름 없는 파이프 : 일반적인 파이프, 서로 관련 있는 프로세스 간 통신에 사용
  • 이름 있는 파이프 : FIFO라 불리는 특수 파일을 이용하여 서로 관련 없는 프로세스 간 통신에 사용

 

- 소켓을 이용한 통신

  • 네트워킹 상황에서의 통신은 원격 프로시저 호출이나 소켓을 사용
    • 프로시저 호출 : 한 컴퓨터에 있는 함수 호출하는 것
    • 원격 프로시저 호출 : 다른 컴퓨터에 있는 함수를 호출하는 것, 소켓을 이용하여 구현
  • 소켓을 프로세스 동기화를 지원하므로 바쁜 대기를 하지 않아도 됨
  • 양방향 통신 가능

 

* 정리

부모-자식 관계로 연결된 프로세스 전역 변수, 파일, 이름 없는 파이프
서로 독립적인 프로세스 이름 있는 파이프
서로 다른 시스템에 있는 프로세스 소켓
  • 프로세스 간 통신은 읽기와 쓰기 연산으로 구현할 수 있음
728x90

'CS > Operating System' 카테고리의 다른 글

[OS] 교착 상태  (0) 2021.12.09
[OS] 임계구역, 임계구역 해결  (0) 2021.12.06
[OS]CPU 스케줄링 알고리즘  (0) 2021.12.02
[OS] CPU 스케줄링  (0) 2021.12.02
[OS] 스레드  (0) 2021.11.02

댓글