ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 메모리 가상화 - introduction
    운영체제 2024. 6. 15. 21:22

    CPU 가상화 -> 타임 쉐어링

    메모리 가상화 -> 스페이스 쉐어링

     

    1. Early Systems

    물리 메모리를 그대로 사용함

    메모리에 OS와 하나의 프로그램이 올라감

    프로텍션 X

     

    이슈: 프로그램이 물리 메모리보다 크면?

    개발자가 프로그램을 나눠서 올리고 내리고 반복 => 오버레이

     

    2. Multiprogramming and Time Sharing

    * 멀티 프로그래밍 단어 자체는 메모리 상에 여러 프로세스가 올라간 거

    * 여기에 CPU 가상화까지 타임 쉐어링

    프로텍션 중요, 어떻게 물리 메모리를 잘 나눠줄 것이냐

     

    3. 버추얼 메모리

    가상적인 메모리 공간을 프로세스가 혼자 사용

    프로세스의 개수만큼 버추얼 메모리가 존재

    물리 메모리는 쉐어 / 버추얼 메모리는 독점

     

     

    목표:

    - 사용하기 편해야 함

    - 빨라야 함

    - 프로텍션 (Isolation)

    * 어쨌든 개발자들이 보는 모든 주소는 가상 주소임

     

    Types of Memory

    Static: Code(text), Data

    Dynamic: Heap, Stack

     

     

    CPU 가상화

    - 제한된 직접 수행

    - 특권 명령어, 타이머 인터럽트

     

    메모리 가상화

    - 주소 변환: 성능 좋아야 하고 컨트롤이 되어야 함.. 변환은 하드웨어(MMD), 컨트롤은 OS가(새로운 버추얼 메모리 할당)


    void func() {
        int x = 3000;
        x = x + 3;
    }
    128: movl 0x0(%ebx), %eax
    132: addl $0x03, %eax
    135: movl %eax, 0x0(%ebx)

    어셈블리 코드만 보면 총 5번의 메모리 접근이 있음

    (물리 메모리는 고려하지 않은 경우)

     

    버추얼 메모리 공간을 0~16KB 까지 있다고 가정,

    피지컬 메모리 공간을 0~64KB

    그리고 32~48KB에 프로세스가 올라간다고 가정

     

    주소 변환(가상 주소 -> 물리 주소)

    첫 명령어 주소: 128 -> 32KB + 128

    변수 x : 15KB -> 32KB + 15KB = 47KB

    In general: base address + offset

     

    Base register

    Bound(limit) register

     

    Physical address = base register + virtual address

     

    바운드 레지스터보다 더 큰 주소에 접근하면 세그멘테이션 파울트

     

     

    1. 버추얼 메모리는 배타적으로 가지고, 피지컬 메모리는 공유

    2. 버추얼 메모리는 0부터 시작, 피지컬 메모리는 어디서부터든 실행 가능

    3. 버추얼 메모리 메모리 사이즈와 독립적, CPU 비트에 의해 결정

     

    버추얼 메모리는 컴파일러가 만들어짐 (레이아웃)

    물리 메모리는 OS가 결정

    주소 변환은 하드웨어가 함

     

     

    MMU (Memory management unit)

    주소 변환을 위한 CPU의 일부

    베이스, 바운드 레지스터, 세그멘테이션 관련 레지스터, 페이징 관련 레지스터, TLB, 회로

    * TLB는 주소 변환을 가속하기 위한 캐시

     

    요약

    OS

    메모리 관리, 할당, 프리

    문맥 교환 시 베이스와 바운드 레지스터 교체

    예외 시 처리

     

    HW

    매 실행마다 가상주소 - 물리주소 변환해줘야 함

     

    기법

    1. 연속적

    2. 불연속적 - 세그멘테이션

    3. 불연속적 - 페이징

     

     

     

     

    '운영체제' 카테고리의 다른 글

    Paging (페이징)과 TLB  (0) 2024.06.16
    Segmentation (세그멘테이션)  (0) 2024.06.15
    플래시 메모리과 파일 시스템  (0) 2024.06.15
    Consistency other approaches / Ext2,3,4  (0) 2024.06.15
    Consistency / Journaling  (0) 2024.06.15
Designed by Tistory.