본문 바로가기
컴퓨터 기초/운영체제

기억장치 관리

by TechExplorer 2023. 2. 22.

기억장치 관리

기억장치 관리(memory management)는 컴퓨터 시스템에서 프로세스가 메모리를 할당받고 사용하는 것을 관리하는 것을 의미합니다.

 

운영체제는 한정된 메모리 공간을 프로세스에게 효율적으로 할당하여 시스템 성능을 최적화합니다. 이를 위해 운영체제는 메모리를 분할하거나 페이지화하는 등의 기법을 사용하여 프로세스 간 메모리 공간을 분리하고 보호하며, 필요에 따라 메모리 공간을 동적으로 할당하거나 해제하는 역할을 합니다.

 

또한, 운영체제는 가상 메모리(virtual memory)를 사용하여 물리적인 메모리 크기보다 큰 가상 메모리 공간을 프로세스에게 제공함으로써, 실제로는 물리적 메모리에 일부만 적재하여 메모리 사용량을 최적화합니다. 이를 통해 프로세스가 필요한 만큼의 메모리 공간을 사용할 수 있도록 하여 시스템 전반적인 성능을 향상시킵니다.


주기억장치 관리 기법

주기억장치 관리(memory management)는 컴퓨터 시스템에서 프로세스가 주 메모리(주기억장치)를 할당받고 사용하는 것을 관리하는 것을 의미합니다.

 

주기억장치는 프로그램 실행 시 필요한 데이터와 명령어가 저장되는 장소로, CPU가 바로 접근하여 데이터를 처리할 수 있는 고속의 메모리입니다. 하지만, 주기억장치의 크기는 한정되어 있으므로 여러 프로세스가 동시에 실행될 때, 충돌이 발생할 수 있습니다. 따라서, 운영체제는 다양한 주기억장치 관리 기법을 사용하여 프로세스 간의 메모리 공간을 분리하고 보호하며, 메모리를 효율적으로 관리합니다.

 

주요한 주기억장치 관리 기법은 다음과 같습니다.

 

1. 단일 분할 할당 방식 (Single Partition Allocation Method)

  • 메모리를 하나의 영역으로 분할하고, 한 프로세스에게 전체 메모리를 할당하는 방식
  • 여러 프로세스가 실행될 경우, 메모리 사용 효율이 낮아질 수 있음

2. 다중 분할 할당 방식 (Multiple Partition Allocation Method)

  • 메모리를 여러 개의 작은 영역으로 분할하고, 각 영역을 개별적으로 프로세스에게 할당하는 방식
  • 메모리 사용 효율이 개선됨
  • 외부 조각화(external fragmentation)와 내부 조각화(internal fragmentation) 문제가 발생할 수 있음

3. 가상 메모리 (Virtual Memory)

  • 물리적인 메모리 크기보다 큰 가상 메모리 공간을 프로세스에게 제공함으로써, 실제로는 물리적 메모리에 일부만 적재하여 메모리 사용량을 최적화하는 방식
  • 프로세스가 필요한 만큼의 메모리 공간을 사용할 수 있도록 하여 시스템 전반적인 성능을 향상시킴

4. 페이지 교체 (Page Replacement)

  • 가상 메모리를 사용할 때, 실제로 존재하지 않는 페이지(page)를 참조할 경우 페이지 부재(page fault)가 발생함
  • 페이지 교체 알고리즘을 사용하여 메모리에 적재된 페이지 중 어느 페이지를 제거할지 결정하여, 새로운 페이지를 적재함
  • 페이지 교체 알고리즘으로는 FIFO, LRU, LFU 등이 있음

 

이러한 주기억장치 관리 기법은 프로세스의 실행 속도와 성능을 향상시키고, 시스템 전체적인 자원 활용도를 향상시킵니다.


주기억장치 관리 전략

