카테고리 없음

페이징&세그멘테이션

구이리 2021. 7. 20. 22:36

페이징&세그먼테이션

메모리 관리 기법

  • 다중 프로그래밍 시스템에서 여러 프로세스를 수용하기 위해 주 메모리를 동적 분할하는 메모리 관리 작업을 의미
  • 종류 : 연속 메모리 관리, 불연속 메모리 관리

1. 연속 메모리 관리

  • 프로그램 전체가 메모리에 연속적으로 할당되어야만 하는 관리 기법 (연속적인 메모리 주소에 할당)
  • 하나의 분할에 하나의 프로그램만 적재 가능
  • 종류 : 고정분할기법 / 동적분할기법
고정분할기법
메모리가 고정된 파티션으로 분할, 내부 단편화 발생
(내부 단편화 -> 고정된 파티션보다 작은 프로세스 할당 시 빈공간)

동적분할기법
파티션들이 동적으로 생성되며 자신의 크기와 같은 파티션에 적재, 외부 단편화 발생
(외부 단편화 -> 프로세스 생성, 제거 반복 시 공간이 작은 조각들로 나누어지는 것)

image)image

Q. 단편화의 문제 해결 방법

  • 하나의 프로그램이 나뉘어서 메모리에 할당 될 수 있게 -> 페이징 / 세그멘테이션
  • 단편화된 메모리 공간을 합침 -> 압축 / 통합

2. 비연속 메모리 관리

  • 프로그램 일부가 서로 다른 주소 공간에 할당될 수 있는 기법
  • 하나의 프로세스가 사용하는 메모리 공간이 연속적이여야 한다는 개념 탈피
  • 종류 : 페이징 / 세그멘테이션
페이지(page) : 작은 고정 사이즈의 프로세스 조각
프레임(frame) : 페이지와 크기가 같은 주기억장치 메모리 조각
페이지 테이블 : 프로세스의 각 페이지에 해당하는 프레임 위치 관리
단편화 : 기억 장치의 빈 공간 또는 자료가 여러 개의 조각으로 나뉘는 현상
세그먼트 : 서로 다른 크기를 가지는 논리적인 블록이 연속적인 공간에 배치되어 있는 것

2-1. 페이징 기법

  • 프로세스의 주소 공간을 동일한 사이즈의 페이지로 나누고 물리적 메모리에 불연속적으로 저장
  • 물리적 단위로 분할
  • 외부 단편화와 압축 작업 해소
  • 고정 분할 방식

image

Q. 프로세스를 자르면 실행이 될까?

  • 메모리 관리기(MMU, Memory Management Unit)의 재배치 레지스터에서 논리주소를 물리주소로 변환
  • 페이지마다 재배치 레지스터를 만들어 프로세스가 연속된 메모리 공간에서 동작하고 있다고 생각하게 만듦

Q. 페이징 기법에서 내부 단편화 발생?

  • 프로세스가 페이지 크기게 맞게 나누어 떨어지지 않는 경우 발생
  • But, 외부 단편화 >>>>>> 내부 단편화

image

2-2. 세그멘테이션

  • 프로세스를 서로 다른 크기의 세그먼트로 분할하고 메모리에 배치
  • 논리적인 단위로 분할 (코드, 데이터 , 스택) -> 크기 다름
  • 메모리 할당, 주소 변환은 페이지와 같음
  • 각 세그먼트마다 limit 존재

image

Q. 세그멘테이션에서 외부 단편화 발생?

  • 크기가 다양하기 때문에 빈 공간보다 큰 세그먼트는 들어가지 못함

페이징 vs 세그멘테이션

  • 세그멘테이션 : 보호, 공유에 효율적
  • 페이징 : 외부 단편화 문제 해결
  • 두개 합친 Paged Segmentation -> 주소 변환 두번 해야함.

참고

7. 메모리 관리 기법(3) - 페이징, 세그멘테이션

8-2. 페이징, 세그먼테이션

메모리 단편화, 페이징, 세그멘테이션