ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [WEEK11] 정글 5기 - 정글 끝까지(PintOS) - Virtual Memory
    정글 크래프톤 5기 회고 및 정리/WIL 2024. 5. 30. 16:51

    - 공부 키워드 참조 검색어

    Project03 : Virtual Memory

    1. Virtual memory management  
     paging - 가상 메모리 관리의 핵심 기법
    - 프로세스의 가상 주소 공간을 물리 메모리와 매핑하여 효율적이고 안전한 메모리 관리를 가능하게 한다.
    - 이를 통해 메모리 사용의 효율성을 높이고, 프로세스 간의 메모리 보호를 제공한다.

    개념
    1. 페이지
        · 가상 메모리 블록
    2. 페이지 프레임
        · 물리 메모리에서 페이지가 매핑되는 고정된 크기의 블록
    3. 페이지 테이블
        · 가상 주소를 물리 주소로 매핑하는 데이터 구조

    작동원리
    1. 주소 변환
        · CPU가 가상 주소를 생성하면, 가상 주소는 페이지 번호와 오프셋으로 나뉜다.
    2. 페이지 폴트
        · 가상 페이지가 물리 메모리에 존재하지 않는 경우 ㅂ랄생
     virtual page - 가상 주소 공간의 고정된 크기 단위
    - 각 프로세스는 독립적인 가상 주소 공간을 가지고 있으며, 이 가상 주소. 공간은 여러 개의 가상 페이지로 나뉜다.
    - 가상 페이지는 물리 메모리와의 매핑을 통해 실제 메모리에 접근할 수 있도록 한다.
     physical frame - 물리 메모리의 고정된 크기 단위
    - 물리 프레임은 가상 메모리 시스템에서 가상 페이지와 매핑되어 가상 주소를 물리 주소로 변환하는데 사용된다.
     page table &
    supplementary page table
    Page Table
    - 페이지 테이블은 가상 주소와 물리 주소 간의 매핑을 관리하는 데이터 구조이다.
    - 가상 메모리 시스템에서 각 프로세스는 독립적인 가상 주소 공간을 가지고 있으며, 이 주소 공간은 물리 메모리로 매핑되어야 한다.

    Supplementary Page Table
    - 보조 페이지 테이블은 추가적인 페이지 테이블 정보를 관리하기 위해 사용되는 데이터 구조이다.
    - 이는 주로 고급 메모리 관리 기법을 지원하고, 다양한 메모리 요구사항을 충족시키기 위해 사용된다.
    - 일반적으로 운영체제 커널 내에서 관리된다.
     Memory Management Unit
    (MMU)
    - MMU는 컴퓨터 시스템에서 CPU와 메모리 사이의 인터페이스 역할을 하는 하드웨어 구성요소이다.
    - MMU는 가상 메모리와 실제 메모리 간의 주소변환을 처리하며, 메모리 보호 기능을 제공하는데 중요한 역할을 한다.
     Translation Lookaside Buffer
    (TLB)
    - 아래 공부 키워드 참조 -
    2. Page type - 페이지 타입은 메모리 관리와 가상 메모리 시스템에서 사용되는 페이지의 종류를 의미한다.
    - 페이지 타입은 페이지의 목적, 상태 또는 내용에 따라 분류된다.
    - 다양한 페이지 타입을 이해하면 메모리 할당, 보호 및 공유를 효과적으로 관리할 수 있다.
     Uninitialized page - Uninitialized page는 메모리 페이지가 할당되었지만, 그 내용이 아직 초기화되지 않은 상태를 말한다.
    - 이러한 페이지는 아직 데이터를 쓰거나 읽은 적이 없기 때문에 명확한 상태나 값이 없는 상태이다.
     Lazy initialization - 지연 초기화는 객체나 리소스의 초기화를 필요할 때까지 미루는 프로그래밍 기법이다.

    - Uninitialized page에서의 Lazy Initialization은 가상 메모리 관리 기법 중 하나로, 메모리 접근 시점까지 페이지를 초기화하지 않고, 초기화를 지연시키는 방법을 의미한다.
    - 이는 페이지가 사용될 때까지 초기화를 미룸으로써 시스템 자원을 효율적으로 활용하고 성능을 개선하는 데 도움이 된다.
     Anonymous page - 운영체제에서의 Anonymous page는 이름이 없는 페이지를 가리키는 용어이다.
    - 이름이 없다는 것은 해당 페이지가 파일 시스템과 연관되지 않는다는 것을 의미한다.
        · 즉, 디스크에 저장된 파일로부터 로드되지 않는 페이지를 의미한다.

    - 이러한 Anonymous page는 주로 프로세스의 가상 메모리 공간에서 사용된다.
    - 예를 들어, 프로세스의 힙이나 스택과 같은 동적으로 할당되는 메모리 영역은 Anonymous page로 할당된다.
    - 이러한 페이지는 일반적으로 프로세스의 메모리 요구 사항을 지원하기 위해 동적으로 생성되며, 프로세스가 종료되면 메모리에서 해제된다.
     stack growth - Anonymous page에서의 stack growth는 프로세스의 스택이 필요에 따라 동적으로 확장되는 과정을 말한다.
    - 여기서 "Anonymous page"는 프로세스의 가상 메모리 공간에 할당된 페이지 중에서 이름이 없는 페이지를 가리킨다.
    - 스택은 일반적으로 가장 높은 주소에서 시작하여 아래로 내려가는 방향으로 할당되며, 스택 프레임이 추가될 때마다 스택의 크기를 증가시켜야 한다.
     file-backed page
    - file-backed page는 파일 시스템에 연관된 페이지를 가리키는 용어이다.
    - 즉, 이러한 페이지는 디스크에 저장된 파일에서 데이터를 읽거나 쓸 수 있는 메모리 페이지를 의미한다.

    - 일반적으로 파일 시스템의 파일은 디스크에 저장되어 있고, 이러한 파일을 읽거나 쓰기 위해 메모리에 매핑될 수 있다.
    - 이때 파일의 내용은 메모리의 페이지로 로드되어 파일의 데이터를 읽거나 쓸 . 수있다.
    - 이렇게 메모리에 로드된 파일의 페이지를 file-backed page라고 한다.
     mmap syscall - mmap()은 메모리 매핑을 위한 시스템 호출이다.
    - 이 시스템 호출은 파일이나 디바이스를 프로세스의 주소 공간에 매핑하여 파일을 메모리에 직접 읽고 쓸 수 있게한다.
    - 이것은 대용량 파일을 조각으로 나눠 읽거나, 메모리 매핑된 파일에 대한 수정을 저장하는 등의 작업을 수행하는 데 유용하다.
    3. Swap in/out 1. Swap in
    - 프로세스가 실행되기 위해 필요한 데이터나 코드가 물리적인 메모리(RAM)에 없고 스왑 영역(디스크의 특정 영역)에 있을 때, 해당 데이터나 코드를 스왑 영역에서 메모리를 읽어 오는 것을 "swap in"이라고 한다.
    - 이 과정은 필요한 데이터를 메모리로 로드하여 프로세스가 실행될 수 있도록 하는 것이다.

    2. Swap out
    - 메모리에 올라가 있는 프로세스나 데이터가 사용되지 않고 있다면, 운영체제는 해당 데이터나 프로세스를 메모리에서 스왑 영역으로 이동시킨다. 이를 "swap out"이라고 한다.
    - 이렇게 하면 더 많은 물리적 메모리를 확보하고 다른 프로세스에 할당할 수 있다.
     page replacement policy
    - 페이지 교체 정책은 가상 메모리 시스템에서 사용되는 알고리즘
    - 메모리에 있는 페이지 중에서 어떤 페이지를 교체할지를 결정하는 방법을 말한다.
    - 메모리에 적재된 페이지 중에 필요한 페이지가 메모리에 없는 경우, 페이지 교체 정책은 어떤 페이지를 교체하여 새로운 페이지를 메모리에 적재할지 결정한다.
     swap disk
    - 아래 공부 키워드 참조 -
    4. Copy on Write (COW) - 운영체제나 프로그래밍 언어에서 메모리 관리 기술 중 하나이다.
    - 이 기술은 공유되는 자원을 효율적으로 활용하면서 동시에 데이터의 일관성을 유지하기 위해 사용된다.

    1. 포크(fork) 처리
    - 운영체제에서 프로세스가 포크될 때, 부모 프로세스와 자식 프로세스는 처음에는 같은 메모리 공간을 공유한다.
    - 그러나 한 쪽에서 데이터를 수정하면 변경된 데이터를 다른 쪽과 공유할 수 없게된다.
    - 이때 COW를 사용하여, 변경이 필요한 경우, 해당 페이지를 새로운 메모리 공간으로 복사하여 수정한다.
    - 이로 인해 부모 프로세스와 자식 프로세스가 데이터를 공유하지만 변경 사항은 독립적으로 유지된다.

    2. 스냅샷(Snapshot)
    - 가상화 환경에서 스냅샷을 만들 때 사용된다.
    - 스냅샷은 가상 머신의 현재 상태를 저장하는데, 이때 COW를 사용하여 원본 상태와 스냅샷의 사앹를 비교하여 변경된 부분만 별도로 저장한다.

    공부 키워드

    1. Virtual Memory

    개요 - 운영체제에서의 가상 메모리는 시스템 메모리 관리를 위한 핵심적인 개념이다.
    - 가상 메모리는 물리적 메모리(주로 RAM)의 용량을 초과하는 프로그램을 실행할 수 있게 해주는 기술이다.
    - 물리적 메모리와 보조 저장 장치(예: 하드 드라이브, SSD)를 함께 사용하여, 프로그램에 더 큰 메모리 공간처럼 보이게 한다.
    가상 메모리  1. 정의
    - 가상 메모리는 물리적 메모리의 한계를 초과하는 메모리 요구를 처리하기 위해 운영체제가 사용하는 기술
    - 이는 프로그램에게 더 큰 메모리 공간을 제공하는 것처럼 보이게 하며, 실제로는 물리적 메모리와 디스크 기반의 스왑 공간을조합해 사용한다.

    2. 목적
    - 가상 메모리는 메모리 관리의 유연성을 제공하고, 프로그램이 물리적 메모리보다 더 많은 메모리를 사용할 수 있도록 한다.
    - 이는 메모리의 효율적 사용과 프로그램 간 격리, 메모리 보호 등을 가능하게 한다.
    작동방식 1. 페이징과 세그먼테이션
    - 가상 메모리는 주로 페이징(paging) 또는 세그먼테이션(segmentation) 기법을 사용한다.
    - 이는 가상 주소 공간을 물리적 메모리의 페이지나 세그먼트로 매핑하는 과정이다.

    2. 주소 변환
    - 프로그램은 가상 주소를 사용한다.
    - CPU는 가상 주소를 물리적 주소로 변환하는데, 이 때 페이지 테이블이나 세그먼트 테이블이 사용된다.

    3. 스와핑
    - 필요에 따라, 물리적 메모리에 없는 페이지(또는 세그먼트)는 디스크의 스왑 공간에서 로드된다.
    - 이 과정에서 페이지 폴트가 발생하고, 운영체제는 해당 페이지를 메모리로 가져온다.
    장단점 장점
    - 메모리 활용 향상
        · 물리적 메모리 용량을 효과적으로 확장한다.
    - 프로세스 격리
        · 각 프로세스가 독립된 메모리 공간을 가지므로, 프로세스 간 메모리 충돌을 방지한다.
    - 메모리 보호
        · 각 프로세스가 다른 프로세스의 메모리에  접근하는 것을 방지한다.

    단점
    - 성능 저하
        · 스왑 공간을 사용할 때 발생하는 입출력은 물리적 메모리보다 느리다.
    - 관리 복잡성
        · 효율적인 가상 메모리 관리는 운영체제에 추가적인 부담을 준다.

     

     2. Page Table

    페이지 테이블 1. 정의
    - 페이지 테이블은 가상 주소를 물리적 주소로 매핑하는 정보를 담고 있는 테이블이다.
    - 각 프로세스는 자신만의 페이지 테이블을 가지고 있으며, 운영체제는 이를 통해 메모리 관리를 수행한다.

    2. 목적
    - 페이지 테이블 의 주된 목적은 가상 메모리 주소를 실제 물리적 메모리 주소로 변환하는 것이다.
    - 이를 통해 프로세스는 물리적 메모리의 실제 위치에 상관없이 일관된 주소 공간을 사용할 수 있다.
    작동방식 1. 주소 변환
    - CPU가 가상 주소를 사용하여 메모리에 접근하려 할 때, 페이지 테이블은 이 가상 주소를 물리적 주소로 변환한다.
    - 가상 주소는 페이지 번호와 오프셋으로 구성되며, 페이지 번호는 페이지 테이블에서 해당하는 물리적 페이지 주소를 찾는데 사용된다.

    2. 페이지 테이블 항목
    - 페이지 테이블의 각 항목은 가상 페이지와 연관된 물리적 페이지의 정보를 담고 있다.
    - 이 정보에는 물리적 페이지 번호, 접근 권한, 사용 여부 등이 포함될 수 있다.

    3. 메모리 관리 유닛(MMU)
    - MMU는 주소 변환 과정을 수행하는 하드웨어이다.
    - MMU는 CPU에서 전달된 가상 주소를 페이지 테이블을 사용해 물리적 주소로 변환한다.
    특징 1. 멀티 레벨 페이지 테이블
    - 대규모 가상 주소 공간을 관리하기 위해, 현대 시스템은 종종 멀티 레벨(계층적) 페이지 테이블 사용한다.
    - 이는 메모리 사용 효율성을 개선하고 주소 변환 오버헤드를 줄이는 데 도움된다.

    2. 페이지 폴트
    - 요청된 가상 페이지가 물리적 메모리에 없을 때, 페이지 폴트가 발생한다.
    - 이는 운영체제가 페이지 테이블을 사용하여 페이지를 로드하고 매핑하는 과정을 시작한다.
    중요성 - 페이지 테이블은 프로세스가 사용하는 가상 주소 공간을 물리적 메모리에 효과적으로 매핑함으로써, 메모리 관리의 유연성과 효율성을 크게 향상시킨다.
    - 이는 프로세스 격리, 메모리 보호, 가상 메모리 구현 등에 필수적인 역할을 하며, 현대 컴퓨팅 시스템의 기본적인 요소이다.

     

    3. Translation Lookaside Buffer (TLB)

    TLB 1. 정의
    - TLB는 가상 주소를 물리적 주소로 변환하는 과정에서 사용되는 주소 매핑을 저장하는 작은 메모리 캐시이다.
    - 이는 메모리 관리 유닛(MMU)에 의해 관리된다.

    2. 목적
    - TLB의 주된 목적은 페이지 테이블 조회를 최소화하여 주소 변환 과정의 효율성을 높이는 것이다.
    - 페이지 테이블에 접근하는 것은 비용이 많이 드는 작업이므로, TLB는 자주 사용되는 매핑을 빠르게 제공함으로써 이 비용을 줄인다.
    작동방식 1. 주소 변환
    - CPU가 메모리 접근을 시도할 때, 먼저 TLB에서 가상 주소에 해당하는 물리적 주소를 조회한다.

    2. TLB 히트와 미스
    - 해당 가상 주소 매핑이 TLB에 있으면 'TLB 히트'라고 하며, 변환은 매우 빠르게 이뤄진다.
    - 매핑이 없는 경우 'TLB 미스'가 발생하고, 이때는 페이지 테이블을 조회해야 한다.

    3. 페이지 테이블 조회
    - TLB 미스가 발생하면, MMU는 페이지 테이블을 사용하여 가상 주소를 물리적 주소로 변환한다.
    - 이후, 이 매핑은 TLB에 저장되어 향후 접근을 빠르게 할 수 있도록 한다.
    특징 1. 속도와 효율성
    - TLB는 매우 빠른 속도로 주소 변환을 수행하므로, 메모리 접근 시간을 크게 단축시킨다.

    2. 한정된 크기
    - TLB는 제한된 크기를 가지고 있으며, 일반적으로 가장 최근 또는 가장 자주 사용된 주소 매핑만을 저장한다.

    3. 컨텍스트 스위치 시 처리
    - 프로세스 간 컨텍스트 스위치가 발생할 때, TLB의 내용은 대부분 무효화되거나 새로운 프로세스의 매핑으로 갱신된다.
    중요성 - TLB는 가상 메모리 시스템의 성능을 크게 향상시키는 핵심 요소이다.
    - 특히, 메모리 접근이 빈번한 시스템에서 TLB의 역할은 매우 중요하며, 현대 컴퓨터 아키텍처에서 기본적인 구성 요소로 간주된다.
    - TLB를 통해 시스템은 더 높은 성능과 효율성을 달성할 수 있다.

     

    4. Page Fault

    페이지 폴트 1. 정의
    - 페이지 폴트는 프로세스가 참조하려는 가상 메모리 페이지가 현재 물리적 메모리(RAM)에 로드되어 있지 않을 때 발생한다.
    - 이는 메모리 접근 시도 중에 발생하는 인터럽트 또는 예외 상황이다.

    2. 목적
    - 페이지 폴트 매커니즘은 프로세스가 필요로 하는 페이지를 효율적으로 로드하고 관리하는데 필요하다.
    - 이를 통해 운영체제는 물리적 메모리의 한정된 크기에도 불구하고, 프로세스가 더 큰 가상 메모리 공간을 사용할 수 있게 한다.
    작동방식 1. 페이지 폴트 발생
    - 프로세스가 메모리에 접근하려 할 때, 해당 가상 주소에 대응하는 페이지가 물리적 메모리에 없으면 페이지 폴트 발생한다.

    2. 인터럽트 처리
    - 페이지 폴트는 운영체제에 의해 처리되는 인터럽트이다.
    - 운영체제는 이 인터럽트를 받고 현재 CPU의 상태를 저장한 후 페이지 폴트 처리 루틴을 실행한다.

    3. 페이지 로딩
    - 운영체제는 필요한 페이지를 찾아 물리적 메모리에 로드한다.
    - 이 페이지는 디스크의 스왑 영역이나 해당 파일 시스템에서 가져올 수 있다.

    4. 페이지 테이블 업데이트
    - 페이지가 메모리에 로드된 후, 페이지 테이블이 업데이트되어 새로운 매핑 정보를 반영한다.

    5. 프로세스 재개
    - 페이지 로딩이 완료되면, CPU는 원래의 프로세스를 재개한다.
    유형 1. Minor Page Fault
    - 이는 페이지가 메모리 내에 이미 존재하지만, 페이지 테이블에 아직 매핑되지 않았을 때 발생한다.

    2. Major Page Fault
    - 이는 페이지가 물리적 메모리에 전혀 존재하지 않고, 디스크에서 로드해야 할 때 발생한다.
    - 이는 더 많은 시간이 소요된다.
    중요성 - 페이지 폴트는 가상 메모리를 효과적으로 관리하는 데 중요한 역할을 한다.
    - 이 매커니즘을 통해 운영 체제는 메모리를 더 효율적으로 사용할 수 있으며, 프로세스 간 메모리 공유, 메모리 보호, 디스크 스왑 등의 기능을 구현할 수 있다.
    - 그러나 과도한 페이지 폴트는 시스템 성능 저하(스래싱)로 이어질 수 있어, 효율적인 메모리 관리가 중요하다.

     

    5. Lazy Loading

    기본 개념 1. 메모리 관리
    - 운영체제는 컴퓨터의 메모리를 관리한다.
    - 이는 프로세스가 필요로 하는 메모리를 할당하고, 더 이상 필요하지 않은 메모리를 회수하는 과정을 포함한다.

    2. 페이지와 스와핑
    - 대부분의 현대 운영체제는 페이징(paging) 기법을 사용해 메모리를 관리한다.
    - 이는 메모리를 고정된 크기의 '페이지'로 분할하고, 필요에 따라 이 페이지들을 디스크와 메모리 간에 이동시키는(swapping) 것을 의미한다.
    Lazy Loading 1. 정의
    - Lazy Loding은 프로그램이 실제 해당 데이터를 필요로 할 때까지 데이터의 로딩을 지연시키는 기법이다.
    - 주로 메모리 관리에 사용되며, 프로그램이 시작할 때 필요한 모든 데이터를 메모리에 즉시 로드하지 않고, 필요한 순간에만 해당 부분을 로드한다.

    2. 목적
    - 이 기법의 주된 목적은 메모리 사용의 효율성을 높이고, 시스템의 전반적인 성능을 개선하는 것이다.
    - 메모리는 한정된 자원이므로, 모든 데이터를 미리 로드하면 불필요한 메모리 사용으로 이어질 수 있다.
    작동방식 1. 디멘드 페이징(Demand Paging)
    - 이는 lazy loading의 대표적인 예이다.
    - 프로세스가 페이지에 접근하려 할 때, 해당 페이지가 메모리에 없으면 '페이지 폴트'가 발생한다.
    - 이후 운영체제는 필요한 페이지를 디스크에서 메모리에 로드한다.

    2. 리소스 사용 최적화
    - 프로세스가 실제로 사용하지 않는 페이지는 메모리에 로드되지 않는다.
    - 이는 시스템 리소스의 낭비를 줄이고, 사용 가능한 메모리를 더 효율적으로 사용할 수 있게 한다.
    장단점 1. 장점
    - 메모리 사용 최적화
    - 초기 로딩 시간 감소
    - 시스템 자원의 효율적 사용

    2. 단점
    - 페이지 폴트 발생 시 성능 저하 가능성
    - 관리가 복잡해질 수 있음
    결론 - Lazy loading은 메모리 관리와 시스템 성능 최적화를 위한 중요한 기법이다.
    - 이는 프로그램의 효율성과 반응성을 높이는 데 기여하며, 운영체제의 중요한 기능 중 하나로 간주된다.
    - 그러나 이 기법을 사용할 때는 성능 저하의 가능성과 복잡성 증가라는 점을 고려해야 한다.

     

    6. Page Replacement Policy

    개요 - 운영체제에서의 페이지 교체 정책은 시스템 메모리 관리의 중요한 부분으로, 메모리가 가득 찼을 때 어떤 페이지를 교체할지 결정하는 방법론이다.
    - 이 정책은 메모리의 효율적 사용과 시스템 성능 최적화에 중요한 역할을 한다.
    - 여기에는 여러 가지 다른 정책이 있으며, 각각의 장단점과 사용 상황이 다르다.
    페이지 교체 정책 1. 페이징과 페이지 폴트
    - 현대 운영체제는 페이징 시스템을 사용하여 메모리를 관리한다.
    - 프로세스가 요구하는 메모리 페이지가 물리적 메모리가 없을 때, 페이지 폴트가 발생한다.

    2. 페이지 교체의 필요성
    - 메모리에 자리가 없는 경우, 새로운 페이지를 로드하기 위해 기존의 페이지를 교체해야 한다.
    - 이때 어떤 페이지를 교체할지 결정하는 것이 페이지 교체 정책의 역할이다.

    주요 페이지 교체 알고리즘
    FIFO
    (First-In, First-Out)
    - 가장 오래 전에 메모리에 로드된 페이지를 교체한다.
    - 구현이 간단하지만, 오래된 페이지가 여전히 활발히 사용되고 있을 수 있는 단점이 있다.

    - 장점
        · 구현이 단순
    - 단점
        · 빈번히 사용되는 페이지를 교체할 수 있음
    LRU
    (Least Recently Used)
    - 가장 오랫동안 사용되지 않은 페이지를 교체한다.
    - 자주 사용되는 페이지를 메모리에 유지하는데 효과적이지만, 구현이 복잡하고 비용이 더 든다.

    - 장점
        · 실제 사용 패턴을 잘 반영
    - 단점
        · 구현 복잡성 및 높은 오버헤드
    Optimal Page
    Replacement
    - 미래에 가장 오랫동안 사용되지 않을 페이지를 교체한다.
    - 이상적인 성능을 제공하지만, 실제 구현은 불가능하므로 주로 이론적인 비교 분석에 사용된다.

    - 장점
        · 이론적으로 최적의 성능
    - 단점
        · 실제 시스템에서 구현 불가능
    Clock
    (또는 Second Chance)
    알고리즘
    - FIFO와 유사하되, 사용된 페이지에 두 번째 기회를 주어 성능을 개선한다.
    - 간단하면서도 효율적인 중간 해결책을 제공한다. 

    - 장점
        · 간단하고 효율적
    - 단점
        · 최적이나 LRU만큼 효율적이지는 않음

     

    7. Anonymous page

    개요 - 운영체제에서 "익명 페이지"는 특정 파일이나 다른 데이터 소스에 직접 매핑되지 않는 메모리 페이지를 의미한다.
    - 이러한 페이지는 들은 주로 프로세스의 힙이나 스택 영역에 할당되며, 프로세스의 동적 메모리 할당 요청에 응답하여 생성된다.
    - 익명 페이지는 운영체제의 메모리 관리 시스템에서 중요한 역할을 한다.
    익명 페이지 1. 정의
    - 익명 페이지는 파일 시스템상의 파일이나 다른 지속적인 저장소에 백업되지 않은 메모리 페이지를 가리킨다.
    - 이는 데이터의 원래 소스가 없거나, 데이터가 프로그램 실행 중에 동적으로 생성되었을 때 발생한다.

    2. 사용 사례
    - 익명 페이지는 주로 프로세스의 스택과 힙 영역에서 사용된다.
    - 예를 들어, 프로그램이 malloc 같은 메모리 할당 함수를 사용하여 동적으로 메모리를 할당할 때, 운영체제는 이러한 요청을 충족시키기 위해 익명 페이지를 할당한다.
    작동원리 1. 메모리 할당
    - 프로세스가 동적 메모리 할당을 요청하면, 운영체제는 익명 페이지를 할당하여 이 요청을 충족시킨다.

    2. 페이지 폴트 처리
    - 프로세스가 처음으로 익명 페이지에 접근하면 페이지 폴트가 발생한다.
    - 이때 운영체제는 해당 페이지를 물리적 메모리에 매핑하고, 필요에 따라 초기화한다.

    3. 스왑 아웃
    - 시스템 메모리가 부족할 때, 운영체제는 익명 페이지를 스왑 공간(swap space)으로 이동시킬 수 있다.
    - 이는 물리적 메모리를 확보하기 위한 조치이다.
    특징 1. 비지속성
    - 익명 페이지는 디스크에 있는 파일과 연결되지 않으므로, 시스템이 종료되면 해당 데이터는 사라진다.

    2. 동적 할당
    - 동적 메모리 할당 요청에 대응하여 생성되며, 프로세스의 런타임 동안만 존재한다.

    3. 스왑 가능성
    - 메모리 부족 상황에서 스왑 영역으로 이동될 수 있으며, 이는 성능에 영향을 줄 수 있다.
    중요성 - 익명 페이지는 현대 운영체제에서 프로세스의 메모리 요구사항을 효율적으로 관리하는데 중요한 역할을 한다.
    - 이들은 프로세스가 필요로 하는 메모리를 유연하게 할당하고 관리할 수 있게 해줌으로써, 시스템의 성능과 자원 활용도를 최적화하는데 기여한다.

     

    8. Swap Disk

    개요 - 운영체제 관점에서의 스왑 디스크는 주 메모리(RAM)가 가득 찼을 때 사용되는 보조 저장 공간이다.
    - 이는 주로 하드 드라이브나 SSD 같은 보조 저장 장치에 할당되며, 프로세스의 메모리 페이지를 임시로 저장하는데 사용된다.
    - 스왑 디스크는 메모리 관리와 시스템 성능 최적화에서 중요한 역할을 한다.
    스왑 디스크 1. 정의
    - 스왑 디스크는 물리적 메모리가 부족할 때 사용되는 디스크 기반의 저장공간이다.
    - 이 공간은 메모리의 일부 페이지를 임시로 저장하는데 사용하며, 이를 '스와핑'이라고 한다.

    2. 목적
    - 스왑 디스크의 주된 목적은 시스템의 물리적 메모리가 부족할 때 추가적인 가상 메모리 공간을 제공하는 것이다.
    - 이를 통해 시스템은 더 많은 프로세스와 데이터를 동시에 처리할 수 있다.
    작동 방식 1. 스와핑(Swapping)
    - 메모리가 가득차면, 운영체제는 가장 적게 사용되는 메모리 페이지들을 스왑 디스크로 이동시킨다.
    - 이 과정을 스와핑이라고 하며, 이를 통해 메모리에서 더 중요한 데이터를 처리할 수 있게 된다.

    2. 페이지 교체
    - 스왑 디스크에 저장된 페이지가 다시 필요하게 되면, 운영체제는 해당 페이지를 메모리로 다시 로드한다.
    - 이 과정에서 다른 페이지가 스왑 디스크로 이동될 수 있다.

    3. 스왑 공간 관리
    - 운영체제는 스왑 공간을 효율적으로 관리하기 위해 복잡한 알고리즘을 사용한다.
    - 이는 시스템의 전체 성능에 중요한 영향을 미친다.
    장단점 - 장점
        · 메모리 부족 문제를 완화시킨다.
        · 동시에 실행되는 프로세스의 수를 증가시킬 수 있다.
        · 시스템의 전반적인 유연성을 향상시킨다.


    - 단점
        · 디스크 기반의 스왑은 메모리에 비해 상대적으로 느리다.
        · 과도한 스와핑(Thrashing)은 시스템 성능 저하를 일으킬 수 있다.
    결론 - 스왑 디스크는 운영체제의 메모리 관리 전략의 핵심 부분으로, 메모리가 제한된 시스템에서 매우 중요하다.
    - 그러나 스왑 디스크의 사용은 성능 저하를 초래할 수 있으므로, 시스템 설계와 구성 시 적잘한 균형이 필요하다.
    - 최적의 성능을 위해서는 충분한 물리적 메모리와  효율적인 스왑 관리 전략이 중요하다.

     

    9. File-backed Page

    개요 - 운영체제에서의 "File-backed Page"는 파일 시스템에 있는 특정 파일에 직접 매핑되는 메모리 페이지
    - 이러한 페이지들은 프로세스가 파일의 내용을 메모리에 매핑할 때 생성되며, 이는 메모리 매핑된 파일 입출력(I/O)에 사용된다.
    - File-backed Page는 운영체제의 메모리 관리와 파일 시스템과의 상호작용에서 중요한 역할을 한다. 
    File-backed
    Page
    1. 정의
    - File-backed Page는 파일의 내용을 메모리에 직접 반영하는 메모리 페이지이다.
    - 이는 파일 내용을 프로세스의 주소 공간에 매핑하여, 파일 데이터에 대한 빠른 접근과 수정을 가능하게 한다.

    2. 사용사례
    - 가장 흔한 예는 메모리 매핑된 파일 입출력이다.
    - 프로그램이 mmap과 같은 시스템 호출을 사용하여 파일을 메모리에 매핑하면, 운영체제는 해당 파일의 내용을 메모리 페이지로 매핑한다.
    작동원리 1. 메모리 매핑
    - 프로세스가 파일을 메모리에 매핑하면, 운영체제는 파일의 내용을 메모리 페이지에 매핑한다.
    - 이 페이지들은 파일의 실제 데이터를 반영한다.

    2. 페이지 폴트 처리
    - 프로세스가 처음으로 File-backed Page에 접근하면 페이지 폴트가 발생할 수 있다.
    - 이 경우, 운영체제는 해당 파일의 적절한 부분을 읽어 메모리에 로드한다.

    3. 데이터 동기화
    - 프로세스가 이 페이지들을 변경하면, 변경 사항은 나중에 파일 시스템에 다시 쓰여질 수 있다.
    - 이를 통해 파일과 메모리 간의 데이터 동기화가 이뤄진다.
    특징 1. 지속성
    - File-backed Page는 디스크에 저장된 파일과 직접 연결되어 있으므로, 데이터는 지속성을 가진다.

    2. 효율적인 파일 접근
    - 이 방식을 사용하면, 파일 입출력을 위한 시스템 호출의 오버헤드 없이 파일 데이터에 접근하고 수정할 수 있다.

    3. 동기화 옵션
    - 자동 또는 수동으로 파일과 메모리 간의 동기화를 관리할 수 있다.
    중요성 - File-backed Page는 파일 데이터를 효율적으로 메모리에 매핑하고, 프로세스가 파일 데이터에 대해 빠르고 직접적인 접근을 가능하게 함으로써, 성능 향상과 시스템 자원의 효율적 사용에 기여한다.
    - 이는 특히 대용량 파일 처리와 고성능 파일 시스템에서 중요한 역할을 한다.

     

    10. Direct Memory Access

    개요 - 운영체제의 관점에서 "직접 메모리 접근(Direct Memory Access, DMA)"은 CPU의 개입 없이 주변장치가 시스템 메모리에 직접 데이터를 읽고 쓸 수 있게 하는 하드웨어 기능이다.
    - DMA는 특히 대용량 데이터 전송에 효율적이며, CPU의 부담을 줄여 시스템 성능을 향상시킨다.
    DMA 1. 정의
    - DMA는 CPU를 거치지 않고 주변장치(ex. 하드 드라이브, 네트워크 카드, 사운드 카드 등)가 시스템 메모리에 직접 접근할 수 있도록 해주는 기능이다.

    2. 목적
    - 이 기능의 주된 목적은 CPU의 부담을 줄이고 데이터 전송의 효율성을 높이는 것이다.
    - CPU가 데이터 전송을 관리하는 대신, DMA 컨트롤러가 이 역할을 담당하여 CPU를 다른 작업에 할당할 수 있게 된다.
    작동 방식 1. DMA 컨트롤러
    - DMA 연산은 DMA 컨트롤러라는 특수한 하드웨어에 의해 수행된다.
    - 이 컨트롤러는 주변장치와 메모리 간의 데이터 전송을 관리한다.

    2. 메모리 접근
    - 주변장치가 데이터를 전송할 준비가 되면, DMA 컨트롤러는 메모리 주소를 지정하고 데이터 전송을 시작한다.
    - 이 과정에서 CPU는 관여하지 않는다.

    3. 인터럽트와 완료 신호
    - 데이터 전송이 완료되면, DMA 컨트롤러는 CPU에 인터럽트를 보내 전송이 완료되었음을 알린다.
    - 이를 통해 CPU는 전송된 데이터를 처리할 수 있다.
    장단점 - 장점
        · 효율성 : 대용량 데이터를 처리할 때 CPU의 부담을 줄여준다.
        · 성능 향상 : CPU는 다른 중요한 작업에 집중할 수 있어 전체 시스템 성능이 향상된다.
        · 저지연 : 입출력 장치와 메모리 간의 빠른 데이터 전송을 가능하게 한다.

    - 단점
        · 복잡성 : DMA 컨트롤러의 관리와 구성이 복잡할 수 있다.
        · 자원 충돌 : 메모리 버스의 점유로 인해 다른 장치들의 메모리 접근이 지연될 수 있다.
    결론 - DMA는 시스템의 전체적인 성능과 효율성을 향상시키는 중요한 기능이다.
    - 특히 데이터 집약적인 작업과 입출력이 많은 시스템에서 그 중요성이 두드러진다.
    - 그러나 DMA의 사용은 시스템 설계에 추가적인 고려사항을 요구하며, 메모리 접근과 관련된 자원 관리에 영향을 미친다.

     

     

    출처


    ETC

    1. 페이지 테이블 접근 시 TLB가 어떻게 페이지 테이블의 성능을 향상시키는지 설명하고, TLB miss가 발생하면 시스템이 어떤 과정을 거쳐 메모리에 접근하는지 설명하세요

    - TLB는 자주 사용되는 주소 변환 정보를 빠르게 참조할 수 있도록 하는 캐시 메모리이다.
    - TLB에 원하는 주소 변환 정보가 있으면, 페이지 테이블을 참조하지 않고 바로 물리적 주소를 얻을 수 있어 성능이 향상된다.

    - TLB miss일 때 시스템은 페이지 테이블을 조회하여 물리적 주소를 찾고, 이 정보를 TLB에 업데이트한다.

     

     

    2. 페이징 기법을 사용하는 메모리 관리 시스템에서, 페이지 프레임 수를 늘리는데도 page fault가 발생하는 빈도가 오히려 늘어나는 경우가 있다. 이를 Belady의 역설(Belady's Anonmaly)이라고 하는데, 이런 현상이 발생하는 원인과 이를 방지하는 해결 방법에 대해 설명하세요.

    - Belady's Anomaly는 특히 FIFO(First-In, First-Out) 페이지 교체 알고리즘에서 관찰된다.
    - 페이지 프레임의 수가 증가함에도 불구하고, FIFO 알고리즘은 새로운 페이지가 오래된 페이지보다 덜 필요할 수 있는 상황을 고려하지 않는다.
    - 이로 인해, 실제로는 자주 사용되는 페이지가 교체될 수 있고, 그 결과 페이지 폴트가 더 자주 발생한다.

    - 이를 해결하기 위한 방법으로는 더 진보된 페이지 교체 알고리즘을 사용하는 것이다.
    - LRU, LFU 등의 알고리즘들은 페이지를 교체할 때 단순히 페이지의 로드 시간뿐만 아니라 사용 빈도나 최근 사용 기록을 고려한다.
    - 즉, Locality 개념에 기반한 제약을 가미하고, 교체/할당 정책을 보완하는 것이 해결방안이 될 수 있다.

     

     

    3. 스레싱(Thrashing) 현상에 대해 설명하세요.

    - 스레싱은 프로세스가 너무 자주 페이지를 교체하여 실제 유용한 작업보다 페이지 교체에 더 많은 시간을 소비하는 현상이다.
    - 이는 일반적으로 메모리가 포화 상태이고, 멀티태스킹 환경에서 너무 많은 프로세스가 동시에 실행될 때 발생한다.

     

     

    4. 운영체제가 anonymous page를 0으로 초기화하는 이유는 무엇인가?

    - anonymous page는 프로세스에 의해 동적으로 할당되는 메모리 페이지로, 이전에 다른 프로세스에 의해 사용되었을 가능성이 있다.
    - 이러한 페이지를 0으로 초기화하지 않으면, 새로운 프로세스가 이전 프로세스의 데이터에 접근할 수 있는 보안 취약점이 발생할 수 있다.

    - 0으로 초기화하는 과정은 새로운 프로세스가 페이지를 처음 사용할 때 '깨끗한' 상태, 즉 어떠한 이전 데이터도 포함하지 않는 상태로 시작할 수 있도록 보장한다.

     

Designed by Tistory.