컴퓨터 시스템에서 실행 중인 프로그램의 인스턴스를 의미.
프로세스는 자신만의 메모리 공간을 가지고 있으며, 한 프로세스의 메모리는 다른 프로세스로부터 보호받는다.
⭐️ 프로세스 메모리 ⭐️
코드, 현재 활동, 스택, 힙 등을 포함합니다.
프로세스 메모리
Code : 코드 자체를 구성하는 메모리 영역(프로그램 명령)
Data : 전역변수, 정적변수, 배열 등
초기화 된 데이터는 data 영역에 저장 초기화 되지 않은 데이터는 bss 영역에 저장
Heap : 동적 할당 시 사용 (new(), malloc() 등)
Stack : 지역변수, 매개변수, 리턴 값 (임시 메모리 영역)
프로세스 상태:
실행 중, 준비, 대기 등의 상태를 표시합니다.
프로세스 ID:
운영 체제가 프로세스를 구별하는 데 사용합니다.
프로그램 카운터:
다음에 실행될 명령어의 주소를 가리킵니다.
CPU 레지스터:
프로세스가 실행되는 동안 사용되는 변수를 저장합니다.
프로그램의 메모리 레이아웃에는 일반적으로 다음과 같은 영역들이 포함됩니다:
텍스트 영역: 프로그램의 실행 코드가 저장되는 영역입니다.
데이터 영역: 초기화된 전역 변수와 정적 변수가 저장되는 영역입니다.
BSS 영역: 초기화되지 않은 전역 변수와 정적 변수가 저장되는 영역입니다.
힙 영역: 동적 메모리 할당을 위해 사용되는 영역입니다.
스택 영역: 함수 호출과 관련된 정보(예: 지역 변수, 반환 주소 등)를 저장하는 영역입니다.
프로세스 내에서 실행되는 독립적인 실행 흐름
모든 프로세스는 하나 이상의 스레드를 가지며, 이게 멀티스레딩
프로세스의 자원을 공유하므로 프로세스 내의 스레드 간 통신은 상대적으로 간단하고 빠름
스레드 ID
- 운영 체제가 스레드를 구별하는 데 사용합니다
프로그램 카운터
- 다음에 실행될 명령어의 주소를 가리킵니다
레지스터 세트
-스레드가 실행되는 동안 사용되는 변수를 저장합니다
스택
-함수 호출에 따라 할당 및 제거되는 로컬 변수 및 반환 주소를 저장합니다
프로세스 메모리(힙 메모리)
를 공유프로세스는 독립적인 실행을 위한 코드, 메모리 공간, 및 다른 자원들을 포함하는 독립적인 엔티티이며, 스레드는 이런 프로세스 내에서 독립적인 실행 흐름
을 나타내며 프로세스의 자원을 공유
한다. 이 두 가지는 병렬 처리
와 동시성
을 지원하고 시스템 성능을 향상시키는 중요한 요소다!
한 줄로 요약하면, 프로세스는 자신만의 고유 공간과 자원을 할당받아 사용하는데 반해, 스레드는 다른 스레드와 공간, 자원을 공유하면서 사용하는 차이가 존재한다.
좋은 글 감사합니다. 자주 올게요 :)