슬랩 할당자에서 cache_grow에 대한 질문

jwpark0921의 이미지

안녕하세요. 리눅스 커널에 대한 공부를 하고있는 학생입니다.
요즘 메모리 관리에서 슬랩 할당자에 대한 공부를 하고 있습니다.
페이지, 캐시, 슬랩, 객체... 이런 것들의 엮이고 엮이는 것을 이해하려니 머리에 쥐가나네요...
제가 드리고 싶은 질문은 슬랩할당자에서 캐시라는 것이 물리 메모리의 특정 부분에서 연속적인 공간을 캐시로 미리 할당한 다음 객체가 필요할때마다 이 캐시를 사용해서 객체를 할당한다고 알고 있습니다.
그런데 만약에 객체의 개수가 갑자기 많아져서 캐시를 성장시킬 필요성이 있는데 성장시킬 부분이 이미 다른 용도로 할당되어 있으면 어떻게 되는 건가요???
제가 생각해본 바로는 불연속적인 특정 위치에 할당하고 슬랩 리스트 연결을 해주는 것이라는 생각뿐이거든요... 소스 코드 열심히 찾아봐도 해당 코드가 어디있는지 감을 잡지도 못하겠습니다.
많은 분들의 도움 부탁드립니다. ^^

declspec의 이미지

불연속적인 위치에 할당하고 슬랩 리스트 연결을 해주는건 왜 문제라고 생각하시죠?
OS 구현나름이지만 범용 PC 같은 환경에서는 그런식으로 구현해서 크게 문제될건 없지 않을까요
연속적인 물리메모리가 필요한 상황은 DMA 를 사용할때 말고는 별로 없으니까요

자기실력이 좋다고 느껴지는건 공부를 안하고 있다는 신호.

jwpark0921의 이미지

밤새도록 코드 후벼파보니깐 사실 kmem_cache_create() 함수를 호출할 시에는 캐시 디스크립터만 생성되어있지 처음부터 특정 공간을 할당받는건 아니었네요.
실제 메모리 할당은 슬랩의 생성과 해지에 따라 발생한다는 것을 알았습니다. 공간도 불연속적이라는 것도 찾았네요.
제시해주신 의견이 많이 도움이 되었습니다.
다만 제가 실력이 좋다고 느낀건 아니고 꽤 오랜 시간 후벼팠는데도 답이 안나와서 실력자분들께 여쭤볼려고 한거 뿐입니다. ㅠㅠ

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.