Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발자 도전기

[STUDY] 세그먼테이션과 세그먼테이션-페이징 혼용 기법 본문

개발공부/CS스터디

[STUDY] 세그먼테이션과 세그먼테이션-페이징 혼용 기법

jnnjnn 2024. 4. 22. 23:27

 

지난주에는 가상 메모리의 구현 방식 중 하나인 가변 분할 방식 중 페이징에 대해서 알아보았습니다.

오늘은 또다른 가변 분할 방식인 세그먼테이션과, 세그먼테이션-페이징 혼용 기법에 대해 알아봅시다

 

 

세그먼테이션이란?

 

  • 프로세스를 논리적 단위(세그먼트)로 나눠서 메모리에 배치하는 것을 말한다
  • 각 세그먼트의 크기는 일정하지 않다
  • 세그먼트가 물리 메모리에 저장된 위치를 저장한 세그먼트 테이블을 가진다
  • 세그먼트 테이블은 시작 주소(base)와 세그먼트 크기(limit)을 엔트리로 갖는다
  • 시작 주소(base) : 세그먼트가 물리 메모리에 저장된 시작 지점을 나타낸다
  • 세그먼트 크기(limit) : 세그먼트의 크기이며 세그먼트가 물리 메모리에 저장된 마지막 지점이다

 

 

세그먼테이션 기법의 주소 변환

  • 세그먼테이션 기법에서는 가상 주소를 VA(Virtual Address) = <S, D>로 표현한다
  • S는 세그먼트 번호, D는 세그먼트 시작 지점에서 해당 주소까지의 거리이다

 

  1. 세그먼트 번호인 S로 세그먼테이션 테이블에 접근해 해당 세그먼트의 물리적 주소인 address를 구한다
  2. Distance와 limit의 크기를 비교한다
    2-1. Distance > limit 이라면 세그먼트의 주소가 해당 세그먼트를 벗어나게 되므로 트랩(주소 오류)가 발생한다
    2-2. Distance < limit 이라면 address와 distance를 더한다
  3. 물리 주소에 접근해서 원하는 데이터를 읽거나 쓴다

👉 VA = <1, 128> 일 때,
세그먼트1의 물리적 주소(address)는 450이다.

세그먼트1의 크기(limit)은 120이다
limit(120)과 distance(128)의 크기를 비교하면 limit < distance이므로 해당 주소는 세그먼트1의 범위를 벗어나게 되어 트랩(주소 오류)를 일으킨다

 

👉 VA = <1,60> 일 때,

세그먼트1의 물리적 주소(address)는 450이다.

세그먼트1의 크기(limit)은 120이다

limit(120)과 distance(60)의 크기를 비교하면 limit > distance이므로 세그먼트1의 범위를 벗어나지 않기 때문에 address와 distance를 더하여 (120 + 60) 해당 가상 주소를 물리 주소로 변환한다

물리 주소인 180번지에 접근한다

 

 

세그먼테이션과 페이징의 차이

페이징

  •  내부 단편화가 발생한다
  • 서로 다른 논리적 영역들이 섞일 수 있다

세그먼테이션

  • 외부 단편화(hole)가 발생한다
  • 논리적 단위로 분할하기 때문에 code, data, stack 등의 보호와 공유에 호율적이다

 

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

✔ 메모리 접근 권한

  • 메모리 접근 권한이란 메모리의 특정 번지에 저장된 데이터를 사용할 수 있는 권한이다
  • 읽기(read), 쓰기(write), 실행(execute), 추가(append) 권한이 있다
  • 권한들은 복합적으로 사용된다. 예를 들면 일반적인 데이터에는 읽기 및 쓰기 권한이 적용된다

 

이론상으로는 네 가지 메모리 접근 권한을 모두 조합하면 2^4(16)개의 메모리 제어 방식이 나오지만

