중간고사 이후부터 정리해서 이전 내용은 없습니다.
Chapter#12 Virtual Memory
- Beyond CPU and Flat Memory
- Memory Virtualizaiton
- Virtual Address Space
Beyond CPU and Flat Memory
머신은 더 많은 것들을 필요로 한다.
- 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 |