Dreaming Deve1oper

Virtual Memory 본문

운영체제

Virtual Memory

주현테크 2021. 11. 10. 15:28

가상 메모리 [Virtual Memory]

  1. 프로세스의 모든 메모리 참조는 논리 주소(logical address)이며 이는 동적으로 물리주소(physical address)로 변환된다.
  2. 프로세스의 주소공간이 여러 블록(페이지, 세그먼트)으로 분할되어 그들 간의 순서, 인접관계와 무관하게 주기억장치 상에 배치되어 수행될 수 있다.
  3. 프로세스의 주소공간을 구성하는 블록 중 일부만 주기억장치 상에 적재한 채 수행할 수 있다.

- 적재집합[resident set]: 특정 프로세스의 주소공간 중 주기억장치에 적재된 블록들의 집합

- 메모리접근오류[memory access fault]: 주기억장치에 적재되지 않은 블록이 참조될 떄 발생하는 하드웨어 이벤트로, 발생시 해당 프로세스는 블록 상태로 참조할 블록이 디스크로부터 적재될떄까지 대기한 후 다시 준비 상태가 된다.

 

 

 

■ 가상 메모리와 물리 메모리

 

프로세스의 전체 주소공간은 디스크에 설정되며 그 중 일부분이 주기억장치에 적재되어 CPU에 의해 참조된다.

 └ 디스크의 방대한 저장 공간과 연계된 가상메모리

 └ CPU가 실제로 참조할 부분이 적재되는 물리메모리(실메모리)

 

부분적재 수행의 이점

  └ 보다 많은 프로세스를 주기억장치에 유지 가능 

  └ 준비 상태 프로세스가 존재할 가능성이 높아져 처리기 활용도가 높아짐

  └ 주기억장치보다 큰 프로세스를 수행할 수 있음

 

※ 오버레이 기법을 적용하기 위한 프로그래머의 부담(가용메모리 파악, 주소공간의 블록 분할, 언제 어떤 블록이 필요한지 파악, 주기억장치와 디스크 간의 블록 교체 작업 등...)을 운영체제가 담당

 

 

 

① 주기억장치

주기억장치는 페이지와 동일한 크기의 고정길이 프레임들로 구성된다.

프로그램 수행을 위해 그 페이지들 중 일부 혹은 전부가 주기억장치에 있어야 한다.

 

② 디스크

보조기억장치(디스크)는 고정길이 페이지들을 보유한다.

사용자 프로그램은 몇개의 페이지들로 구성된다. 

모든 프로그램과 운영체제의 페이지들은 파일처럼 디스크에 있다.

 

 

- 가상 메모리 주소지정 -

 

□ 가상메모리 관련 핵심용어

용어 설명
가상메모리 보조기억장치를 주기억장치처럼 주소지정 가능하게 만든 저장공간 할당체제. 프로그램이 메모리를 참조할 때 사용하는 주소는 메모리 시스템이 물리메모리의 특정 위치를 식별할 때 사용하는 주소와 구별된다. 프로그램이 생성한 주소는 그에 대응된 물리 주소로 자동 변환된다. 가상메모리의 크기는 주기억장치의 크키가 아니라 컴퓨터 시스템의 주소지정체제와 보조기억장치의 가용크기에 의해 제한된다.
가상주소 주기억장치처럼 참조될 수 있도록 가상메모리의 특정위치에 배정된 주소
가상주소공간 특정 프로세스에게 할당된 가상 주소의 영역
주소공간 특정 프로세스가 접근할 수 있는 메모리 주소의 영역
실주소 주기억장치 상의 특정 저장위치의 주소

 

 

 

□ 가상메모리의 실용성

  1. 프로그램에 필요한 블록 (메모리접근 오류가 발생한 블록)만 적재하므로, 비사용 블록 적재로 인한 낭비 절감
  2. 블록 적재 요구가 얼마나 빈번한지가 가상메모리 실용성의 최대 관건

- 프로세스 수행 시간 중 임의의 짧은 구간을 관찰했을 경우 메모리 참조 행태가 너무 분산되지 않아야 하며, 한 번 주기억장치에 적 재된 블록들이 내보내지기 전까지 최대한 많이 참조되도록 관리 해야 함.

- 시스템이 안정상태에 있을 경우 주기억장치 전체가 각 프로세스 의 블록들로 채워지며, 이 때 주기억장치에 적재되지 않은 블록 이 참조되면 이미 적재된 블록을 교체해야 함(교체 대상을 잘못 선정할 경우 바로 재적재해야 하는 상황 발생) - 결론적으로 스레싱(thrashing: 시스템이 프로세스 수행보다 블록 교체에 대부분의 시간을 소비하게 되는 현상) 방지가 관건

 

 

 

□ 지역성의 원리 [Principle of Localiry]

 

프로세스의 메모리 참조가 군집을 이루는 특성

- Temporal locality: 반복문, 스택, 카운터 변수, 함수호출

- Spatical locality: 순차수행, 배열순회

 

지역성이 전제될 때 가상 메모리 실용성의 필요조건

- 가상메모리 지원 하드웨어의 효율성

- 주기억장치와 보조기억장치 간 블록 이동 관리의 효율성

 

 

 

