본문 바로가기
  • 꾸준히 앞으로
정리 log/용어 · 개념

[OS] 메모리 관리 전략

by lijly 2020. 5. 28.

 

 

각각의 프로세스는 독립된 메모리 공간을 갖고, 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제한이 걸려있다. 단지, 운영체제 만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 제약을 받지 않는다.

기억장치 계층 구조

  • 계층 구조에서 상위의 기억장치일수록 접근 속도와 접근 시간이 빠르지만, 기억 용량이 적고 고가이다.
  • 주기억장치는 각기 자신의 주소를 갖는 워드 또는 바이트들로 구성되어 있으며, 주소를 이용하여 액세스할 수 있다.
  • 레지스터, 캐시 기억장치, 주기억장치의 프로그램과 데이터는 CPU가 직접 액세스 할 수 있으나
    보조기억장치에 있는 프로그램이나 데이터는 직접 액세스할 수 없다.
  • 보조기억장치에 있는 데이터는 주기억장치에 적재된 후 CPU에 의해 액세스 될 수 있다.

 

🗂 주기억장치 할당 기법

  1. 연속 할당 기법
    • 단일 분할 할당 기법 : 오버레이, 스와핑
    • 다중 분할 할당 기법 : 고정 분할 할당 기법, 동적 분할 할당 기법
  1. 분산 할당 기법

 

📌 스와핑(Swapping)

메모리의 관리를 위해 사용되는 기법.

표준 Swapping 방식으로는 Round Robin 과 같은 스케줄링의 다중 프로그래밍 환경에서 CPU 할당 시간이 끝난 프로세스의 메모리를 보조 기억장치(e.g. 하드디스크)로 내보내고 다른 프로세스의 메모리를 불러 들일 수 있다.

이 과정을 Swap(스왑시킨다)이라 한다.

 

다시 말해,

하나의 프로그램 전체를 주기억장치에 할당하여 사용하다
필요에 따라 다른 프로그램과 교체하는 기법이다.
  • Swap In : 보조기억장치 → 주기억장치(RAM)로 불러오는 과정
  • Swap Out : 주기억장치 → 보조기억장치로 내보내는 과정
  • Swap에는 큰 디스크 전송시간이 필요하기 때문에 현재에는 메모리 공간이 부족할 때 Swapping 이 시작
  • 하나의 사용자 프로그램이 완료될 때까지 교체 과정 여러 번 수행 가능
  • 가상기억장치의 페이징 기법으로 발전

 

🤖
Round Robin이란?
선점(Preemptive)형 스케줄링 중 하나.
프로세스들 사이에 우선순위를 두지 않고, 순서대로 시간 단위로 CPU를 할당하는 방식의 CPU 스케줄링 알고리즘이다.

*선점형 스케줄링에는 Round Robin, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 등의 알고리즘이 있다.

 

단편화(Fragmentation)란?

프로세스들이 메모리에 적재되고 제거되는 일이 반복되다보면,
프로세스들이 차지하는 메모리 틈 사이에
사용 하지 못할 만큼의 작은 자유 공간들이 늘어나게 되는데, 이것이 단편화 이다.

단편화는 2가지 종류로 나뉜다.

내부 단편화

  • 프로세스가 사용하는 메모리 공간에 포함된 남는 부분 → 분할된 영역이 할당될 프로그램의 크기보다 크기 때문에 프로그램이 할당된 후 사용되지 않고 남아 있는 빈 공간
  • 예를들어 메모리 분할 자유 공간이 10,000B 있고 Process A 가 9,998B 사용하게되면 2B 라는 차이 가 존재하고, 이 현상을 내부 단편화라 칭한다.

외부 단편화

  • 메모리 공간 중 사용하지 못하게 되는 일부분. → 분할된 영역이 할당될 프로그램 크기보다 작기 때문에 프로그램이 할당될 수 없어 사용되지 않고 빈공간으로 남아 있는 분할된 전체 영역
  • 물리 메모리(RAM)에서 사이사이 남는 공간들을 모두 합치면 충분한 공간이 되는 부분들이 분산되어 있을 때 발생한다고 볼 수 있다.

 

