[완료] 리눅스 커널에서 메모리 관리가 이해가 안됩니다.
글쓴이: besapius / 작성시간: 목, 2011/11/17 - 11:08오전
안녕하세요.
리눅스 커널책을 보고 있는데요. 제가 이해한 것이 맞는지 틀린지 확인이 안되서요. 혹시 아시는분 계신지요?
예를들어, 시스템이 8기가의 메모리를 가지고 있고, 스와핑은 off됐고,
시스템이 현재 메모리를 6기가 사용하고 있고, 2기가가 사용가능한 상태라고 가정할께요.
이 상태에서, (커널은 물리적으로 page frame을 zone으로 나눠서 보관하잖아요.)
그렇다면 만일, zone_A와 zone_B에 각각 1기가씩 free memory가 남아있을 경우에요.
사용자가 malloc()으로 1.5기가를 요청하면 어떻게 됩니까? (시스템 전체적으로는 2기가가 있지요.)
zone_A와 zone_B에서 알아서 1.5를 맞춰서 물리적으로는 비연속적인 page frame들이 virtual
memory management를 거치면서 연속적인 메모리로 만들어져서 사용자에게 반환되는게 맞나요?
(복잡하지 않게 demand paging이나 memory policy는 다 무시하고요. page는 즉각 물리메모리로 맵핑되고,
page는 어떤 zone에서도 할당 받을 수 있다고 하면 가정할께요)
Forums:
물리 메모리상에서는 연속적이지 않아도 가상 메모리
물리 메모리상에서는 연속적이지 않아도 가상 메모리 상에서는 연속적으로 보이도록 만들어 줍니다.
========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux
임베디드 리눅스 관련 프리렌서 지향
;
답변 감사합니다.
물리적으로 연속적이지 않은 메모리를 연속적으로 보이게 반환하는 것은 알고 있는데요,
그게 같은 zone에 있는 비연속적인 메모리들만 모아서 리턴하는 것인지,
아니면 ZONE_DMA에서 몇 개, ZONE_NORMAL에서 몇 개, ZONE_HIGHMEM에서 몇 개씩 뽑아서
리턴하는/(할수 있는) 것인지 명확하지가 않아서요.혹시 알려주실 수 있으신가요?
답변 감사합니다. 물리적으로 연속적이지 않은
답변 감사합니다.
물리적으로 연속적이지 않은 메모리를 연속적으로 보이게 반환하는 것은 알고 있는데요,
그게 같은 zone에 있는 비연속적인 메모리들만 모아서 리턴하는 것인지,
아니면 ZONE_DMA에서 몇 개, ZONE_NORMAL에서 몇 개, ZONE_HIGHMEM에서 몇 개씩 뽑아서
리턴하는/(할수 있는) 것인지 명확하지가 않아서요.혹시 알려주실 수 있으신가요?
--
아래글은 익명으로 저장되서 다시 올립니다. :-)
물리 메모리상에서는 연속적이지 않아도 가상 메모리
"리눅스 커널의 이해" 8장 읽어 보시면 대략 이해가 될겁니다.
온라인 무료 PDF 파일로도 배포하고 있습니다.
========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux
임베디드 리눅스 관련 프리렌서 지향
제가 아는 분은 그책을 리눅스 커널의 오해라고
제가 아는 분은 그책을 리눅스 커널의 오해라고 부르시더군요ㅋ
제생각엔 직접 해보시는게 가장 빠르지
제생각엔 직접 해보시는게 가장 빠르지 않을까요?^^;;
$ cat /proc/zoneinfo
확인해보시고
malloc하는 프로그램(malloc 만 하시면 안되고 write도 하셔야 하는거 잊지 마세요)
짜보신 다음에(mlock 까지 걸어주시면 금상첨화~)
프로그램 돌린후 다시
$ cat /proc/zoneinfo
각 zone의 변화가 어떻게 되었는지 확인해보시는게 가장 좋은 방법일듯 합니다^^
답글 감사합니다. 이게 참 애매한게 일부러
답글 감사합니다.
이게 참 애매한게 일부러 zone마다 일정 공간을 소비한 후에 해야 되서, 시나리오 짜기가 참 쉽지만은 않네요^^;
아이디어 감사합니다. :-)
man malloc
man malloc 해보시면,
'낙관적인 메모리 할당'은 버그를 가지고 있다...라고 나와있었던걸로 기억됩니다.
메모리 '할당'과 '사용'에 대해서 경고를 하더군요.( 저도 잘은 모르지만... )
------------------ System programmer...^^
댓글 달기