■ 페이징 [Paging]

  1. 가상메모리는 고정크기 페이지로 분할되고, 물리메모리 는 페이지 크기의 페이지프레임(혹은 프레임)들로 분할.
  2. 페이지테이블(또는 역페이지테이블)을 매개로 하드웨어/ 소프트웨어가 상호작용하여, 프로세스가 특정 가상주소 (해당 페이지 상의 한 주소)를 참조할 경우 그에 대응된 물리주소(해당 페이지가 적재된 프레임 상의 대응 주소) 가 참조되도록 주소 사상/변환.
  3. 일반적으로 프로세스별 페이지테이블을 설정하여, 주소 변환 하드웨어가 활용할 주소사상정보 제공.
  4. 페이지테이블에 페이지 적재 여부가 표시되고, 적재되지 않은 페이지가 참조될 경우 하드웨어에 의해 페이지폴트 (page fault) 이벤트 발생.

 

 

□ 페이지 테이블 항목 구성

- 존재비트(Present bit)는 적재 여부를, 변경비트(Modify bit)는 적재 된 이후 내용 변경 여부를 나타냄.

- 가상주소의 페이지 번호를 이용하여 대응된 페이지테이블 항목을 찾고, 그로부터 해당 페이지가 적재된 프레임의 번호를 얻음.

 

 

 

□ 페이징: 페이지 테이블 크기

- 가상주소공간의 크기가 커질수록 페이지테이블의 크기 가 증가하고, 주기억장치 상의 보다 큰 적재 공간 요구.

 

※ 해결을 위한 접근 방법

① 페이지테이블을 n-단계 계층구조로 구성:

선형구조가 아니므로, 전체 가상주소공간 중 실제 참조할 페이지들이 존재하는 영역에 대해서만 단계별 페이지테이블 설정 가능

 

② 페이지테이블 자체를 가상메모리에 적재:

페이지테이블 중 일부 분만 주기억장치에 적재한 채 해당 프로세스 수행 가능

 

③ 역페이지테이블(inverted page table) 이용:

각 프레임에 어떤 페 이지가 적재되어 있는지 사상시키므로, 역페이지테이블의 크기 는 주기억장치의 크기에 비례함

 

 

 

 

□ 페이징: TLB

- 페이징: TLB의 동작 -
- 페이징: TLB의 사용 -
- 페이징: TLB, 캐시의 동작 -

 

□ 페이징: 페이지/프로그램 크기

  • 페이지의 크기가 작을 경우
  1. 내부 단편화의 양이 감소함.
  2. 페이지테이블 크기 증가: 수행 프로그램의 크기나 다중프로그래 밍의 차수가 너무 클 때, 페이지테이블을 부분적으로만 적재해야 하고, 이 경우 페이지테이블 부재로 인한 페이지폴트 부담 발생.
  3. 동일 크기 데이터 적재에 필요한 입출력 회수 증가.
  4. 지역성과 관련된 부분만으로 적재집합 구성 가능.
  5. 프로세스 당 할당된 프레임이 많을수록 페이지폴트 발생률 감소.
  • 프로그램 크기가 커질 경우
  1. 개발시 적용하는 객체지향기술, 다중스레딩 기술이 참조 지역성 을 감소시킴.
  2. TLB 적중률이 감소하므로, 성능이 떨어질 수 있음.

- 페이징: 페이지 폴트 발생률 -

P: 전체 프로세스의 크기

W: 작업 집합의 크기

N: 프로세스의 총 페이지 수

 

□ 페이지 크기의 사례

컴퓨터 페이지 크기
Atlas 512개의 48비트 워드
Honeywell-Multics 1024개의 36비트 워드
IBM 370 4KB
VAX family 512Byte
IBM AS/400 512Byte
DEC Alpha 8KB
MIPS 4KB ~ 16MB
UltraSPARC 8KB ~ 4MB
Pentium 4KB or 4MB
Intel Itanuim 4KB ~ 256MB
Intel core i7 4KB ~ 1GB

 

 

■ 세그먼테이션: 페이징과의 결합

  • 두 시세템의 장점 수용
  1. 페이징의 장점: 프로그래머에게 투명, 외부단편화 제거, 정교한 메모리 관리 알고리즘 적용 가능
  2. 세그먼테이션의 장점: 확장성 자료구조 처리 단순화, 모듈단위 관리, 논리적 개체 단위의 공유/보호
  • 가상주소에 대한 관점
  1. 프로그래머 관점: 가상주소 = 세그먼트 번호 + 세그먼트 오프셋
  2. 시스템 관점: 세그먼트 오프셋 = 페이지 번호 + 페이지 오프셋
  • 각 세그먼트는 고정 크기의 페이지들로 분할

- 세그먼테이션: 페이징과 결합시의 주소변환 -

 

 

□ 페이징과 세그먼테이션의 특성 (33p)

 

 

 

 

'운영체제' 카테고리의 다른 글

Scheduling_2  (0) 2021.11.24
Scheduling  (0) 2021.11.17
Virtual Memory_2  (0) 2021.11.17
Loading/Linking  (0) 2021.11.10
Memory Management  (0) 2021.11.03
Comments