단편화 제거

디스크 단편화 제거

  • 통합
  • 압축(집약)

    물리적으로 디스크의 내용을 다시 정리하여 각 파일을 연속적으로 붙이면서 이러한 작업을 수행한다. → 외부 단편화를 해소하기 위해 프로세스가 사용하는 공간들을 한쪽으로 몰아, 자유공간을 확보하는 방법론이다.

    • 작업 효율이 좋지 않다.
    • 조각이 난 파편을 제거하는 방식
      위키백과, 단편화 제거

 

→ 메모리 단편화 제거(페이징, 세그먼테이션)를 사용하면 효율적이다.

 

🗂 가상기억장치 구현 기법

가상기억장치는 보조기억장치(하드디스크)의 일부를 주기억장치처럼 사용하는 것으로,
용량이 작은 주기억장치를 마치 큰 용량을 가진 것처럼 사용하는 기법이다.

 

📌 페이징(Paging)

하나의 프로세스가 사용하는메모리 공간이 연속적이어야 한다는 제약을 없애는메모리 관리 방법이다.

외부 단편화와 압축 작업을 해소 하기 위해 생긴 방법론이다.

가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후
나눠진 프로그램(페이지)을 동일하게 나눠진 주기억장치의 영역(페이지 프레임)에 적재시켜 시행하는 기법이다.
  • 페이지(Page) : 프로그램을 일정한 크기로 나눈 단위
  • 페이지 프레임(Page Frame) : 페이지 크기로 일정하게 나누어진 주기억장치의 단위

 

  • 특징
    1. 논리 메모리는 물리 메모리에 저장될 때, 연속되어 저장될 필요가 없다.
    1. 외부 단편화를 해결할 수 있다.
    1. 주소 변환을 위해서 페이지의 위치 정보를 가지고 있는 페이지 맵 테이블(Page Map Table)이 필요하다.
  • 단점
    1. 외부 단편화는 발생하지 않으나 내부 단편화 문제의 비중이 늘어나게 된다.
      🚁
      예를들어
      페이지 크기가 1,024B 이고 프로세스 A 가 3,172B 의 메모리를 요구한다면 3 개의 페이지 프레임(1,024 * 3 = 3,072) 하고도 100B 가 남기때문에 총 4 개의 페이지 프레임이 필요한 것이다. 결론적으로 4 번째 페이지 프레임에는 924B(1,024 - 100)의 여유 공간이 남게 되는 내부 단편화 문제가 발생하는 것이다.
    1. 페이지 맵 테이블 사용으로 비용이 증가되고, 처리 속도가 감소된다.

 

📌 세그먼테이션(Segmentation)

가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후
주기억장치에 적재시켜 실행시키는 기법이다.

페이징에서처럼 논리 메모리와 물리 메모리를 같은 크기의 블록이 아닌,서로 다른 크기의 논리적 단위인 세그먼트(Segment)로 분할한다. 사용자가 두 개의 주소로 지정(세그먼트 번호 + 변위)한다.

  • 세그먼트(Segment) : 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위

    → 각 세그먼트는 고유한 이름과 크기를 갖는다.

 

  • 특징
    1. 기억장치의 사용자 관점을 보존하는 기억장치 관리 기법이다.
    1. 내부 단편화를 해결할 수 있다.
    1. 주소 변환을 위해서 세그먼트가 존재하는 위치 정보를 가지고 있는 세그먼트 맵 테이블(Segment Map Table)이 필요하다.
    1. 세그먼트가 주기억장치에 적재될 때, 다른 세그먼트에게 할당된 영역을 침범할 수 없다.
      → 기억장치 보호키(Storage Protection Key) 필요
  • 단점
    1. 내부 단편화는 발생하지 않으나 외부 단편화는 발생할 수 있다.

      → 서로 다른 크기의 세그먼트들이 메모리에 적재되고 제거되는 일이 반복되다 보면, 자유 공간들이 많은 수의 작은 조각들로 나누어져 못 쓰게 될 수도 있다.

 

 

 


⍞ Reference

  • 도서 : 2020 시나공 정보처리기사 필기, 길벗

 

 

댓글