운영체저로 부터 할당 받은 작업의 단위
프로그램이 돌아가고 있는 상태
메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태
프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
하나의 프로세스 내에서 동시에 진행되는 **작업 갈래, 흐름의 단위 **
한개의 프로세스에는 반드시 하나 이상의 스레드를 가지도 있음
| 프로세스가 만들어 지면서 총 4가지의 메모리 영역으로 할당됨 |
|---|
| STACK |
| HEAP |
| DATA |
| TEXT(CODE) |
지역 변수와 같은 호출한 함수가 종료되면 되돌아올 임시적인 자료를 저장하는 독립적인 공간.
STACK은 함수의 호출과 함께 할당,함수의 호출완료시 소멸
만일 STACK의 영역을 초과하면 STACK OVERFLOW가 발생
또한 크기가 동적으로 바뀜
생성자,인스턴스와 같은 동적으로 할당되는 데이터들을 위해 존재하는 공간,사용자의 의해 동적으로 메모리 공간이 바뀜
코드가 실행되면서 전역 변수나 각종 데이터들이 모여있음,데이터영역은 .data, .rodata, .bss영역으로 구분
.data : 전역 변수 또는 static 변수 등 프로그램이 사용하는 데이터를 저장
.bss : 초기값 없는 전역 변수, 초기값이 없는 static 변수가 저장
.rodata : const같은 상수 키워드 선언 된 변수나문자열 상수가 저장
프로그래머가 작성한 프로그램 함수들의 코드가 CPU가 해석 가능한 기계어 형태로 저장
스레드끼리프로세스의 자원을 공유하면서 프로세스 실행 흐름의 일부가 되기 때문에 동시 작업이 가능
스레드는 Stack만 할당받아 복사하고 나머지는 프로세스내 다른 스레드와 공유 즉 Stack만 개인 나머진 공공
정보를 공유하는 방법
- IPC(Inter-Process Communication)사용
- LPC(Local Inter-Process Communication)사용
- 별도로 공유 메모리를 만들어서 정보를 주고 받도록 설정