Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

holy's story

[OS] 요구 페이징 본문

CS

[OS] 요구 페이징

soom22 2024. 5. 19. 23:28
SMALL

요구 페이징이란?

  • 운영체제에서 사용되는 가상 메모리 관리 기법중 하나
  • 프로세스가 실행되면 운영체제는 해당 프로세스의 가상 주소 공간을 만드는데, 이때 필요한 페이지만 물리적 메모리에 적재 후 나머지는 backing store에 저장하여 메모리를 절약

요구페이징의 방식

  1. 가상 메모리는 요구 페이징 기법을 사용하여 필요한 페이지만 메모리에 올림 (프로세스는 페이지의 집합)
  2. 사용하지 않는 페이지들은 backing store에 저장
    1. backing store는 swap device로 하드웨어 부분인데 페이지를 임시로 보관하는 공간
    2. 스왑 파일(Swap File)이라는 디스크의 특수한 파일에 위치
  3. 페이지 테이블은 메인 메모리에 적재되어 있는지 backing store에 있는지를 구분하는 valid 비트를 가지게 된다.
  4. 메인 메모리에 있는 페이지는 CPU가 요구할 시 페이지 테이블을 따라 실행
  • **만약 요구 페이징 기법을 사용할때 메모리에 올라와있지 않은 페이지가 필요하다면?(***page fault 상황)
    1. 페이지 테이블에 valid 비트 필트를 추가하여 0과1로 메모리 적재 여부를 판단
      1. 없을 경우 → *page fault
        1. cpu는 하는 일을 잠시 멈추고 운영체제가 나서서 backing store를 탐색해 필요한 페이지를 메모리에 적재
        2. valid 비트를 참으로 바꿔줌
      *페이지 폴트(page fault)란?
    2. 필요한 페이지가 메모리에 없는 경우
  • backing store의 페이지를 가져오려는데 메모리에 빈 공간이 없다면?
    1. *페이지 교체(Page Replacement) 알고리즘을 사용하여 더 이상 사용되지 않는 페이지를 디스크로 내보내고, 새로운 페이지를 메모리에 적재
    *페이지 교체 알고리즘이란?주로 지역성을 바탕으로 한다.간단한 알고리즘 무작위 무직위로 대상 페이지를 선정하여 스왑 영역으로 보낸다.
    간단한 알고리즘 FIFO 처음 메모리에 올라온 페이지를 스왑 영역으로 보낸다.
    이론적 알고리즘 최적 미래의 접근 패턴을 보고 대상 페이지를 선정하여 스왑 영역으로 보낸다.
    최적 근접 알고리즘 LRU 시간적으로 멀리 떨어진 페이지를 스왑 영역으로 보낸다.
    최적 근접 알고리즘 LFU 사용 빈도가 적은 페이지를 스왑 영역으로 보낸다.
    최적 근접 알고리즘 NUR 최근에 사용한 적이 없는 페이지를 스왑 영역으로 보낸다.
    최적 근접 알고리즘 FIFO 변형 FIFO 알고리즘을 변형하여 성능을 높인다.
    • 지역성이란?
      • 기억장치에 접근하는 패턴이 메모리 전체에 고루 분포되는 것이 아니라 특정 영역에 집중되는 것을 말함
        • 공간의 지역성 : 가상 주소 공간에서 참조된 페이지와 인접한 페이지가 참조될 가능성이 높음
        • 시간의 지역성 : 최근 참조된 페이지가 가장 가까운 미래에 다시 참조될 가능성이 높음
        • 순차적 지역성(sequentia; locality) : 분기가 발생하지 않는 한 기억장피에 저장된 순서대로 진행될 가능성이 높음
  • 페이지 폴트 시 새로운 페이지를 할당하기 위해 현재 할당된 페이지 중 페이지와 교체할지 결정하는 알고리즘

장점

  1. 필요한 페이지만 메모리에 적재하기 때문에 메모리 사용량 감소
  2. 프로세스 전체를 메모리에 올리는 데 소요되는 입출력 오버헤드 감소
    1. 필요한 페이지만 로드하기때문에
  3. 사용되지 않는 주소 영역에 대한 입출력이 줄어 응답시간 단축
    1. 필요한 페이지만 로드하기때문에 디스크 io 작업이 줄어든다.
  4. 시스템은 더 많은 프로세스를 수용 가능
    1. 물리적 메모리 공간을 아껴서
    2. 페이지 단위로 메모리를 할당하므로 메모리 공간을 유연하게 할당할 수 있음
  5. 물리적 메모리의 제약을 벗어남
    1. 가상 메모리를 사용하므로 물리적 메모리보다 큰 용량의 메모리를 지원

단점

  1. page fault로 인한 성능저하
    1. page fault는 일반적인 페이징에서도 발생하지만, 특히 요구 페이징에서는 필요한 페이지만 물리 메모리에 적재하기 때문에, 더 많은 페이지 폴트가 발생할 수 있다. 그래서 요구 페이징을 사용할 때는 페이지 교체 알고리즘을 잘 설계해야, page fault를 최소화할 수 있다.

Pure demand paging vs prepaging

  • 순수 요구페이징(pure demand paging) : 진짜 필요한 애들만 가져오는 것그래서 속도는 느리지만, 메모리가 절약된다.
  • 프로그램이 처음 시작할 적에 지금 필요한게 아니면 아무것도 들고오지 않기 때문에 처음 시작할 때부터 page fault가 일어난다.
  • 미리페이징(prepaging) : 지금 필요하지 않아도 미리 몇페이지를 가져오는 것
  • 속도는 빠르지만(page fault가 적게 일어남) 메모리 낭비가 있다.

'CS' 카테고리의 다른 글

[OS] 동기화(스핀락, 뮤텍스, 세마포어)  (0) 2024.06.02
[OS] PCB와 Context Switching  (0) 2024.05.26
[Algorithm] 해시  (0) 2024.05.05
[Network] SOP&CORS  (0) 2024.03.03
[Java] Call by Value vs Call by Reference  (0) 2024.02.25