사전 지식
프로그램
•
컴퓨터가 실행할 수 있는 명령어들의 집합
프로세스
•
컴퓨터에서 실행 중인 프로그램
•
각각의 프로세스는 독립된 메모리 공간을 할당 받음
•
명령어들과 데이터를 가짐
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 |