메모리(2)
-
메모리
가상 메모리 32비트 기준, 실제 메모리(RAM)와 가상 메모리의 공간은 4GB(2^32)이고, 이 중 절반인 2GB는 커널이 차지한다. 가상 메모리 속 커널 영역은 모든 프로세스가 공동으로 소유하고, 프로그래머가 접근할 수 없다. 프로그래머가 직접 제어하는 메모리는 RAM이 아니라, 프로세스마다 가지고 있는 가상 메모리이다. 가상 주소와 가상 메모리를 사용함으로써 프로세스마다 4GB의 메모리를 할당해줄 수 있다. (만약 4GB를 하드 디스크에 저장하고 현재 동작하는 프로세스의 메모리를 RAM에 올린다면, 4GB 선 할당해야하는 부담이 있을 것이고, 속도도 매우 느릴 것이다.) 아래의 그림은 앞으로 설명할 page, page table, TLB, MMU의 동작을 설명한다. Paging 가상 메모리와 물리..
2021.11.08 -
코드, 데이터, 힙, 스택 영역
프로그램이 실행되면 운영체제는 메모리에 공간을 할당해준다. 이 메모리 공간은 크게 4개의 영역(segment)으로 나누어진다. 위쪽 영역일수록 메모리 주소의 값이 작다. 코드 영역 데이터 영역 힙 영역 스택 영역 코드 영역 프로세스가 실행할 코드와 매크로 상수가 기계어로 번역돼서(컴파일돼서) 저장된 공간이다. 컴파일 타임에 결정되고, 중간에 코드를 바꿀 수 없기 때문에 ro (read-only) 공간이다. 레지스터 eip를 통해 읽으며 프로그램이 실행된다. 데이터 영역 전역 변수 또는 static 변수 등이 저장된 공간. 데이터 영역은 data segment, bss, rodata로 공간이 나누어진다. rodata 읽기 전용으로 초기화되는 영역 (const), 시스템 문자열 등 .bss (Block St..
2021.10.23