반응형

안녕하세요.

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

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





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 : 할당 받지 않은 메모리에 대한 해제 시도

반응형
Posted by 해리팍
BLOG main image

Chanhyun Park (해리팍)
Software Engineer @ SK hynix

Contact Info.
parkch0708@hanmail.net
chanhyun0708@gmail.com
chanhyun.park@sk.com

카테고리

All (1502)
Profile (2)
Park's Life (600)
Computer System (165)
Computer Programming (39)
Computer Study (54)
Computer Etc. (189)
Scuba Diving (137)
Golf (8)
Traveling (245)
생활 정보 (12)
Pokemon GO (50)