NodeJS - 환경 (1)

런타임 환경

Application 레벨에서 작동

✔ 동적데이터 저장 공간 - 힙

✔ 함수의 순서저장 공간- 콜스텍

*이벤트루프 : 콜스택 비어있는지 검사

👨나 : "콜백 수행해줘 "
💻노드js : "오키" (테스크 큐(대기저장 장소)에 콜백 넌다) 
♻이벤트루프: "응? 콜스택 비었어 안비었어 비었어 안비었어 비었네" 
           (테스크 큐에있는 콜백을 콜스택에 넣어야지)

💁‍♂️자바스크립트로 만들어진 어플리케이션은 싱글 스레드이지만
NodeJS 런타임 환경은 멀티 스레드이기 때문에 위의 상황이 가능하다

정리

nodeJS 어플리케이션은 싱글 메인스레드가 있다
=>어플리케이션에서 필요한 일들을 처리하는 메인스레드가있다

파일을 읽고 쓰고 네트워크 요청을 하는 일들은
nodeJS 제공해주는 API 를 이용해서 할수있다
이때 이벤트 발생처리를 콜백형태로 정의하면 nodeJS가
병렬 적으로 처리한다

  • 자바스크립트 런타임환경
  • 싱글 스레드
  • 넌블락킹I/O
  • 이벤트 드리븐

장점 : I/O 관련에 좋다 (non-blocking i/o 와 event-driven 방식으로 되있기때문에)
단점 : cpu 에서는 안됨 nodeJS 자체적으로 싱글스레드로 작동

결론

자바스크립트 자체는 싱글스레드이다
그럼 어떻게 이런 싱글스레드를 기반으로 한언어를 사용하는 NODEJS로 성능좋은 서버를 만들수있을까 ?

그것은
자바스크립트 런타임환경에서제공하는

  • 넌블락킹I/O
  • 이벤트 드리븐
    두가지 특징때문에 효율적인 서버를 만들수있다

🖍 넌블락킹I/O

넌블락킹이란?

블락킹 : 동기적인것 (하나의 요청 받고 응답 그리고 다음요청 )
논블락킹 : 비동기적인것 (하나의 요청 (callback) 떤지고 응답 없어도 다음요청)

I/O란?

읽고 쓰는것 (읽고 쓰는것)
CPU와 반대되는 개념 (두뇌)

🖍 이벤트 드리븐

이벤트를 통해 콜백호출 하는것 
"야 콜백 하면 나한테 보내 

좋은 웹페이지 즐겨찾기