[OS] 페이징 & 세그먼테이션

seheo·2022년 8월 23일
0

OperatingSystem

목록 보기
2/3

메모리 관리

가상메모리를 사용하기 위해서는 여러 프로세스를 수용하기 위해 RAM을 동적으로 분할하는 메모리 관리작업 필요
하드 디스크의 프로그램을 어떻게 메인 메모리에 적재할 것인지 판단해야 한다.

단편화 (Fragmentation)

기억 장치의 빈 공간 또는 자료가 여러 조각으로 나뉘는 현상.
프로세스들이 메모리에 적재되고 제거되는 일이 반복되면, 프로세스들이 차지하는 메모리 틈 사이에 사용하지 못하는 공간이 생긴다.

내부 단편화

  • 프로세스가 사용하는 메모리 공간에 남는 부분
  • 프로세스가 요청한 양 보다 더 많은 메모리를 할당하여 발생

외부 단편화

  • 메모리 공간 중 사용하지 못하게 되는 부분
  • 메모리 할당 및 해제 작업의 반복으로 작은 메모리가 중간 중간 존재할 수 있다. 이렇게 사용하지 않는 메모리가 존재해서 총 메모리 공간은 충분하지만 실제로 할당할 수 없는 상황이다.
  • 외부 단편화를 해결하기 위해 압축을 이용하여 프로세스가 사용하는 공간을 한쪽으로 몰 수 있지만, 작업 효율이 좋지는 않다.

해결방법

  • 내부 단편화를 해결하기 위해 페이징
  • 외부 단편화를 해결하기 위해 세그먼테이션

페이징(Paging)

프로세스를 고정된 크기의 페이지로 분할해서 메모리에 적재하여 내부 단편화를 해결

페이지(page): 프로세스를 나눈 조각
프레임(frame): 메모리를 나눈 조각

위 사진을 봤을때 프레임은 메모리에 연속적으로 존재하지 않는다.
하나의 프로세스는 연속적인 동작을 수행하는데 이렇게 메모리에 존재한다면 프로세스가 정상적으로 동작할까?

실제 메모리는 전혀 연속적이지 않지만 논리 주소를 통해 CPU는 연속적으로 사용되고 있다고 속으면서 사용된다.

주소 변환(Address Translation)


페이지 테이블은 하나의 열로 모든 페이지의 정보를 가진다
만약 페이지가 물리 메모리에 올라가 있지 않다면 invalid로 표시한다.

여러 프로세스가 존재하고 프로세스 마다 각자의 페이지 테이블이 존재해야하기 때문에 페이지 테이블 관리는 복잡하다.
메모리 관리자는 특정 프로세스가 실행될 때마다 페이지 테이블을 참고하여 가상 주소를 물리 주소로 변환하는 작업을 실행한다.
메모리 관리자가 페이지 테이블에 자주 접근하여 사용해야 하기 때문에 페이지 테이블은 물리 메모리 영역 중 운영체제 영역의 일부분에 모아 놓는다

프로세스의 갯수에 따라 페이지 테이블의 갯수가 증가하는데 페이지 테이블이 물리 메모리의 차지하는 영역이 너무 커지는걸 방지하기 위해 프로세스와 마찬가지로 페이지 테이블의 일부도 스왑영역(하드디스크)에 있을 수도 있다.

보안


페이지 테이블마다 r(read), w(write), x(execute) 플레그 비트를 두어 권한에 맞지 않는 동작을 할려고 한다면 CPU가 인터럽트를 발생시켜 ISR에서 강제로 해당 프로세스를 종료시킨다.

세그먼테이션(Segementation)

세그먼트는 가상 메모리를 서로 크기가 다른 논리적 단위로 분할한 것을 의미한다. 세그멘테이션은 프로세스를 물리적 단위인 페이지가 아닌 논리적 단위인 세그먼트로 분할해서 메모리에 적재하는 방식이다.

세그먼트 테이블
세그먼트 테이블은 세그먼트 번호(Segment No.)와 시작 주소(base), 세그먼트 크기(limit)를 엔트리로 갖는다.

세그먼트에서 주소변환

페이징과 유사하다. 한 가지 주의할 점은 세그먼트의 크기는 일정하지 않기 때문에, 테이블에 limit 정보가 주어진다. 그리고 CPU에서 해당 세그먼트의 크기를 넘어서는 주소가 들어오면 인터럽트가 발생해서 해당 프로세스를 강제로 종료시킨다. 그러면 세그먼트 주소변환 예제를 하나 살펴보자

  • 논리주소 (2, 100) => 물리주소 4400번지
  • 논리주소 (1, 500) => 인터럽트로 인해 프로세스 강제 종료(범위를 벗어남)

참고자료

운영체제 - 페이징과 세그멘테이션
운영체제 13. 페이징
운영체제 KOCW 양희재 교수
페이징 기법이란 무엇인가

0개의 댓글