lecture 9 buddy allocator - skkunyx.skku.ac.kr/wp-content/uploads/2015/03/lecture-9... · 2015. 5....
TRANSCRIPT
-
17
1
Embedded Software Lab.
Embedded Software Lab
Daejun Park, Eunsoo Park
Lecture 9 Buddy Allocator
-
17
2
Embedded Software Lab.
Virtual Memory
-
17
3
Embedded Software Lab.
• Physical 메모리 셀들을 Page단위로 관리
• X86 (Intel) Architecture 에서 Page들을 Segment로 관리
• 리눅스에서는 Paging을 사용하고 Memory Region이라는 형태로 지원
• 왜 Paging? 프로세스별로 가상 메모리를 지원하려면 Memory map이 필요! Paging이라는 개념이 없으면 Map Size가 한없이 커짐!
메모리 셀의 가상화
Physical Memory Cells
Paging Unit
Pages
Segmentation Unit
Segments Abstraction
-
17
4
Embedded Software Lab.
• 프로세스는 항상 Virtual Memory를 사용
• 프로세스가 메모리를 할당 받으려면? – Virtual Memory 할당
– Virtual Memory를 사용 시 Demand Paging에 의해 Physical Page 할당 프로세스는 항상 Page단위로 Physical Memory를 할당 받음 예외) Slab – 커널 Object 할당
프로세스가 사용하는 메모리
-
17
5
Embedded Software Lab.
• Physical Memory에 대한 접근은 Page
• Memory에 대한 접근이 굉장히 빈번하므로 메모리를 할당하는 알고리즘의 속도가 중요 Buddy System Allocator
• Slab 역시 Buddy Allocator를 사용하여 page를 할당 받고 해당 Page에서 Object에 대한 메모리를 할당함
메모리 할당은 어떻게?
-
17
6
Embedded Software Lab.
Buddy Allocator
-
17
7
Embedded Software Lab.
• 간이 Buddy Allocator의 구현
• 전체 Page Frame수 : 16
• 초기 Free List 및 메모리 상태
실습
4
3
2
1
0
0
• 실습내용 – 다음 각각의 커맨드 이후의 Free List 상태 출력
– alloc(5p), alloc(1p), alloc(2p), alloc(2p), alloc(1p), alloc(1p), free(10), free(12), free(14), free(0)
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Free Allocated
-
17
8
Embedded Software Lab.
실습
4
3
2
1
0
8
alloc(5p)
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Free Allocated
-
17
9
Embedded Software Lab.
실습
4
3
2
1
0
12
alloc(5p), alloc(1p)
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Free Allocated
10
9
-
17
10
Embedded Software Lab.
실습
4
3
2
1
0
12
alloc(5p), alloc(1p), alloc(2p)
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Free Allocated
9
-
17
11
Embedded Software Lab.
실습
4
3
2
1
0
14
alloc(5p), alloc(1p), alloc(2p), alloc(2p)
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Free Allocated
9
-
17
12
Embedded Software Lab.
실습
4
3
2
1
0
14
alloc(5p), alloc(1p), alloc(2p), alloc(2p), alloc(1p)
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Free Allocated
-
17
13
Embedded Software Lab.
실습
4
3
2
1
0 15
alloc(5p), alloc(1p), alloc(2p), alloc(2p), alloc(1p), alloc(1p)
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Free Allocated
-
17
14
Embedded Software Lab.
실습
4
3
2
1
0 15
alloc(5p), alloc(1p), alloc(2p), alloc(2p), alloc(1p), alloc(1p), free(10)
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Free Allocated
10
-
17
15
Embedded Software Lab.
실습
4
3
2
1
0 15
alloc(5p), alloc(1p), alloc(2p), alloc(2p), alloc(1p), alloc(1p), free(10), free(12)
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Free Allocated
10 12
-
17
16
Embedded Software Lab.
실습
4
3
2
1
0 15
alloc(5p), alloc(1p), alloc(2p), alloc(2p), alloc(1p), alloc(1p), free(10), free(12), free(14)
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Free Allocated
10 12
14
14
12
-
17
17
Embedded Software Lab.
실습
4
3
2
1
0
alloc(5p), alloc(1p), alloc(2p), alloc(2p), alloc(1p), alloc(1p), free(10), free(12), free(14), free(0)
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Free Allocated
10
12
0