본문 바로가기

Programming/기초지식

프로세스(Process)와 스레드(Thread)의 차이점

반응형
프로세스(Process)

  • 프로세스는 운영체제(OS)의 자원을 할당받아 운영체제 내부에서 실행중인 프로그램을 의미합니다. 운영체제는 CPU를 통해 프로세스를 생성 및 관리합니다. 
  • 각 프로세스는 서로 다른 작업 단위로 관리됩니다.(운영체제가 이들을 각각 따로 취급해서 관리한다는 의미) 
  • 메모리 사용 방식: 각 프로세스마다 필요한 메모리를 할당받습니다.
  • 각 프로세스마다 따로 메모리를 받아서 움직이기 때문에 프로세스간에 데이터를 공유하지 않습니다.
스레드(Thread)

  • 프로세스의 실행 단위를 스레드라고 명명(命名)합니다. 그러니까 프로세스 내부의 실행 흐름이라고 할 수 있습니다. 따라서 하나의 프로세스는 여러개의 스레드를 가질 수 있습니다.  
  • 스레드가 여러개 있어도 운영체제는 이들을 하나의 작업 단위로 바라보고 관리합니다.  
  • 메모리 사용 방식: 여러 스레드가 메모리를 공유하는 방식으로 동작합니다. 프로세스의 방식과는 상반됩니다.
  • 스레드끼리 메모리를 공유하기 때문에 서로 데이터를 공유합니다.

컴퓨터는 여러 프로세스를 소유하고 동시성(Concurrency), 병렬성(Parallelism)의 특징을 가지고 실행된다.

 

동시성(Concurrency)

- 싱글 코어 상황에서 멀티  스레드를 동작시키는 방식.

- 하나씩 순차적으로 돌아가면서 작업 수행하지만, 처리 속도가 빨라 사용자 입장에서 동시에 실행되는 것처럼 보인다.

- 현재 작업에서 다른 작업으로 바뀔 때 내부적으로 Context Switching(문맥 교환) 발생.

 

병렬성(Parallelism)

- 멀티 코어에서 멀티 스레드를 동작시키는 방식.

- 동시에 여러 작업이 수행된다.

 

명확한 이해를 위해 아래 그림을 첨부했다.

https://luminousmen.com/post/concurrency-and-parallelism-are-different

동시성(Concurrency) 특징을 가진 경우 콜라 자판기가 단 하나이기 때문에(싱글 코어)

한 사람씩 번갈아 이용할 수밖에 없다.

반면 병렬성(Parallelism) 특징을 가진 경우 자판기가 하나 이상이기 때문에(멀티 코어)

동시에 여러명이 이용 가능하다.


 

요약

프로세스는 실행될 때 운영체제로부터 프로세서, 필요한 주소 공간, 메모리 등 자원을 할당받는다.

스레드는 한 프로세스 내에서 동작되는 여러 실행의 흐름으로 프로세스 내의 주소 공간이나 자원들을 같은 프로세스 내에 스레드끼리 공유하면서 실행된다.

 

조금 더 요약하면,

컴퓨터는 프로세스마다 자원을 분할하여 할당한다.

스레드는 프로세스마다 주어진 전체 자원을 함께 사용한다(공유한다).

 

스레드 사용의 장단점

프로세스를 스레드 단위로 나누어 작업하면 자원 효율성이 증가한다(새로운 작업을 위한 프로세스를 생성하여 자원을 할당해야 하는 부담이 줄어들기 때문에).

 

반면 앞서 언급 했듯이 스레드는 프로세스 내에서 같은 메모리(자원)를 사용하기 때문에 전역변수를 사용한다. 전역변수의 사용은 여러 스레드의 작업이 충돌되는 문제를 발생시킨다. 해결 방법은 접근제어를 통해 스레드들간의 충돌을 막고 한번에 하나의 스레드만 작동되도록 구현하는 것이다. 


참고

https://brunch.co.kr/@kd4/3#comment

 

프로세스와 스레드의 차이

기술 면접 단골손님 feat. 운영체제 | 프로세스와 스레드에 대해서 설명해주세요. 익숙한 질문입니다. 신입 개발자 면접 질문 목록에 빠지지 않고 등장하는 질문인데요. 아무리 쉽고 익숙한 질문

brunch.co.kr

https://www.youtube.com/watch?v=iks_Xb9DtTM 

https://dabingk.tistory.com/25

 

Thread의 Process의 메모리 공유에 대한 문제점 (수정 중)

개요 프로세스와 스레드는 같은 전역함수를 사용할 수 있다. 하지만 같은 전역함수를 사용해도 그 결과값이 다르게 나올 수 있다. 그렇다면 왜 프로세스와 스레드는 같은 자원을 사용할 수 있을

dabingk.tistory.com

반응형