1 of 14

싱글스레드 멀티스레드

2 of 14

프로세스 : 운영체제로부터 자원을 할당받은 작업의 단위

=> 작업중인 프로그램

3 of 14

자원

프로세스

프로세스 : 운영체제로부터 자원을 할당받은 작업의 단위

=> 작업중인 프로그램

4 of 14

프로세스 : 작업중인 프로그램

스레드 : 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위

프로세스

스레드

5 of 14

싱글 스레드 || 멀티 스레드

스레드 : 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위

6 of 14

싱글 스레드 || 멀티 스레드

프로세스

프로세스

스레드

스레드

스레드

하나의 프로세스에서 하나의 스레드 실행

다수의 실행 단위로 나누어 실행

7 of 14

프로세스

프로세스

스레드

스레드

스레드

JS, python

Java

싱글 스레드 || 멀티 스레드

8 of 14

프로세스

프로세스

스레드

스레드

스레드

JS, python

Java

싱글 스레드 || 멀티 스레드

9 of 14

프로세스

프로세스

스레드

스레드

스레드

JS, python

Java

싱글 스레드 || 멀티 스레드

10 of 14

프로세스

프로세스

스레드

스레드

스레드

JS, python

Java

싱글 스레드 || 멀티 스레드

11 of 14

프로세스

프로세스

스레드

스레드

스레드

JS, python

Java

싱글 스레드 || 멀티 스레드

12 of 14

장점

싱글 스레드 || 멀티 스레드

자원에 대해 신경쓰지 않아도 된다

context switch 없음

(여러 프로세스가 하나의 프로세서를 공유할 때 발생하는 작업, 많은 비용이 필요함)

프로그래밍 난이도가 쉽고,

CPU 메모리가 적게 사용된다.

여러 스레드에서 병렬적으로 작업을 진행하므로,

실시간으로 사용자에 응답 가능

훨씬 효율적

자원과 상태를 공유해 효율적인 운영 가능

13 of 14

단점

싱글 스레드 || 멀티 스레드

여러 개의 CPU를 활용하지 못함

연산량이 많은 작업의 경우,

그 작업이 완료되어야 다음 작업이 수행 가능

프로세서를 최대한 활용하려면

새로운 프로세스를 실행하는 방법을 사용해야함

에러 처리를 못하면 멈춰버림

주의깊은 설계와 까다로운 디버깅

하나의 쓰레드가 자원을 망치면

프로세스 전체가 종료되는 대참사 발생함

자원의 동기화 문제

프로그래밍 난이도 높음

14 of 14

더 알아보기

컴퓨터의 메모리 구조

Javascript 비동기 작업

멀티스레드처럼 작동하는 Nodejs의 특징