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와 반대되는 개념 (두뇌)
🖍 이벤트 드리븐
이벤트를 통해 콜백호출 하는것
"야 콜백 하면 나한테 보내
Author And Source
이 문제에 관하여(NodeJS - 환경 (1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tkp12345/NodeJS-환경저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)