본문 바로가기
OS

[OS] 프로세스와 쓰레드

by 뜨는 해 2020. 9. 17.

출처 : https://www.educba.com/process-vs-thread/

 

프로세스와 쓰레드의 차이를 알아보려고 한다.

 

단순히 기억을 더듬어보면 프로세스는 쓰레드보다 큰 것이라고 알고 있는 경우가 많다.

나도 그랬었다 ㅎㅎ; 이제부터 두 경우를 알아보고 차이점은 또 무엇인지 알아보자.

 

 

프로세스 - Process


정의를 먼저 위키백과에서 살펴보자.


프로세스(process)는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 종종 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰인다. 여러 개의 프로세서를 사용하는 것을 멀티프로세싱이라고 하며 같은 시간에 여러 개의 프로그램을 띄우는 시분할 방식을 멀티태스킹이라고 한다.

 

정리하자면, 컴퓨터에서 연속적으로 실행되는 프로그램이라고 할 수 있다.

메모리에서 독립적으로 올라와 사용되며, 운영체제로부터 리소스를 할당받는 작업의 단위라고 한다.

 

프로세스는 운영체제로부터 독립된 메모리 영역을 할당 받는데,

 

이에 대한 비슷한 메모리 영역에 대한 내용으로는 [프로그래밍] JVM 의 구조 에 대한 포스트를 참조하면 좋다.

 

특징을 정리해 보면,

 

  • 운영체제에서 리소스를 할당 받는 작업 단위이다.
  • 독립된 메모리 영역이 있다.
  • 상대적으로 쓰레드보다 만들기 어렵다.

 

 

쓰레드 - Thread


 

쓰레드의 정의를 살펴보자.

 


스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다. 

 

 

쓰레드는 프로세스 내에서 실행되는 흐름의 단위라고 한다.

이러한 쓰레드는 보통 하나의 프로세스에 한 개를 기본적으로 가지고 있는 경우가 대분이다.

 

하지만 쓰레드는 한 프로세스 내에서 여러개 존재 할 수 있으며, 프로세스가 할당 받은 자원에 접근해 명령을 수행한다.

 

 

특징으로는,

 

  • 프로세스의 실행 가능한 가장 작은 단위
  • 프로세스보다 생성이 쉽다.
  • 프로세스 안의 메모리를 쓰레드끼리 공유 가능하다.

 

 

멀티 프로세스 VS 멀티 쓰레드


출처 : https://palpit.tistory.com/726

 

멀티 프로세스, 멀티 쓰레드는 다중 작업을 가능케 한다.

이 둘의 차이점을 한 눈에 보자.

 

멀티 프로세스 멀티 쓰레드
CPU의 코어 개수에 따라 성능이 달라짐 단일 프로세스 안에서 다중 쓰레드를 만들어 성능 향상
프로세스들이 다중으로 실행 하나의 프로세스 안에서 여러 개의 쓰레드가 실행
컨텍스트 스위칭 시 메모리와 램이 교체되므로 실행시간 단축 쓰레드의 스택 영역 외의 메모리 영역은 공유되어 있으므로, 컨텍스트 스위칭이 빠르다.

'OS' 카테고리의 다른 글

[OS] 페이징  (0) 2020.10.27
[OS] 페이지 관리 방법  (0) 2020.09.27
[OS] CPU 스케쥴링  (0) 2020.09.18
[OS] 데드락 - Deadlock  (0) 2020.09.18
[OS] 리틀 엔디안, 빅 엔디안  (0) 2020.09.16