관리 메뉴

Rootable의 개발일기

프로세스(Process) vs 스레드(Thread) 본문

OS

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

dev-rootable 2024. 3. 29. 16:37

📌 개념

 

✅ 프로세스(Process)

 

독립적인 자원과 메모리를 가지는 프로그램의 실행 중인 Instance

 

자체 메모리 공간이 있는 독립/동적 Entity

 

✅ 프로그램(Program)

 

특정 작업을 수행하기 위해 작성된 일련의 지침

 

일반적으로 디스크나 다른 저장 매체에 저장되는 정적 Entity

 

🔍 프로그램과 프로세스

프로그램을 실행하면 운영체제는 해당 프로그램을 디스크에서 시스템 메모리로 로드하고 실행을 한다.

프로세스는 프로그램이라는 정적인 코드가 실행되면서 발생한다. 그래서 프로그램은 여러 프로세스를 생성할 수 있고, 각 프로세스는 각자의 메모리와
자원을 가지며, 프로그램의 실행 주기만큼 생존
한다.

 

✅ 스레드(Thread)

 

프로세스의 하위 집합, 경량 프로세스

 

📌 프로세스 vs 스레드

 

✅ By Subjects

 

Subject 프로세스(Process) 스레드(Thread)
개념 컴퓨터에서 실행되는 프로그램의 인스턴스 스케줄러가 독립적으로 관리할 수 있는 프로그래밍된 명령의 소규모 시퀀스
메모리 자체적인 별도의 메모리 공간(Heap, Stack 등) 프로세스 내에서 메모리 공유(프로세스의 Heap 및 전역 변수에 접근 가능)
생성 상위 프로세스의 메모리 복제가 필요하므로 리소스 집약적이고 느림 프로세스와 메모리를 공유하므로 리소스 집약도가 낮고 빠름
통신 IPC(프로세스 간 통신)는 별도의 메모리 공간으로 인해 복잡하고 느림 스레드 간 통신은 동일한 메모리를 공유하므로 더 쉽고 빠름
제어 OS에 의해 제어되고, 각 프로세스는 독립적으로 작동함 소유한 프로세스에 의해 제어되고, 프로세스 내의 모든 스레드는 프로세스 변경에 영향을 받을 수 있다.
오버헤드 별도의 메모리 및 리소스 관리로 인해 오버헤드가 높다. 프로세스와 리소스를 공유하므로 오버헤드가 낮다.
사용성 격리된 실행, 안전성 및 보안이 필요한 애플리케이션에 적합 동일한 애플리케이션 내에서 동시 실행이 필요한 작업에 적합
에러 영향 하나의 프로세스 충돌은 다른 프로세스에 직접적인 영향을 미치지 않음 스레드 충돌은 동일한 프로세스 내의 다른 스레드에 영향을 미칠 수 있음

 

 

✅ 메모리

 

https://www.javatpoint.com/process-vs-thread

 

https://www.javatpoint.com/process-vs-thread

 

📌 프로세스의 상태

 

itwiki.kr

 

1. 생성(New)

 

새 프로세스가 막 생성된 상태

 

2. 준비(Ready)

 

프로세스가 CPU에 실행되기 위해 대기하는 상태

 

3. 실행(Running)

 

프로세스에 포함된 명령어가 실행되고 있는 상태

 

4. 대기(Waiting)

 

프로세스가 특정 자원이나 이벤트를 기다리는 상태

 

5. 종료(Terminated)

 

프로세스가 실행을 완료한 상태

 

📌 멀티스레드(Multi Thread)와 멀티프로세스(Multi Process)란?

 

효율성과 성능을 높이기 위해 컴퓨팅 작업을 병렬화하는 두 가지 접근 방식

 

✅ Multi Thread Application

 

프로세스 내 스레드는 동일 메모리 공간을 공유하기 때문에 스레드 간의 정보 공유가 쉽다. 그러나 동일한 메모리를 공유하므로 경쟁 조건 및 교착 상태와 같은 문제를 방지해야 한다. Multi Thread는 적은 메모리와 적은 CPU 점유시간을 가지며 Context Switching 비용이 낮고 빠르다.

 

✅ Multi Process Application

 

자체 공간을 가진 여러 프로세스가 사용되며, 각 프로세스는 서로에게 영향을 미치지 않는다. 이러한 격리를 통해 안정성은 높아지지만, 프로세스 간 통신은 스레드에 비해
더 복잡하고 느릴 수 있다. Multi Process는 많은 메모리와 CPU 점유시간을 가지며 Context Switching 비용이 높다.

 

 

References:

 

https://somaz.tistory.com/265

 

[CS 지식8.] 프로세스(Process)와 스레드(Thread)란?

Overview 프로세스와 스레드에 대해서 공부해보려고 한다. "프로세스와 스레드의 차이점" 기술면접에서 가장 많이 묻는 질문 중 하나이다. 프로세스와 스레드는 모두 서로 관련되어 있고 매우 유

somaz.tistory.com

 

https://itwiki.kr/w/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4_%EC%83%81%ED%83%9C

 

IT위키

IT에 관한 모든 지식. 함께 만들어가는 깨끗한 위키

itwiki.kr

 

https://www.javatpoint.com/process-vs-thread

 

Process vs Thread: What's the Difference? - javatpoint

Process Vs. Thread | Difference Between Process and Thread with list of top differences and real time examples including images, dog, cat, gross, net, java, database, science, general, english etc.

www.javatpoint.com