운영체제(이론) - 핀토스 - Virtual memory - Anonymous page, File-backed page

연도·2024년 6월 12일
0

운영체제 이론&구현

목록 보기
19/19
post-thumbnail

File-backed page

파일 기반 페이지. 가상 메모리 시스템에서 사용되는 메모리 페이지. 디스크의 특정 파일과 연관된 페이지 의미

  • 이러한 페이지는 파일의 내용을 메모리에 매핑하여 사용되며, 파일의 데이터를 읽거나 쓸 때 사용.
  • 주로 매핑된 파일을 통해 구현

주요 개념

메모리 맵 파일

  • 파일의 내용을 가상 메모리 주소 공간에 매핑. 파일의 내용을 메모리에서 직접 접근o
  • 이를 통해 입출력 성능을 향상시키고, 메모리와 파일 시스템 간의 데이터 전송 효율적으로 처리

페이지 폴트

  • 파일 매핑된 페이지에 접근 시 해당 페이지가 물리 메모리에 로드x
  • 운영체제는 디스크에서 해당 페이지를 읽어와 메모리에 로드하고, 페이지 테이블을 업데이트하여 페이지 폴트 처리.

File-backed Page 작동 방식- 메모리 맵 파일 생성, 사용

  1. 파일 열기:

    • 파일을 열어 파일 디스크립터를 얻습니다.
    • 예를 들어, 리눅스에서 open 시스템 호출을 사용합니다.
    int fd = open("example.txt", O_RDONLY);
  2. 파일 매핑:

    • mmap 시스템 호출을 사용하여 파일을 가상 메모리 주소 공간에 매핑합니다.
    • 매핑된 주소를 통해 파일의 내용을 메모리에서 직접 접근할 수 있습니다.
    void *map = mmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, 0);
  3. 파일 접근:

    • 매핑된 주소를 사용하여 파일의 내용을 읽거나 쓸 수 있습니다.
    char *data = (char *)map;
    printf("%s\n", data);  // 파일의 내용을 출력
  4. 파일 매핑 해제:

    • munmap 시스템 호출을 사용하여 매핑된 메모리 영역을 해제합니다.
    munmap(map, size);
    close(fd);

Anonymous page

익명 페이지. 가상 메모리 시스템에서 디스크의 특정 파일과 연관되지 않은 메모리 페이지 의미.

주로 프로그램이 실행 중에 동적으로 할당된 메모리로 구성되며, ex) 힙, 스택과 같은 영역에 할당된 메모리 포함. 데이터 구조와 관련된 데이터 저장.

주요 개념

  1. 연관된 파일 없음:

익명 페이지는 파일 시스템의 파일과 연관되지 않습니다. 따라서 디스크에 저장된 파일의 내용이 아니라 프로그램의 동적 메모리 할당에 의해 생성된 데이터가 저장됩니다.

  1. 동적 메모리 할당:
  • 익명 페이지는 주로 malloc, calloc, realloc 같은 동적 메모리 할당 함수에 의해 할당된 메모리를 저장합니다.
  • 프로세스 실행 중에 생성되는 힙(heap)과 스택(stack) 데이터를 포함합니다.
  1. 페이지 스왑:
    • 익명 페이지는 물리 메모리가 부족할 때 스왑 공간으로 스왑 아웃될 수 있습니다.
    • 스왑 공간은 익명 페이지를 임시로 저장하기 위해 사용되는 디스크의 특별한 영역입니다.
  2. 보안 및 초기화:
    • 익명 페이지는 할당 시 운영체제에 의해 0으로 초기화됩니다. 이는 보안상의 이유로, 이전에 다른 프로세스가 사용했던 데이터를 접근하지 못하게 하기 위함입니다

익명 페이지의 생성과 관리

동적 메모리 할당

프로그램이 실행 중에 동적으로 메모리를 할당할 때, 이러한 메모리는 익명 페이지로 관리. 예를 들어, malloc 함수 호출 시 운영체제는 필요한 양의 메모리를 익명 페이지로 할당.

#include <stdlib.h>int main()
{
		// 100개의 정수형 배열 동적 할당
    int *arr = (int *)malloc(100 * sizeof(int));
    
    free(arr);  // 할당된 메모리 해제
    
    return 0;
}

스택 확장

함수 호출 시 함수의 지역 변수나 매개 변수를 저장하기 위해 스택이 확장되면, 스택에 사용되는 메모리도 익명 페이지로 할당됩니다.

void foo() {
    int a = 10;  // 지역 변수는 스택에 저장됨
}

익명 페이지의 스왑 처리

  1. 스왑 아웃:
    • 메모리가 부족하면 운영체제는 덜 자주 사용되는 페이지를 스왑 아웃하여 디스크의 스왑 공간저장합니다.
    • 스왑 아웃된 페이지의 내용은 스왑 공간에 저장되고, 페이지 테이블 엔트리는 해당 페이지가 스왑 공간에 있음을 나타냅니다.
  2. 스왑 인:
    • 스왑 아웃된 페이지가 다시 필요하면, 운영체제는 스왑 공간에서 해당 페이지를 읽어와 물리 메모리에 로드합니다.
    • 페이지 테이블 엔트리는 해당 페이지가 다시 물리 메모리에 있음을 나타냅니다.

익명 페이지 and 파일 기반 페이지 비교

특징익명 페이지 (Anonymous Page)파일 기반 페이지 (File-backed Page)
연관된 파일없음특정 파일과 연관됨
용도동적 메모리 할당, 스택 확장 등파일의 내용을 메모리로 매핑하여 사용
저장 위치물리 메모리 및 스왑 공간물리 메모리 및 원본 파일
예시malloc, 스택, 힙mmap을 사용한 파일 매핑

0개의 댓글