이 글의 코드와 정보들은 [스프링 핵심원리 기본편] 강의를 들으며 정리한 내용을 토대로 작성하였습니다.
이 글의 코드와 정보들은 [스프링 핵심원리 기본편] 강의를 들으며 정리한 내용을 토대로 작성하였습니다.
이 글의 코드와 정보들은 [스프링 핵심원리 기본편] 강의를 들으며 정리한 내용을 토대로 작성하였습니다.
이 글의 코드와 정보들은 강의를 들으며 정리한 내용을 토대로 작성하였습니다.
이 글의 사진과 내용은 공룡책 과 컴퓨터학부 수업인 운영체제 강의자료를 기반으로 작성했습니다.

기존 가상 주소 공간에서는 Heap과 Stack 사이의 사용하지 않는 공간도 할당되므로 비효율성이 발생한다.
[1] 사용하지 않는 크기가 발생하므로 메모리 공간이 낭비된다.
[2] 위의 그림과 같이 (16KB 이상의) 메모리가 큰 주소 공간에는 프로세스를 지원할 수 없다.
[3] Code 공간에 여러 코드가 들어가서 중복이 발생할 수 있다.
이러한 문제점을 해결하기 위해 Segmentation 이라는 아이디어가 나오게 되었다.
세그먼테이션은 가상 주소 공간을 세그먼트 단위로 실제 메모리 주소 공간에 독립적으로 각각 매핑하는 방식이다.
이로 인해 heap과 stack 사이의 사용하지 않는 비효율성인 문제를 해결하게 되었다.
[1] 더이상 메모리 공간이 낭비되지 않는다.
[2] 이전보다 훨씬 더 많은 주소 공간을 지원할 수 있다.
[3] 세그먼트는 주소 공간 간에 Code를 공유하면서 메모리를 절약할 수 있다.
세그먼트(Segment)는 메모리에서 일정 부분을 의미하며 일반적인 주소 공간은 3개의 세그먼트(Code, Stack, Heap)으로 구성된다.
OS는 3개의 세그먼트를 메모리에 배치하여 heap과 stack 사이의 공간을 낭비하지 않도록 하는 것이다.