Computer Science/운영체제

[운영체제] 프로세스(Process)와 스레드(Thread)의 차이

코딩은 잼있어 2020. 11. 9. 23:55
728x90

프로세스(Process)와 스레드(Thread)

1. 프로세스(Process)

프로세스를 쉽게 말하면 일을 처리하는 일련의 과정이다.

예를 들어, 라면을 끓이기 위해

  1. 물을 끓인다
  2. 라면을 뜯는다.
  3. 라면을 넣는다.
  4. 먹는다.

를 라면을 위한 프로세스라 할수있다.

컴퓨터에게 프로세스란 ??

img

  • 운영체제로부터 자원을 할당받는 작업의 단위
  • 컴퓨터에서 연속적으로 실행되고 있는 프로그램
  • 프로세스는 각각 독립된 메모리 영역(code, data, stack, heap)으로 이루어져 있다.
  • 각 프로세스는 별도의 주소공간에서 실행되며, 한 프로세스는 다른 프로세스에 접근할 수 없다. IPC, Shared memory 등 프로세스 간의 통신을 통해 데이터를 주고 받을 수 있다.

한번에 여러개의 프로세스들을 실행할 수 있지만, 여러개를 동시에 실행할경우 CPU의 부담이 커지고 비효율으로 관리된다. 이때 사용하는것이 멀티스레드다.

2. 스레드

스레드는 프로세스내에서 진행되는 여러가지의 실행이다.

라면 프로세스에서 물을 끓이기 위해 냄비꺼내기, 물 받기 등 여러가지 실행들이 있는데, 이처럼 하나의 프로세스에서 진행되는 여러가지 실행을 스레드라고 한다.

  • 프로세스가 할당받은 자원을 이용하는 실행의 단위
  • 프로세스내에서 동작되는 여러 실행의 흐름으로, 자원을 공유하면서 일련의 과정을 여러 개 동시에 실행시킬 수 있는 것을 말한다.
  • 스레드는 프로세스 내에서 Stack만 따로 할당받고 Code, Data, Heap영역은 공유한다.
  • 하나의 프로세스는 여러 개의 스레드를 가질 수 있고, 이를 멀티 스레드 라고한다.

💡 멀티스레드를 구조를 보면 Code, Data, Heap은 공유하지만 Stack만 스레드 별도로 갖는다.

img

728x90