프로세스(Process)란?
- 메모리에 적재되어 실행되고 있는 프로그램의 인스턴스
- 각 프로세스는 독립된 메모리 영역(Code, Data, Stack, Heap)을 할당받는다.
- 서로 다른 프로세스는 각각 개별적으로 실행되므로 서로의 데이터에 직접적으로 접근할 수 없다.
- 다른 프로세스의 자원에 접근하려면 IPC(InterProcess Communication)을 활용해야 한다.
- 프로세스는 1개 이상의 스레드를 가지고 있다.
- 프로세스 구조
- Code: 프로그램 코드가 CPU가 해석 가능한 기계어 형태로 저장되어 있다.
- Data: 전역 변수, 클래스 변수, 상수 등이 저장되어 있다.
- Stack: 함수 호출 시 할당되는 공간으로 함수 종료 시 소멸된다. 함수 내의 내역 변수 또한 저장된다.
- Heap: 동적으로 할당되는 데이터가 저장되는 공간
스레드(Thread)란?
- 프로세스 내에서 동시에 진행되는 작업 흐름의 단위 / 프로세스 내에서 동시에 진행되는 작업 갈래, 흐름의 단위
- 한 프로세스 내의 스레드들 간에는 프로세스의 자원을 공유한다.
- Code, Data, Heap 영역은 모든 스레드들에게 공유되나, Stack은 스레드 별로 각각 존재한다.
- Stack은 함수 호출 시 전달되는 매개변수, 되돌아갈 주소값, 함수 내의 지역 변수 등을 저장하는 메모리 공간이다. 이러한 공간을 별도로 가짐으로써 스레드는 독립적인 실행 흐름을 가질 수 있게 된다.
- Code, Data, Heap 영역은 모든 스레드들에게 공유되나, Stack은 스레드 별로 각각 존재한다.
'Computer Science > Operating System' 카테고리의 다른 글
[OS] 가상 메모리 (0) | 2023.08.16 |
---|---|
[OS] 운영체제의 구조 (0) | 2023.02.01 |