Presentation is loading. Please wait.

Presentation is loading. Please wait.

중요 ! memory region 은 물리적으로 쓸 수 있는 영 역을 설정한 것이고, reserved region 은 사용하지 말아야 할 부분 을 설정한 것입니다. kernel 이 사용하는 영역을 reserved 영역으로 설정하였습니다. -> 이 내용은 1/10 스터디를.

Similar presentations


Presentation on theme: "중요 ! memory region 은 물리적으로 쓸 수 있는 영 역을 설정한 것이고, reserved region 은 사용하지 말아야 할 부분 을 설정한 것입니다. kernel 이 사용하는 영역을 reserved 영역으로 설정하였습니다. -> 이 내용은 1/10 스터디를."— Presentation transcript:

1 중요 ! memory region 은 물리적으로 쓸 수 있는 영 역을 설정한 것이고, reserved region 은 사용하지 말아야 할 부분 을 설정한 것입니다. kernel 이 사용하는 영역을 reserved 영역으로 설정하였습니다. -> 이 내용은 1/10 스터디를 하면서 아직까지 는 불확실한 내용이라 판단했습니다.

2 흐름 memblock_add_region 함수 -> memblock_double_array 함수 -> memblock_find_in_range 함수 -> memblock_find_in_range_node 함수 -> for_each_free_mem_range_reverse 매크로 -> __next_free_mem_range 함수

3 Case 1) reserved 가 memory 에 포함되서 겹치는 경우 1)mi, ri 를 이용한 이중 for 문 Step 1) mi = 2, ri = 2 Reserved regions cnt = 2 [0] Bas e Size … [1] Bas e Size … Memory regions cnt = 3 [0] Bas e Size … [1] Bas e Size … [2] Bas e Size … m_start m_end r_end r_start out_endout_start out_start(this_start) out_end(this_end)

4 Case 2) reserved 가 앞에서 겹치는 경우 1)mi, ri 를 이용한 이중 for 문 snapshot Step 1) mi = 2, ri = 2 Reserved regions cnt = 2 [0] Bas e Size … [1] Bas e Size … Memory regions cnt = 3 [0] Bas e Size … [1] Bas e Size … [2] Bas e Size … m_start r_start r_end out_start(this_start) out_end(this_end) m_end

5 Case 3) reserved 가 뒤에서 겹치는 경우 1)mi, ri 를 이용한 이중 for 문 snapshot Step 1) mi = 2, ri = 2 Reserved regions cnt = 2 [0] Bas e Size … [1] Bas e Size … Memory regions cnt = 3 [0] Bas e Size … [1] Bas e Size … [2] Bas e Size … m_start m_end r_startr_end 두 번째 for 문의 두 번째 if 문 (m_end > r_start) 에 걸리지 않기 때문에 For 문 그대로 진행되고 ri-- 됨

6 Case 3) reserved 가 뒤에서 겹치는 경우 1)mi, ri 를 이용한 이중 for 문 snapshot Step 2) mi = 2, ri = 1 Reserved regions cnt = 2 [0] Bas e Size … [1] Bas e Size … Memory regions cnt = 3 [0] Bas e Size … [1] Bas e Size … [2] Bas e Size … m_end r_start r_end m_start out_start(this_start) out_end(this_end)

7 memblock_find_in_range_node 함수 for_each 문 변환 for (i = (u64)ULLONG_MAX, __next_free_mem_range_rev(&i, nid, this_start, this_end, nid) ; i != (u64)ULLONG_MAX ; __next_free_mem_range_rev(&i, nid, this_start, this_end, nid)) this_start = clamp(this_start, start, end); this_end = clamp(this_end, start, end); if (this_end < size) continue; cand = round_down(this_end - size, align); if (cand >= this_start) return cand; }


Download ppt "중요 ! memory region 은 물리적으로 쓸 수 있는 영 역을 설정한 것이고, reserved region 은 사용하지 말아야 할 부분 을 설정한 것입니다. kernel 이 사용하는 영역을 reserved 영역으로 설정하였습니다. -> 이 내용은 1/10 스터디를."

Similar presentations


Ads by Google