[혼공컴운] 혼공단 11기 - 6주차 (14장)

shyn26·2024년 2월 15일
0

혼공학습단

목록 보기
16/20

14. 가상 메모리

14-1. 연속 메모리 할당

스와핑(swapping)

  • 메모리에 적재된 프로세스들 중, 현재 실행되지 않는 프로세스들을 임시로 보조기억장치 일부 영역으로 쫓아내고, 그렇게 해서 생긴 메모리상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식

  • 스왑 영역(swap space) : 프로세스들이 쫓겨나는 보조기억장치의 일부 영역

  • 스왑 아웃(swap-out) : 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것

  • 스왑 인(swap-in) : 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것

  • 스와핑되면서 프로세스의 주소가 달라질 수 있음

[스왑 영역 확인하기]

  • 유닉스와 리눅스, macOS에서는 free, top 명령어 등을 통해 스왑 영역의 크기를 확인

메모리 할당

  • 최초 적합(first fit) : 운영체제가 메모리 내의 빈 공간을 순서대로 검색하다가 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식

  • 최적 적합(best fit) : 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스를 배치하는 방식

  • 최악 적합(worst fit) : 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스를 배치하는 방식


외부 단편화(external fragmentation)

  • 프로세스들이 실행되고 종료되기를 반복하며 메모리 사이 사이에 빈 공간들이 생기는데, 프로세스 바깥에 생기는 이러한 빈 공간들은 분명 빈 공간이지만 그 공간보다 큰 프로세스를 적재하기 어려운 상황을 초래하고, 결국 메모리 낭비로 이어지는 현상
  • 외부 단편화 해결 방안 : 압축(compaction) = 메모리 조각 모음

[⭐혼공단 미션 인증!⭐]

p.400 - 1번 문제

  1. (최초 적합) : 최초로 발견한 적재 가능한 빈 공간에 프로세스를 배치하는 방식
  2. (최악 적합) : 프로세스가 적재될 수 있는 가장 큰 공간에 프로세스를 배치하는 방식
  3. (최적 적합) : 프로세스가 적재될 수 있는 가장 작은 공간에 프로세스를 배치하는 방식

14-2. 페이징을 통한 가상 메모리 관리

  • 가상 메모리(virtual memory) : 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술
    • 페이징 - 책에서 다룸
    • 세그멘테이션 - 책에서 안 다룸

페이징(paging)이란

  • 메모리와 프로세스를 일정한 단위로 자르고, 이를 메모리에 불연속적으로도 할당

    • 페이지(page) 라는 일정한 단위로 자르고,
    • 메모리 물리 주소 공간을 프레임(frame) 이라는 페이지와 동일한 크기의 일정한 단위로 자른 뒤

    페이지를 프레임에 할당하는 가상 메모리 관리 기법 → 페이징

  • 외부 단편화는 발생 예방

이미지1 이미지2
  • 페이지에서도 스와핑을 할 수 있음

    • 페이지 아웃(page out) : 페이징 시스템에서의 스왑 아웃
    • 페이지 인(page in) : 스왑 인

    → 한 프로세스를 실행하기 위해 프로세스 전체가 메모리에 적재될 필요가 없음,
    프로세스를 이루는 페이지 중 실행에 필요한 일부 페이지만을 메모리에 적재, 당장 실행에 필요하지 않은 페이지들은 보조기억장치에 남김


페이지 테이블

  • 페이징 시스템은 프로세스가 비록 (실제 메모리 내의 주소인) 물리 주소에 불연
    속적으로 배치되더라도 (CPU가 바라보는 주소인) 논리 주소에는 연속적으로 배치되게 하는 방식

  • 페이지 테이블 베이스 레지스터(PTBR; Page Table Base Register) : CPU 내에 있는 이 레지스터로 각 프로세스의 페이지 테이블이 적제된 주소를 가리킴

페이징에서의 주소 변환

  • 논리 주소 <페이지 번호(page number), 변위(offset)>는 페이지 테이블을 통해 물리 주소 <프레임 번호, 변위>로 변환됨

    • 페이지 번호 : 접근하고자 하는 페이지 번호
    • 변위 : 접근하려는 주소가 프레임의 시작 번지로부터 얼만큼 떨어져 있는지를 알기 위한 정보


페이지 테이블 엔트리(PTE; Page Table Entry)

  • 페이지 테이블의 각 엔트리, 페이지 테이블의 각각의 행들

14-3. 페이지 교체와 프레임 할당

요구 페이징(demand paging)

-프로세스를 메모리에 적재할 때 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법

  • 요구 페이징 시스템이 안정적으로 작동하려면 반드시 해결해야 할 두 가지
    1. 페이지 교체
    2. 프레임 할당

페이지 교체 알고리즘

페이지 교체 알고리즘을 제대로 이해하려면, 페이지 참조열(page reference string) 을 통해 페이지 폴트 횟수를 알 수 있어야 함

  • FIFO, 최적, LRU 페이지 교체 알고리즘 등

[⭐혼공단 미션 인증!⭐]

프로세스가 사용할 수 있는 프레임이 3개 있고, 페이지 참조열이 '2313523423' 일 때 LRU 페이지 교체 알고리즘으로 이 페이지를 참조한다면 몇 번의 페이지 폴트가 발생하는지 풀어보기 (p.430 그림과 설명 참고)


스래싱과 프레임 할당

  • 스래싱(thrashing) : 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제
  • 멀티프로그래밍의 정도(degree of multiprogramming) : 메모리에서 동시 실행되는 프로세스의 수
  • 프레임 할당 방식에는 균등 할당비례 할당, 작업 집합 모델 기반과 페이지 폴트율 기반 프레임 할당 방식
profile
Without haste, but without rest - J.W. von Goethe

0개의 댓글