CPU
- 명령어를 실행하는 연산장치
메모리 (메인메모리)
- 프로세스가 CPU에서 실행되기 위해 대기하는곳
I/O (input / output)
- 파일을 읽고 쓰거나 네트워크 어딘가와 데이터를 주고 받는것
- 입출력장치와 데이터를 주거나 받는것
프로세스
- 실행중인 프로그램
- 각각의 프로세스는 독립된 메모리 공간을 할당 받음
- 명령어와 데이터를 가짐
- 단일 프로세스는 하나의 프로그램만 동작되어서 비효율적임
멀티프로그래밍
- 여러개의 프로그램을 동시에 번갈아가며 실행
- 하지만 하나의 프로그램이 오래 실행되면 다른 프로그램의 대기시간이 길어짐
멀티태스킹
- 멀티프로그래밍의 단점을 보완
- 프로세스를 아주 짧은 시간(quantum)만 실행
- 프로세스의 응답시간을 최소화 하는데 목적
- 하나의 프로세스가 동시에 여러 작업 수행은 못함
- 컨텍스트 스위칭(프로세스에서 다른프로세스로 교체되는것)이 무거움
스레드
- 스레드가 등장하며 실행 최소단위가 스레드가 됨
- 그래서 프로세스는 최소 하나의 스레드를 갖고 있고, 하나의 스레드 이상을 가질수 있음
- 같은 프로세스 스레드끼리 컨텍스트 스위칭이 가벼움
- 자신들이 속한 프로세스의 메모리 영역을 공유
멀티스레드
- 하나의 프로세스가 동시에 여러 작업을 실행하는데 목적
스레드의 등장으로 인해 멀티태스킹의 개념이
여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 cpu time을 나눠 갖는것으로 확장됨
멀티프로세싱
- 두개 이상의 코어나 프로세서를 활용하는 시스템
출처: 쉬운코드