1. 이벤트 기반

 >> 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식

   - 이벤트의 예 : 클릭, 네트워크 요청, 타이머 등

   - 이벤트 리스너  : 이벤트를 등록하는 함수

   - 콜백 함수 : 이벤트가 발생했을 때 실행될 함수

 

2. 논블로킹 I/O

 >> 논 블로킹 : 오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행되게 하고, 나중에 오래 걸리는 함수를 실행 

   - 논 블로킹 방식 하에서 일부 코드는 백그라운드에서 병렬로 실행됨

   - 일부 코드 : I/O 작업(파일 시스템 접근, 네트워크 요청), 압축, 암호화 등

   - 나머지 코드는 블로킹 방식으로 실행됨

   - I/O 작업이 많을 때 노드 활용성이 극대화 

 

3. 프로세스 vs 스레드

 >> 프로세스와 스레드

  - 프로세스 : 운영체제에서 할당하는 작업의 단위, 프로세스 간 자원 공유 X

  - 스레드 : 프로세스 내에서 실행되는 작업의 단위, 부모 프로세스 자원 공유

 

 >> 노드 프로세스는 멀티 스레드이지만 직접 다룰 수 있는 스레드는 하나이기 때문에 싱글 스레드라고 표현

 

 >> 노드는 주로 멀티 스레드 대신 멀티 프로세스 활용

 

 >>  노드는 14버전부터 멀티 스레드 사용 가능

 

4. 싱글 스레드

 >> 싱글 스레드라 주어진 일을 하나밖에 처리하지 못함

   -  블로킹이 발생하는 경우 나머지 작업은 모두 대기해야 함  -> 비효율 발생

 

>> 주방에 비유 ( 점원 : 스레드 , 주문 : 요청, 서빙 : 응답)

 

>> 노드는 논 블로킹 모델을 채택하여 일부 코드(I/O)를 백그라운드(다른 프로세스)에서 실행 가능

  - 요청을 먼저 받고, 완료될 때 응답함

  - I/O 관련 코드가 아닌 경우 싱글 스레드, 블로킹 모델과 같아짐

 

 

'Javascript > Node' 카테고리의 다른 글

Node.js 다운로드 설치 최신버전 22버전  (0) 2024.10.29
서버 노드  (0) 2024.10.28
노드의 정의  (0) 2024.10.26
노드 교과서 섹션0  (0) 2023.09.07
노드 교과서 섹션 1  (0) 2023.09.06

Node.js는 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임입니다.

 - 서버의 역할도 수행할 수 있는 자바스크립트 런타임

 - 노드는 자바스크립트로 작성된 서버를 실행할 수 있음.

 - 서버 실행을 위해 필요한 http/https/http2 모듈을 제공

 

노드 : 자바스크립트 런타임

 - 런타임 : 특정 언어로 만든 프로그램을 실행할 수 있게 해주는 가상 머신(크롬의 V8 엔진사용)의 상태

 - 노드 : 자바스크립트로 만든 프로그램들을 실행할 수 있게 해 줌

 - 다른 런타임으로는 웹 브라우저(크롬, 엣지, 사파리, 파이어폭스 등)가 있음

 

노드는 V8과 libuv를 내부적으로 포함

 - V8 엔진 :오픈 소스 자바스크립트 엔진 -> 속도 문제 개선

 - libuv : 노드의 특성인 이벤트 기반, 논블로킹 I/O 모델을 구현한 라이브러리

 

 

'Javascript > Node' 카테고리의 다른 글

서버 노드  (0) 2024.10.28
노드의 특성  (0) 2024.10.27
노드 교과서 섹션0  (0) 2023.09.07
노드 교과서 섹션 1  (0) 2023.09.06
노드 교과서 섹션 2  (0) 2023.09.05

참고 깃헙 주소 : https://github.com/zerocho/nodejs-book

에러질문방법

질문 제목에 질문의 요약을 작성한다.

스무고개 하지 않는다.

에러메세지를 일부만 올리지 말고 전체를 올려준다.

코드를 보여준다.

듣는 사람의 입장을 생각해야 한다.

 

노드는 자바스크립트 런타임이다.

서버의 역할도 수행할 수 있는 자바스크립트 런타임

싱글 스레드, 비동기 모델

 

이벤트 기반

이벤트가 발생할 때 미리 지정해 둔 작업을 수행하는 방식

논블로킹 I/O

논 블로킹 : 오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행하게 하고, 나중에 오래 걸리는 함수를 실행

프로세스와 스레드

프로세스 : 운영체제에서 할당하는 작업의 단위, 프로세스 간 자원공유X

스레드 : 프로세스 내에서 실행되는 작업의 단위, 부모 프로세스 자원 공유

 

싱글 스레드

싱글 스레드라 주어진 일을 하나밖에 처리하지 못함

대신 논 블로킹 모델을 채택하여 일부 코드(I/O) 를 백그라운드(다른 프로세스)에서 실행 가능

요청을 먼저 받고, 완료될 때 응답함

I/O 관련 코드가 아닌 경우 싱글 스레드, 블로킹 모델과 같아짐

'Javascript > Node' 카테고리의 다른 글

노드의 특성  (0) 2024.10.27
노드의 정의  (0) 2024.10.26
노드 교과서 섹션 1  (0) 2023.09.06
노드 교과서 섹션 2  (0) 2023.09.05
노드 교과서 섹션 3  (0) 2023.09.01

+ Recent posts