추가 권한의 경우 해당 데이터의 마지막에 새로운 데이터를 추가하는 것이므로 항상 쓰기 권한이 동반되어야 한다. 그러므로 쓰기 권한 없이 추가 권한을 사용할 수 없다. 그러므로 2^3(8)개의 메모리 제어 방식이 사용된다. 읽기 권한 없이 쓰기를 하는 경우는 거의 없기 때문에 모두 2와 3은 쓰이지 않는다

 

 

  • 코드 영역 : 몸체에 해당되는 영역
    자기 자신을 수정하는 프로그램은 없기 때문에 읽기 및 실행 권한을 가진다

  • 데이터 영역 : 프로세스가 사용하는 데이터를 저장하는 영역
    읽기만 가능한 데이터(상수로 선언한 변수)와 읽기 및 쓰기 권한을 가지는 데이터(일반적인 데이터)로 나뉜다

  • 힙/스택 영역 : 프로세스가 실행하는 데 필요한 스택, 힙 영역
  • 프로세스 제어 블록(PCB: Process Control Block) : 운영 체제 차원에서 프로세스를 관리하는 기능이다

메모리 접근 권한 검사는 가상 주소에서 물리 주소로 주소 변환이 일어날 때마다 실행된다. 만약 읽기만 가능한 메모리 영역에 쓰기를 하려고 하면 메모리 오류인 트랩이 발생한다. 페이징과 세그먼테이션 기법 모두 메모리 접근 권한 검사를 실시한다. 

 

 

페이징 시스템에서는 페이지마다 접근 권한이 다르기 때문에 페이지 테이블의 모든 행에는 메모리 접근 권한과 관련된 권한 비트(right bit)가 추가된다. 메모리 관리자는 주소 변환이 이루어질 때마다 페이지 테이블을 확인하여 유용한 접근인지 아닌지 확인한다.

 

이처럼 페이지 테이블에 권한 비트가 추가되면 페이지 테이블의 크기가 커지므로 비효율적이다.

이러한 문제를 세그먼테이션 테이블을 이용해 해결할 수 있다

 

 

세그먼테이션 혼용 기법에서는 프로세스를 우선 세그먼트로 나누고 해당 세그먼트를 또 페이지 단위로 나눈다.

 

세그먼테이션에서는 프로세스를 논리적 단위인 세그먼트로 나누었기 때문에 동일한 세그먼트는 동일한 권한 비트를 가진다. 따라서 권한 비트를 페이지 테이블에 저장하지 않고 세그먼테이션 테이블에 저장하여 중복되는 테이블의 크기를 줄일 수 있다.

 

가상 주소를 물리 주소로 변환하는 과정

 

세그먼테이션-페이징 혼용 기법에서는 가상 주소를 VA = <S,P,D>로 표현한다

  • S 는 세그먼트 번호
  • P 는 페이지 번호
  • D는 페이지 처음 위치에서 해당 주소까지의 거리를 의미한다
  1. 세그먼트 테이블에 접근하여 접근 권한을 확인한다
    1-1. 권환이 없는 페이지에 접근하거나, 자신에게 주어진 메모리 영역(limit)을 벗어나면 트랩을 발생시킨다
  2. 해당 세그먼트의 페이지 테이블에 접근하여 해당 페이지가 어느 프레임(물리 메모리)에 저장되어 있는지 찾는다
    2-1. 물리 메모리가 없다면 페이지 부재가 일어나서 스왑 영역에 가서 해당 페이지를 물리 메모리로 가져온다
  3. 물리 메모리의 프레임의 처음 위치에서 D(distance)만큼 떨어진 곳에 접근하여 데이터를 사용한다

 

 

 

세그먼테이션-페이징 혼용 기법을 사용하면 페이징과 세그먼테이션의 장점을 모두 활용할 수 있다.

하지만 세그먼트와 페이지가 동시에 존재하기 때문에 주소 변환을 두 번 해야한다는 단점이 존재한다

 

'개발공부 > CS스터디' 카테고리의 다른 글

[STUDY] Node js란?  (0) 2024.05.29
[STUDY] OSI 7계층  (0) 2024.04.30
[STUDY] 페이징  (0) 2024.04.16
[STUDY] 가상메모리와 메모리 할당  (0) 2024.04.12
[STUDY] 프로세스 동기화  (0) 2024.04.02