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