프로그램: 컴퓨터가 실행 할수있는 명령어들의 집합
프로세스: 실행중인 프로그램 / 독립된 메모리 공간
cpu : 명령어들을 실행
메모리: 프로세스가 cpu에서 실행되기 위해 기다리는 대기공간
IO(input/output):
- 파일 읽고 쓰기
- 네트워크 어딘가와의 데이터를 주고받음
- 키보드 ,마우스등 입출력 장치와 데이터를 주고 받음
단일 프로세스 시스템
보다 시피 프로세스를 단일로 처리하여 cpu 활용도 매우 낮음
멀티 프로그래밍
그래서 대안으로 나온 멀티 프로그래밍
p1 프로세스 입출력시간동안 cpu활용을 위해 p2 프로세스를 진행
그러나 여기서 문제는 p1 진행 시간이 길어지면 p2의 대기시간 또한 길어짐
그래서 대안으로 나온 멀티 테스킹
멀티 테스킹
p1 프로세스와 p2 프로세스를 잘게 쪼개 순간 순간 계속해서 진행하여 마치 같이 진행되는것처럼 진행
그러나 정말 같이 진행되는것은 아니다 .
프로세스 끼리 데이터 공유가 어려움 ---> 듀얼 코어의 등장
스레드
프로세스는 1개 이상의 스레드를 가진다 . => cpu에서 실행되는 단위 !
특징 : 같은 프로세스의 스레드들 끼리는 컨텍스트 스위칭이 가볍다 > 빠름
자신의 프로세스 안에서 메모리 ,데이터 공유 쉬움
멀티 프로세싱
cpu를 두개를 둬 각 스레드를 동시에 진행
정리
- 멀티 테스킹 : 한 CPU에 진행되는 프로세스 , 스레드 2개이상
- 멀티 스레딩 : 한 프로세스에 스레드 두개 이상
- 멀티 프로세싱 : 2개의 cpu 에 각자 진행
댓글