본문 바로가기
Computer Science/운영체제

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

by 코딩은 잼있어 2020. 11. 9.
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