Software Courses/Operating System

[Memory] Virtual memory management

김 정 환 2020. 12. 12. 00:16
반응형

가상 메모리(기억장치)

    - Non-continuous allocation : 사용자 프로그램을 block으로 분할하여 적재/실행

    - paging/segmentation system

 

 

 

가상 메모리 관리의 목적

    - 가상 메모리 시스템 성능 최적화

    - 성능의 기준 : page fault frequency(발생 빈도), page fault rate(발생률), etc

 

 

 

용어 표현

    - page reference string : ω

        * 프로세스의 수행 중에 참조한 페이지 번호와 순서 기록

        * ω = r1, r2, …, ri

        * i : 페이지 번호

 

    - page fault rate : F(ω)

        * F(ω) = number of page fault during ω / |ω|

        * 전체 참조한 페이지 수 중에서 page fault가 발생한 수 / 전체 참조한 페이지 수

 

 

 

Component

    - 가상 메모리를 사용하기 위한 components가 존재

 

 

1) Hardware components

    - Address translation device (주소 사상 장치)

        * E.g., TLB(associated memories), Dedicated page-table register, cashed memories, etc

 

    - Bit vectors

        * page 사용 상황에 대한 정보를 기록하는 비트들

        * reference bits

        * update bits(dirty bits)

 

     - Reference bit vector

        * 메모리에 적재된 각각의 page가 최근에 참조 되었는지를 표시

        * reference bit를 확인함으로서 최근에 참조된 page들을 확인 가능

        * 운영

            + 프로세스에 의해 참조되면 해당 page의 reference bit를 1로 설정

            + 주기적으로 모든 reference bit를 0으로 초기화

 

    - Update bit vector

        * page가 메모리에 적재된 후, 프로세스에 의해 수정되었는지를 표시

        * 주기적으로 최기화하지 않고, 메모리에서 나올 때 초기화

        * 운영

            + 프로세서에 의해 내용이 바뀌면, update bit = 1로 변경

            + update bit = 1이면, swap device의 내용과 main memory의 내용이 다르다는 의미

            + main memory의 내용을 swap device에 반영 : write-back

 

 

2) Software component

가상 메모리 성능 향상을 위한 관리 기법들

    - Allocation strategies (할당 기법)

    - Fetch strategies

    - Placement strategies (배치 기법)

    - Replacement strategies (교체 기법)

    - Cleaning strategies (정리 기법)

    - Load control strategies (부하 조절 기법)

 

 

1) Allocation strategies

    - 각 프로세스에게 메모리를 얼마나 줄 것인가?

        * Fixed allocation

        * Variable allocation

 

    - 사용 : 적정 수준의 메모리 양 할당

        * 너무 큰 메모리 할당은 메모리 낭비

        * 너무 작은 메모리 할당은 page fault rate 증가

 

2) Fetch strategies

    - 특정 page를 메모리에 언제 적재할 것인가?

        * Demand fetch

            + 프로세스가 참조하는 페이지들만 적재

            + 한 번에 가져오지 않고 필요할 때마다 가져옴으로 page fault overhead

 

        * Pre-fetch

            + 참조될 가능성이 높은 page를 예측하여 미리 적재

            + 예측이 성공하면, page fault overhead가 적음

            + 예측을 하기 위한 overhead(kernel 개입), hit ratio에 민감

 

    - 사용 : 실제로 demand fetch를 대부분 사용

        * 일반적으로 준수한 성능

        * pre-fetch는 예측이 빗나가면 자원 낭비가 큼

 

Pre-fetch가 일반적으로 성능이 좋지 않아도 공부하는 이유? OS에서 예측하여 가져온 데이터를 가지고 실제로 작업할 가능성이 낮다. 그러나 본인이 직접 설계한 프로그램이라면 어떨까. 본인이 직접 설계한 프로그램은 본인이 모두 알고 있기 때문에 미리 사용될 데이터를 예측하는 가능성이 매우 높게 올라간다. 그렇다면 본인이 작성한 프로그램에 pre-fetch를 사용하면 프로그램의 성능이 향상될 수 있다.

 

 

3) Placement strategies

    - segment를 어디에 적재할 것인가?

    - paging system에는 불필요. 이미 크기가 일정하기 때문에 아무 곳에 넣어도 됨

 

    - segmentation system에서의 배치 기법

        * First-fit

        * Best-fit

        * Worst-fit

        * Next-fit

 

 

4) Replacement strategies

    - 빈 page frame이 없는 경우, 새로운 page를 어떤 page와 교체할 것인가?

    

    - Fixed allocation을 위한 교체 기법

    - Variable allocation을 위한 교체 기법

        

 

5) Cleaning strategies

    - 변경된 page를 언제 write-back할 것인가?

    - 변경된 내용을 swap device에 반영

        * Demand cleaning

            + 해당 page가 메모리에서 내려올 때, write-back

        

        * Pre-cleaning

            + 더 이상 변경될 가능성이 없다고 예측하고 미리 write-back

            + 예측이 맞으면, page 교체 시 발생하는 write-back을 하지 않으므로 시간 절약

            + 예측이 틀리면, 했던 write-back을 page 교체 시 다시 하므로 overhead

    

    - 사용 : 실제로 demand cleaning을 대부분 사용

        * 일반적으로 준수한 성능

        * pre-cleaning은 예측이 빗나가면 자원 낭비가 큼

 

 

6) Load control strategies

    - Load의 의미 : 부하

    - 시스템에 들어온 프로그램 수(multi-programming degree)를 조절

    - allocation strategies와 연계

   

    - 사용 : 적정 수준의 multi-programming degree를 유지

        * 저부하 상태 : 100개 작업이 가능하지만 10개를 줌

            + 시스템 자원 낭비, 성능 저하

        * 과부하 상태 : 100개 작업이 가능하지만 1000개를 줌

            + 자원에 대한 경쟁 심화, 성능 저하

            + thrashing 현상 발생 : 과도한 page fault가 발생하는 현상

                ~ 파일 여러 개 켜놓고 작업할 때, 화면이 갑자기 잠시 멈추고 다시 돌아오는 현상

Threshing

 

 

 

본 내용은 한국기술교육대학교 김덕수 교수님의 유튜브 강의를 듣고 정리한 내용입니다.
반응형

'Software Courses > Operating System' 카테고리의 다른 글

[Memory] Other considerations  (0) 2020.12.13
[Memory] Replacement strategies  (0) 2020.12.12
[Memory] Hybrid paging segmentation system  (0) 2020.12.10
[Memory] Segmentation system  (0) 2020.12.10
[Memory] Paging system  (0) 2020.12.09