반응형
기본적으로 사용하는 언어인 자바스크립트는 싱글 스레드이다. 근데 싱글 스레드는 무엇이고 프로세스는 무엇일까?
🧐 프로세스
프로세스는 컴퓨터에서 연속적으로 실행되고 있는 프로그램을 뜻한다. 메모리 상에 올려진 프로그램의 한 개체라고 생각하면 된다.
프로세스는 운영체제(OS)로 부터 자원을 할당핟은 작업이다.
🧐 스레드
스레드는 프로세스 내에서 실행되는 작업 흐름의 단위이다.
스레드는 한 프로세스 내에서 Stack만 따로 할당 받고, Code, Data, Heap은 공유 한다.
🧐 멀티 프로세스와 멀티 스레드
멀티 프로세스는 운영체제에서 하나의 응용 프로그램에 대해 동시에 여러 개의 프로세스를 실행할 수 있게 하는 기술이다.
- 멀티 프로세스의 장점
- 프로그램 안정성: 한 프로세스가 비정상적으로 종료 되어도 다른 프로세스에 영향을 주지 않는다.
- 프로그램 병렬성: 멀티 프로세스와 여러개의 CPU 코어를 활용하여 둘의 시너지를 합쳐, 다중 CPU시스템에서 각 프로세스를 병렬적으로 실행하여 성능을 향상 시킬 수 있다.
- 시스템 확정성: 수 많은 요청을 동시에 처리하기 위해 여러대의 서버를 두고 로드 밸런서(Load Balancer)와 같은 장비를 사용하여 클라이언트 요청 트래픽을 분산사킨다. 이때, 여러대의 컴퓨터를 사용할 수도 있고, 하나의 성능 좋은 컴퓨터에 여러개의 서버 프로세스를 사용할 수도 있다. 멀티 프로세스는 후자에 속한다. (ex. PM2)
- 멀티 프로세스의 단점
- Context Switching Overhead: 멀티 태스킹(Multi tasking)을 구성하는데 핵심 기술인 컨텍스트 스위칭과정에서 성능 저하가 올 수 있다. 프로세스를 컨텍스트 스위칭하면, CPU는 다음 프로세스의 정보를 불러오기위해 메모리를 검색하고 CPU 카시 메로리를 초기화하며, 프로세스 상태를 저장하고, 불러올 데이터를 준비해야 하기 때문에, 이로 인한 빈번한 Context Switching작업으로 인해 비용 오버헤드가 발생할 수 있게 된다.
- 자원 공유 비효율성: 멀티 프로세스는 각 프로세스가 독립적인 메모리 공간을 가지므로, 결과적으로 메모리 사용량이 증가하게 된다.
멀티 스레드는 하나의 프로세스 안에 여러개의 스레드가 있다는 뜻이다. 따라서 하나의 프로그램에서 두가지 이상의 동작을 처리하도록 하는 행위가 가능해진다.
- 멀티 스레드의 장점
- 스레드는 프로세스보다 가볍다: 스레드는 프로세스 내에서 생성되기 때문에 스레드의 실행 환경을 설정하는 작업이 매우 간단하여 생성 및 종료가 빠르다.
- 자원의 효율성: heap영역과 같은 공유 메모리에 대해 스레드 간의 자원을 공유가 가능하다.
- Context Switching비용 감소: 스레드에도 컨텍스트 스위칭 오버헤드가 존재하지만, 상대적으로 프로세스 컨텍스트 스위칭 오버헤드보다 훨씬 낮아 비용이 낮다는 장점이 있다.
- 응답시간 단축: 프로세스는 각 요청마다 프로세스를 생성하여 처리하므로 오버헤드가 크고, 스레드는 하나의 프로세스 내에서 요청을 처리할 수 있기 때문에 오버헤드가 감소되어 더욱 빠른 응답 시간을 보장할 수 있다.
참고자료
https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-multi-process-multi-thread
반응형
'TIL' 카테고리의 다른 글
[TIL] 면접카타 3일차 (0) | 2024.03.29 |
---|---|
[TIL] 면접카타 2일차 (0) | 2024.03.28 |
[TIL] Elastic Load Balancer 기본 개념 (0) | 2024.03.27 |
[TIL] TCP프로토콜과 UDP프로토콜 (0) | 2024.03.25 |
[TIL] Typeorm @Many-To-Many (0) | 2024.03.23 |
댓글