프로세스란?
- 프로세스란 운영체제 입장에서 하나의 작업단위
- 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
- 프로그램의 실행은 파일 시스템에 존재하던 실행파일이 메모리에 적재된다는 의미
- cpu를 할당 받아 명령을 수행하고 있는 상태를 의미
- 프로세스의 주소 공간을 가상 메모리라고 칭한다
PCB
- 프로세스 제어 블록은 프로세스를 실행하는데 필요한 정보를 보관하는 자료구조
- 프로그램이 메모리에 올라와 이 PCB를 얻었을 때 프로세스가 됨
Code 영역
기계어 명령 형태로 변환되어서 실행할 프로그램의 코드가 저장됩니다. CPU는 이 영역에서 명령어를 하나씩 가져와 처리하게 됩니다.
컴파일 타임에 결정되고 중간에 코드를 바꿀 수 없게 read-only로 되어있다.
기계어
CPU 가 명령을 처리할때 사용하는 언어, 이진법으로 구성되어있다.
어셈블리어
기계어에서 숫자를 의미있는 언어로 바꿔서 사람들이 이해하기 쉽게 만든 언어가 어셈블리어
고급 언어
기계어와 유사하면 ‘저급언어’ 라고 부르고 사람들이 이해하기 편하도록 만들어진 프로그래밍 언어
Data 영역
전역변수와 정적변수가 저장됩니다. 이 변수들은 프로그램이 시작될 때 할당되어 프로그램 종료 시 소멸됩니다.
static 값을 참조한 코드는 컴파일이 완료 되면 data 영역을 주소값을 가르키도록 바뀐다.
BSS 영역
Stack 영역
지연변수, 매개변수, 리턴값 등 잠시 사용되었다가 사라지는 데이터를 저장하는 영역입니다. 함수 호출 시 할당되고 함수 반환 시 소멸됩니다. 로드 시(컴파일 타임) 크기가 결정됩니다.
함수 호출 시 기록하고 함수의 수행이 완료되면 사라진다. 후입선출 구조이다.
컴파일시 stack 영역의 크기가 결정되기 때문에 무한정 할당 할 수 없다.
Heap 영역
동적 데이터 영역입니다. 메모리 주소 값에 의해서만 참조되고 사용되는 영역입니다. 따라서, 프로그램 동작 시(런타임)에 크기가 결정됩니다.
객체가 heap 영역에 생성되고 GC에 의해 정리된다.
다음편