-
Process
- 컴퓨터에서 실행 중인 프로그램의 인스턴스를 나타내는 개념이다.
- 각 프로세스는 운영체제에 의해 관리되며 독립된 실행 환경을 가지고 있다.
- 프로세스는 연산의 단위라 말할 수 있고, 연산이 연속적으로 진행되며 흐름(Context, flow)을 생성한다.
- 보통 프로세스 수준에서 기본적으로 1개의 흐름이 있다.
- 보통 하나의 프로세스에는 하나의 주요 흐름이 있고, 이를 메인 스레드라고 한다.
- 프로세스의 연산은 운영체제에 의해 관리되고, CPU나 RAM메모리의 할당을 받는다.
- 할당된 RAM은 가상 메모리 (Virtual Memory)이다.
- 흐름이 N개가 되면 이 N개는 동시에 각자 작동 ← Multi-threading
- 하나의 프로세스 내부에 여러 개의 스레드가 존재하는 경우, 이 스레드들은 동일한 프로세스의 가상 메모리를 공유하게 된다.
Thread
- 스레드는 프로세스 내에서 실행되는 개별적인 실행 흐름을 의미한다.
- 멀티스레딩(Multi-threading)은 동시성(Concurrency)과 동기화(Synchronization) 개념을 기반으로 한다.
- 스레드는 프로세스의 일부로서 존재하며, 각각의 스레드는 자체적인 실행 흐름과 데이터 저장 공간을 가집니다. 이렇게 각 스레드가 사용하는 공간을 "스레드 로컬 스토리지(thread local storage)"라고 한다.
- 스레드의 운영 범위는 프로세스 수준에서 제공된 Virtual Memory로 한정된다.
요약
- 프로세스는 프로그램의 실행 인스턴스로서 운영체제에 의해 관리되며, 연산을 수행하고 가상 메모리를 할당받는다.
- 프로세스 내에는 최소 하나의 스레드가 존재한다.
- 운영체제는 Virtual Memory(제한된 공간)를 프로세스에 할당해 준다.
- 프로세스에 속한 모든 스레드는 프로세스의 가상 메모리(Virtual Memory)로 공간이 제약된다.