[운영체제] 프로세스 구조 - (4)

Yeongsan Son·2021년 6월 29일
0
post-custom-banner

프로세스간에 어떻게 소통을 할 수 있는지 알아보자.

프로세스가 직접적으로 커뮤니케이션을 할 수 있는 직접적인 방법은 없다.

만약, 하나의 프로세스가 다른 프로세스에 접근이 가능하다면 우리가 롤이라는 게임을 하면서 노래를 듣는데 게임에서 어떤 동작을 수행할 때마다 노래가 끊기는 상황과 같은 일들이 벌어질 것이다.
(개인정보 유출과 같은 더 심각한 일도 벌어질 수 있다)

프로세스들이 서로의 공간에 쉽게 접근할 수 있다면 다른 프로세스의 데이터와 코드가 바뀔 수 있기 때문에 하나의 프로세스가 다른 프로세스와 직접 소통하게 되는 상황은 엄청난 위험을 초래한다.

그래서 IPC(InterProcess Communication)라는 기법을 사용해 프로세스 간에 소통을 한다.

프로세스 간 통신이 필요한가

  • 성능을 높이기 위해 여러 프로세스를 만들어서 동시 실행
    • CPU의 코어의 개수에 따라서 각 코어에 프로세스를 할당해 동시에 실행 가능
  • 프로세스간 상태 확인 및 데이터 송수신이 필요
    • 동시에 실행된 프로세스들의 결과들을 정리를 해주어야 하기 때문에 소통이 필요

여러 프로세스 동시 실행하기 예

  • 여러 프로세스 동시 실행을 통한 성능 개선, 복잡한 프로그램을 위해 프로세스간 통신 필요
  • 1 ~ 10000까지 더하기
    • fork() 함수로 10개 프로세스 생성
      • 각 프로세스는 1~1000, 1001~2000, ..., 9001~10000 을 더함
    • 프로세스로 각각 나누어서 각 결과를 합하면, 더 빠르게 계산을 수행할 수 있음

단, 각 프로세스가 더한 값을 수집해야 하므로 프로세스간 통신이 필요함

웹 서버의 예

  • 웹 서버의 성능
    • 클라이언트의 요청에 얼마나 빠르게 응답하는가
      • 각각의 요청 마다 하나의 프로세스를 생성해 CPU 코어를 하나씩 차지하도록 설계해 요청을 동시에 처리할 수 있음
  • 클라이언트와 서버
    • 수 많은 클라이언트가 서버로 요청을 보내기 때문에 응답속도가 늦어질 수 있음

실제 프로세스의 동작

잔재미코딩

이미지출처

  • 프로세스간 공간은 완전히 분리
    • 해커들 조차도 접근 어려울 정도로 기술적으로 분리
  • 가상 메모리 주소를 물리 메모리 주소로 바꾸는 기술이 내장되어 있어 가상 메모리 공간에 프로세스들을 저장
  • 3~4 GB : 운영체제 코드
  • 0~3 GB : 프로세스 코드

  • 프로세스간 커널 공유
    • 커널 공간은 물리 메모리에 들어갈 때 동일한 공간을 확보
    • 물리 메모리에 커널 공간은 프로세스간 공유

IPC

  • 프로세스간 커뮤니케이션 방법을 제공
  • 대부분의 IPC 기법은 결국 커널 공간을 활용하는 것
    • 이유: 커널 공간은 공유하기 때문

파일을 사용한 커뮤니케이션

  • 간단히 다른 프로세스에 전달할 내용을 파일에 쓰고, 다른 프로세스가 해당 파일을 읽으면 됨

  • 파일을 사용하면 실시간으로 직접 원하는 프로세스에 데이터 전달이 어려움

    • 해당 프로세스가 파일을 읽어야 하는데 계속 실시간으로 읽고 있기는 어렵다.
profile
매몰되지 않는 개발자가 되자
post-custom-banner

0개의 댓글