단일 프로세스 시스템?
- 한 번에 하나의 프로그램만 실행되는 시스템을 말한다
- 단일 프로세스 시스템을 사용하면 I/O 작업을 진행 중인 프로세스가 작업이 끝날 때까지, CPU가 다른 작업을 수행하지 못하고 놀게 있게 되는 단점이 있다.
멀티프로그래밍?
- 단일 프로세스 시스템의 위와 같은 단점 때문에 멀티프로그래밍이 등장하게 되었습니다.
- 멀티프로그래밍은 여러 개의 프로그램을 메모리에 올려놓고 동시에 실행시키자 즉,
- I/O 작업이 발생하면 다른 프로세스가 CPU에서 실행되도록 하는 것입니다.
- 멀티 프로그래밍은 CPU의 사용률을 극대화시키는데 목적이 있습니다.
멀티프로그래밍의 단점?
- CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기해야 한다..
- 위 문제를 해결하기 위해 프로세스는 아주 짧은 시간 퀀텀(Quantum)만 CPU에서 실행되도록 하자라는 아이디어가 나오게 되었다.
멀티 태스킹?
- 멀티프로그래밍과 비슷하지만, 프로세스가 사용하는 시간을 잘게 쪼개서, 그 시간(CPU 타임) 동안에 프로세스들이 서로 번갈아 가면서 실행될 수 있도록 한 점이 다르다.
- 프로세스의 응답 시간을 최소화 시키는데 목적이 있다.
- 프로세스의 응답시간을 최소화하면 사용자는 여러 프로그램이 실제로 동시에 돌아가는 것처럼 느낄 수 있게 해 준다
- 그러나 하나의 프로세스가 여러 작업을 수행할 수 없다는 단점이 여전히 존재함..
멀티 태스킹의 단점?
- 프로세스가 번갈아 가면서 실행될 때, 컨텍스트 스위칭이 발생하게 되는데 프로세스의 컨텍스트 스위칭은 무겁다.
- 컨텍스트 스위칭 : 어느 한 프로세스에서 다른 프로세스로 교체되는 것을 의미한다.
- 프로세스 간에는 독립적인 메모리 공간을 가지기 때문에 프로세스끼리 데이터 공유가 어렵다는 단점이 있다.
프로세스란 무엇인지?
- 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(개체)
- 프로세스는 각각의 독립된, Code, Stack, Memory, Heap 영역을 할당받는다.
- 그림과 같이 각 프로세스는 별도의 공간에서 실행되며, 프로세스 간의 자료구조나 변수에 접근할 수 없다.
- 다만, 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, Inter-Process-Communication)을 사용해야 한다
쓰레드란 무엇인지?
- 프로세스 내에서 실행되는 여러 흐름의 단위
- 그림과 같이 쓰레드는 Stack영역을 제외한 Code, Data, Heap영역을 공유한다
- 프로세스는 한 개 이상의 쓰레드를 가질 수 있습니다.
- 쓰레드는 CPU에서 실행되는 단위입니다.
- 예전에는 프로세스가 CPU에서 실행되는 단위 였다면 요즘은 쓰레드가 실행단위가 되었습니다.
- 같은 프로세스의 쓰레드간의 컨텍스트 스위칭은 가볍습니다.
- 스레드들은 자신이 속한 프로세스의 메모리 영역을 공유합니다.
멀티 스레딩?
- 하나의 프로세스가 동시에 여러작업을 수행하는 것에 목적이 있는 것을 말합니다
멀티 프로세싱?
- 두개 이상의 코어나 프로세서를 활용하는 시스템을 의미합니다.
확장된 멀티 태스킹의 개념?
- CPU타임 동안 여러 프로세스들이 서로 번갈아가면서 실행되는 것이 기존의 멀티 태스킹의 개념 이었다면, 여러 프로세스와 여러 쓰레드들이 아주 짧게 쪼개진 CPU Time을 나눠 갖는 것을 의미합니다.
멀티 태스킹, 멀티 스레딩, 멀티 프로세싱 예제
- 하나의 CPU를 가지고 두개의 프로세스가 나누어서 써야하기 때문에 멀티 태스킹이 일어납니다.
- 싱글 스레드 프로세스 두 개 이기때문에 멀티스레딩은 일어나지 않습니다.
- 두개 이상의 프로세서나 코어가 있어야 멀티 프로세싱인데 예제는 싱글코어 CPU이기 때문에 멀티프로세싱이 아닙니다.
- 한 프로세스 내에서 두개의 쓰레드가 한 CPU를 갖고 경합을 해야하기 때문에, 멀티 태스킹이 맞습니다.
- 또한 듀얼 스레드이기 때문에 멀티 스레딩도 맞습니다.
- 싱글코어 CPU이기 때문에 멀티 프로세싱이 아닙니다.
- 코어가 2개여서 프로세스 간의 코어를 경합하는 일이 발생하지 않기 때문에, 멀티 태스킹이 아니다.
- 싱글 스레드 프로세스 두개 이기 때문에, 멀티 스레딩이 아닙니다.
- 코어가 두개 이기 때문에, 멀티 프로세싱이 맞습니다.
- 코어별로 경합하고 있는 쓰레드가 없기 때문에 멀티 태스킹이 아닙니다.
- 듀얼 스레드 프로세스 이기 때문에 멀티 스레딩이 맞습니다
- 듀얼 코어 CPU이기 때문에 멀티 프로세싱이 맞습니다.
- 코어별로 각 프로세스에 존재하는 쓰레드가 경합을 하고 있기 때문에 멀티 태스킹이 맞습니다.
- 듀얼 스레드 프로세스 두개로 이루어져 있기 때문에 멀티 쓰레딩이 맞습니다.
- 듀얼 코어 CPU이기 때문에 멀티 프로세싱이 맞습니다.
출처
'프로그래밍' 카테고리의 다른 글
대칭키 비대칭키 암호화 (4) | 2023.06.17 |
---|---|
테스트 커버리지에 대한 생각(SLASH 21 영상 참고) (2) | 2023.06.17 |
SOLID 원칙 (0) | 2023.04.11 |
6장 연습문제 풀이 (0) | 2021.07.07 |
FireBase 프로젝트를 다수의 PC에서 사용시 참고 (0) | 2021.07.06 |