커널 영역과 사용자 영역
메모리는 쉽게 커널영역과 사용자 영역으로 나뉜다.
흔히들 ctrl + alt + delete를 눌렀을때 나타나는 성능탭에서 진한 부분이 커널 영역 연한 부분이 사용자 영역이다.
사용자 영역은 스택영역, 힙 영역, 데이터 영역, 코드 영역으로 나뉘며 사용자 영역을 제외한 부분은 커널 영역이다.
여기서 커널은 운영체제의 핵심이며 시스템의 모든것을 통제한다.
코드 영역 - 시스템이 알아들을수 있는 명령어가 저장되어 있는 영역 CPU가 데이터를 수행할때 하나의 명령만 수행함
데이터 영역 - 전역변수와 정적변수가 저장되는 영역(전역변수 - 다른파일에서 사용가능, 정적 변수 - 해당파일 scope에서만 사용 가능)
힙 영역 - 동적할당된 변수가 들어가는 영역
동적 할당? 필요한 크기만큼 공간을 만들어두는 스택 영역과는 달리 프로그램이 실행되는 도중에 메모리를 할당하는 것을 애기한다. 동적할당시에 포인터가 저장되는 곳은 스택 영역이다. 동적 할당을 하게되면 메모리 사용 후 동적할당 해제를 해주지 않으면 메모리 누수가 발생함
스택영역 - 함수(프로시저)내에서 지역변수와 매개변수가 저장되는 영역이다
처음 스택영역이 생성될때(함수가 실행될때) 필요한 크기만큼 만들어지고 데이터를 저장(C에서 변수명 앞에 자료형 써주는거 생각)
스택은 지역변수가 저장되는 영역이기때문에 함수가 끝나면 영역이 소멸된다.
스택영역은 다른 영역이랑 다르게 높은 주소에서 낮은 주소로 자라는 형식인데 스택영역이 운영체제의 핵심인 커널영역을 침범하지 않기 위해서이다. 또한 힙 영역(낮은 주소에서 높은 주소로)과 스택영역(높은주소에서 낮은 주소로)이 공간을 공유하며 효율적으로 사용한다.
스택영역은 후입선출의 특성을 가진다.
'컴퓨터 시스템' 카테고리의 다른 글
Proxy? 프록씨!b👍 (0) | 2023.05.25 |
---|---|
프로그램의 기계수준 표현, 링커 (0) | 2023.05.12 |
동적 메모리 할당(Malloc과 Free, calloc, realloc) (1) | 2023.05.07 |
Red-Black 트리 (0) | 2023.05.07 |
Ubuntu 리눅스 명령어 정리 (0) | 2023.05.04 |