프로그램과 프로세스 관련 용어
프로그램과 프로세스 관련 용어 정리
프로그램과 프로세스 관련 용어
프로그램 vs 프로세스
- 프로그램 : 컴퓨터가 실행할 수 있는 명령어들의 집합
- 프로세스 : 프로그램이 실행되면 독립적인 메모리 공간을 할당받아 프로세스가 됨
클래스와 인스턴스의 관계와 비슷함
프로그램 | 프로세스 |
---|---|
실행 파일 | 실행 중인 프로그램 |
정적인 상태 | 동적인 상태 |
메모리에 올라가지 않음 | 메모리에 올라가서 실행 중인 상태 |
실행 파일 | 프로그램이 실행되면 프로세스가 됨 |
프로세스 관련 용어
- CPU (Central Processing Unit)
- 명령어를 실행하는 연산장치
- 메인 메모리 (Main Memory)
- 프로세스가 CPU에서 실행되기 위해 대기하는 곳
- IO (Input/Output)
- 파일을 읽고 쓰는 쓰거나, 네트워크를 통해 데이터를 주고 받는 것 또는 입출력장치(키보드, 마우스)를 통해 입력을 받는 것 등을 의미함
- 스레드 (Thread)
- 프로세스 내에서 실행되는 흐름의 단위
- 프로세스 내의 메모리를 공유함 (텍스트, 데이터, 힙 영역을 공유하고, 스택 영역은 독립적으로 가짐)
- 스레드는 프로세스 내의 메모리를 공유하기 때문에 스레드 간의 데이터 공유 및 통신이 프로세스 간의 데이터 공유 및 통신보다 빠름
- 컨텍스트 스위칭 (Context Switching)
- CPU가 한 프로세스에서 다른 프로세스로 전환하는 것
- 프로세스의 상태를 저장하고 복원하는 일련의 과정을 의미함
- 컨텍스트 스위칭이 자주 발생하면 오버헤드가 발생함
- 프로세스 전환시에는 컨텍스트 스위칭 비용이 크고 스레드 전환시에는 비용이 적음
패러다임에 따른 실행 방식
- 단일 프로세스
- 한번에 하나의 프로그램만 실행 가능
- CPU 사용률이 낮은 단점이 있음
- 멀티 프로세스
- 여러 개의 프로그램을 메모리에 올려놓고 동시에 실행하는 방식
- IO 작업이 발생하면 CPU가 다른 프로그램을 실행시키는 방식
- CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기하게 되는 단점이 있음
- 멀티 태스킹
- CPU 사용 시간을 잘게 쪼개서 여러 프로그램을 동시에 실행하는 방식
- 프로세스의 응답시간을 최소화하는 방식
- 하나의 프로세스가 동시에 여러 작업을 수행하지는 못함
- 컨텍스트 스위칭으로 인한 오버헤드가 발생함
- 멀티 스레딩
- 하나의 프로세스를 여러 개의 스레드로 구성하여 각 스레드가 동시에 실행되는 방식
- ex) thread per request. 요청을 받는 스레드와 요청을 처리하는 스레드를 분리하여 처리하는 방식. 요청을 받는 스레드는 요청을 받아서 처리하는 스레드에게 넘겨주고 다시 요청을 받는 작업을 수행함.
- 멀티 프로세싱
- 두개 이상의 프로세서나 코어를 활용하는 시스템 (* 멀티 프로세싱은 멀티 태스킹과는 다른 개념임)
Quiz
- 싱글코어 CPU에 싱글스레드 프로세스 두개 ?
- 멀티태스킹 - o, 멀티스레딩 - x, 멀티프로세싱 - x
- 싱글코어 CPU에 듀얼스레드 프로세스 한개 ?
- 멀티태스킹 - o, 멀티스레딩 - o, 멀티프로세싱 - x
- 듀얼코어 CPU에 싱글스레드 프로세스 두개 ?
- 멀티태스킹 - x, 멀티스레딩 - x, 멀티프로세싱 - o
- 듀얼코어 CPU에 듀얼스레드 프로세스 한개 ?
- 멀티태스킹 - x, 멀티스레딩 - o, 멀티프로세싱 - o
- 듀얼코어 CPU에 듀얼스레드 프로세스 두개 ?
- 멀티태스킹 - o, 멀티스레딩 - o, 멀티프로세싱 - o
출처 & 참고 : 쉬운코드
This post is licensed under CC BY 4.0 by the author.