-
CS : OS : MemoryComputer Science/OS 2021. 3. 25. 16:35728x90
Memory Structure
- CPU와 가까운 순서의 메모리 구조
- Register -> Cache Memory -> Main Memory -> 보조기억장치 -> 외부기억장치
- CPU로부터 멀어질수록, 용량이 커지고 접근 속도는 느려진다.
- Stack 영역
- 프로그램이 자동으로 사용하는 메모리 영역이다.
- 함수 호출과 관계되는 지역변수, 매개변수가 저장된다.
- 함수 호출 시 생성되고, 함수가 종료되면 반환된다.
- stack의 크기는 각 프로세스마다 할당되지만, 프로세스가 메모리에 로드될 때 stack 크기가 고정되어, 런타임 시 stack 크기를 변경할 수 없다.
- Heap 영역
- 필요에 의해 메모리를 동적으로 할당할 때 사용되는 메모리 영역이다.
- 동적 메모리 영역이라고도 한다.
- 클래스와 클로저가 이 부분에 해당한다.
- 런타임 시 크기가 결정된다.
- stack과 heap 영역은 같은 공간을 공유한다.
- 각 영역이 상대 공간을 침범하는 것을, stack overflow, heap overflow라고 한다.
- Data 영역 (BSS, GVAR)
- 프로그램의 실행과 종료 과정에서 발생한 전역변수, static변수, 배열, 구조체 등이 저장된다.
- 프로그램의 시작과 동시에 할당되고, 프로그램이 종료되어야 메모리가 소멸되는 영역이다.
- data 영역은 BSS 영역과 Data(GVAR) 영역으로 나누어지는데, 초기화 된 데이터는 Data(GVAR) 영역에 저장되고, 초기화되지 않은 데이터는 BSS 영역에 저장된다.
- BSS 영역과 Data(GVAR) 영역을 구분하는 이유 : 초기화 된 데이터는 초기 값을 저장해야 하므로 Data(GVAR) 영역에 저장되에 ROM에 저장된다. 하지만 초기화 되지 않은 데이터까지 ROM에 저장하면, 크기가 큰 ROM이 필요하고, 이는 비효율적이므로 초기화 되지 않은 데이터는 RAM에 저장하여 영역을 구분한다.
- Code 영역 (Text)
- 실행할 프로그램의 소스코드가 저장되는 영역이다.
- 실행 파일을 구성하는 명령어들이 올라가는 메모리 영역으로, 함수, 제어문, 상수 등이 여기에 지정된다.
Paging (페이징)
- 페이징 : 크기가 동일한 영역인 페이지(page)로 나누어 처리하는 방법
- 고정 분할 분산 메모리 할당 기법이라고 한다.
- 가상메모리는 페이지 단위로 분할되고, 물리메모리는 페이지와 크기가 같은 프레임(frame) 단위로 분할된다.
- 인덱스와 물리메모리의 프레임 번호 정보가 담겨 있는 페이지 테이블(page table)을 이용하여, 논리 주소를 물리 주소로 변환한다.
- 내부 단편화 발생 가능
- 외부 단편화 발생되지 않음
- 장점 : 메모리를 효율적으로 사용할 수 있다.
- 단점 : 프로세스의 여러 페이지를 메모리에 분산 적재하기 때문에, 운영체제의 관리 부담이 크다.
- 페이지 크기를 작게 한다면,
- 내부 단편화를 줄일 수 있다.
- 페이지의 개수가 늘어난다. 때문에, 페이지 테이블의 크기(=행의 수)가 늘어나 유지 비용이 많이 발생할 수 있다.
- 페이징에서, 논리 주소를 물리 주소로 변환하는 과정
- 논리 주소의 구성 : [directory number] + [page table number] + [offset]
- directory number : 2단계 페이징 기법 시 최상위 테이블 번호
- page table number : 하위 테이블의 index 번화
- offset : 데이터의 상대적 위치
- 페이지 테이블의 관리는, 메모리 액세스 성능에 큰 영향을 미친다.
- 페이지 테이블 사용 시, 메모리 액세스를 두 번 해야하는 문제가 발생하여, 페이지 테이블 사용 이전에 TLB를 먼저 체크하는 방식을 사용하여 속도를 향상시킨다.
- 논리 주소의 구성 : [directory number] + [page table number] + [offset]
Segmentation (세그먼테이션)
- 세그먼테이션 : 고정된 영역으로 분할하는 페이징과 다르게, 가변적인 영역인 세그먼트(segment)로 분할하는 기법
- 가변 분할 분산 메모리 할당 기법이라고 한다.
- 내부 단편화 발생하지 않음
- 외부 단편화 발생 가능
- 페이징과 같이, 세그먼트의 크기가 작을수록 외부 단편화가 작다.
- 메모리 압축 기법, 동적 대치 알고리즘 등을 활용하여 외부 단편화를 최소화한다.
- 세그먼테이션에서, 논리 주소를 물리 주소로 변환하는 과정
- STBR : 세그먼트 테이블 기준 레지스터, 세그먼트 시작 영역, 논리적 주소
- STLR : 세그먼트 테이블 경계 레지스터, 세그먼트 크기, 물리적 주소
728x90'Computer Science > OS' 카테고리의 다른 글
Question : OS : Memory (0) 2021.04.06 Question : OS : Process (0) 2021.04.06 CS : OS : Kernel (0) 2021.03.25 CS : OS : Process (0) 2021.03.25 Pintos Project #3 : Thread scheduling (2) 2020.05.29 - CPU와 가까운 순서의 메모리 구조