본문 바로가기

Web

[Web] 프로세스와 스레드의 차이(Process vs Thread)

728x90
반응형

프로세스와 스레드의 차이(Process vs Thread)

 

프로세스(Process)

컴퓨터 운영체제 위에서 연속적으로 실행되고 있는 프로그램.

각각의 프로세스는 메모리 위에서 독립적으로 실행한다.

하나의 프로세스에 문제가 발생해도 해당 프로세스만 죽게 된다.

 

프로세스는 각각의 리소스, 즉 독립된 메모리 영역(code, data, stack, heap)을 할당받는다.

프로그램을 위해 작성된 Code.

프로세스 안에서 코드의 동작 순서가 저장되는 Stack.

오브젝트를 생성하거나 데이터를 만들 때 그 데이터가 저장되는 Heap, Data.

heap에는 동적으로 할당된 변수가 저장되고,

data에는 전역 변수나 static변수가 저장된다.

 

스레드(Thread)

한 프로세스 안에서 동시에 기능을 수행하는 여러개의 Thread가 동작한다.

Thread는 각각 저마다 해야되는 기능을 배정받는다.

Thread는 각각 필요한 기능을 수행하기 위한 함수 호출을 기억해야 하기 때문에 각자의 Stack을 할당받지만,

한 프로세스 내에서 기능을 수행하므로 Code, Heap, Data는 공유하여 업데이트한다.

Thread는 동시 다발적으로 기능을 수행하기 때문에 프로세스가 효율적으로 일을 할 수 있도록 해준다.

 

멀티 스레딩(Multi-threading)

한 프로세스 안에서 여러가지 Thread가 동시 다발적으로 일어나는 것.

동시적으로 일을 수행하기 때문에 효율적으로 프로그래밍이 동작할 수 있다.

 

But!!! 자바스크립트는 Single threaded language이다.

자바스크립트 언어 제체에는 Multi-threading이 없다.

하지만 자바스크립트가 동작하고 있는 브라우저 프로그램 안에서는 여러 가지 thread가 들어있어서

브라우저의 Web APIs를 이용하게 되면 Multi-threading이 가능하다.

 

 

 

728x90
반응형