My Boundary As Much As I Experienced

페이징 & 세그멘테이션 본문

Computer Basics

페이징 & 세그멘테이션

Bumang 2023. 10. 5. 08:41

가상 메모리 (Virtual Mememory)

  • 실제 메모리 크기와 관계 없이 메모리를 사용할 수 있도록 가상 메모리 주소를 사용하는 것
  • 프로세스의 일부분만 메모리에 로드하고 나머지는 보조 기억 장치 (가상 메모리 공간) 에 둔다

 

Memory Fragmentation

어떠한 프로그램을 실행할 때, 컴퓨터에서는 프로그램들을 메모리 공간에 연속적으로 할당하게 됩니다. 만약 여러 프로그램들이 메모리에 할당되고 해제되는 것이 반복되다 보면 메모리 공간이 조각조각 나뉘게 되어 총메모리가 충분함에도 불구하고 프로그램에 메모리를 할당하는 것이 불가능한 상태가 발생하게 됩니다. 이러한 현상을 바로 메모리 단편화라고 하며, 이번 포스팅은 메모리 단편화 해결방법인 페이징과 세그멘테이션에 대해 알아보도록 하겠습니다.

 

 

Memory Fragmentation 해결 방법

이러한 메모리 단편화 해결 방법으로 페이징과 세그멘테이션을 알아보자.

 

Paging

  • 프로세스의 주소 공간을 고정된 사이즈의 페이지 단위로 나누어 물리적 메모리에 불연속적으로 할당하는 방식
  • 메모리는 Frame이라는 고정크기로 분할되고, 프로세스는 Page라는 고정크기로 분할됨
  • 페이지와 프레임은 크기가 같음
  • 페이지와 프레임을 대응시키는 page mapping 과정이 필요하여 paging table을 생성해야 함
  • 연속적이지 않은 공간도 활용할 수 있기 때문에 외부 단편화 문제 해결
  • 페이지 테이블에는 각 페이지 번호와 해당 페이지가 할당된 프레임의 시작 물리 주소를 저장

 

 

 

Segmentation

  • 사용자/프로그래머 관점의 메모리 관리 기법
  • Segment : 페이지 같은 개념이지만, 프로세스를 논리적 내용을 기반으로 나눠서 메모리에 배치
  • 프로세스를 Code, Data, Stack으로 나누는 것 역시 세그멘테이션!
  • 세그먼트 테이블은 세그먼트 번호와 시작 주소(base), 세그먼트 크기(limit)를 엔트리로 가짐
  • 가상 메모리 사용
  • CPU에서 해당 세그먼트의 크기를 넘어서는 주소가 들어오면 인터럽트가 발생해서 해당 프로세스를 강제로 종료

 

 

Paging 과 Segmentation 차이

  • paging 은 고정 크기를 가짐
  • segmentation 은 가변 크기를 가짐
  • paging은 내부 단편화 발생 가능, segmentation 은 외부 단편화 발생 가능




Paging 과 Segmentation 을 사용하는 이유

  • Memory Fragmentation 해결하기 위한 방법
  • 다중 프로그래밍 시스템에서 여러 프로세스를 수용하기 위해 주기억장치를 동적 분할하는 메모리 관리 기법이 필요함

'Computer Basics' 카테고리의 다른 글

메모리  (0) 2023.10.10
페이지 교체 알고리즘  (0) 2023.10.05
세마포어(Semaphore) & 뮤텍스(Mutex)  (0) 2023.09.12
경쟁 상태(Race Condition)  (0) 2023.09.12
동기식 (Synchronous) / 비동기식 (Asynchronous) 이란?  (0) 2023.09.05