Programming/운영체제

주기억장치관리 개요 (Main Memory Management)

1. 메모리의 역사

1) 메모리 역사

- Core memory

- 진공관 메모리

- 트랜지스터 메모리

- 집적회로 메모리 : SRAM, DRAM

2) 메모리 용량

- 1970년대 : 8-bit PC 64KB

- 1980년대 : 16-bit IBM-PC 640KB > 1MB > 4MB

- 1990년대 : 수MB > 수십MB

- 2000년대 : 수백MB > 수GB

 

2. 언제나 부족한 메모리

메모리 용량이 기하급수적으로 늘어났기에 현대에는 메모리관리가 필요하지 않다고 생각할 수 있다.

그러나 메모리는 언제나 부족하다. 메모리 용량의 증가하면서 프로그램의 크기도 증가했기 때문이다.

1) 프로그램 변천

- 기계어/어셈블리어 작성

- C언어 작성

- 자바, 객체지향형 언어 작성

- 숫자처리 > 문자처리 > 멀티미디어 처리 > Big data

 

2)  어떻게 메모리를 효과적으로 사용할 수 있을까?

- 메모리 낭비 없애기

- 가상메모리(virtual memory) 사용

 

3. 프로그램을 메모리에 올리기

메모리는 주소(Address) + 데이터(Data)로 이루어져 있다.

 

1) 프로그램 개발

- 원천파일(Source file) : 고수준언어 또는 어셈블리 언어

- 목적 파일(Object file) : 컴파일 또는 어셈블 결과

- 실행 파일(Executable file) : 링크 결과

 

C언어 또는 자바로 작성된 소스 파일을 오브젝트 파일로 바꾸는 과정을 컴파일(Compile)이라 한다.

오브젝트 파일을 메모리에 내장된 라이브러리를 이용해 실행파일로 바꾸는 과정을 링크(Rink)라 한다.

 

2) 실행 파일을 메모리에 올리기

- 메모리 몇번지에?

- 다중프로그래밍 환경에서는?

 

MMU 사용 - 재배치 레지스터(Relocation register)

주소 구분

 - 논리주소(Logical address) vs 물리주소(physical address)