메모리 관리
- Unix는 메모리 관리에 아주 깔끔한 접근수단을 가지고 있었고, linux 도 역시 그 장점을 물려 받았다. 몇몇 임베디드 응용프로그램을 제외한 리눅스 응용프로그램들은 결코 물리적 메모리에 직접 접근하지 못한다. 응용프로그램의 관점에서 마치 자신이 물리적 메모리에 접근하는 것 처럼 보일 뿐 리눅스에 의해 제어되고 있다.
- 리눅스를 응용프로그램이 방대한 메모리 공간에 투명한 방식으로 적접 접근할 수 있게 한다.
또한 한 프로그램이 다른 프로그램의 메모리 공간에 접근하지 못하게 하는 보호장치가 있다.
응용프로그램이 물리적 메모리 용량보다 더 큰 메모리 공간에 접근할 수 있도록 한다.
간단한 메모리 관리
#include <stdlib.h> void *malloc(size_t size); |
예제
- malloc를 이용하여 1MB의 메모리르 할당. malloc는 그에 따른 메모리 영역의 주소를 반환.
- sprintf를 이용해 해당 메모리 주소가 들어 있는 some_memory에 Hello World를 넣는다.
- printf를 이용해 some_memory가 가리키는 메모리에 들어있는 some_memory를 보여준다.
- 현재 대부분의 리눅스는 32비트 정수를 이용하여 메모리를 가리키고 그 포인터 역시 32비트이기 때문에 가능하다. 32 비트 포인터로는 약 4GB까지 메모리를 지칭 할 수 있다. 32비트 포인터로 그 정보의 메모리에 직접 접근할 수 있는 메모리 접근 방식을 가리켜서 플랫(flat) 32비트 메모리 모형 이라한다. 이 모형은 windows xp, vista에서도 쓰인다.
* 플랫(flat) 메모리 모형
- 컴퓨터의 메모리를 관리하는 방법의 하나로, 각각의 프로그램에 프로그램 부분과 데이터 부분이 같은 공간을 사용한다.이것은 초기 컴퓨터에 사용된 하버드 아키텍처에서 프로그램 메모리 부분과 데이터 부분이 서로 다른 공간을 사용했던 것과 대비된다.
- 각 평면마다 16비트의 경우 64 킬로바이트, 32비트 프로세서의 경우 4기가바이트, 64비트 프로세서의 경우에는 16엑스비바이트를 사용할 수 있다.
- 이 방식은 포로그램과 데이터가 같은 공간을 사용하기 때문에, 두 부분의 메모리 주소가 겹치는 일은 발생하지 않는다. 대신 하버드 아키텍쳐 방식에 비해 사용할 수 있는 공간이 줄어드는 단점이 있다.
(위키피디아 : http://ko.wikipedia.org/wiki/%ED%8F%89%EB%A9%B4_%EB%A9%94%EB%AA%A8%EB%A6%AC_%EB%AA%A8%EB%8D%B8)
'개발 > Linux' 카테고리의 다른 글
리눅스 환경 - 로그 (0) | 2014.10.16 |
---|---|
리눅스 환경 - 프로그램 인수 (0) | 2014.10.15 |
파일다루기 - 파일 디렉터리 접근 권한 관리 (0) | 2014.10.15 |
파일다루기 - 라이브러리 함수들 (0) | 2014.10.10 |
파일 다루기 - 시스템 호출과 장치 드라이버 (0) | 2014.10.10 |