이벤트 루프
이벤트루프는 메인스레드 겸 싱글스레드로서, 비즈니스 로직을 수행한다.
수행도중에 블로킹 IO작업을 만나면 커널 비동기 또는 자신의 워커스레드풀에게 넘겨주는 역할까지 한다.
여러 이벤트가 동시에 발생했을 때 어떤 순서로 콜백 함수를 호출할지를 판단.
자바스크립트의 비동기 작업을 가능하게 해주는 역할을 합니다.
콜백함수
다른 함수에 매개변수로 넘겨지는 함수로 이벤트가 발생했거나 특정 시점에 도달했을 때 시스템에서 호출하는 함수
-> 작업이 완료된 후 호출되는 함수.
콜백지옥
비동기 처리 로직을 위해 콜백 함수를 연속해서 사용 할 때 발생하는 문제. 콜백함수를 이용해서 비동기 처리를 해주다가 코드가 난잡해지는것을 말한다.
해결방법
1. Promise, 2. asyn / await
동기와 비동기 실행 방식
동기와 비동기는 작업들을 어떠한 '흐름'으로 처리 할 것인가에 대한 관점
작업 완료 여부를 스스로 계속 확인 하는 동기
함수 A가 함수 B를 호출할 때 콜백 함수를 함께 전달해서, 함수 B의 작업이 완료되면 함께 보낸 콜백 함수를 실행한다
함수 A는 함수 B를 호출한 후로 함수 B의 작업 완료 여부에는 신경쓰지 않는다. Asynchronous
동기는 요청과 결과가 동시에 일어나는 실행 방식이고 시간과 상관없이 작업의 결과가 요청과 동시에 나와야 한다.
node에서는 동기는 블로킹 작동으로 동작이 멈추고, 비동기는 논블로킹으로 다음동작이 진행된다.
프로세스와 스레드의 차이점
프로세스 : 운영체제로부터 자원을 할당받은 작업의 단위
스레드 : 프로세스가 할당받은 자원을 이용하는 흐름의 단위 -> 하나의 프로세스 내에서 동시에 진행되는 작업 갈래, 흐름의 단위
프로그램은 코드 덩어리 -> 프로그램이 돌아가고 있는 상태(코드 덩어리를 실행한 것) : 프로세스
모든 프로그램은 운영체제가 실행되기 위한 메모리 공간을 할당해줘야 한다.
프로그램 실행 -> 메모리에 올라감 -> 운영체제로 부터 CPU(시스템자원) 할당
컴파일 언어와 인터프리터 언어 차이
컴파일언어 : 컴파일러를 통해 컴파일 타임에 전체 소스 코드를 한번에 기계어로 변환 후 실행파일을 만든다. 컴파일 단계와 실행단계가 분리
인터프리터 언어 : 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램, 컴파일 하지 않고 소스 코드를 한 줄씩 읽어들여 실행한다.