프로그램
- 소프트웨어의 하위 개념으로, 어떠한 작업을 위해 실행할 수 있는 파일
- 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태
-
컴퓨터에서 연속적으로 실행되고 있는 프로그램
-
운영체제로부터 시스템 자원을 할당받는 작업의 단위
-
메모리에 할당되어 실행되고 있는 프로그램의 인스턴스
- 각각 독립된 메모리 영역을 할당받는다
- 코드 영역 : 작성된 프로그램이 저장되는 영역
- 데이터 영역 : 실행되면서 사용한 환경이나 파일과 같은 데이터가 모여있는 영역
- 스택 영역 : 호출한 함수가 종료되면 되돌아올 메모리의 주소나 지역 변수 등이 저장되는 영역
- 힙 영역 : 동적으로 할당되는 데이터를 위해 존재하는 영역
- 1개 이상의 스레드를 가지고 있다
- 각 프로세스는 별도의 주소 공간에서 실행되며 서로의 자원을 공유하지 않는다
- 다른 프로세스로 접근하려면 프로세스 간 통신(IPC : Inter-process Communication)을 사용해야 한다
- 프로세스 내에서 실행되는 여러 흐름의 단위
- 프로세스의 특정한 수행 경로
- 프로세스가 할당받은 자원을 이용하는 최소 실행 단위
- 프로세스 하나의 자원을 공유하면서 여러 과정을 동시에 실행시킨다
- 프로세스는 한 개 이상의 스레드를 가진다
- 프로세스 내에서 필요한 스택만 할당받으며 코드, 데이터, 힙 영역은 각 스레드가 공유한다
- 프로세스 내의 스레드끼리 자원을 공유하며 실행한다
- 프로세스보다 크기가 작은 실행 단위의 필요로 출현
하나의 프로그램을 여러 프로세스/스레드로 구성하고 각 프로세스/스레드가 하나의 작업을 처리하도록 하는 기법
종류 | 멀티프로세스 | 멀티스레드 |
---|---|---|
장점 | ||
단점 |
- 자원의 효율성 증대
- 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어듦
- 스레드 간 문맥 교환 속도가 빠름
- 처리비용 감소 및 응답시간 단축
- 프로세스 간의 통신보다 스레드 간의 통신의 비용이 적어 작업 간의 통신 부담이 줄어든다