프로그램: 컴퓨터가 실행할 수 있는 명령어의 집합
프로세스: 컴퓨터에서 실행 중인 프로그램. 각각의 프로세스는 독립된 메모리 공간을 할당받음. 명령어와 데이터를 가진다
CPU: 명령어를 실행하는 연산장치
메인메모리: 프로세스가 cpu에서 실행되기 위해 대기하는 곳
IO: 파일을 읽고 쓰거나 네트워크의 어딘가와 데이터를 주고 받는 것. 입출력 장치와 데이터를 주고받는 것.
단일 프로세스 시스템
- 한 번에 하나의 프로그램만 실행됨
- 단점: cpu사용률이 좋지 않음
멀티프로그래밍
- CPU사용률을 극대화시키는 데 중점
- 단점: CPU사용시간이 길어지면 다른 프로세스는 계속 대기
멀티태스킹
- 프로세스는 한번 cpu를 사용할때 아주 짧은시간(퀀텀)만 cpu에서 실행되기로 하자
- 프로세스의 응답시간을 최소화 시키는데 목적
- 단점
- 하나의 프로세스가 동시에 여러 작업을 수행하지는 못함
- 프로세스의 컨텍스트 스위칭은 무거운 작업
- 프로세스끼리 데이터 공유가 까다로움
- 듀얼 코어가 등장했는데 잘 쓰고 싶음.
스레드
- 프로세스는 한 개 이상의 스레드를 가질 수 있다.
- 한 프로세스 안에서 여러개의 작업을 실행하기 위함
- CPU에서 실행되는 단위
- 같은 프로세스의 스레드들끼리 컨텍스트 스위칭은 가볍다
- 스레드들은 자신들이 속한 프로세스의 메모리영역을 공유
멀티스레딩
- 하나의 프로세스가 동시에 여러작업을 실행하는데 목적
멀티태스킹 확장
- 여러 프로세스와 여러 스레드가아주 짧게 쪼개진 cpu time을 가지는 것
멀티 프로세싱 두 개 이상의 프로세서나 코어를 활용하는 시스템