주기억장치 관리 전략(memory management strategy)은 운영체제에서 사용되는 메모리 관리 기법을 구현하기 위한 방식을 말합니다. 주기억장치는 한정된 크기를 가지기 때문에, 여러 프로세스가 동시에 실행될 때 각각의 프로세스가 메모리를 사용하기 위해서는 운영체제가 메모리 공간을 할당하고 해제하는 작업이 필요합니다. 이때, 운영체제는 다양한 전략을 사용하여 메모리 공간을 효율적으로 관리하고, 충돌을 방지합니다.

 

주요한 주기억장치 관리 전략은 다음과 같습니다.

 

  • 최초 적합 (First Fit)
    가용 메모리 공간 중 가장 먼저 발견된 곳에 프로세스를 할당하는 전략입니다. 가용 메모리 공간을 순차적으로 검색하기 때문에, 처리 시간이 짧고 구현이 쉬운 장점이 있습니다. 하지만, 메모리 공간이 적재되고 해제될 때, 분산되어 생기는 외부 조각화 문제가 발생할 수 있습니다.
  • 최적 적합 (Best Fit)
    가용 메모리 공간 중 가장 작은 크기를 가진 곳에 프로세스를 할당하는 전략입니다. 가장 최적의 메모리 공간을 찾아서 할당하므로, 외부 조각화 문제를 최소화할 수 있습니다. 하지만, 프로세스를 할당하기 위해 메모리 공간을 검색하는 데에 시간이 오래 걸리고, 구현이 복잡할 수 있습니다.
  • 최악 적합 (Worst Fit)
    가용 메모리 공간 중 가장 큰 크기를 가진 곳에 프로세스를 할당하는 전략입니다. 큰 메모리 공간을 찾아 할당하므로, 가용한 메모리 공간이 작아질 가능성이 낮아집니다. 하지만, 메모리 공간을 해제할 때, 분산되어 생기는 외부 조각화 문제가 발생할 수 있습니다.
  • 순환 적합 (Next Fit)
    최초 적합과 유사하지만, 이전에 검색한 위치에서부터 다시 검색하는 전략입니다. 최초 적합보다 조금 더 효율적으로 메모리 공간을 검색할 수 있지만, 여전히 외부 조각화 문제가 발생할 수 있습니다.
  • 선점 (Preemptive) vs. 비선점 (Non-preemptive)
    선점 방식은 프로세스가 사용하고 있는 메모리 공간을 강제로 해제하고, 다른 프로세스에게 메모리를 할당할 수 있는 전략입니다. 선점 방식은 우선순위가 높은 프로세스나 긴급한 작업을 수행해야 하는 경우에 유용합니다. 하지만, 프로세스 간 경쟁이 일어나는 상황에서 문제가 발생할 수 있습니다.
    비선점 방식은 프로세스가 메모리를 사용하는 동안에는 해제되지 않으며, 해당 프로세스가 자발적으로 메모리를 해제할 때까지 메모리를 보유하고 있는 전략입니다. 비선점 방식은 프로세스 간 경쟁이 적고, 안정적인 실행이 필요한 경우에 적합합니다.
  • 페이징 (Paging)
    프로세스의 주기억장치를 고정된 크기의 블록으로 나눈 후, 블록 단위로 메모리를 할당하는 전략입니다. 각 블록은 페이지(page)라는 단위로 관리됩니다. 페이징은 내부 조각화 문제는 없지만, 외부 조각화 문제가 발생할 수 있습니다.
  • 세그멘테이션 (Segmentation)
    프로세스를 서로 다른 크기의 논리적 블록으로 분할하고, 각 블록마다 메모리를 할당하는 전략입니다. 각 블록은 세그먼트(segment)라는 단위로 관리됩니다. 세그멘테이션은 외부 조각화 문제는 없지만, 내부 조각화 문제가 발생할 수 있습니다.

 

또한, 페이지와 세그멘테이션을 결합한 하이브리드 방식도 사용됩니다. 이 방식은 페이지와 세그멘테이션의 장단점을 조합하여 사용하는 것으로, 많은 운영체제에서 사용되고 있습니다.


가상기억장치 구현 기법

