본문 바로가기
전공/운영체제

Ch08. 가상 메모리의 기초_04)세그먼테이션-페이징 혼용 기법

by 임 낭 만 2023. 6. 10.

<쉽게 배우는 운영체제> 교재를 참고하였습니다.

세그먼테이션-페이징 혼용 기법

  • 페이징 기법은 물리 메모리를 동일한 크기로 나누어 관리하기 때문에 메모리 관리가 단순한 반면, 페이지 테이블의 크기가 큼
  • 세그먼테이션 기법은 맵핑 테이블의 크기를 작게 유지할 수 있으나 물리 메모리의 단편화로 추가적인 관리가 불가피함

메모리 접근 권한

  • 메모리의 특정 번지에 저장된 데이터를 사용할 수 있는 권한
  • 읽기(read), 쓰기(write), 실행(execute), 추가(append) 권한이 있음

메모리 접근 권한

프로세스의 영역별 메모리 접근 권한

  • 프로세스는 몸체에 해당하는 코드 영역, 프로세스가 사용하는 데이터를 저장하는 데이터 영역, 프로세스를 실행하는데 필요한 스택 영역, 프로세스 제어블록 (PCB)으로 구성됨
  • 코드 영역 : 자기 자신을 수정하는 프로그램은 없기 때문에 읽기 및 실행 권한을 가짐
  • 데이터 영역 : 데이터는 크게 읽거나 쓸 수 있는 데이터와 읽기만 가능한 데이터로 나눌 수 있음(일반적인 변수는 읽거나 쓸 수 있으므로 읽기 및 쓰기 권한을 가지고 상수로 선언한 변수는 읽기 권한만 가짐)
  • 메모리 접근 권한 검사는 가상주소에서 물리주소로의 변환이 생기면 시행됨

프로세스 영역별 메모리 접근 권한


세그먼테이션-페이징 혼용 기법의 도입

페이징 기법에서 메모리 접근 권한까지 고려한 페이지 테이블 예

  • 페이지마다 접근 권한이 다르기 때문에 페이지 테이블의 모든 행에는 메모리 접근 권한과 관련된 권한 비트right bit 추가
  • 메모리 관리자는 주소 변환이 이루어질 때마다 페이지 테이블의 권한 비트를 이용하여 유용한 접근인지 아닌지 확인
  • 페이지 테이블에 권한 비트가 추가되면 페이지 테이블의 크기가 커지는 문제가 있음 (이 문제를 완화하려면 반복되는 권한 비트를 줄여야 함)

페이징 기법의 메모리 접근 권한설

  • 권한 비트 추가에 따른 페이지 테이블의 크기가 커지는 문제는 세그먼테이션 테이블을 이용해 해결

페이징 테이블과 세그먼테이션 테이블의 혼합

  • 페이징 기법에 세그먼테이션 테이블을 추가하고, 권한비트와 같은 중복데이터를 세그먼테이션 테이블로 옮겨 테이블 크기를 줄임
  • 이렇게 혼합방식을 사용해 메모리 관리의 효율적 운용이 가능함. 현재 대부분의 운영체제는 이 방식을 사용

세그먼테이션-페이징 혼용 기법의 주소 변환

세그먼테이션-페이징 혼용 기법에서 동적 주소 변환 과정

  • 사용자 입장에서는 기본적으로 세그먼테이션 기법을 사용, 메모리 관리자 입장에서는 페이징 기법을 사용함
  • 순수 페이징 기법은 중복되는 데이터로 페이지 테이블이 커지기 때문에 혼용기법을 적용
  • 가상주소 VA=<S, P, D> 표현, S=세그먼트 번호, P=페이지 번호, D=페이지 처음 위치에서 해당 주소까지 거리
  • ① 사용자가 어떤 주소에 있는 데이터를 요청하면 해당 주소가 몇 번째 세그먼트의 몇 번째 페이지로부터 얼마나 떨어져 있는지 계산하여 가상 주소 VA=<S, P, D>를 구함
  • ② 세그먼테이션 테이블의 해당 세그먼트 번호로 가서 자신의 영역을 벗어나는 불법 접근이 아닌지, 권한이 없는 페이지에 접근하는 것은 아닌지 등을 확인 (만약 권한이 없는 페이지에 접근하거나 자신에게 주어진 메모리 영역을 벗어나면 세그먼테이션 오류(트랩)를 발생시켜 프로세스를 강제 종료하고, 그렇지 않으면 연결된 페이지 테이블로 감)
  • ③ 페이지 테이블에서 해당 페이지가 어느 프레임에 저장되었는지 찾음(만약 물리 메모리에 프레임이 있다면 메모리에 바로 접근하고, 없다면 스왑 영역에 가서 해당 페이지를 물리 메모리로 가져옴)
  • ④ 물리 메모리에 있는 프레임의 처음 위치에서 D만큼 떨어진 곳에 접근하여 데이터를 읽거나 씀

