(1) 메모리 구조 및 관리
: 데이터나 프로그램을 저장하는 저장 공간은 계층 구조를 갖는다.

- CPU와 가장 가까운 공간부터 레지스터 -> CPU 캐시 -> 메인 메모리 -> 보조 기억장치 -> 외부 기억장치 순이다.

- 이들 저장 공간은 CPU로부터 가까울수록 데이터에 접근하는 속도가 빠르고, 멀수록 데이터를 저장하는 용량이 커지는 경향이 있다.

○ 반입 정책(Fetch Strategy)
: 반입정책은 하드디스크에 있는 프로그램을 언제 메모리로 가져올 것인가 하는 정책이다.

- 요구 반입 : 실행 중인 프로세스가 현재 참조하는 프로그램 모듈과 데이터를 메모리로 가져오는 정책
- 선 반입 : 실행 중인 프로세스가 참조할 개연성이 있는 프로그램 모듈과 데이터를 미리 예측하여 가져오는 정책

○ 배치 정책(Placement Strategy)
: 새롭게 반입된 프로그램을 메인 메모리 내의 어느 곳에 둘 것인가를 정하는 정책이다.

- 최초 적합 : 프로그램을 수용할 수 있는 가용 공간 중 처음 발견한 가용 공간에 배치
- 최적 적합 : 프로그램을 수용할 수 있는 가용 공간 중 최소의 가용 공간에 배치
- 최악 적합 : 프로그램을 수용할 수 있는 가용 공간 중 최대의 가용 공간에 배치

○ 교체 정책(Replacement Strategy)
: 메모리가 부족하여 일부 프로그램을 메모리에서 교체해야 할 때 어떤 프로그램을 교체할 것인가를 결정하는 정책이다.

- FIFO(First-in-First-Out) : 메인 메모리에 가장 먼저 들여온 영역을 교체
- LRU(Least Recently Used) : 가장 오랫동안 사용되지 않은 영역을 교체
- LFU(Least Frequently Used) : 참조된 횟수가 가장 적은 영역을 교체
- NRU(Not Used Recently) : 최근에 사용되지 않은 영역을 교체


(2) 가상 메모리
: 실제 시스템에 있는 물리적인 메모리의 크기에 관계없이 가상 공간을 프로세스에게 제공한다. 이런 가상 메모리는 프로세스 전체가 메모리에 적재되지 않아도 프로세스의 실행이 가능하도록 한다. (32 Bit 처리기 -> 2^32 Bit / 64 Bit 처리기 -> 2^64 Bit 의 크기)

○ 가상 메모리의 구조


- UNIX 시스템은 실행 중인 프로세스에게 4GB의 가상 메모리 공간을 제공한다.
- 하위 3GB 공간은 사용자의 프로그램이, 상위 1GB 공간은 커널이 차지한다.

- text 영역 : 명령어
- data영역 : 전역변수
- bss 영역 : 초기화되지 않은 부분
- heap 영역 : malloc() 라이브러리 함수를 이용해 동적으로 할당받은 공간
- stack 영역 : 함수를 호출할 때 전달되는 인수들과 반환 주소 그리고 함수의 지역 변수

=> 가상 메모리는 4GB의 크기를 갖고 각 프로그램마다 하나씩 가상적으로 만들어지며 페이지 또는 세그먼트로 구성된다. 가상 메모리를 사용하면 사용자가 가상적으로 갖는 가상 공간과 실제 프로그램이 적재된 물리적인 공간을 서로 연결해야 한다. 이들 매핑에 사용되는 자료구조는 가상 메모리의 구현 방식에 따라 페이지 테이블 또는 세그먼트 테이블이라 부른다.


by 민트앤라떼 2013. 1. 10. 01:31