책읽기

[쉽게 배우는 운영체제](요약)[Part-3][Ch-7] 물리 메모리 관리

pythaac 2021. 7. 29. 09:48
이 글은 "쉽게 배우는 운영체제 (조성호 지음)"을 읽고 주관적으로 작성된 글입니다.

출처 : https://www.hanbit.co.kr/store/books/look.php?p_code=B5471691739

※ 요약

  1. 메모리 관리의 복잡성
    • 운영체제를 포함한 모든 응용 프로그램이 메모리에 올라와 실행되어 메모리 관리가 복잡
  2. 컴파일러
    • 소스코드를 기계어로 번역하여 한꺼번에 실행할 수 있도록 프로그램
    • 인터프리터는 한 행씩 번역하여 실행
    • 오류 검출과 코드 최적화도 담당
    • 컴파일 -> 목적 코드(object code) / 라이브러리 연결 -> 동적 라이브러리 포함
      * 동적 라이브러리 : 실행할 때 삽입되는 라이브러리, 함수가 변경되어도 새로 컴파일할 필요가 없음
  3. 메모리 관리자의 정책
    • 가져오기 정책
      - 프로세스가 필요로 하는 데이터를 메모리로 언제 가져올지 결정하는 정책
    • 배치 정책
      - 가져온 프로세스 메모리를 어디에 load할지 결정하는 정첵
    • 재배치 정책
      - 메모리가 꽉찼을 때, 메모리 내의 어떤 프로세스를 내보낼지 결정하는 정책
  4. 절대 주소와 상대 주소
    • 절대 주소
      - 실제 물리 주소, 메모리 관리자 입장의 주소
    • 상대 주소
      - 사용자 영역이 시작되는 주소를 0으로 변경하여 사용하는 주소
  5. 메모리 오버레이
    • 프로세스의 크기가 실제 메모리(물리 메모리)보다 클 때, 전체 프로세스를 적당한 크기로 잘라서 가져오는 기법
  6. 스왑
    • 스왑 영역
      - 메모리가 모자라 쫓겨난 프로세스 / 프로세스의 일부가 저장되는 저장장치의 영역
    • 스왑 인
      - 스왑 영역에서 데이터를 가져오는 작업
    • 스왑 아웃
      - 스왑 영역으로 데이터를 내보내는 작업
  7. 메모리 분할 방식
    • 가변 분할 방식
      - 프로세스의 크기에 따라 메모리를 나누는 것
      - 메모리 영역마다 크기가 다름
      - Continuous memory : 한 프로세스가 연속된 공간에 배치
    • 고정 분할 방식
      - 프로세스 크기에 상관없이 메모리를 같은 크기로 나누는 것

      - Non-continuous memory : 한 프로세스가 분산되어 배치
  8. 단편화
    • 외부 단편화(External Fragmentation)
      - 프로세스의 크기보다 남은 메모리 조각이 작아 할당이 불가능한 현상
    • 내부 단편화(Internal Fragmentation)
      - 각 메모리 조각에 프로세스를 배치하고 공간이 남는 현상

      구분 가변 분할 방식 고정 분할 방식
      메모리 단위 세그먼테이션(Segmentation) 페이징(Paging)
      특징 연속 메모리 할당 (Continuous memory) 비연속 메모리 할당 (Non-countinuous memory)
      장점 프로세스를 한 덩어리로 관리 가능 메모리 관리가 편리
      단점 빈 공간의 관리가 어려움 프로세스가 분할되어 처리됨
      단편화 외부 단편화 (External Fragmentation) 내부 단편화 (Internal Fragmentation)
  9.  가변 분할 방식의 메모리 배치 방식
    • 최초 배치
      - 메모리에서 적재 가능한 공간을 순서대로 찾아 배치
      - 장점 : 남은 공간을 모두 확인할 필요가 없음
    • 최적 배치
      - 메모리의 빈 공간에서 적당한 크기에 배치
      - 장점 : 크기가 딱 맞으면 단편화가 없음
    • 최악 배치
      - 최적 배치와 반대, 빈 공간이 가장 큰 공간에 배치
      - 장점 : 배치 후 남은 공간이 쓸모있음 (외부 단편화가 일어날 확률이 적음)
  10. 조각 모음
    • 프로세스의 메모리 위치를 옮겨 단편화가 발생한 메모리 영역을 합치는 작업

 

1. 메모리 관리의 개요

1) 메모리 관리의 복잡성

2) 메모리 관리의 이중성

3) 소스코드의 번역과 실행

4) 메모리 관리자의 역할

 

2. 메모리 주소

1) 32bit CPU와 64bit CPU의 차이

2) 절대 주소와 상대 주소

 

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

1) 메모리 오버레이

2) 스왑

 

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

1) 메모리 분할 방식

2) 가변 불할 방식의 메모리 관리

3) 고정 불할 방식의 메모리 관리

4) 버디 시스템

 

5. [심화학습] 컴파일과 메모리 관리

1) 컴파일 과정

2) 변수와 메모리 할당