인생은 고통의 연속

프로세스간 커뮤니케이션과 쓰레드 본문

프로그래밍/OS

프로세스간 커뮤니케이션과 쓰레드

gnidoc 2019. 1. 21. 18:08
    반응형

    프로세스간 커뮤니케이션

    프로세스간 커뮤니케이션이 필요한 이유는 다음과 같다.

    • 정보 공유(파일...)
    • 연산 속도 증가
    • 모듈성
    • 보호
    • 멀티테스킹의 편리함


    프로세스간 커뮤니케이션 메커니즘은 크게 메모리 공유와 메세지 전달 방식 2가지가 있다.


    메세지 전달(Message Passing)

    대표적인 메세지 전달 방식은 pipes, sockets, remote procedure calls가 있다

    • 직/간접 커뮤니케이션 - 프로세스 or ports
    • 고정 or 변화가능한 사이즈
    • copy or reference로 보내기
    • automatic or explicit buffering
    • blocking or non-blocking(send or receive)




    Threads

    전용 주소 공간 없이 실행 중인 프로그램

    OS에서 memory protection은 프로세스에서만 허용된다.


    Threads vs Processes

    • Process
    - 하나의 주소 공간
    - 프로그램 실행을 위한 단일 제어 쓰레드
    - 상태 정보 : page tables, swap images, saved registers, file descriptors...

      • Threads
      - 프로세스의 나머지 정의와 실행의 분리된 개념
      - 다른 쓰레드와 함께 잠재적으로 어떤 부분을 공유할 수 있다.
      - 시스템 스케줄러에 의해 커널 레벨에서 핸들링된다.
      - 유저 모드에서 유저 레벨로 핸들딩된다.


      왜 쓰레드를 써야할까?

      병렬처리할때 멀티프로세스를 안쓰고 멀티쓰레드를 쓰는 이유는??
      • 메모리 공유가능
      • 쓰레드 간의 효과적인 동기화
      • 낮은 context switch 오버헤드(overhead) 



      유저/커널 쓰레드(User/kernel Threads)

      • 유저 쓰레드 : 유저 모드 메모리에서 쓰레드 데이터 구조. 유저 모드에서 스케쥴링과 스위칭이 일어난다.
        • 장점
          • 가볍다 : context switch 오버헤드가 적다
          • 더 효과적인 동기화
          • 유연성 : 어플리케이션에서 스케쥴링되도록 허용된다.
        • 단점
          • 1개 이상의 프로세스를 사용할 수 없음
          • 커널 이벤트를 명확히 알지 못함 : 하나만 IO를 처리해도 프로세스의 모든 쓰레드가 대기한다.
      • 커널 쓰레드 : 커널 메모리에서 쓰레드 데이터 구조. OS 커널에서 스케쥴링과 스위칭이 일어난다.


      유저 쓰레드


      반응형

      '프로그래밍 > OS' 카테고리의 다른 글

      동기화 원칙(임계영역, 뮤텍스, 세마포어)  (0) 2019.01.28
      운영체제 구조  (0) 2019.01.21
      운영체제란?  (0) 2019.01.21
      Comments