Computer Study/OS

[OS Study] 3-1. 메모리 주소 공간 (Ch. 12~14)

해리팍 2021. 7. 22. 00:03
반응형

안녕하세요.

이번 포스팅 부터는 리눅스의 메모리 관련된 내용을 다뤄보려 합니다.

양이 너무 많고, 모르는 부분이 많아 조금씩 올릴 것 같아요.





1. 메모리 가상화

- 물리 메모리를 OS가 가상화 -> 사용자/프로그램은 논리 메모리 공간을 사용
- 각 프로세스는 할당 받은 메모리 공간을 사용


2. 메모리 가상화의 목표

- 프로그램이 메모리를 손쉽게 사용

- 투명성 (transparency) : 실행 중인 프로그램이 가상 메모리의 존재를 인식하지 못하도록 구현 되어야 함

- 효율성 (efficiency) : 시간과 공간 측면에서 효율적이어야 함

- 보호 (protection) / 고립 ( isolate) : 각각의 프로세스를 고립 시켜 서로 침범하지 못 하도록 보호

 

출처 : KAIST OS Lab (원유집 교수님, https://oslab.kaist.ac.kr/OSTEPSlides/)



3. 메모리 관련 API

1) malloc() : 힙에서 요청 된 크기를 할당

2) free() : 할당된 메모리를 해제

 

 

출처 : KAIST OS Lab (원유집 교수님, https://oslab.kaist.ac.kr/OSTEPSlides/)




4. 메모리 관련 API 사용 시 문제 상황

- 세그멘테이션 폴트 : 메모리를 잘못 사용하는 경우 (ex : 할당 받지 않은 메모리를 사용 하려고 할 때)

- 오버플로우 : 할당 받은 메모리보다 크게 사용하려고 할 때 발생

- Uninitialize : 할당 받은 메모리를 초기화 하지 않음

- Memory leak : 사용이 완료된 메모리 해제를 하지 않아 여유 메모리가 줄어드는 현상

- Dangling Pointer : 메모리 사용이 끝나기 전 ree

- Invalid Frees : 할당 받지 않은 메모리에 대한 해제 시도

반응형