lecture 9 buddy allocator - skkunyx.skku.ac.kr/wp-content/uploads/2015/03/lecture-9... · 2015. 5....

17
17 1 Embedded Software Lab. Embedded Software Lab Daejun Park, Eunsoo Park Lecture 9 Buddy Allocator

Upload: others

Post on 01-Feb-2021

5 views

Category:

Documents


0 download

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