CS

CS_운영체제_세그먼테이션, 페이징

99duuk 2024. 6. 23. 21:55

물리 메모리에는 소프트웨어가 올라간다.

이 메모리를 잘라서 cpu가 연산해야 하므로 1차 메모리에 올린다.

로딩해야하는데 프로그램마다 크기가 제각각이기 때문에 효율적으로 관리하지 않으면 메모리 낭비가 발생할 수 있다.

따라서 메모리 관리가 필요하다.

 

연속 메모리 할당 기법

프로그램들이 실행될 때 필요한 메모리를 연속된 블록으로 할당하는 기법이다.

 

단편화 (fragmentation)

프로그램이 프로세스화 되어 실행되면 각각을 연속된 공간에 할당해주거나,

일정 고정 단위 페이지로 나누어 할당할 수 있다. 

두 방식 모두 메모리에 빈 공간이 생기며, 이를 단편화(fragmentation)라고 한다.

 

 

  • 외부 단편화: 프로그램이 할당되진 않았지만 크기가 작아서 프로그램을 올릴 수 없는 영역
  • 내부 단편화: 분할 크기보다 작은 프로그램 적재 시 남는 영역

 

 

 

메모리 관리 기법

가변 분할 방식 (세그먼테이션)

가변 방식으로, 프로그램이 프로세스화 되어 실행되면 연속된 공간에 할당한다. 

 

장점: 

논리적 단위를 촘촘하게 쓸 수 있다.

프로그램의 논리적 구조를 반영해 메모리를 관리할 수 있으며,

각 세그먼트에 접근 권한을 설정할 수 있어 보안성이 높다.

 

주소 변환 방식: 

세그먼트 번호와 오프셋을 이용해 물리 주소를 계산한다. 논리 주소는 세그먼트 번호와 오프셋으로 구성되며, 

세그먼트 테이블을 참조해 물리 주소로 변환한다. 

 

문제점과 해결방안: 

프로세스 A가 사용하던 공간이 회수되지 않으면 외부 단편화가 발생한다. 

이를 해결하기 위해 압축(compaction) 기법을 사용한다.

[압축]

 

또한 세그먼트의 크기가 가변적이기 때문에 메모리 관리가 복잡할 수 있고

 

고정 분할 방식 (페이징)

고정된 크기의 페이지로 나누어 메모리를 할당하는 방식이다. 

os가 나눠주는 대로 연속되거나 쪼개질 수 있다. 

페이지는 물리 페이지의 프레임과 대응된다.

 

등장배경: 

메모리 단편화의 문제를 해결하기 위해 등장했다.

연속된 메모리 공간을 필요로 하지 않기 때문에 외부 단편화를 방지할 수 있다.

 

 

장점: 

외부 단편화가 발생하지 않는다. 

모든 페이지가 동일한 크기를 가지므로 관리가 용이하다.

 

주소 변환 방식: 

페이지 번호와 오프셋을 이용하여 물리 주소를 계산한다. 

논리 주소는 페이지 번호와 오프셋으로 구성되며,

페이지 테이블을 참조하여 물리 주소로 변환한다. 

 

문제점과 해결방안: 

페이지 테이블의 크기가 커질 수 있으며,

이를 해결하기 위해 다단계 페이지 테이블, 해시 테이블, 역페이지 테이블 등을 사용한다.

 

또한 페이지 내부의 사용되지 않는 공간은 내부 단편화를 유발할 수 있다.

 

 

 

비교

세그먼테이션은 프로그램의 논리적 구조를 반영하여 메모리를 할당한다.

세그먼트 단위로 메모리를 할당하고, 논리적 단위로 메모리를 관리할 수 있다.

 

페이징은 고정된 크기로 메모리를 나누어 할당한다. 페이지 단위로 메모리를 관리하며,

외부 단편화 문제를 방지할 수 있지만, 내부 단편화가 발생할 수 있다. 

 

 

 

 

 

 

+⍺ 

- 혼합 기법 :

일부 시스템에서는 세그먼테이션과 페이징을 혼합하여 사용하는데, 이를 통해 두 기법의 장점을 결합할 수 있다. 

예를 들어, 세그먼트를 페이지 단위로 나누어 관리하는 방식이 있다. 

 

 

효율성 향상 기법 :

- TLB (Translation Lookaside Buffer) : 주소 변환 속도를 높이기 위해 TLB를 사용하여 자주 사용하는 페이지 테이블 엔트리를 캐시한다.  

- 스와핑 : 메모리가 부족할 때, 사용하지 않는 페이지를 디스크로 내보내고, 필요할 때 다시 가져오는 스와핑 기법을 사용한다.