728x90

프로세스(Process)

  • 실행중인 프로그램을 의미 (a program in execution)
  • 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)를 할당받아 프로세스가 된다.
  • 프로세스는 자원과 쓰레드로 구성된다.
  • 모든 프로세스는 최소 1개이상의 쓰레드가 존재한다.
  • 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구저에 접근이 불가능.

 

쓰레드(Thread)

  • 프로세스 내에서 실행되는 여러 흐름의 단위.
  • 프로세스의 자원을 이용해 실제로 작업을 수행하는 것.
  • 쓰레드는 프로세스 내에서 각각 stack만 따로 할당받고 Code,Data,Heap영역은 공유한다..
  • 한 번 종료된 쓰레드는 다시 실행할 수 없다.
  • 모든 쓰레드는 독립적인 작업을 수행하기 위한 자신만의 호출스택을 필요로 한다.
  • JAVA에는 프로세스가 존재하지 않고 쓰레드만 존재
  • JAVA에서는 운영체제의 역할을 JVM이 한다.
싱글쓰레드 = 자원(메모리) + 쓰레드
멀티쓰레드 = 자원(메모리) + 쓰레드 + 쓰레드 + ...

 

멀티 프로세스

  • 하나의 응용프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하게 한다.
  • 여러 자식 프로세스 중 하나에 문제가 발생하면 해당 자식 프로세스만 죽고 다른 영향이 확산되지 않는다.
  • 각각 독립된 메모리 영역을 가지고 있어 작업량이 많을 수록 오버헤드가 발생.
  • Context Swiching으로 인한 성능 저하.

 

멀티 쓰레드

  • 하나의 프로세스을 여러개의 쓰레드로 구성하고 각 쓰레드로 하여금 하나의 작업을 처리하게 한다.
  • 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다.
  • 쓰레드 간 데이터를 주고 받는 것이 간단해지고 시스템 자원 소모가 줄어든다.
  • 쓰레드는 프로세스 내의 stack을 제외한 모든 메모리를 공유하기 때문에 통신의 부담이 적다.
  • 하나의 쓰레드가 데이터 공간을 망가뜨리면 모든 쓰레드가 작동 불능 상태가 된다.
  • 대표적 멀테쓰레드 응용프로그램은 웹 서버이다.
728x90

+ Recent posts