프로세스간 통신

지난주 복습

  • 여러 프로세스들이 번갈아 사용하는 자원을 어던 시점에 어떤 프로세스에게 할당할지 결정하는 행위를 스케줄링이라고 하며 이를 통하여 시스템 성능을 극대화 한다.
  • 단계별 구분
    • 장기, 단기, 중기 스케줄러
  • 장기 스케줄러는 저장장치에 있는 프로그램을 선택하여 메모리에 적재하여 동작을 시작한다.
  • 중기 스케줄러는 동작중인 프로세스들중에서 일부를 저장장치로 제외시키는 스와핑 동작을 수행하여 다중 프로그램의 정도를 조정한다.

  • 정책별 구분
    • 선점형 / 비선점형 스케줄링
  • 한 프로세스가 자원을 보유하고 있을 때 다른 프로세스가 해당 자원을 가져올 수 없다면 비선점형이고, 해당 자원을 가져올 수 있다면 선점형이다.

  • 알고리즘 구분
    • 선입선처리(FCFS)
    • 최소작업 우선 스케줄링(SJF)
    • 우선순위(Priority)
    • 라운드로빈(RR)
    • 다단계 큐(MLQ)
    • 다단계 피드백 큐(MLFQ)
    • HRN
  • 시스템 성능기준
    • CPU 사용률 (CPU Utilization)
    • 처리향(Throughput)
    • 반환시간(Turn-around Time)
    • 대기시간(Waiting Time)
    • 응답시간/반응시간(Response time)

학습목표

  • 프로세스들간의 통신 기법중에서 널리 활용되고 있는 기법들을 할용할 수 있다.
  • 프로세스들간에 데이터를 주고 받는 예제 코드를 작성하여 프로세스간 통신 기법을 이해한다.

학습내용

퀴즈로 확인하기

정리하기

  • 프로세스들은 서로 협력적인 작업을 수행하기 위해서 데이터를 주고 받는 작업이 필요하며, 유닉스 계역ㄹ의 운영체제에서는 이를 지원하기 위해서 파이프, FIFO, 세마포, 공유메모리, 메시지큐, 소켓 등을 제공한다.

  • 시그널(signal)은 다양하고 중요한 이벤트를 프로세스에게 알려주는 수단으로 활용된다.
  • 시그널을 받은 프로세스는 수행중이던 작업을 중지하고 시그널을 처리하며, 이를 정의한 별도의 시그널 핸들러를 정의 할 수 있다.

  • 파이프(pipe)는 한 프로세스의 표준 출력을 다른 프로세스의 표준 입력으로 연결하는 방법이다.

  • 피포(FIFO)는 이름을 가진 파이프라고도 하며 특별한 장치 파일로 존재한다. FIFO 파일을 생성한 이후에 데이터를 쓰거나 읽음으로서 프로세스간에 통신을 할 수 있다.

  • 공유 메모리는 여러 프로세스가 함께 사용하는 메모리를 의미한다. 따라서 임의의 프로세스가 공유메모리에 데이터를 쓰면 다른 프로세스에서 해당 내용을 읽을 수 있다.