Skip to content

Latest commit

 

History

History
81 lines (48 loc) · 4.22 KB

MemoryAbstraction.md

File metadata and controls

81 lines (48 loc) · 4.22 KB

A Memory Abstraction (메모리 추상화)



1) Memory Hierarchy

  • CPU register : 컴파일러가 배정
  • Main Memory(DRAM) : OS가 프로세스들의 메모리 경쟁을 관리
  • Secondary Storage(Disk, SSD), Tertiary Storage : file system




2) No memory Abstraction : DRAM의 주소를 그대로 쓴다

: 하나의 프로세스 but 거의 없다





3) Memory Abstraction


1. 여러프로그램이 같이 DRAM주소 그대로 쓰는 경우 (no memory abstraction):

  • 문제1. 사용자가 실수로나 의도적으로 잘못 다른 DRAM 주소에 접근할 수 있음 -> No Protection
  • 문제2. C에서 보면 JMP 28에서 16412로 가는게 아니라 DRAM상에 28주소로 가버리기 때문에 프로그램에서 쓰던 주소를 그대로 쓰면 안된다 -> Relocation필요 (주소를 DRAM용으로 바꾸는)



2. Memory Management Concepts

(1) Physical address space

  • main memory(DRAM)의 주소공간 -> 하드웨어가 결정
  • frame : 물리주소공간을 4K 단위로 나눈 블록

(2) Logical/Virtual address space

  • 프로세스(프로그램)가 사용하는 주소공간(32bits, 64bits) (실제로 존재하는 메모리는 아님)
  • page : 가상주소공간 4G를 4096byte(4K) 단위로 나눈 하나의 메모리 블록

(3) 특징

  • 하나의 프로세스의 logical memory가 physical memory보다 커질 수 있다
  • 여러 프로세스의 logical memroy합이 physical memory보다 커질 수 있다
    • 필요한 부분만 main memory로 올리는 기법 : Demand-paging
  • Disk공간은 main memory에서 담지못한 데이터를 기록하고 있으며 모든 프로세스가 사용한다.
    • 엄청 작업을 많이하면 disk <-> main memory인 작업이 활발하게 일어난다, 사용자는 로컬메모리마냥 사용할 수 있다. ( 4GB 램 + 4GB 페이징 파일 = 마치 8GB 램)

virtual address는 하드웨어를 통해 Physical address로 변경되어 매핑된다






4) 매핑방법

1. Base and Limit Registers (swapping system 전제: 전체가 왔다갔다)

  • base : 모든 VA에 자동적으로 더해진다

  • limit : 프로세스가 가질 수 있는 VA범위

    → 둘다 프로세스마다 다르며 PCD에 저장되어있다


모든 프로세스의 메모리를 DRAM에 넣을 수 없음!!






5) Main memory와 Disk사이에 메모리 관리

  • swapping : 프로세스 전체 메모리가 disk와 DRAM을 왔다갔다 하며 관리

  • paging & segmentation : 프로세스 데이터 일부만 main memory에 있어도 됨








참고