"기억은 책임이 있다"는 것은 정확히 무엇을 의미합니까?

"기억은 책임이 있다"는 것은 정확히 무엇을 의미합니까?

"메모리 점유"는 항상 커밋이 보장되는 메모리를 의미하는 것으로 이해합니다. 즉, VMA의 모든 페이지가 RAM 또는 스왑에 있으므로 모든 페이지를 할당해야 합니다.

그러나 플래그가 cat /proc/self/smaps있는 경우 (출력에서 관련 없는 필드를 생략했습니다):[heap]ac

<addr> rw-p 00000000 00:00 0                          [heap]
Size:                132 kB
Rss:                   8 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         0 kB
Private_Dirty:         8 kB
Referenced:            8 kB
Anonymous:             8 kB
Swap:                  0 kB
THPeligible:    0
VmFlags: rd wr mr mw me ac sd

그러나 VMA의 크기는 132kB인데 8kb만 상주하므로 124kB는 커밋되지 않은 상태로 남아 있습니다.

ac이 경우에는 무엇을 의미합니까? "지역이 책임진다"는 뜻 man proc이라고 하는데 ac정확히 무슨 뜻인지는 모르겠습니다.

답변1

나는 "ac" 매핑된 VMA가 OOM 킬러 가중치에 포함되고 있다고 생각합니다. 예를 들어, glibc 스택 가드는 ac로 표시되지 않으므로 포함되지 않습니다.

관련 정보