[CS스터디]페이징과 세그먼테이션

지영·2023년 6월 10일
0

CS

목록 보기
20/77
post-thumbnail

페이징과 세그먼테이션을 이해하기 위해서는 단편화에 대해서 이해해야 합니다!

단편화란,

: 사용 가능한 메모리가 충분히 존재함에도, 할당이 불가능한 상태

  • 내부 단편화 : 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비되는 상황
  • 외부 단편화 : 총 메모리 공간은 충분하지만 중간 중간에 있는 메모리 양은 불충분해서 실제로는 프로세스를 할당할 수 없는 상황

📜) 컴팩션(Compaction) : 외부 단편화를 줄일 수 있는 방법, 메모리를 셔플하여 한 블록에 free memory를 모두 위치 시켜서 모으고, relocation(재할당)으로 해결이 가능. 단, I/O와 연동된 장치가 메모리에 있다면 메모리가 고정되어 해당 메모리는 셔플이 불가능함 -> 따라서 컴팩션은 구현이 어렵다는 단점을 가짐.

1. 페이징이란?

: 프로세스의 주소 공간을 고정된 사이즈의 Page단위로 나누어 물리적 메모리에 불연속적으로 할당하는 방식. 외부 단편화를 해결. 단, 여전히 내부 단편화는 존재함.

  • page : 고정된 크기로 나눠진 가상 메모리 영역의 블록 -> 프로세스 블록

  • frame : 고정된 크기로 나눠진 물리 메모리 영역의 블록 -> (물리)메모리 블록

  • Page Mapping : 페이지와 프레임을 대응시키기 위해 pageing table을 만들어 활용함. 연속적이지 않은 공간도 활용할 수 있기 때문에 외부 단편화 문제를 해결할 수 있음.

  • Page Table
    * 프로세스마다 가지고 있는 자료구조이며, 메인 메모리에 저장이 되어 있음. 각 페이지 번호와 해당 페이지가 할당된 프레임의 시작 물리 주소를 저장하고 있음.

    • PTBR(page-table base register) : 페이지 테이블을 가리킴
    • PRLR(page-table length register) : 페이지 테이블의 사이즈를 가리킴
    • Page Table의 내용 : 각 프로세스의 PCB 안에 저장된 레지스터의 내부 내용들은 스레드끼리 Context Switching을 하며 계속 바뀜.

    2. 세그먼테이션이란?

    : 가상 메모리를 사용하여 내부 단편화 해결. 가변 크리로 동적할당을 하기 때문에 외부 단편화가 존재함.

    base : 시작 물리 주소
    limit : 세그먼트 길이

  • 프로세스를 서로 크기가 다른 논리적인 블록 단위인 segment로 분할하여 메모리에 할당

  • 각 세그먼트는 연속적인 공간에 저장

  • 세그먼트들의 크기가 서로 다르기 때문에 프로세스가 메모리에 적재될 때 빈 공간을 찾아 할당하는 기법

  • 페이징과 마찬가지로 Segment Table 필요

    • STBR (Segment-table base register) : 페이지 테이블의 위치를 가리킴
    • STLR (segment-table length register) : segment 의 갯수를 알려줌

3. 페이징 vs 세그먼테이션

  • 페이징은 고정 크기를 가짐
  • 세그먼테이션은 가변 크기를 가짐
  • 페이징 : 내부 단편화 발생이 가능, 세그먼테이션 : 외부 단편화 발생이 가능
profile
꾸준함의 힘을 아는 개발자가 목표입니다 📍

0개의 댓글