- CPU register : 컴파일러가 배정
- Main Memory(DRAM) : OS가 프로세스들의 메모리 경쟁을 관리
- Secondary Storage(Disk, SSD), Tertiary Storage : file system
: 하나의 프로세스 but 거의 없다
- 문제1. 사용자가 실수로나 의도적으로 잘못 다른 DRAM 주소에 접근할 수 있음 -> No Protection
- 문제2. C에서 보면 JMP 28에서 16412로 가는게 아니라 DRAM상에 28주소로 가버리기 때문에 프로그램에서 쓰던 주소를 그대로 쓰면 안된다 -> Relocation필요 (주소를 DRAM용으로 바꾸는)
(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로 변경되어 매핑된다
-
base : 모든 VA에 자동적으로 더해진다
-
limit : 프로세스가 가질 수 있는 VA범위
→ 둘다 프로세스마다 다르며 PCD에 저장되어있다
모든 프로세스의 메모리를 DRAM에 넣을 수 없음!!
-
swapping : 프로세스 전체 메모리가 disk와 DRAM을 왔다갔다 하며 관리
-
paging & segmentation : 프로세스 데이터 일부만 main memory에 있어도 됨
참고