가상기억장치(virtual memory)는 프로그램이 필요한 데이터 및 코드를 물리적인 메모리보다 큰 가상 메모리 공간에서 사용하도록 하는 메모리 관리 기술입니다. 이를 통해 사용자는 물리적 메모리보다 큰 프로그램을 실행할 수 있습니다.

 

가상기억장치 구현 기법에는 다음과 같은 방식들이 있습니다.

 

  • 페이징 (Paging)
    페이징은 프로그램을 일정한 크기의 페이지(page) 단위로 나눈 후, 물리적 메모리와 가상 메모리 사이에서 페이지 단위로 데이터를 주고받는 기법입니다. 물리적 메모리는 페이지 프레임(page frame) 단위로 나누어 관리하고, 가상 메모리는 페이지 단위로 나누어 가상 주소를 할당합니다. 이를 통해 물리적 메모리보다 큰 프로그램을 실행할 수 있으며, 사용되지 않는 페이지는 디스크의 스왑 공간에 저장됩니다. 페이지의 크기는 일반적으로 4KB 또는 8KB로 설정됩니다.
  • 세그멘테이션 (Segmentation)
    세그멘테이션은 프로그램을 논리적인 단위인 세그먼트(segment) 단위로 나눈 후, 각 세그먼트를 물리적 메모리와 가상 메모리 사이에서 주고받는 기법입니다. 각 세그먼트는 논리적인 의미를 가지기 때문에, 메모리의 효율성이 향상됩니다. 세그멘트의 크기는 가변적이기 때문에, 페이지 단위보다 메모리 낭비가 적습니다. 하지만, 세그멘트의 크기가 다양하기 때문에, 외부 조각화 문제가 발생할 가능성이 있습니다.
  • 가상 메모리와 물리적 메모리 사이의 매핑
    가상 메모리와 물리적 메모리 사이의 매핑은 페이지 테이블(page table) 또는 세그먼트 테이블(segment table)을 사용하여 구현됩니다. 페이지 테이블은 각 페이지가 물리적 메모리의 어느 페이지 프레임과 매핑되는지를 기록하며, 세그먼트 테이블은 각 세그먼트가 물리적 메모리의 어느 위치와 매핑되는지를 기록합니다. 이를 통해 가상 메모리와 물리적 메모리 사이의 매핑을 실시간으로 관리할 수 있습니다.
  • 페이지 교체 알고리즘 (Page Replacement Algorithm)
    페이지 교체 알고리즘은 물리적 메모리의 모든 페이지 프레임이 사용 중이며, 새로운 페이지를 할당하기 위해 빈 페이지 프레임이 없을 때 실행됩니다. 이때, 스왑 공간에 있는 페이지 중 어떤 페이지를 교체할 것인지를 결정하는 알고리즘입니다. 대표적인 페이지 교체 알고리즘으로는 LRU(Least Recently Used), FIFO(First In First Out), OPT(Optimal) 등이 있습니다.
  • 페이지 부재 인터럽트 (Page Fault Interrupt)
    페이지 부재 인터럽트는 프로그램이 실행 중에 필요한 페이지가 물리적 메모리에 없을 경우 발생하는 인터럽트입니다. 이때, 운영체제는 스왑 공간에서 해당 페이지를 가져와 물리적 메모리에 할당합니다. 이후, 페이지 테이블을 업데이트하고 프로그램 실행을 재개합니다.

 

이러한 가상기억장치 구현 기법들은 현대 운영체제에서 필수적인 기술입니다. 이를 통해 운영체제는 물리적 메모리의 한계를 극복하고, 사용자가 더 많은 프로그램을 실행할 수 있도록 합니다.

'컴퓨터 기초 > 운영체제' 카테고리의 다른 글

정보 관리  (0) 2023.02.22
CPU 스케줄링  (0) 2023.02.22
프로세스 관리  (0) 2023.02.22
범용 운영체제  (0) 2023.02.22
운영체제의 개요  (0) 2023.02.22

댓글