만족은 하되 안주하지는 말자

기록해야 기억한다

프로그래밍/ETC

[운영체제] 프로그램과 프로세스의 차이, 프로세스와 스레드의 차이

D36choi 2019. 11. 16. 22:45
728x90

프로세스와 쓰레드의 차이는 무엇인가.

혹은

프로세스는 무엇이고 쓰레드는 무엇인가.

동아리 면접 때도 물어본 질문인데 이번에 운영체제 공부를 하면서

희미했던 그 차이를 조금은 명확히 머릿속에 그릴 수 있었다.

 

프로그램?

디스크에 저장되어있는 일련의 명령어들의 집합

 

이 자체로는 프로세스라 할 수 없다. 그럼 프로세스란 무엇인가?

 

그러면 프로세스란?

'프로그램'메모리(DRAM) 에 적재되어 실행 중인 프로그램이 프로세스이다.

 

말하자면 프로그램은 실행중이지 않은, 동작되고 있지 않은 정적인 개체

 

프로세스는 실행중이기 때문에 동적인 개체라고 나누어 표현할 수 있다.

 

 

program 과 process

스레드란?

프로세스 의 하나의 실행의 흐름 단위

 

멀티프로세싱(Processing) 과 멀티스레드(Thread)

 

멀티스레딩은 하나의 프로세스 -> 여러 스레드. CPU에 여러 쓰레드가 동시에 할당되어 동시에 처리 됨을 말하는 것이다.

기본적으로 Heap / code / global data 를 공유한다.

 

멀티프로세싱은 하나의 프로그램 -> 여러 프로세스로 쪼개어 각 프로세스가 하나의 작업을 담당하여 나중엔 그 결과들을 합치게 된다.

각각의 독립적인 메모리 영역을 차지한다.

 

 

 

틀린 부분이 있다면 부족한 저에게 깨달음을 주시길 부탁드립니다.