말감로그

demand zero memory 본문

이론/운영체제

demand zero memory

habbn 2024. 2. 15. 13:26
728x90

demand zero memory

demand zero memory는 필요할 때 (demand) 할당하고 0으로 초기화해주는(zero) 메모리를 말한다.

 

리눅스의 메모리 시스템은 매우, 최대한 게으른 방식으로 작동하도록 되어있다.

어떤 자원을 요청하거나 동작을 요청했을 때, 그것이 정말 필요해질 때까지 실제 자원을 할당하거나 동작을 실행하지 않는다는 것을 의미한다.

-> 메모리 사용 효율성이 향상되고, 시스템 자원을 절약할 수 있다.

 

즉, 우리(user program)가 kernel에게 메모리를 할당해달라고 요청하면(sbrk) kernel은 거의 아무것도 하지 않고(특정한 VM 영역이 할당되었다는 최소한의 표시만 해두고) 우리에게 할당이 끝났다고 알려준다.

-> 실제 메모리는 할당되지 않은 상태로 남아있게 됨.

 

이렇게 되면 유저는 메모리가 할당된 줄 알고 해당 주소에 뭔가를 쓰거나 읽을텐데, 처음 읽거나 쓰려고 하는 순간 실제 메모리(페이지)가 할당되어있지 않기 때문에 page fault가 발생할 것이고 그제서야 kernel은 사용하지 않는 메모리(페이지)를 할당하고 , 그 페이지를 0으로 채운 뒤에, 유저가 원래 하려고 했던 명령어를 다시 실행하게 된다.

 

따라서 "demand-zero memory"는 힙 영역이 초기화되지 않은 상태로 시작되어, 프로그램이 메모리를 필요로 할 때 실제로 사용되기 전까지 초기화되지 않은 상태를 유지하며, 메모리 사용 효율성을 높이는 것을 의미한다.

 

 

출처

 

[SW 정글 45일차] segregated list 구현과 demand-zero memory

오늘은 지난 번에 계속해왔던 explicit dynamic allocator구현에서 free block list를 구현할 때 implicit list, explicit list를 사용하여 구현했었고 이번에는 segregated list를 사용해서 구현해보려고 한다. 1. segregat

straw961030.tistory.com

 

728x90