CS, OS, Network

[운영체제] 프로세스와 스레드란? 그리고 차이점

Veams 2023. 4. 14.

프로세스와 스레드는 프로그램에서 실행되는 어떤 실행 단위를 의미한다.

 

프로그램(Program)

프로그램은 어떤 작업을 하기 위한 명령어 목록과 그에 필요한 데이터를 묶어 놓은 실행파일로, 보조기억장치정적인 상태로 저장되어있다.

 

프로그램의 실행과정은 다음과 같다. 1) 사용자가 컴퓨터에게 프로그램을 실행할 것을 요청하면 2) 컴퓨터가 프로그램의 정보를 읽고 프로그램이 메모리를 사용할 수 있게 할당한다. 3) 그리고 프로그램의 정보들이 메모리에 로드되며 프로그램이 실행된다.  

 

정리하자면, 보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간 프로그램은 프로세스가 되는 것이다. 이 과정을 프로세스를 생성한다고 표현한다.

 

https://www.javaquery.com/2016/07/what-is-difference-between-process-and.html

 

 

프로세스(Process)

프로세스(Process)는 '실행 중인 프로그램'으로, 운영체제로부터 자원을 할당받아 실행된다. 

프로세스는 운영체제로부터 자원(메모리, CPU 시간 등)을 할당 받아 독립적으로 실행된다. 각각의 프로세스는 독립된 메모리 영역을 가지며, 서로 다른 프로세스는 서로 영향을 주지 않는다.

 

- 프로세스마다 자신의 주소 공간, 메모리, 입출력, 파일 등의 자원을 가지고 있다.

- 하나의 프로그램이 여러 개의 프로세스로 분리되어 실행될 수도 있다.

 

프로세스가 운영체제로부터 자원을 할당받으면 그 자원을 스레드가 활용한다.

Heee's Development Blog
Heee's Development Blog

스레드(Thread)

스레드(Thread)는 프로세스 내에서 실행되는 작업 단위를 의미한다. 스레드라는 개념이 도입되면서 하나의 프로세스가 한 번에 여러 일을 동시에 처리할 수 있게 되었다. 

 

스레드는 프로세스 내에서 자원을 공유하면서 동시에 실행될 수 있다 다시 말해, 프로세스 내에서 각각의 스레드는 같은 메모리 공간을 공유한다. 하나의 프로세스에서 여러 개의 쓰레드를 생성하고 관리할 수 있으며, 각각의 쓰레드는 독립적으로 실행될 수 있다. 쓰레드는 하나의 프로세스 내에서 작업을 분리하여 병렬적으로 실행함으로써 시스템의 성능을 향상시킬 수 있다.

 

이 둘의 차이점은 다음과 같다. 

 

1) 자원 공유

- 멀티프로세스는 서로 다른 프로세스끼리 자원을 공유할 수 없다.

- 멀티쓰레드는 하나의 프로세스 내에서 여러 쓰레드가 자원을 공유하여 사용한다.

 

2) 컨텍스트 스위칭(Context Switching)

CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 과정을 Context Switching라 한다.

- 멀티프로세스는 프로세스 간의 전환 시에도 컨텍스트 스위칭(Context Switching)이 일어나며, 그 과정에서 무거운 작업이 진행되며 상대적으로 느린 속도로 일어난다.

- 멀티쓰레드는 쓰레드 간의 전환 시에 컨텍스트 스위칭 일어나며, 작업량이 적어 비교적 빠른 속도로 일어난다.

 

3) 메모리 사용량

- 멀티프로세스는 각각의 프로세스가 독립적으로 메모리를 사용하기 때문에, 메모리 사용량이 많을 수 있다..

- 멀티쓰레드는 하나의 프로세스 내에서 여러 쓰레드가 메모리를 공유하여 사용하기 때문에, 메모리 사용량이 비교적 적다.

 

4) 프로그래밍 복잡도

- 멀티프로세스는 서로 다른 프로세스끼리 자원을 공유하지 않으므로, 프로그래밍이 비교적 복잡하다.

- 멀티쓰레드는 하나의 프로세스 내에서 쓰레드를 생성하고 관리하기 때문에, 프로그래밍이 비교적 간단하다.

 

프로그래밍에서는 멀티스레드를 사용하여 동시에 여러 작업을 처리하고, 멀티프로세스를 사용하여 여러 프로그램을 동시에 실행할 수 있다. 이를 통해 CPU 자원을 효율적으로 활용할 수 있으며, 사용자 경험을 향상시킬 수 있다.

 

 

참고

혼자 공부하는 컴퓨터 구조+운영체제(저자 강민철)

 

https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

 

[OS] 프로세스와 스레드의 차이 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

https://fastcampus.co.kr/media_branding_cs

 

댓글