Kernel Memory 찾기에 대한 질문 인데요~

hyper9의 이미지

제목을 제대로 쓴건지 좀 헷갈리네요 ..

제가 이해하기로는 Linux의 경우 Kernel Memory라고 불리우는 영역과
User Space영역이 따로 있고, 이들이 서로 겹치지 않는 걸로 알고 있는데요..
(틀리면 지적해 주시면 감사하겠습니다 ~ ^^)

예를 들면 자기가 사용하는 Linux Desktop에서,,,저의 경우는 2GB의 Memory를
사용하고 있는데요,,

어느 정도의 양이 Kernel Memory로 할당되어 있는지, 또 얼마나 User Space에서
사용할 수 있는 양인건지,,어떻게 알아볼 수 있을까요?

그리고 그걸 조정하는 방법은 또 어떤건지도 함께 여쭤보고 싶네요.
조언 부탁드리겠습니다...

바라미의 이미지

커널 메모리와 유저메모리의 비율 조정이라.. 글쎄요..
제가 알기로는 리눅스는 일단 논리주소라는 가상 메모리 주소를 사용합니다. 프로그램에서 사용하는 메모리가 논리주소고, 이 메모리 주소를 커널의 mmu에서 실제 물리주소로 변환하죠.

여기서, 32비트 리눅스 시스템에서는 4기가의 논리주소 영역이 있습니다. 그 논리주소 영역에서 처음부터 3기가 까지의 영역은 프로세스가 사용하는 유저 스페이스 메모리 주소영역이고, 그 다음부터 마지막까지의 1기가는 커널이 사용하는 커널영역으로 간주합니다. 여기서 물론 처음부터 프로세스가 4기가 메모리를 잡아놓고 있다는건 아닙니다. 프로세스가 사용할수 있는 논리주소 영역의 최대값이 3기가 대역이란거죠.

그럼 여기서 시스템은 2기가인데 4기가 영역을 쓴다? 물론 논리주소는 4기가 입니다. 하지만 실제로 사용되는 건 아니죠.
프로세스에 메모리를 할당하면 마지막 위치를 할당한 크기만큼 뒤쪽으로 옮기고 그 안에서 사용하게 되는데, 그 마지막 주소가 메모리의 3기가 되는 위치를 넘어갈수가 없다는거죠.. 그 뒷 주소영역은 커널영역일테니.. 이제 마지막위치(시스템 브레이크)를 옮겼으면, 이제 실제로 메모리에 할당을 해야 될텐데, 그건 시스템의 mmu에서 페이지 단위로 할당을 해줍니다. 이건 마찬가지로 커널 영역도 메모리 할당시 mmu를 이용해서 페이지 단위로 할당을 합니다. 따라서, 논리주소에서 커널영역은 1기가지만, 실제로 커널이 사용하고 있는 양은, 실제 커널이미지의 크기겠죠.
더불어 커널에서 생성된 여러 자료구조나 코드들의 크기도 포함해서요.

그러나 32비트 리눅스에서는 논리주소의 크기는 4기가로 고정되어있고, 유저영역은 3기가 커널영역은 1기가로 고정되어있습니다.;;

http://www.ibm.com/developerworks/kr/library/l-memory/

(틀린부분 있으면 지적해주세요..)

hyper9의 이미지

2GB의 Physical Memory를 가지고 있는 System의 경우는
1GB의 Kernel Memory와 1GB의 User Memory를가지고 있는 셈이 되는 건가요?

그럼,,이 것과,,High Mem, Low Mem은 또 어떻게 연결해서 이해를
해야하는 걸까요?

Low Mem은 1GB까지 올라가지 않는 것 같던데요..
그럼,,
Low Mem의 일부와 High Mem의 일부가 Kernel Memory를 구성하게 되는 걸까요?
조언 부탁 드립니다..감사합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.