반응형

Javascript는 싱글 스레드로 동작한다는 말을 많이 들었을 것이다.

이 말을 이해하기 위해서는 우선 프로세스와 스레드의 개념을 먼저 이해해야 한다.

 

프로세스는 메모리 상에서 실행 중인 작업을 뜻하며, 이러한 프로세스 내의 실행 단위를 스레드라 한다.

이 말이 한 번에 이해가 되었다면 적어도 나보다는 뛰어난 개발자일 것이다.

난 제대로 된 개발자가 아닌 건지.. 이런 이론적인 문제에 직면하면 이해가 잘 안 된다.

그래도 이론을 제대로 알아야 더 좋은 코드를 생성할 수 있다고 하기 때문에.. 내가 이해한 내용들을 하나하나 적어보려고 한다.

 

 

프로세스란 무엇인가?

그래서 나 같은 사람이 이해할 수 있게 예를 들어 설명을 해보겠다.

음악을 틀어주는 프로그램이 있다. 이 프로그램은 PC 메모리에서 실행되고 있는 '프로세스'라고 볼 수 있다.

게임도 마찬가지로 하나의 '프로세스'이다.

우리는 게임을 하면서 음악도 듣고, 동영상을 보거나 웹툰을 보기도 한다.

이렇듯 프로세스는 메모리 안에서 서로 독립적으로 실행되는 작업이다.

=> 각각의 프로세스는 서로 메모리를 공유하지 않는다.

 

 

 

그럼 스레드는 무엇인가?

음악을 틀어주는 프로그램을 실행하기 위해서 여러 가지 코드들이 있다.

예를 들면 음악을 멈추는 코드, 음악을 재생하는 코드, 다음 곡을 재생하는 코드 등.

이것들을 '스레드'라고 볼 수 있다.

 

즉, 스레드는 프로세스 내에서 메모리를 공유하며 실행되는 작업이다.

결국 하나의 프로세스를 실행하기 위해서 여러 스레드가 협업을 하기 위해 갖고 있는 공통된 데이터나 정보를 공유한다는 의미이다.

예를 들면 현재 흘러나오고 있는 음악이 무엇인지 알고, 다음 곡이 무엇인지를 알아야 A 스레드(음악을 중지)가 돌아가고, B 스레드(다음 곡을 재생)가 순차적으로 일을 할 수 있다.

 

그래서 자바스크립트는 어떻게 동작하는가?

앞서 정리한 내용을 바탕으로 자바스크립트는 어떻게 동작하는가에 대해서는 다음 포스팅에서 정리를 하겠다.

 


참조

https://velog.io/@nowhhk/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C

 

반응형