[출처] Node.js 교과서 (조현영)
1. 서버란 ?
네트워크를 이용하여 클라이언트에게 데이터나 서비스를 제공하는 컴퓨터나 프로그램
= 클라이언트(브라우저, 모바일 어플, 서버 등)의 요청에 응답
2. Node.js의 특성
2-1. JavaScript RunTime
Node.js는 공식 문서에 자바스크립트 런타임이라고 소개되고 있다. 이때, Runtime은 어떤 언어로 작성된 프로그램이 실행될 수 있는 환경을 의미한다. 즉, node.js는 자바스크립트 실행기라고 이해하면 된다.
▷ RunTime : 특정 언어로 만든 프로그램을 실행할 수 있는 환경
2-2. 이벤트 기반 event-driven
▷ 이벤트 기반 : 어떤 이벤트가 발생하면, 사전에 지정해둔 작업을 실행하는 방식
▷ 이벤트 루프 (loop) : 이벤트 발생 시 호출할 콜백 함수들 관리 & 호출된 콜백 함수들 실행 순서 결정
2-3. Non-Blocking I/O
Node.js의 기반인 JavaScript 코드는 동시 실행이 불가능하다.
반면, JS상에서 이루어지지 않는 I/O 작업은 동시에 처리될 수 있다.
▷ Non-Blocking : 이전 작업 완료될 때까지 대기 X, 다음 작업 수행
▷ Blocking : 이전 작업 완료될 때까지 대기
2-4. 싱글 스레드
Node.js는 싱글 스레드이다.
사실 node가 실행되면 하나의 프로세스가 생성되고, 그 프로세스에 여러개의 스레드가 생성될 수 있다.
다만, node는 여러 개의 스레드 중 직접 제어할 수 있는 것은 하나 뿐이므로 싱글 스레드로 불린다.
프로세스 | 스레드 |
OS에서 할당하는 작업의 단위 브라우저와 같은 프로그램들은 개별적인 프로세스 프로세스 간의 자원공유는 이루어지지 않음 (메모리 등) |
프로세스 내부에서 실행되는 흐름의 단위 한 프로세스는 내부에 여러 스레드를 생성하여 여러개의 작업을 동시에 처리할 수 있음 |
'CS > Languages' 카테고리의 다른 글
[Ruby] Ruby 20분 가이드 (0) | 2025.02.01 |
---|---|
[Ruby] Ruby에 대해서 (0) | 2025.02.01 |
[Java] 자바 기본 프로그래밍 (0) | 2021.07.30 |
[Java] 자바 시작 (0) | 2021.07.30 |
[Java] 생활코딩 Java1 (1-26강) (0) | 2021.07.26 |