프로세스와 스레드의 차이(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이 가능하다.
'Web' 카테고리의 다른 글
[Web] 자바스크립트 동작 원리 - JavaScript Runtime Environment (0) | 2021.02.04 |
---|---|
[Web] Call Stack - 자바스크립트의 콜 스택 (0) | 2021.02.02 |
[Web] Rendering (DOM/CSSOM/Render Tree) (2) | 2021.01.20 |
[Web] DOM요소 조작_Document.querySelector( ) (0) | 2021.01.20 |
[Web] window size 및 좌표 관련 속성 (0) | 2021.01.19 |