본문 바로가기
CS

Process와 Thread

by sangfeeeeel 2021. 9. 22.

Process란?


  • 프로세스는 OS가 메모리 등의 자원을 할당해준 실행중인 프로그램을 말합니다.
  • CPU에 할당되어 순차적으로 수행될 수 있는 능동적 개체
  • 각각의 프로세스는 서로 메모리 공간을 독자적으로 갖기 때문에 서로 메모리 공간을 공유하지 못합니다.
  • 각각 독립된 메모리 영역(Code, Stack, Heap, Data)을 할당 받습니다.

Thread란?


  • 프로세스 내에서 실행되는 여러 흐름의 단위
  • 프로세스의 특정한 수행 경로
  • 프로세스가 할당 받은 자원을 이용하는 실행의 단위
  • 스레드는 프로세스 내에서 Stack만 따로 할당받고 나머지 영역은 공유한다.
  • 스레드는 한 프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원들을 같은 프로세스 내에 스레드끼리 공유하면서 실행된다.

멀티 프로세스와 멀티 스레드의 차이


  • 멀티 프로세스 : 하나의 응용 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는것
  • 장점
    • 여러개의 자식 프로세스 중 하나가 문제 발생시 해당 프로세스만 죽는것으로 문제를 해결할 수 있다.
  • 단점
    • Context Switching에서의 오버헤드 : 프로세스에서 Context Switching시에 작업이 무거워지고 많은 시간이 소모되는 오버헤드가 발생한다.
  • Context Switching : CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 과정

  • 멀티 스레드 : 하나의 응용 프로그램을 여러개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것
  • 장점
    • 시스템 자원의 소모가 감소하여 자원 효율성이 증가한다.
    • 스레드 간 데이터를 주고 받는것이 간단해지고 Context Switching가 원활하게 작동한다.
    • 간단한 통신 방법으로 인한 프로그램의 응답시간이 단축된다.
  • 단점
    • 주의 깊은 설계가 필요하다.
    • 디버깅이 까다롭다.
    • 단일 프로세스 시스템의 경우 효과를 기대하기 어렵다.
    • 다른 프로세스에서 스레드를 제어할 수 없다.
    • 자원 공유의 문제가 발생한다.(동기화 문제)
    • 하나의 스레드에 문제가 발생하면 전체 프로세스가 영향을 받는다.

'CS' 카테고리의 다른 글

트랜잭션이란?  (0) 2021.10.23