본문 바로가기

Study/운영체제

Chapter#12 Virtual Memory

반응형

중간고사 이후부터 정리해서 이전 내용은 없습니다.

Chapter#12 Virtual Memory

- Beyond CPU and Flat Memory

- Memory Virtualizaiton

- Virtual Address Space


Beyond CPU and Flat Memory

 

기존의 CPU 구성

머신은 더 많은 것들을 필요로 한다.

  • L1/L2/L3/TLB RAM
  • DRAM
  • SSDs
  • HDDs
  • I/O Machines

이는 OS가 관리하게 된다.

Random Access Memory

  • chip으로 패키지 되어있다.
  • baisic storage unit : cell (one bit per cell

Volatile Memories

SRAM(Static RAM)

- 4/6 bit per cell

- 값을 파워가 켜져있는동안 영구적으로 가진다

- 노이즈에 강함

- DRAM보다 빠르고 비싸다

 

DRAM(Dynamic RAM)

- 트랜지스터+캐패시터

- 10~100ms마다 refresh됨

- 에러에 민감함

- SRAM보다 느리고 싸다

 

Nonvolatile Memories : 펌웨어 저장용이나 SSD 등에 지원됨

ROM(Read-Only Memory) : 생산 중에 프로그램된다

PROM(Programmable ROM) : 한번만 프로그램 가능하다

EPROM(Erasable PROM) : bulk erase가 가능하다 (UV, X-Ray)

EEPROM(Electrically EPROM) : 전기적으로 지울 수 있다.

NAND Flash : 부분 erase가 가능한 EEPROMs

Optane : Phase-change memory

메모리별 비교

Memory Hierarchy (작고/빠르고/비쌈  <-> 크고/느리고/쌈)

L0 : Registers : L1에서 가져온 words 홀드

L1 : L1 cache(SRAM) : L2에서 가져온 lines 홀드

L2 : L2 cache(SRAM) : main memory에서 가져온 lines 홀드

L3 : Near main memory(DARM) : local disk에서 가져온 disk blocks 홀드

L4 : Far main memory(Optane) : ""

L5 : Loca secondary storage(Flash SSDs & HDDs) : remote network servers의 disks에서 가져온 파일 홀드

 

Locality : 프로그램은 near or equal한 주소를 자주 참조한다

Temporal locality : 같은 자리 주소를 자주 참조한다

Spatial locality : 근처 자리 주소를 자주 참조한다


Memroy Virtualization

Physical Memory : array of bytes

 

하나의 프로세스를 physical memory에 load 하는 경우

- CPU / Memory 낭비

 

여러 프로세스를 pyhsical memory에 load 하는 경우 ( Multiprogramming / Time Sharing )

장점 :

- CPU / Memory 효율 증가

- 짧은 시간에 한 프로세스 실행

- 메모리 내에서 스위치 쉬움

단점 :

- 보안 이슈

- 메모리 공간 관리 필요

 

▶ Memory Virtualization

- illusion memory space

- 각 프로세스는 전체 메모리 사용

 

Virtual memory : virtual address space + address translation

 

Virtual address space

- 각 프로세스는 private virtual address 공간을 가짐

- 프로그램은 virtualized됨을 인지 못함

- 각 프로세스는 다른 프로세스의 공간 침범 불가

 

Address traslation

- physical memory는 하나 뿐이므로 OS에 의해 관리됨

- 각 프로세스당 할당된 virtual address의 주소값은 시공간적으로 효율적이게 OS에 의해 physical address로 mapping됨

 

Benefits of Memory Virtualization

Memory efficiency : physical memory를 여러 application이 공유함

Protection : 프로세스의 isolation을 보장함

Ease of programming : 각 프로세스별 복잡한 주소 공간을 가지지 않음

 


Virtual Address Space

Address Space

Linear Address Space : 연속적인 non-negative 정수 | {0,1,2, ...}

Virtual Address Space : N = 2^n virtual address (n=32 or 64) | {0,1,2, ... ,N-1}

Physical Address Sapce : M = 2^m physical address | {0,1,2, ... ,M-1}

 

Virtual Address Space

OS가 physical memory의 abstraction을 만듦

- virtual address space가 running process의 모든 값을 가짐

- code, heap, stack 등을 가짐

Code : instructions live | 맨 위에 할당

Heap : 동적으로 할당된 메모리 ( malloc, new 등으로 할당 ) | 코드 아래로 할당

Stack : return address나 value 저장, local variable arguments 저장 | 아래에서부터 위로 할당

 

#include <stdio.h>
#include <stdlib.h>
int main(int argc , char *argv[]){
  printf("(%d) location of code : %p n", getpid(), (void *) main);
  printf("(%d) location of heap : %p n", getpid(), (void *) malloc(1));
  int x = 3;
  printf("(%d) location of stack : %p n", getpid(), (void *) &x);
  return x;
}
$ ./mem
(2134) location of code : 0x40057d
(2134) location of heap : 0xcf2010
(2134) location of stack : 0x7fff9ca45fcc

 


학교 강의를 토대로 개인 공부 목적으로 작성되어 오타가 및 오류가 있을 수 있으며, 문제가 될 시 삭제될 수 있습니다.

반응형

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

Chapter#17 Swapping  (0) 2021.12.10
Chapter#16 Paging Advanced  (0) 2021.12.09
Chapter#15 Paging  (0) 2021.12.09
Chapter#14 Segmentation  (0) 2021.12.08
Chapter#13 Address Translation  (0) 2021.12.08