Computer Science
멀티 프로그래밍, 멀티 태스킹, 멀티 쓰레딩, 멀티 프로세싱
KYBee
2022. 9. 29. 23:18
프로그램
- 컴퓨터가 실행할 수 있는 명령어들의 집합
프로세스
- 컴퓨터에서 실행 중인 프로그램
- 각각의 프로세스는 독립된 메모리 공간을 할당 받음
- 명령어들과 데이터를 가짐
PCB - Process Control Block
- 특정한 프로세스를 관리할 때 필요한 정보를 포함하는 운영체제 커널의 자료구조
- 운영체제가 프로세스를 표현하는 방식

CPU
- 명령어를 실행하는 연산장치
메인 메모리
- 프로세스가 CPU에서 실행되기 위해 대기하는 곳
단일 프로세스 시스템
- 한 번에 하나의 프로그램만 실행됨 → 먼저 실행하고 있던 프로그램이 끝나야 다음 프로그램이 실행됨
- CPU 사용률이 좋지 않음
- 어떤 프로그램이 I/O작업을 한다고 할 때, CPU에서 작업하는 시간이 2초, I/O작업을 하는 시간이 8초라고 했을때 CPU는 총 10초 중 2초만 사용된다. 즉 CPU를 20%만 사용하게 된다.
- 해결법
- 여러 개의 프로그램을 메모리에 올려두고 동시에 실행해보자!
- CPU를 실행하다가 I/O작업을 하게 된다면 다른 프로그램이 CPU에서 동작한다.
- 멀티 프로그래밍!
멀티 프로그래밍
- 여러 개의 프로그램이 동시에 실행됨
- CPU의 사용률을 극대화 시키는 목적
- 단점
- CPU 사용 기간이 길어지면 다른 프로세스는 대기해야 한다.
- 해결법
- 한 번 CPU를 사용할 때 아주 짧은 시간만 CPU에서 실행하도록 하자
- 멀티 태스킹!
멀티 태스킹
- 동시에 여러 프로그램을 짧은 시간동안 번갈아가면서 실행됨
- 프로그램의 응답시간을 최소화 시키는 목적
하지만
- 여러 프로세스가 동시에 실행되지만, 하나의 프로세스가 동시에 여러 작업을 수행하지 못함
- 하나의 프로그램을 여러 개의 프로세스로 나눌 수도 있지만, Context Switching에서 많은 시간이 소요된다.
- 프로세스 끼리는 데이터의 공유가 까다롭다.
- 프로세스 끼리는 독립된 PCB를 가지고 이를 서로 공유하지 않기 때문이다.
- 해결책
- 쓰레드!
쓰레드
- 프로세스는 한 개 이상의 쓰레드를 가질 수 있음
- 쓰레드는 프로세스의 실행 흐름
- CPU에서 실행되는 단위
- 쓰레드는 PCB를 공유
- 같은 프로세스의 쓰레드끼리는 Context Switching이 많은 시간이 소요되진 않는다.
- PCB를 공유하기 때문이다.
- 즉, 같은 프로세스안의 쓰레드끼리 데이터 공유가 쉽다.
- 각 쓰레드는 동일한 프로세스 PCB의 힙 메모리 영역을 공유함
- 각 쓰레드는 고유한 영역을 가지게 됨 (스택, 스택 포인터, 프로그램 카운터)

멀티 쓰레딩
- 하나의 프로세스가 동시에 여러 작업을 실행하기 위함
- 멀티 태스킹의 개념이 여러 프로세스와 여러 쓰레드가 짧게 쪼개어진 CPU time을 나누어 가짐
멀티 프로세싱
- 두 개 이상의 CPU를 활용하는 시스템
정리
멀티 프로그래밍
: 하나의 프로그램이 CPU를 사용하다가 다른 작업으로 인해 남는 시간이 발생했을 때, 다른 프로그램을 실행하는 것
멀티 태스킹
: CPU의 작업 단위를 짧게 쪼개서 여러 개의 프로그램을 번갈아가며 짧은 시간 동안 실행하는 것
멀티 쓰레딩
: 프로세스 내에서 여러 개의 쓰레드를 형성하여 실행하는 것
멀티 프로세싱
: 여러 개의 CPU가 하나의 컴퓨터에 존재하여, 하나 이상의 프로세스를 동시에 처리하는 것