old posting/Node.js

    [Node.js] 동기와 비동기, 블로킹과 논 블로킹

    [Node.js] 동기와 비동기, 블로킹과 논 블로킹

    동기와 비동기 : 백그라운드 작업 완료 확인 여부 블로킹과 논 블로킹 : 함수가 바로 return 되는지 여부 * Node에서는 동기-블로킹 방식과 비동기-논 블로킹 방식이 대부분이다. 동기-논 블로킹이나 비동기-블로킹은 없다고 봐도 된다. 동기-블로킹 방식에서는 백그라운드 작업 완료 여부를 계속 확인하며, 호출한 함수가 바로 return 되지 않고 백그라운드 작업이 끝나야 return 된다. 비동기-논 블로킹 방식에서는 호출한 함수가 바로 return 되어 다음 작업으로 넘어가며, 백그라운드 작업 완료 여부는 신경 쓰지 않고 나중에 백그라운드가 알림을 줄 때 비로소 처리한다.

    [Node.js] 싱글 스레드

    1. 싱글 스레드 싱글 스레드란 스레드가 하나뿐이라는 것을 의미하며, 기본적으로 작성한 Javascript Code가 동시에 실행될 수 없는 이유이기도 하다. 스레드를 이해하기 위해 프로세스의 개념을 알아야 하며, 프로세스와 스레드의 차이는 다음과 같다. 프로세스 : 운영체제에서 할당하는 작업의 단위, Node나 Web Browser 같은 프로그램은 개별적인 프로세스이며, 프로세스 간에는 메모리 등의 자원을 공유하지 않는다. 스레드 : 프로세스 내에서 실행되는 흐름의 단위, 프로세스는 스레드를 여러 개 생성해 여러 작업을 동시에 처리할 수 있다. 스레드들은 같은 주소의 메모리에 접근이 가능하므로 데이터를 공유할 수 있으며, 부모 프로세스의 자원을 공유한다. * Node가 싱글 스레드라는 말을 들어봤을 것..

    [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는 실행 시 기본적으로 전역 컨텍스트 안에서 돌아간다고 생각하는..