Category

    [Node.js] 논 블로킹 I/O

    [Node.js] 논 블로킹 I/O

    1. 논 블로킹 I/O 기본적으로 작성한 Javascript Code는 동시에 실행될 수 없다. 하지만 Javascript 상에서 돌아가는 것이 아닌 I/O 작업 같은 것은 동시에 처리될 수 있다. I/O는 입력(Input) / 출력(Output)을 의미하며, 파일 시스템 접근(파일 읽기, 파일 쓰기 등)이나 네트워크를 통한 요청 같은 작업이 I/O의 일종이다. 이러한 작업을 할 때 Node는 논 블로킹 방식으로 처리하는 방법을 제공한다. 논 블로킹 : 이전 작업이 완료될 때까지 대기하지 않고 다음 작업을 수행한다. 블로킹 : 이전 작업이 끝나야만 다음 작업을 수행한다. * 그림을 보면 블로킹 방식보다 논 블로킹 방식이 같은 작업을 더 짧은 시간에 처리할 수 있음을 알 수 있다. 다만 작업들이 모두 동시..

    [Node.js] 이벤트 루프(Event Loop)

    [Node.js] 이벤트 루프(Event Loop)

    1. 이벤트 루프(Event Loop) Node는 Javascript Code의 맨 위부터 한 줄씩 실행한다. 함수 호출 부분을 발견했다면 호출한 함수를 호출 스택(Call Stack)에 넣는다. function first(){ second(); console.log(‘1’); }; function second(){ third(); console.log(‘2’); }; function third(){; console.log(‘3’); }; first(); anonymous 함수는 처음 실행 시에 전역 컨텍스트(global context)를 의미한다. * 컨텍스트는 함수가 호출되었을 때 생성되는 환경을 의미한다. * Javascript Code는 실행 시 기본적으로 전역 컨텍스트 안에서 돌아간다고 생각하는..

    [Node.js] 이벤트 기반(Event-driven)

    [Node.js] 이벤트 기반(Event-driven)

    1. 이벤트 기반(Event-driven) 이벤트 기반이란 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식이다. 이벤트로는 클릭이나 네트워크 요청 등이 있을 수 있다. 이벤트 기반 시스템에서는 특정 이벤트가 발생할 때 무엇을 할지 미리 등록해두어야 한다. 이를 이벤트 리스너(Event Listener)에 콜백(CallBack) 함수를 등록한다고 표현한다. 이벤트가 발생하면 이벤트 리스너에 등록해둔 콜백 함수를 호출하며, 발생한 이벤트가 없거나 발생했던 이벤트를 다 처리하면, Node는 다음 이벤트가 발생할 때까지 대기한다. 이벤트 기반 모델에서는 이벤트 루프(Event Loop)라는 개념이 등장한다. 여러 이벤트가 동시에 발생했을 때 어떤 순서로 콜백 함수를 호출할지를 이벤트 루프가 판단한다.

    [Node.js] Node.js와 Node의 내부 구조

    [Node.js] Node.js와 Node의 내부 구조

    Node.js란 : Node.js는 Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임이다. 1. 런타임 런타임은 특정 언어로 만든 프로그램들을 실행할 수 있는 환경을 뜻한다. 따라서 Node는 Javascript Program을 컴퓨터에서 실행할 수 있다. 2. Node의 내부 구조 * Node는 V8과 더불어 libuv라는 Library를 사용하며, V8과 libuv는 C와 C++로 구현되어 있다. * libuv Library는 Node의 특성인 이벤트 기반, 논 블로킹 I/O 모델을 구현하고 있다.