OS - 메모리 계층구조와 관리 전략

choko's avatar
Jun 29, 2024
OS - 메모리 계층구조와 관리 전략
  • 운영체제는 메모리를 관리하고, 메모리 관리 전략에는 연속 메모리 할당, 분할 메모리 할당 방식이 있다
    • 가상 메모리
      • 실제 이용 가능한 메모리 자원을 추상화하여, 사용자들에게 매우 큰 메모리로 보이게 하는 것
      • 페이징 방식, 세그먼테이션 방식 2가지가 있다.
    • 연속 메모리 할당
      • 프로세스별로 연속된 한 덩어리의 메모리 할당
      • 외부 단편화 문제가 발생함
    • 분할 메모리 할당
      • 프로세스를 여러 덩어리로 나누어 메모리 할당
      • 고정 크기 할당 → 페이징(일정한 크기의 페이지로 분할)
      • 가변 크기 할당 → 세그먼테이션(논리적인 기준으로 프로세스를 분할하여 크기가 일정하지 않음)

 
 

메모리 계층 구조

notion image
  • 레지스터 → 캐시메모리 → 메인메모리 → 보조기억장치(하드)
  • 속도와 비용을 절충하며 계층화 구조를 유지한다
    • 참조의 지역성(데이터가 짧은 시간 내에 다시 사용되는 특성) 때문
  • 스와핑(swapping)
    • 프로세스가 실행에 따라 메인 메모리와 보조기억장치에서 교체되는것
 
 
 
 

메모리 관리

  • 운영체제에 의해 메모리 관리가 필요한 이유
    • 각각의 프로세스는 독립된 메모리 공간을 갖고, 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제한이 걸려 있다.
    • 운영체제만이 메모리 영역의 접근에 제약을 받지 않기 때문에, 운영체제에서 메모리를 관리한다.
    • 멀티프로세스 환경으로 변화하면서 한정된 메모리를 효율적으로 사용해야 했고, 운영체제가 이를 관리하는 방법이 중요해졌다.
    • notion image
 
 
 
 
  • 메모리 할당 기법
    • 연속 메모리 할당
      • 프로세스별로 연속된 한 덩어리의 메모리 할당
      • 각 프로세스 영역을 연속된 메모리 공간에 배치
      • 초기 운영체제에 사용 → 현재는 분할 메모리 할당을 사용한다.
      • 외부 단편화 문제가 발생한다
      • 고정 크기 할당
        • 메모리를 고정 크기의 파티션으로 나누고 프로세스 당 하나의 파티션 할당
      • 가변 크기 할당
        • 메모리를 가변 크기의 파티션으로 나누고 프로세스 당 하나의 파티션 할당
        • notion image
    • 분할(불연속) 메모리 할당
      • 프로세스를 여러 덩어리로 나누어 메모리 할당
      • 고정 크기 할당
        • 고정 크기의 동일한 덩어리 메모리의 분산 할당. 대표 방법 - Paging 기법
      • 가변 크기 할당
        • 가변 크기의 덩어리 메모리를 분산 할당. 대표 방법 - Segmentation 기법
        • notion image
         
       
  • 단편화(Fragmentation)
    • 프로세스들이 메모리에 적재되고 제거되는 일이 반복되면, 프로세스들이 차지하는 메모리 틈 사이에 사용하지 못하게 되는 작은 공간들이 늘어나게 되는게, 이것이 단편화이다.
Process A
free
Process B
free
Process C
free
Process D
 
  • 외부 단편화와 내부 단편화
    • 외부 단편화
      • notion image
      • 이 경우, 연속 메모리 할당 방법은 40MB만큼의 공간(Hole)이 없기 때문에 프로세스를 실행시킬 수 없다.
      • 이렇게 Hole의 크기가 프로세스 크기보다 작다는 이유로 할당되지 못하는 문제를 외부 단편화라고 한다.
      • 반면 분할 메모리 할당 방법은 프로세스를 분할하여 프로세스를 실행시킬 수 있다.
        • 페이징(Paging), 세그먼테이션(Segmentation)
        •  
    • 내부 단편화
      • 메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어 메모리 공간이 낭비되는 상황
 
 
 
  • 가상 메모리
    • notion image
    • 컴퓨터 시스템에 실제로 이용 가능한 기억 자원을 이상적으로 추상화하여, 사용자에게 매우 큰 메모리로 보이게 만드는 것을 말한다.
    • 50GB짜리 게임을 16GB RAM에서 실행시킬 수 있는 이유?
      • 모든 데이터를 주 기억장치에 올리지 않고, 가상 메모리 기법으로 필요한 부분만 올려서 실행시킨다.
    • 메모리 관리 장치(MMU, Memory Management Unit)
      • 가상 메모리의 주소와 실제 메모리 주소는 일치하지 않는다.
      • MMU는 가상 메모리 주소를 실제 메모리 주소로 변환시켜주는 하드웨어이다.
      • MMU는 메모리를 일정 단위로 쪼개서 관리하는데, 쪼개는 방법에 따라 페이징 기법, 세그멘테이션 기법으로 나뉜다.
      •  
         
         
  • 페이징(Paging)
    • 프로세스를 일정한 크기의 페이지로 분할해서 메모리에 적재하는 방식
    • 이러한 분할 정보는 페이징 테이블에 저장되어 있으며, 메인 메모리에 적재되어 있는 페이지 번호와 해당 페이지가 위치한 메인 메모리의 시작 주소가 있다.
    • 장점
      • 외부 단편화 문제의 해소
    • 단점
      • 내부 단편화 문제가 발생할 수 있다. (페이지 단위가 너무 작아지면, 페이징 매핑 과정이 복잡해져 오히려 비효율적임)
 
  • 세그먼테이션(Segmentation)
    • 메모리를 서로 크기가 다른 논리적 단위로 분할한 것
    • 프로세스를 논리적 단위인 세그먼트로 분할해서 메모리에 적재하는 방식
      • 논리적 기준 분할이기 때문에, 크기가 일정하지 않다.
      • notion image
    • 세그먼테이션도 페이징과 마찬가지로 세그먼트 테이블이 존재한다.
    • 장점
      • 내부 단편화 문제의 해소
      • 프로그램의 중요한 부분과 중요하지 않은 부분을 분리하여 저장할 수 있음
    • 단점
      • 외부 단편화 문제가 생길 수 있다.
      •  
 
### 페이징과 세그먼테이션 ### 단순 페이지 - 프로세스는 프레임과 같은 길이를 가진 균등 페이지로 나뉨 - 외부 단편화가 생기지 않음 - 내부 단편화가 존재할 있음 ### 단순 세그먼테이션 - 프로세스는 여러 세그먼트로 나뉨 - 내부 단편화가 생기지 않음 - 메모리 효율을 개선함 - 동적 분할을 통한 오버헤드가 감소함 - 외부 단편화가 존재할 있음 ### 가상 메모리 페이징 - 단순 페이징과 비교해 프로세스 페이지 전부를 로드할 필요가 없음 - 필요한 페이지가 있으면 나중에 자동으로 불러들임 - 외부 단편화가 생기지 않음 - 복잡한 메모리 관리로 오버헤드가 발생할 있음 ### 가상 메모리 세그먼테이션 - 필요하지 않은 세그먼트들은 로드되지 않음 - 필요한 세그먼트가 있을 나중에 자동으로 불러들임 - 내부 단편화가 생기지 않음 - 복잡한 메모리 관리로 오버헤드가 발생할 있음
 
Share article

Tom의 TIL 정리방