Search

프로세스, 스레드, 병렬 처리

대분류
CS
소분류
컴퓨터 해부 노트
유형
병렬 처리
프로세스
스레드
주요 레퍼런스
https://www.youtube.com/watch?v=QmtYKZC0lMU
최종 편집 일시
2025/01/21 08:37
생성 일시
2024/08/12 04:25
14 more properties

사전 지식

프로그램

컴퓨터가 실행할 수 있는 명령어들의 집합

프로세스

컴퓨터에서 실행 중인 프로그램
각각의 프로세스는 독립된 메모리 공간을 할당 받음
명령어들과 데이터를 가짐

CPU

명령어를 실행하는 연산장치

메인 메모리

프로세스가 CPU에서 실행되기 위해 대기하는 곳

IO(Input/Output)

파일을 읽고 쓰거나 네트워크의 어딘가와 데이터를 주고 받는 것
입출력 장치와 데이터를 주거나 받는 것

단일 프로세스 시스템

한 번에 하나의 프로그램만 실행됨

단점

CPU 사용률이 좋지 않음

해결책

여러 개의 프로그램을 메모리에 올려놓고 동시에 실행하자
IO작업이 발생하면 다른 프로세스가 CPU에서 실행됨

해결 예제 → 멀티 프로그래밍

멀티 프로그래밍

CPU 사용률을 극대화시키는게 목적

단점

CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기

해결책

프로세스는 한 번 CPU를 사용할 때 아주 짧은 시간(quantum)만 CPU에 실행되도록 하자

해결 예제 → 멀티태스킹

멀티태스킹(multitasking)

프로세스의 응답 시간을 최소화 시키는데 목적

아쉬움

하나의 프로세스가 동시에 여러 작업을 수행하지는 못함
프로세스의 컨텍스트 스위칭(문맥교환)은 무거운 작업
컨텍스트 스위칭 : CPU/코어에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것
프로세스끼리 데이터 공유가 까다로움
듀얼 코어가 등장해서 잘 쓰고 싶었음.

스레드

프로세스는 한 개 이상의 스레드를 가질 수 있다.
한 프로세스안에서 여러 개의 작업들을 동시에 수행하기 위해서 등장
CPU에서 실행되는 단위(unit of execution)
같은 프로세스의 스레드들끼리 컨텍스트 스위칭은 가볍다.
스레드들은 자신들이 속한 프로세스의 메모리 영역을 공유
같은 프로세스의 스레드들끼리 컨텍스트 스위칭은 가볍다.
같은 프로세스의 스레드들끼리 데이터 공유가 쉽다.

메모리 구조 비교 (싱글 vs 멀티)

좌 : 싱글, 우 : 멀티
같은 프로세스에 속하는 스레드들은 그 프로세스의 메모리 영역을 공유
힙 영역은 공유
스택 영역은 공유하지 않음 (고유 영역)
각각의 스택들을 가르키는 포인터들과 프로그램 카운터들이 각각 나뉘어져있음

멀티 스레딩

하나의 프로세스가 동시에 여러 작업을 실행하는데 목적
여러 작업들은 스레드를 통해서 실행

확장된 멀티태스킹 개념

여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 cpu time을 나눠 갖는 것

멀티 프로세싱

두 개 이상의 프로세서나 코어를 활용하는 시스템

예제

싱글-코어 CPU에 싱글-스레드 프로세스(P) 두 개

두개의 프로세스가 하나의 cpu를 (경합)나눠가지므로 멀티태스킹O
싱글-스레드이므로 멀티스레딩X
싱글-코어 CPU이므로 멀티프로세싱X
멀티태스킹
O
멀티스레딩
X
멀티프로세싱
X

싱글-코어 CPU에 듀얼-스레드(T) 프로세스(P) 한 개

하나의 cpu로 경합을 해야하기 때문에(서로 나눠 써야하기 때문에) 멀티태스킹O
듀얼-스레드이므로 멀티스레딩O
싱글-코어 CPU이므로 멀티프로세싱X
멀티태스킹
O
멀티스레딩
O
멀티프로세싱
X

듀얼-코어 CPU에 싱글-스레드(T) 프로세스(P) 두 개

경합하지 않고 그냥 1개씩 배분하기때문에 멀티태스킹X
싱글-스레드이므로 멀티스레딩X
듀얼-코어 CPU이므로 멀티프로세싱O
멀티태스킹
X
멀티스레딩
X
멀티프로세싱
O

듀얼-코어 CPU에 듀얼-스레드(T) 프로세스(P) 두 개

하나의 cpu로 경합을 해야하기 때문에(서로 나눠 써야하기 때문에) 멀티태스킹O
듀얼-스레드이므로 멀티스레딩O
듀얼-코어 CPU이므로 멀티프로세싱O
멀티태스킹
O
멀티스레딩
O
멀티프로세싱
O