CPU코어, 프로세스, 스레드

오민석·2021년 9월 12일
0

CPU 코어

CPU: 컴퓨터 시스템에 모든 동작 제어, 명령 실행 장치. CPU에는 코어, 제어장치 등 여러가지 있다.
CPU(중앙처리장치) 코어: CPU 내부에서 정보 다루고 처리하는 역할 수행, PC 성능 = 코어 성능

스레드

코어가 작업 분할하여 처리하는 작업 단위

프로세스

프로그램 실행 동적 개념으로 OS로부터 자원 할당 받은 작업의 단위

Code : 코드 자체를 구성하는 메모리 영역 프로그램 명령
Data : static변수, final변수 등
Heap : new로 생성된 객체, 배열
Stack : 지역변수, 매개변수, 리턴 값 임시 메모리 영역, 참조값으로 heap의 객체 이용

스레드

한 프로세스 내에서 동작되는 실행 흐름. 프로세스 하나에 자원 공유하며 동시에 실행 가능함

싱글 스레드 vs 멀티스레드

싱글스레드

  • 하나의 Core만 사용가능해서, Cluster 모듈을 활용해서 여러 프로세스 사용

Node.js PM2

Cluster모듈은 싱글스레드가 CPU core 모두 사용 가능하게 해준다. Core 하나 당 Node.js 프로세스 하나가 돌아간다. Session 등 메모리 공유가 안되서 해당 경우는 Redis 등 통해 해결 가능하다.

멀티스레드

  • 여러 프로세서 병렬 수행

멀티프로세스 vs 멀티스레드

멀티프로세스
장점:

  • 프로세스 간 독립적인 공강 갖고있어 하나의 프로세스 고장나도 다른 프로세스 영향 없음

단점:

  • Context switching 오버헤드 발생

Context switching: cpu는 한번에 하나의 task(process, thread) 실행가능한데, task 전환 과정에서 기존 task의 상태 및 register 값 저장 및 교환.

멀티스레드
장점:

  • Context Switching 빠르다
  • 자원 효율적으로 이용

단점:

  • 동기화
  • 하나 스레드 문제 생기면 전체 프로세스 영향

스레드풀

장점

  • 스레드 생성/제거하는데 비용 X
  • 스레드를 무한히 많이 만들면 메모리 낭비

단점

  • thread 너무 많이 생성하고 안쓰면 메모리 낭비

0개의 댓글

관련 채용 정보