여름의 서재

[운영체제] 물리 메모리 관리 본문

CS/운영체제

[운영체제] 물리 메모리 관리

엉아_ 2021. 12. 9. 10:00
728x90

💡 메모리 관리의 개요

1. 소스코드의 번역과 실행

- 컴파일러

: 소스코드를 컴퓨터가 실행할 수 있는 기계어로 번역한 후 한꺼번에 실행 ex) 자바, C

  • 소스코드에서 오류를 발견하여 실행 시 문제가 없도록 함
  • 실행하기 전에 코드를 점검하여 오류를 수정하고 최적화함으로써 작고 빠른 실행 파일을 만듦

- 인터프리터

: 소스코드를 한 행씩 번역하여 실행 ex) 자바스크립트, 파이썬

 

2. 메모리 관리자의 역할

- 가져오기 작업

: 프로세스와 데이터를 메모리로 가져오는 작업

📌 가져오기 정책

: 프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정하는 정책

 

- 배치 작업

: 가져온 프로세스와 데이터를 메모리의 어떤 부분에 올려놓을지 결정하는 작업

📌 배치 정책

: 가져온 프로세스를 메모리의 어떤 위치에 올려놓을지 결정하는 정책

 

- 재배치 작업

: 꽉 차 있는 메모리에 새로운 프로세스를 가져오기 위해 오래된 프로세스를 내보내는 작업

📌 재배치 정책

: 메모리 내에 어떤 프로세스를 내보낼지 결정하는 정책. 앞으로 사용하지 않을 프로세스를 찾아서 내보내는 알고리즘이 교체 알고리즘.

 

💡 메모리 주소

- 물리 주소 공간

: 하드웨어 입장에서 바라본 주소 공간

 

- 논리 주소 공간

: 사용자 입장에서 바라본 주소 공간

 

- 절대주소와 상대주소

구분 절대 주소 상대 주소
관점 메모리 관리자 입장 사용자 프로세스 입장
주소 시작 물리 주소 0번지부터 시작 물리 주소와 관계없이 항상 0번지부터 시작
주소 공간 물리 주소(실제 주소) 공간 논리 주소 공간

📌 재배치 레지스터

: 주소 변환의 기본이 되는 주소값을 가진 레지스터로, 메모리에서 사용자 영역의 시작 주소값이 저장된다.

 

💡 단일 프로그래밍 환경에서의 메모리 할당

1. 메모리 오버레이

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

 

2. 스왑

- 스왑 영역

: 메모리가 모자라서 쫓겨난 프로세스가 모아지는 영역

 

📌 스왑인 & 스왑아웃

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

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

 

💡 다중 프로그래밍 환경에서의 메모리 할당

1. 가변 분할 방식 (세그멘테이션 기법)

: 프로세스의 크기에 따라 나누는 방식.

 

- 장단점

  • 장점: 프로세스를 한 덩어리로 처리하여 하나의 프로세스를 연속된 공간에 배치
  • 단점: 메모리 관리가 복잡하고 외부 단편화가 생김. 메모리 통합 등의 부가적인 작업 필요

📌 단편화

: 빈 영역이 있어도 서로 떨어져 있으면 프로세스를 배정 X. 이로 인해 작은 조각들이 발생하는 현상

이를 해결하기 위해 메모리 배치 방식, 조각 모음을 사용

 

- 메모리 배치 방식

  • 최초 배치: 메모리에서 적재 가능한 공간을 순서대로 찾다가 첫번째로 발견한 공간에 프로세스를 배치
  • 최적 배치: 빈 공간을 모두 확인한 후 적당한 크기 가운데 가장 작은 공간에 배치
  • 최악 배치: 빈 공간을 모두 확인한 후 가장 큰 공간에 배치

2. 고정 분할 방식 (페이징)

: 메모리를 같은 크기로 나누는 방식.

 

- 장단점

  • 장점: 메모리를 일정칸 크기로 나누어 관리하기 때문에 메모리 관리 수월. 부가적인 작업 X
  • 단점: 쓸모없는 공간으로 인해 메모리 낭비 발생(내부 단편화)

3. 버디 시스템

: 가변과 고정의 중간 구조. 프로세스의 크기에 맞게 메모리를 1/2로 자르고 프로세스를 메모리에 배치, 프로세스가 종료되면 주변을 살펴서 빈 구역을 하나로 합침

 

- 특징

  • 가변 분할 방식처럼 메모리가 프로세스 크기대로 나뉨
  • 고정 분할 방식처럼 하나의 구역에 다른 프로세스가 들어갈 수 없고, 메모리의 한 구역 내부에 조각이 생겨 내부 단편화 발생
Comments