앞으로 Node.js 가 한 번에 여러 가지 일을 처리할 수 있는 방법에 대해서 계속 알아볼 것인데 그러기 위해서 스레드에 대한 개념을 알면 좋습니다.

그래서 스레드와 관련된 프로세스도 같이 알아보겠습니다.

프로세스와 스레드란 무엇인가요

아래에 활성 상태 보기에서 보면 현재 실행되고 있는 프로세스들이 나열되어 있으며, 그 프로세스를 위해 몇 개의 스레드가 사용되고 있는지 나와있습니다.

Untitled

Untitled

스크린샷 2023-11-12 오후 11.14.55.png

Untitled

프로세스(Process)

컴퓨터가 구글 크롬 프로그램을 실행하든 카카오톡 프로그램을 실행하든  어떠한 일을 하고 있는 상태를 프로세스라고 합니다. 프로세서(processors)가 프로세스(process)를 하나씩 조금씩 빠르게 처리해서 같이 모든 프로세스를 처리하는 것처럼 보이는 동시성과 여러개의 프로세서가 여러개의 프로세스를 각각 동시에 처리해주는 병렬성을 같이 이용해서 처리해 줍니다.

Untitled

스레드(Thread)

카카오 프로그램을 실행해 놓으면 알림도 오고 메시지도 오고 광고도 나와야 합니다. 결국 한 프로세스 내에서 여러가지 작업이 동시에 이뤄져야합니다. 이 때 스레드를 이용하게 됩니다.  스레드란 프로세스 내에서 일을 처리하는 세부 실행 단위를 말합니다.

Untitled

스레드는 자원 공유

아래의 그림에서 처럼 하나의 프로세스안에서 스레드들은 자원을 공유하게 됩니다. 카카오톡 프로세스 안에서는 비슷한 일을 할 수 있기 때문에 자원을 공유하는게 효율적입니다.(장점) 자원을 공유해서 나오는 단점은 공유하는 자원에 여러개의 스레드가 동시에 접근할 때 에러가 날 수 있습니다. 이러한 경우를 위한 코딩을 하기도 디버깅을 하기도 어렵습니다.

Untitled

프로세스란 좀 더 자세히 보기...

실행파일을 클릭 했을 때, 메모리(RAM) 할당이 이루어지고  이 순간부터 이 프로그램은 '프로세스'라 불리게 됩니다.

다음 이미지는 메인 메모리 내부 프로세스의 단순화된 레이아웃을 보여 줍니다.