728x90
반응형

1. 동기와 비동기 코드 실행방식에 대해 설명해보세요.

동기는 청을 보낸 후 응답을 받아야지만 다음 동작이 이루어지는 방식이다.

어떠한 태스크를 처리할 동안 나머지 태스크는 대기한다.

실제로 cpu가 느려지는 것은 아니지만 시스템의 전체적인 효율이 저하된다고 할 수 있다.

(작업을 동시에 수행, 동시에 끝남, 끝나는 동시에 시작함을 의미)

 

반면에 비동기는 요청을 보낸 후 응답의 수락 여부와는 상관없이 다음 태스크가 동작하는 방식이다.

자원을 효율적으로 사용할 수 있다. 이때, 비동기 요청시 응답 후 처리할 콜백 함수를 함께 알려준다.

(시작, 종료가 일치하지 않으며, 끝나는 동시에 시작을 하지 않음을 의미)

 

하지만 비동기 처리를 위해 여러개의 콜백함수를 중첩시키면 콜백지옥이 발생한다.

이를 해결하기 위해 Promise를 도입하였고, Async / Await 추가로 도입되었다.

추가내용 : https://pyoja.tistory.com/243

 

[1회 - 데일리과제] 이벤트 루프와 콜백함수

1. 이벤트 루프 (Event Loop)에 대해 설명해보세요. 이벤트 루프는 작업이 들어오길 기다렸다가 작업이 들어오면 이를 처리하고, 처리할 작업이 없는 경우엔 잠드는, 끊임없이 돌아가는 자바스크립

pyoja.tistory.com


따라서 Node.js에서는 비동기 코드 실행 방식을 사용하여 I/O 작업을 처리하고, 

이를 통해 더 높은 처리량과 더 빠른 응답 시간을 달성합니다.

동기/비동기는 결과를 돌려주었을 때 순서와 결과에 관심이 있는지 아닌지로 판단할 수 있다.

 

 

<추가공부> 블로킹 vs 논블로킹

블로킹 : 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때 까지 기다렸다 작업(동기)

논블로킹 : 다른 주체의 작업에 관련없이 자신의 작업을 하는 것(비동기)

 

다른 주체가 작업을 할 때 자신의 제어권이 있는지 없는지로 볼 수 있다.

멍토의 Blocking vs Non-Blocking, Sync vs Async - 우아한테크톡(유튜브)
작업의 흐름

 

출처 : https://bit.ly/3KzKwPt

 

2. 프로세스와 스레드의 차이점은 무엇인가요?

면접질문시에 간단하게 이정도면 답하면 될 것 같다.

더보기

프로세스는 운영체제로부터 자원을 할당받아 독립적으로 실행되는 작업 단위입니다. (실행중인 프로그램)

이에 반해 스레드는 프로세스 내에서 실행되는 여러 실행 흐름 중 하나로, 

프로세스 내에서 Stack 메모리 영역을 제외한 Code/Data/Heap 메모리 영역을 공유합니다.

 

프로세스는 실행 중인 프로그램을 의미하며, 메모리 상에서 독립적으로 할당되며 각각의 프로세스는 자신만의 고유한 주소 공간(메모리)을 갖고 있습니다. 즉, 다른 프로세스에 영향을 받지 않고 독립적으로 실행될 수 있는 단위입니다.

반면에 스레드(Thread)는 프로세스 내에서 실행되는 여러 실행 흐름 중 하나입니다. 

스레드는 프로세스 내에서 Stack 메모리 영역을 제외한 Code/Data/Heap 메모리 영역을 공유합니다. 

이러한 특성 때문에 스레드는 프로세스보다 더 가볍고 빠르게 생성 및 소멸할 수 있습니다.

또한 스레드는 프로세스 내에서 생성되기 때문에 프로세스 내의 데이터를 모두 공유할 수 있습니다. 

이를 통해 스레드 간의 데이터 전달이 더욱 쉬워지며, 이를 통해 더욱 복잡한 작업을 수행할 수 있습니다.

예를들어 웹 브라우저는 하나의 프로세스입니다. 그리고 웹 페이지를 로딩하는 것은 하나의 스레드입니다. 이때 웹 페이지를 로딩하는 스레드는 다른 스레드와 데이터를 공유하며, 이를 통해 더욱 복잡한 작업을 수행할 수 있습니다.

 

 

코다의 Process vs Thread - 우아한테크(유튜브)

<추가설명>

더보기

멀티프로세스의 장점
- 안정성: 하나의 프로세스가 죽어도 다른 프로세스에 영향을 미치지 않습니다.
- 보안: 각 프로세스는 자신의 메모리 공간을 가지고 있어 다른 프로세스의 메모리에 접근할 수 없습니다.

 

멀티프로세스의 단점
- 시스템 자원 소모: 각 프로세스는 자신만의 메모리 공간을 가지므로, 메모리를 많이 소모합니다.
- IPC(Inter-Process Communication)가 필요합니다.

 

멀티스레드의 장점
- 시스템 자원 소모가 적습니다.
- IPC가 필요하지 않습니다.

 

멀티스레드의 단점
안정성: 하나의 스레드가 죽으면 전체 프로세스가 영향을 받습니다.
보안: 각 스레드는 자신이 속한 프로세스의 메모리 공간을 공유하므로, 다른 스레드가 메모리에 접근할 수 있습니다.

멀티프로세스안정성과 보안성이 높지만 시스템 자원 소모가 크고 IPC가 필요하며,

멀티스레드시스템 자원 소모가 적고 IPC가 필요하지 않지만 안정성과 보안성이 낮습니다.

크롬(멀티프로세스) VS IE(멀티스레드)

이미지 출처 : https://www.youtube.com/watch?v=1grtWKqTn50 (우아한테크톡)

728x90
반응형

+ Recent posts