세그먼테이션-페이징 혼용 기법


 세그먼테이션 

세그먼테이션segmentation의 개념

  • 프로세스 관점을 지원하여 메모리를 크기가 변할 수 있는 세그먼트로 나누는 것
  • 프로그램을 구성하는 서브루틴, 프로시저, 함수나 모듈 등으로 세그먼트 구성
  • 각 세그먼트는 연관된 기능을 수행하는 하나의 모듈 프로그램으로 생각, 메모리의 연속된 위치에서 구성하되 서로 인접할 필요 없음
  • 메모리의 사용자 관점을 지원하는 비연속 메모리 할당 방법, 논리적 영역을 세그먼트의 집합으로 인식
  • 보통 컴파일러가 원시 프로그램을 실행 프로그램으로 자동 변환하면서 서브루틴과 프로시저, 함수, 모듈 등 각기 크기가 다른 세그먼트로 구성
  • 하드웨어 보호 등 관리에 필요한 사항은 페이징과 비슷하거나 동일
  • 프로세스에 따라 세그먼트 크기가 달라 메모리를 크기가 일정한 페이지 프레임으로 나누지 않고 동적 분할(가변 분할) 방법으로 할당
  • 프로그램(사용자) 관점의 메모리와 프로세스 관점의 메모리

프로그램 (사용자)관점의 메모리와 프로세스 관점의 메모리

  • 페이징과 세그먼테이션 메모리 할당 비교

페이징과 세그먼테이션 메모리 할당 비교


 세그먼테이션에서 하드웨어 구조와 원리 

세그먼테이션 예

논리적 주소 공간


 세그먼트 공유 

세그먼트 공유의 개념

  • 페이징 시스템과 달리 매우 단순
    • 페이징 시스템은 페이지 테이블의 공유항을 표시, 세그먼트는 공유한다고 선언만 하면 됨
  • 공유 기능을 사용하는 시스템은 적절한 보호 체계를 제공하여 승인한 사용자만 세그먼트에 액세스할 수 있도록 해야 함
  • 세그먼테이션에서 세그먼트 공유

세그먼테이션에서 세그먼트 공유


 페이징과 세그먼테이션 비교 

페이징과 세그먼테이션 비교

  • 프로그램을 나눈 모든 세그먼트에서 메모리의 빈 공간을 찾아 할당하는 것. 페이징과 비슷
  • 페이징과 달리 프로그램을 나누는 크기가 변함
  • 가변 크기 분할 방법처럼 세그먼테이션도 보통 최적 적합 알고리즘이나 최초 적합 알고리즘으로 해결하는 동적 메모리 할당 방법 이용
  • 따라서 외부 단편화가 일어날 수 있는데, 사용 가능한 메모리의 모든 블록이 너무 작아서 세그먼트를 수용할 수 없을 때 발생. 대부분 기다리거나 압축하여 더 큰 공간 만듦

 페이지화된 세그먼테이션 

페이지화된 세그먼테이션 개념

  • 페이징과 세그먼테이션의 장단점 취합
    • 페이징은 내부 단편화가 발생할 수 있으나, 메모리 효율적 사용, 작업 크기가 동일하여 다양한 알고리즘을 개발
    • 세그먼테이션은 외부 단편화가 발생할 수 있으나, 가변적인 데이터 구조와 모듈 처리, 공유와 보호의 지원 편리
  • 외부 단편화 문제를 제거하면서 할당 과정 쉽게 해결
    • 멀틱스 시스템과 인텔 386계열에서 사용
  • 페이지화된 세그먼트의 논리적 구조 예 : 멀틱스 시스템

페이지화된 세그먼트의 논리적 구조 예 : 멀틱스 시스템

페이지화된 세그먼트 메모리 주소 변환 예

페이지화된 세그먼트 메모리 주소 변환 예

댓글