JS
자바스크립트의 실행 모델과 이벤트 루프, 그리고 작업 최적화
들어가며프론트엔드 기술면접 질문에 단골처럼 등장하는 질문 중 하나가 ‘싱글 스레드인 자바스크립트가 어떻게 비동기 처리가 가능한가요?’이다. 이 질문에 대한 간단한 답으로 ‘자바스크립트를 실행하는 런타임 환경이 비동기 작업들을 담당한다’라던지, ‘비동기 작업의 콜백함수를 별도의 태스크 큐에 저장해놓고, 이벤트 루프가 콜 스택이 비었을 때 태스크 큐의 작업을 콜 스택에 올려서 실행시킨다’라고 말할 수 있을 것이다. 하지만 몇 가지 궁금한 것들이 생겼다.자바스크립트는 애초에 왜 싱글 스레드로 동작하도록 만들어져서 이벤트 루프라는 매커니즘을 써가면서 비동기 처리를 하는 걸까?이벤트 루프와 작업 큐는 그러면 아키텍쳐상 어디에, 어떤 형태로 존재하는 것일까? 흔히 볼 수 있는 그림상으로는 엔진 바깥에 위치하는 것 ..