멀티태스킹, 멀티스레딩, 멀티프로레싱

창둥·2023년 12월 18일
0
post-thumbnail

기본 용어

프로세스 : 실행 중인 프로그램 (각각의 프로세스는 독립된 메모리 공간을 할당 받음)
CPU : 명령어를 실행하는 연산장치
메인메모리 : 프로세스가 CPU에서 실행되기 위해 대기하는곳
IO(input/output) : 파일을 읽고 쓰거나 네트워크의 어딘가 와 데이터를 주고 받는 것, 입출력 장치와 데이터를 주거나 받는 것

초창기의 시스템

단일 프로세스 시스템 : 한 번에 하나의 프로그램만 실행됨
→ CPU 사용률이 좋지 않음

해결책 : 프로세스는 한번 CPU를 사용할 때, 아주 짧은 시간(quantum)만 CPU에서 실행되도록 설계, 이를 멀티태스킹 이라고 한다.
→ 프로세스의 응답 시간을 최소화 시키는 것을 목적으로 한다.

멀티태스킹의 단점

  1. 하나의 프로세스가 동시에 여러 작업 수행 불가
  2. 프로세스의 컨텍스트 스위칭은 무거운 작업
  3. 프로세스끼리 데이터 공유 어려움

이를 해결하기 위해서 스레드를 사용하게 되었다.

스레드

  • CPU에서 실행되는 단위를 의미
  • 프로세스는 한 개 이상의 스레드를 가질 수 있음
  • 같은 프로세스의 스레드끼리의 컨텍스트 스위칭은 가벼움
  • 스레드들은 자신들이 속한 프로세스의 메모리 영역을 공유

멀티스레드

  • 같은 프로세스 메모리 공간의 heap영역을 공유
  • stack영역은 각 스레드별로 할당

멀티스레딩

하나의 프로세스가 동시에 여러 작업을 실행하는 것을 목적

  • 하나의 CPU일 경우, 두 개의 스레드를 가진 하나의 프로세스 실행 시 두 개의 스레드를 스위칭 하며 동작
  • 멀티 코어일 경우, 두 개의 스레드를 가진 하나의 프로세스 실행 시 각각의 코어에 스레드를 각각 동작

예제

싱글코어 CPU에 싱글 스레드 프로세스 두 개 → 멀티태스킹
싱글코어 CPU에 듀얼 스레드 프로세스 한 개 → 멀티태스킹, 멀티스레딩
듀얼코어 CPU에 싱글 스레드 프로세스 두 개 → 멀티프로세싱
듀얼코어 CPU에 듀얼 스레드 프로세스 한 개 → 멀티스레딩, 멀티프로세싱
듀얼코어 CPU에 듀얼 스레드 프로세스 두 개 → 멀티태스킹, 멀티스레딩, 멀티프로세싱

profile
개발꿈나무

0개의 댓글