사전 지식
프로세스란?
컴퓨터에서 실행중인 프로그램이며
각각의 프로세스는 독립된 메모리 공간을 할당 받고, 명령어들과 데이터를 가짐
컴퓨터 시스템 발전 과정
1. 단일 프로세스 시스템
한 번에 하나의 프로그램만 실행
▶ 또 다른 프로그램을 실행하기 위해서는, 먼저 실행되었던 프로그램이 종료된 후에 실행해야 함
한계점 : CPU의 자원이 낭비됨
만약
P1 이라는 프로세스가 CPU를 사용하기도 하며, IO 작업을 진행할 수 있다는 가정하에
P1이 프로세스 도중 IO 작업을 만나게 된다면 어떻게 될까??
▶ IO 작업 중 CPU는 아무런 작업 없이 자원을 낭비하게 됨
해결책 : 여러 개의 프로그램을 메모리에 올려놓고 동시에 실행하자
▶ IO 작업이 발생 했을 때 남는 시간에 다른 프로세스가 CPU에서 실행됨
이러한 방식의 프로그램을 다음과 같이 정의한다
2. 멀티 프로그래밍
CPU 사용률을 극대화 시키는 것이 목적이지만
CPU의 사용 시간이 길어진다면 다른 프로세스는 계속하여 대기하게 된다
해결책 : 프로세스는 한번 CPU를 사용할 때 아주 짧은 시간(quantum)동안만 CPU에서 실행되도록 하자
3. 멀티 태스킹
동시에 여러 프로그램을 실행시킨다는 점에서 멀티프로그래밍과 유사하지만,
CPU 타임을 아주 짧게(ms 단위까지) time slice로 분할하여
CPU 타임 안에서 여러 프로세스들이 서로 번갈아 가면서 실행될 수 있는 차이를 갖고 있다.
멀티태스킹의 근본적인 목적
프로세스의 응답 시간을 최소화 시켜 사용자로 하여금 프로그램이 동시에 실행되는 것 처럼 느끼게 하는 것
다만 하나의 프로세스가 동시에 여러 작업을 수행하지 못한다는 아쉬움이 존재함
물론 프로세스를 여러개 띄워 다중 작업을 진행할 수 있지만, 이러한 방식에는 다음과 같은 단점이 존재함
- 프로세스의 컨텍스트 스위칭은 무거운 작업
- CPU에서 실행되기 위해서 어느 한 프로세스에서 다른 프로세스로 교체 되는 행위
- 프로세스끼리는 데이터 공유가 까다로움
- 프로세스는 독립적인 메모리 공간을 갖기 때문
- 듀얼 코어 CPU의 등장
- 여러 작업을 더 효율적으로 처리할 수 있는 환경이 마련되었음
해결책 : 스레드
4. 스레드
- CPU에서 실행되는 단위
- 프로세스는 한 개 이상의 스레드를 가질 수 있으며, 이제 CPU는 최소 한 개의 스레드를 갖고 작업을 이어나가게 됨
- 같은 프로세스 내에서의 스레드는 서로간 컨텍스트 스위칭이 가벼움
- 스레드들은 자신들이 속한 프로세스의 메모리 영역을 공유함
- 메모리 영역을 공유하며 생기는 두 가지 효과
- 같은 프로세스 내에서의 스레드 간 컨텍스트 스위칭이 가벼워짐
- 메모리 영역을 공유하기 때문에 데이터간 공유가 더욱 쉬워짐
- 메모리 영역을 공유하며 생기는 두 가지 효과
싱글 스레드와 멀티 스레드간 메모리 구조 비교
스택 영역에 대해서는 스레드 별로 따로 관리되게 되며
스택에 대한 포인터와 Program Counter 역시 따로 관리됨
Program Counter란? 다음번에 실행되어야 할 명령어가 있는 메모리 주소
핵심
같은 프로세스에 속한 스레드들은, 해당 프로세스의 메모리 영역을 공유
그렇더라도 스레드만의 고유한 영역 또한 존재함
싱글코어 CPU에서는 쓰레드가 두 개 존재하더라도 기존 '멀티 태스킹'의 방식과 같이
퀀텀으로 잘게 쪼개서 프로세스가 진행됨
듀얼코어 이상부터는 쓰레드가 각각 코어별로 실행되게 됨
위와 같은 시스템을 멀티스레딩( multi threading ) 시스템이라고 칭함
멀티스레딩 : 하나의 프로세스가 동시에 여러 작업을 실행하는데 목적
스레드가 등장하게 되며 멀티 태스킹의 개념 또한 확장됨
기존의 멀티 태스킹
프로세스끼리의 아주 짧은 시간에서 일어나는 스위칭
확장된 멀티 태스킹의 개념
여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 CPU time을 나누어 갖는 것
두 개 이상의 프로세스나 코어를 활용하는 시스템
멀티프로세싱 (멀티 태스킹, 멀티 스레딩, ...)
예제로 알아보기
싱글코어 CPU에 싱글 스레드 프로세스가 두 개 존재한다면?
멀티 태스킹 O, 멀티 스레딩 X, 멀티 프로세싱 X
싱글코어 CPU에 듀얼 스레드 프로세스 한 개
멀티 태스킹 O, 멀티 스레딩 O, 멀티 프로세싱 X
듀얼코어 CPU에 싱글 스레드 프로세스 두 개
멀티 태스킹 X, 멀티 스레딩 X, 멀티 프로세싱 O
듀얼코어 CPU에 듀얼 스레드 프로세스 한 개
멀티 태스킹 X, 멀티 스레딩 O, 멀티 프로세싱 O
듀얼코어 CPU에 듀얼 스레드 프로세스 두 개
한 프로세스에 있는 스레드들이 한 코어에 할당될 때
멀티 태스킹 : 코어마다 경합하는 스레드가 존재하기 때문에 O
멀티 스레딩 : 듀얼 스레드이기 때문에 O
멀티프로세싱 : 코어 개수가 2개이기 때문에 O
한 프로세스에 있는 스레드들이 한 코어에 할당될 때
멀티 태스킹 : 코어마다 경합하는 스레드가 존재하기 때문에 O
멀티 스레딩 : 듀얼 스레드이기 때문에 O
멀티프로세싱 : 코어 개수가 2개이기 때문에 O
'Computer Science > Operating System' 카테고리의 다른 글
캐시매핑 (0) | 2024.10.31 |
---|---|
캐시히트와 캐시미스 (0) | 2024.10.30 |
PCB와 Context Switching (2) | 2024.10.23 |
메모리 계층 구조 (0) | 2024.10.10 |
컨텍스트 스위칭(context switching) (0) | 2024.09.20 |