주어진 기억장치 용량 이상을 필요로하는 포로그램을 수행할 수 있는 방법을 제시하고, 그것들에 대해서 설명하시오
주어진 기억장치(메모리) 용량 이상을 필요로 하는 프로그램을 실행할 수 있는 방법은 여러 가지가 있으며, 각각의 방법은 프로그램의 성격과 요구 사항에 따라 달라집니다. 아래는 그 방법들과 그에 대한 설명입니다.
- 가상 메모리 (Virtual Memory)
가상 메모리는 운영체제가 물리적 메모리(RAM)보다 더 큰 메모리 공간을 제공할 수 있도록 해주는 기술입니다. 운영체제는 하드 디스크의 일부를 가상 메모리로 사용하여, 자주 사용되지 않는 데이터를 하드 디스크로 옮기고, 자주 사용되는 데이터만 물리적 메모리에 유지합니다.
장점: 물리적 메모리 용량을 초과한 프로그램을 실행할 수 있습니다.
단점: 디스크 접근 속도가 RAM보다 느려 프로그램 성능이 저하될 수 있습니다.
2. 메모리 페이징 (Paging)
페이징은 메모리를 일정한 크기의 블록(페이지)으로 나누어 사용하는 방식입니다. 프로그램이 사용하는 메모리를 작은 페이지 단위로 나누어 관리하므로, 필요한 페이지들만 메모리에 로드하고 나머지는 디스크에 저장합니다.
장점: 프로그램 전체를 한 번에 메모리에 올릴 필요가 없어, 물리적 메모리 제한을 완화할 수 있습니다.
단점: 페이지 교체가 빈번하게 일어나면 성능이 저하될 수 있습니다. 이를 페이지 부재(Page Fault)라고 합니다.
기억장치 속에 기억된 페이지 테이블을 가진 페이징 시스템을 생각하자 1) 만약 기억장치 접근이 1.2 마이크로sec걸린다면 페이지로 된 기억장치 접근은 얼마나 걸릴까?
기억장치 속에 페이지 테이블이 저장된 페이징 시스템에서, 페이지로 된 기억장치 접근 시간을 계산할 때는 페이지 테이블을 먼저 접근하고, 이후에 실제 데이터를 접근하는 두 번의 기억장치 접근이 필요합니다.
주어진 조건에 따르면 기억장치 접근 시간은 1.2 마이크로초입니다.
페이지 테이블 접근 과정:
- 페이지 테이블 접근: 페이지 테이블에서 해당 페이지의 프레임 번호를 찾아야 하므로, 한 번의 기억장치 접근이 필요합니다. 이는 1.2 마이크로초가 소요됩니다.
- 실제 데이터 접근: 페이지 테이블을 통해 얻은 프레임 번호를 바탕으로 실제 데이터를 읽기 위해 다시 기억장치에 접근해야 합니다. 이것도 1.2 마이크로초가 걸립니다.
따라서, 페이지 테이블을 이용한 기억장치 접근 시간은 다음과 같습니다:
[
\text{전체 접근 시간} = \text{페이지 테이블 접근 시간} + \text{실제 데이터 접근 시간}
]
[
\text{전체 접근 시간} = 1.2 \, \mu s + 1.2 \, \mu s = 2.4 \, \mu s
]
따라서 페이지 테이블을 사용하는 페이징 시스템에서 기억장치 접근 시간은 2.4 마이크로초가 됩니다.
가상 메모리 시스템에서 기억장치 관리 기법들인 반입기법, 배치기법, 교체기법의 목적을 논하시오
가상 메모리 시스템에서 반입기법, 배치기법, 교체기법은 메모리 효율성을 높이고 성능을 최적화하는 데 중요한 역할을 합니다. 각각의 기법이 해결하려는 문제와 목적을 아래에 설명합니다.
1. 반입기법 (Fetch Policy)
반입기법은 프로세스가 필요로 하는 페이지나 데이터를 언제 물리적 메모리로 가져올지를 결정하는 기법입니다. 가상 메모리 시스템에서 반입기법은 중요한 이유는 모든 페이지를 미리 메모리에 적재할 수 없기 때문에, 필요한 시점에 페이지를 가져오는 것이 필수적입니다.
- 목적: 페이지 부재(Page Fault)를 최소화하고 메모리 공간을 효율적으로 사용하여 성능을 높이는 것.
- 종류:
- 즉시 반입 (Demand Paging): 페이지가 실제로 필요할 때 (즉, 참조 시) 그때 메모리로 가져옵니다. 메모리 사용량을 줄일 수 있지만, 페이지 부재가 발생하면 처리 시간이 지연될 수 있습니다.
- 예측 반입 (Pre-paging): 필요할 것으로 예상되는 페이지들을 미리 메모리로 반입합니다. 예측이 맞으면 성능을 향상시킬 수 있지만, 불필요한 페이지를 가져오면 메모리 낭비가 발생할 수 있습니다.
2. 배치기법 (Placement Policy)
배치기법은 가상 메모리 시스템에서 프로세스의 페이지를 물리적 메모리의 어느 위치에 배치할지를 결정하는 기법입니다. 물리적 메모리에는 여러 페이지 프레임이 있는데, 새로운 페이지를 어떤 프레임에 배치할지를 효율적으로 결정하는 것이 중요합니다.
- 목적: 페이지의 효율적인 배치를 통해 메모리 활용도를 극대화하고, 메모리 조각화(Fragmentation)를 줄여 시스템 성능을 향상시키는 것.
- 주요 전략:
- 최초 적합 (First-fit): 사용 가능한 첫 번째 적합한 공간에 페이지를 배치합니다.
- 최적 적합 (Best-fit): 페이지를 배치할 수 있는 가장 작은 공간에 배치합니다.
- 최악 적합 (Worst-fit): 페이지를 배치할 수 있는 가장 큰 공간에 배치하여 큰 공간을 나누는 방식입니다.
3. 교체기법 (Replacement Policy)
교체기법은 물리적 메모리가 가득 찼을 때 새로운 페이지를 로드하기 위해 기존에 메모리에 있는 페이지 중 어떤 것을 내보낼지를 결정하는 기법입니다. 가상 메모리 시스템에서 페이지 교체는 성능에 직접적인 영향을 미치기 때문에 매우 중요한 기법입니다.
- 목적: 페이지 부재가 발생했을 때, 최적의 페이지를 교체하여 페이지 부재 횟수를 최소화하고 성능을 유지하는 것.
- 주요 전략:
- 최적 교체 (Optimal Page Replacement): 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체하는 방식으로, 이론적으로 가장 성능이 좋지만 실제로는 구현이 어렵습니다.
- FIFO (First-In-First-Out): 가장 먼저 메모리에 들어온 페이지를 먼저 교체하는 방식입니다. 구현이 간단하지만, 성능이 좋지 않을 수 있습니다.
- LRU (Least Recently Used): 최근에 가장 오래 사용되지 않은 페이지를 교체하는 방식입니다. 과거의 사용 기록을 바탕으로 하여 교체 결정을 내립니다.
- LFU (Least Frequently Used): 가장 사용 빈도가 적은 페이지를 교체하는 방식입니다. 자주 사용되지 않는 페이지를 제거하여 성능을 개선하려고 합니다.
결론:
- 반입기법은 페이지를 언제 메모리로 가져올지 결정하여 메모리와 CPU 자원을 최적화하는 것이 목적입니다.
- 배치기법은 페이지가 메모리의 어디에 배치될지 결정하여 메모리 공간을 효율적으로 사용하는 것이 목적입니다.
- 교체기법은 메모리가 가득 찼을 때 어떤 페이지를 교체할지 결정하여 페이지 부재 횟수를 최소화하는 것이 목적입니다.
이 세 가지 기법은 가상 메모리 시스템에서 메모리 사용의 효율성을 높이고, 페이지 부재로 인한 성능 저하를 최소화하는 데 중요한 역할을 합니다.