9. 페이징, 세그멘테이션, 가상메모리

발표자: 오령기

내부단편화

메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비 되는 현상을 말한다.

  • 작은 크기의 메모리 공간이 남아서 해당 메모리 사용 못함

외부단편화

여유 공간이 여러 조각으로 나뉘는 현상을 말한다. 즉 작업보다 많은 공간이 남아 있더라도 실제로 그 작업을 받아 들이지 못하는 현상을 말한다.

  • 요청한 메모리 공간보다 더 남아있지만 메모리 공간이 연속적이지 않아 할당 못함

페이징(Paging)

페이징 기법(paging)은 컴퓨터가 메인 메모리에서 사용하기 위해 2차 기억 장치로 부터 데이터를 저장하고 검색하는 메모리 관리 기법이다. 즉 가상기억장치를 모두 같은 크기의 블록으로 편성하여 운용하는 기법이다. 이때의 일정한 크기를 가진 블록을 페이지(page)라고 한다. 주소공간을 페이지 단위로 나누고 실제기억공간은 페이지 크기와 같은 프레임으로 나누어 사용한다.

  • 외부 단편화 해결

  • 내부 단편화 발생

페이징 내부 단편화 발생 이유

일정 크기로 자르다가 그 크기보다 작은 크기로 잘리면 남는 공간이 생기므로 내부 단편화 발생!

세그멘테이션

프로세스를 논리적 내용(세그멘트)으로 잘라서 메모리에 배치하는 기법이다. 프로세스는 세그멘트의 집합이다. 세그멘트의 크기는 일반적으로 같지 않다.

세그먼트 기법 작동 과정

세그멘테이션 기법은 외부단편화 발생하므로 메모리 낭비 크다. 따라서 현재 대부분 페이징 기법을 사용한다.

세그멘테이션 + 페이징

세그멘테이션의 메모리 낭비 극복하기 위해 세그먼트 안에 별도의 페이지 테이블 생성

테이블 두 단계를 거치다보니 주소변환하는데 시간이 더 걸림 (오버헤드 발생)

가상메모리

물리적인 메모리 크기를 극복하기 위해 등장.

요구 페이징(Demand paging)

지금 필요한 페이지만 메모리에 올리는 기법

pure demand paging vs prepaging

필요할때만 가져옴 vs 미리 필요할 것을 가져옴

메모리 절약, 속도 느림 vs 메모리 낭비, 속도 빠름

페이지 결함(Page fault)

페이지 결함이란 프로그램이 자신의 주소 공간에는 존재하지만 시스템의 RAM에는 현재 없는 데이터나 코드에 접근 시도하였을 경우 발생하는 현상을 말합니다. 페이지 결함이 발생하면 운영 체제는 그 데이터를 메모리로 가져와서 마치 페이지 결함이 전혀 발생하지 않은 것처럼 프로그램이 계속적으로 작동하게 해줍니다.

페이지 결함 과정

  1. page table에 실행되어야 하는 번호의 주소 값이 없음(즉 메인 메모리에 없음)

  2. Interrupt 발생

  3. os에서 page fault 처리 루틴 실행

  4. 보조기억장치에서 해당 번호의 page 찾음

  5. 메인 메모리의 빈 공간에 해당 page 올림

  6. page table에 올림

  7. 다시 실행

Swapping vs Demend paging

Swapping: 메모리랑 backing store가 전체 프로세스 단위로 왔다갔다 함

Demend paging: 페이지 단위로 왔다갔다 함

사진 출처

https://code-lab1.tistory.com/54?category=1213006

https://velog.io/@codemcd/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-15.-%EA%B0%80%EC%83%81%EB%A9%94%EB%AA%A8%EB%A6%AC

Last updated