티스토리 뷰

반응형

메모리 관리

운영체제를 포함한 여러 프로그램이 메모리 위에 올라와 실행된다. 따라서 메모리 관리가 복잡한데 이처럼 복잡한 메모리 관리는 메모리 관리 시스템(MMS)이 담당한다.

 


메모리 관리가 이루어지다 보면 프로세스 입장에서 작업의 편리함관리자 입장에서 관리의 편리함충돌할 때가 발생한다. 이를 메모리 관리의 이중성이라 한다.

 

메모리 관리자 역할

메모리 관리는 메모리 관리자가 담당한다.

 

  1. 가져오기
  2. 배치
  3. 재배치

메모리 주소

메모리에 접근할 때는 주소를 이용한다.

 

  • 절대 주소

    - 실제 물리 주소
    - 메모리 관리자 입장에서 바라본 주소
    - 메모리 주소 레지스터가 사용하는 주소

  • 상대 주소

    - 운영체제가 관리하는 주소
    - 사용자 프로세스 입장에서 바라본 주소
    - 절대 주소와 상관없이 항상 0번지부터 시작

 

상대 주소 -> 절대 주소 변환 방법

  1. 사용자 프로세스가 상대 주소에 있는 데이터 요청
  2. CPU는 메모리 관리자에게 상대 주소에 있는 내용을 가져오라 명령
  3. 메모리 관리자는 재배치 레지스터 사용, 상대 주소-> 절대 주소 변환

 

메모리 오버레이

프로그램의 크기가 실제 메모리보다 클 때 전체 프로그램을 메모리에 가져오는 대신 적당한 크기로 잘라서 가져오는 기법을 말한다.

 

☞ 어떤 모듈을 가져올지는 프로그램 카운터(PC)가 결정한다

☞ 한정된 메모리에서 메모리보다 큰 프로그램의 실행이 가능하다

 

스왑

사용 중인 메모리를 잠시 보관하는 영역을 말한다. 메모리에서 쫓겨난 데이터가 잠시 머무는 곳이기 때문에 저장장치 관리자가 관리하지 않고 메모리 관리자가 관리한다.

 

※ 스왑 영역 : 메모리가 모자라 쫓겨난 프로세스가 잠시 머무는 저장장치의 공간

※ 스왑 인 : 스왑 영역에서 메모리로 데이터를 가져오는 작업

※ 스왑 아웃 : 메모리에서 스왑 영역으로 데이터를 내보내는 작업

 

 

 


 

메모리 분할 방식

▶가변 분할 방식

   프로세스 크기에 따라 메모리 분할

 

   장점 : 하나의 프로세스를 연속된 공간에 배치

   단점 : 메모리 관리 복잡

 

▶고정 분할 방식

   프로세스 크기에 상관없이 메모리를 같은 크기로 분할

 

   장점 : 메모리 관리 수월

   단점 : 쓸모없는 공간으로 인해 메모리 낭비가 발생할 수도 있다

 

가변 분할 방식의 메모리 관리

프로세스 배치

가변 분할 방식으로 프로세스를 배치할 때 빈 메모리 공간이 있어도 서로 떨어져 있어 프로세스를 배정하지 못하는 아사 현상이 발생할 수도 있다. 그리고 떨어져 있는 메모리 조각들이 발생하는 현상을 외부 단편화라고 한다.

 

외부 단편화 해결 방안

  • 메모리 배치 방식
  • 조각 모음

📗 메모리 배치 방식

  • 최초 배치 : 단편화를 고려하지 않고 적재 가능한 첫 번째 공간에 배치
  • 최적 배치 : 메모리의 빈 공간을 모두 확인한 후 가장 작은 공간에 배치
  • 최악 배치 : 빈 공간을 모두 확인한 후 가장 큰 공간에 배치 ( <-> 최적 배치 )

📗 조각 모음

단편화가 발생하면 이미 배치된 프로세스를 옆으로 옮겨 빈 공간들을 하나의 큰 덩어리로 만드는 작업을 말한다.

 

조각 모음 순서

  1. 조각 모음을 하기 위해 이동할 프로세스의 동작을 멈춘다
  2. 프로세스를 적당한 위치로 이동한다 (상대 주소 값도 같이 변경)
  3. 프로세스 다시 시작

 

고정 분할 방식의 메모리 관리

프로세스 배치

고정 분할 방식으로 프로세스를 배치하면 관리하기 편하다. 그리고 조각 모음을 할 필요가 없다. 그러나 고정 분할 방식에서 메모리 조각에 프로세스를 배치하고 공간이 남는 현상인 내부 단편화가 발생한다.

 

📗 내부 단편화 해결 방안

동일하게 분할되는 공간의 크기를 조절해 내부 단편화를 최소화한다.

 

 

📗 버디 시스템

가변 분할 방식의 단점인 외부 단편화를 완화하는 방법이다. 가변 분할 방식과 고정 분할 방식의 중간 구조다.

 

버디 시스템의 작동 방식

  1. 프로세스의 크기에 맞게 메모리를 절반으로 자르고 배치한다
  2. 나뉜 메모리의 각 구역에는 프로세스가 1개만 들어간다
  3. 프로세스가 종료되면 주변의 빈 조각과 합쳐서 하나의 큰 덩어리를 만든다

 

 

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

 

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함