개발

Process & Thread

Ridiss 2023. 12. 27. 07:07

Process

- 운영체제에 의해 파일 시스템에 설치되어 있는 파일을 프로그램

- 프로세스는 프로그램의 실제 실행을 의미하며 프로그램 파일을 실행함으로써 프로그램 데이터들이 메모리에 올라와 CPU를 할당받고 명령을 수행하고 있는 상태 -> 실제 CPU를 할당 받는 것은 Thread라고 볼 수 있다.

- 프로세스는 운영체제로부터 자원을 할당받은 최소 작업 단위

 

Thread

- Process가 가지고 있는 공유자원을 Thread들은 공유한다. (Process와 큰 차이점)

- Thread는 운영체제의 스케쥴러에 의해 관리되는 CPU의 최소 실행 단위를 의미

 

 

Process vs Thread

Process

- 여러 개의 자식 프로세스 중 하나에 문제가 발생하면 해당 자식 프로세스만 죽고 다른 프로세스에게 영향을 미치지 않음. 즉 프로그램 전체의 안정성을 확보 할 수 있음

- 프로세스 간 전환(컨텍스트 스위칭) 시 레지스터, 캐시메모리 초기화 등 무거운 작업으로 인한 시간적인 비용이 많이 발생한다.

- 프로세스 간 통신 기법이 어렵고 복잡해서 통신으로 인한 오버헤드가 크다.

- 프로세스 생성 시 독립적으로 메모리가 할당되기 때문에 리소스 비용이 크다.

 

Thread

-  여러 개의 스레드 중 하나에 문제가 생기면 전체 프로세스에 영향을 끼치게 된다.

- 프로세스의 메모리 영역을 공유하기 때문에 컨텍스트 스위칭 시간이 적고 리소스를 효율적으로 사용한다.

- 스레드 간 통신비용이 적어 통신으로 인한 오버헤드가 적다.

- 스레드 간 공유 메모리 영역의 동시 접근으로 인한 동기화 문제가 발생한다.

- 하나의 스레드에서 오류가 발생할 경우 프로세스 자체가 종료될 수 있다.

'개발' 카테고리의 다른 글

Context Switch  (1) 2023.12.29
Concurrent & Parallelism (동시성, 병렬성)  (0) 2023.12.27
REST API에 Under_Score(_)? Hyphen(-)?  (0) 2023.05.18
[Git] commit 되돌리기  (0) 2022.09.02
[객체지향프로그래밍] 다형성과 추상화  (0) 2022.05.06