Notice
Recent Posts
Recent Comments
Link
«   2024/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
관리 메뉴

개발 공부

가상 메모리 본문

대학교 공부/운영체제

가상 메모리

방구석개발입문 2021. 6. 8. 01:22

: 물리 메모리보다 큰 프로세스를 실행시 물리 메모리 크기 한계를 극복하기 위해 사용

 

어떻게 사용?

- 프로세스 이미지를 모두 메모리에 올릴 필요는 없음

- 현재 실행에 필요한 부분만 메모리에 올린다.

- 오류처리 제외, 배열 일부 제외, 워드 프로세스에서 정렬, 표 기능 제외

     >> 동적 적재(dynamic loading)과 비슷한 개념

 

 

Demand Paging

- 프로세스 이미지는 backing store(H/W)에 저장

- 프로세스는 페이지의 집합

- 지금 필요한 페이지만 메모리에 올린다.(load)

    >>요구되는(demand) 페이지만 메모리에 올린다.

 

 

● 하드웨어 지원

- valid비트 추가된 페이지 테이블

    : 메모리에 없으면 0, 있으면 1

- backing store (= swap device)

 

 

● 페이지 결함 (Page Fault)

: 접근하려는 페이지가 메모리에 없음(invalid)

>> Backing store에서 해당 페이지를 가져온다.

 

* pure demand paging   VS   prepaging

-backing store에서 메모리로 들고 올때, 진짜로 필요한 페이지만 들고 오는 것 

1. pure demand paging

: 처음 시작시 아무것도 안올리고 시작 >> 처음 시작하자마자 page fault일어남

단점- 처음부터 page falt가 일어나서 속도가 느림(인터럽트 걸쳐 오류처리 루틴 계속 수행)

장점- 지금 당장 필요한 것만 올리기 때문에 메모리가 절약

2. prepaging

: 필요한 것이라고 생각해 미리 몇 페이지를 가져오는 방식

단점과 장점와 pure demand paging과 반대

 

* swapping vs demand paging

단위가 프로세스, 페이지로 다름

 

 

● 유효시간 접근

cpu가 어떤 주소를 냈을 때 valid=1이면 이 주소를 메모리에서 빨리 읽을 수 있음.

그러나 valid=0이면 인터럽트가 걸리고 OS로 가서 H/D를 뒤져 메모리에 올리고 page table에 할당해야해서 시간이 오래 걸림

>>평균적으로 읽혀지는데 얼마나 시간이 소요될까? : Effective Access Time(EAT) ,,유효접근 시간

 

Teff = (1-p)Tm + pTp

1 )1-p : Page fault가 않일어날 확률→CPU가 주소를 냈는데 다행히 메모리에 있는 것 → 바로 읽어 오면 됨

2) Tm: 메모리에서 읽어오는 시간

3) P: page fault가 일어날 확률

4) Tp: 디스크를 읽는 시간, 즉 page fault가 일어났을 때 걸리는 시간

 

 

 

 

● 페이지 교체

Demand paging(요구되는 페이지만 backing store에서 가져옴)

프로그램 실행 계속됨에 따라 요구 페이지는 늘고 언젠가는 메모리가 가득차게 된다.

 

*Memory full

:메모리가 가득 차면 추가로 페이지를 가져오기 위해

page-out : backing store로 몰아내고

page-in : 그 빈 공간으로 페이지를 가져온다.

>>여기서 쫓겨난 페이지(희생양) : victim page

 

 

*victim page

: 어떤페이지를 몰아낼까? (Random, FIFO,,)

- i/o절약을 위해

- 기왕이면 modify(수정)되지 않은 페이지를 선택

- 방법 : modified bit (=dirty bit) 

 

## 페이지 교체 알고리즘 ## (FIFO, OPT, LRU)

- Page reference string

  • CPU가 내는 주소: 100 101 102 432 612 103 104 611 612
  • Page size = 100 바이트라면
  • 페이지 번호 = 1 1 1 4 6 1 1 6 6
  • 연속된 페이지에선 page faults가 일어나지 않음 (떨어져 있으면 발생)
  • 따라서 이어지는 숫자는 스킵하는 것이 Page reference string

 

-FIFO (First-In First-Out)

ex)
페이지 참조열: 701203042303211201701 
of frames = 3

page fault는 7012  304230  12  701에서 발생
  7 7 7 2 2 2 4  
    0 0 0 3 3 3  
      1 1 1 0 0  
page fault 7이 없었음
o
0이 없었음
o
1이 없었음
o
2가 없어 제일 먼저 들어온 7이 빠짐 0은 있어서 3으로 넘어감 3이 없음     이런식으로 진행

 

 

-OPT : 최적의 알고리즘

:앞으로 가장 오랜 기간동안 사용이 안될 것을 victim으로

>>Unrealistic

미래는 알 수 없음 

너무 비현실적이라 나온 알고리즘이 LRU(과거를 통해 미래를 예측)

 

 

 

-LRU (Least Recently Use) : 최근에 가장 오랫동안 사용하지 않은 페이지 교체

ex)
페이지 참조열: 701203042303211201701 
of frames = 3

page fault는 7012  304230  12  701에서 발생

7 70 701 201 203(1이 제일 늦게 사용) 403(2가 제일 늦게 사용) ...이런식,,

 

 

  • Global replacement
    • 메모리 상의 모든 프로세스 페이지에 대해 교체
  • Local replacement
    • 메모리 상의 자기 프로세스 페이지에 대해 교체
  • 성능 비교
    • Global replacement가 더 효율적일 수 있다.

 

 

 

 

 

'대학교 공부 > 운영체제' 카테고리의 다른 글

세그멘테이션 (Segmentation)  (0) 2021.06.04
페이징 Paging  (0) 2021.06.04
주기억장치 관리 (Main Memory Management)  (0) 2021.06.03