[OS] 멀티프로그래밍, 멀티프로세싱, 멀티스레딩, 멀티태스킹의 간략한 차이와 설명
OS를 공부할 때 나오는 개념인 멀티프로그래밍, 멀티프로세싱, 멀티스레딩, 멀티태스킹에 대해 알아보자
환경 및 선수조건
- OS에 대한 아주 간략한 이해(OS가 무엇이다 정도)
- 싱글코어 멀티코어
- 프로그램, 프로세스 그리고 스레드의 개념
싱글코어와 멀티코어
Core
: CPU안에서 기초적인 연산을 처리하고 담당하는 부분을 말한다. 사람의 뇌로 생각을 하면 대뇌와 비슷하다.Multi Core
: 하나의 CPU안에 여러개의 코어를 구현해 놓은 아키텍처를 멀티코어라고 한다.Hyper-Threading
: 인텔에서 개발한 기술로 하나의 코어에 논리적으로 두개 이상의 코어처럼 동작하도록 설계한 기술을 의미한다.
프로그램, 프로세스 그리고 스레드
Program
Program
: 저장소에 존재하는 코드의 뭉치로 실행상태가 아닌 실행하기 전에 저장소에 저장된 코드들이다. 우리가 흔히 실행한다는 게임이나 도구(Word, Excel등등)들이 해당된다.
Process
Process
: 저장소에 존재하는 프로그램이 컴퓨터가 실행해서 CPU가 처리할 수 있게 메인 메모리에 올라온 상태이다.
Thread
Thread
: 프로세스 안에 있는 작은 실행단위로 프로세스와 Data영역과 Code영역은 공유하고 스레드 각자의 스택과 레지스터를 갖는다.
멀티프로그래밍, 멀티프로세싱, 멀티스레딩, 멀티태스킹
멀티프로그래밍
- 초창기 싱글코어 싱글 스레드 컴퓨터에서는 프로그램이 메모리에 하나만 올라가고 해당하는 프로그램만 CPU가 처리를 진행할 수 있었다. 이런 과정에서 프로그램이 파일 입출력을하게 되면 중간에 idle(정지)상태가 되는데 이 때 다른 프로세스의 일부를 실행시키는걸 의미한다.
멀티프로세싱
- 하나의 컴퓨터에 여러개의 CPU를 장착하고(CPU속에 멀티코어로 생각해도 무방합니다.) 하나 이상의 프로세스들을 동시에 처리하는걸 의미한다.
- 더 넓은 범위로 해석하면 하나 또은 그 이상의 프로세스를 여러 장치에서 병렬로 처리하는 것을 의미한다.
멀티스레딩
- 말 그대로 프로세스내에서 하나의 스레드가 아닌 여러개의 스레드를 형성하여 명령어들을 처리하는걸 의미한다.
멀티태스킹
- 테스크란 OS에서 처리하는 작업단위를 의미하는데 그 여러 작업 단위가 빠르게 처리되어 동시에 처리되는것처럼 보이는 것을 의미하며 Concurrent라는 특징을 생각하면 된다.
- 여기서 말하는 여러 작업 단위란 처리해야하는 여러 프로세스들의 명령어들을 쪼갠거라 생각하면 된다.