CS/OS

메모리 할당

KDGdev 2023. 2. 13. 22:13

메모리 할당


메모리에 프로그램을 할당할 때 어떤 방법으로 할당되는지 알아보겠습니다.

 

 

연속 할당

 

  • 고정 분할 방식
    • 메모리를 미리 나누어 관리합니다.
    • 내부 단편화, 외부 단편화가 발생합니다.

 

 

  • 가변 분할 방식
    • 매 시점 프로그램의 크기에 맞게 동적으로 메모리를 할당합니다.
    • 외부 단편화가 발생합니다.

 

 

불연속 할당

 

  • 페이징
    • 동일한 크기의 페이지 단위로 나누어 메모리의 서로 다른 위치에 프로세스를 할당합니다.
    • 메모리의 크기가 페이지로 딱 나누어지지 않기에 메모리의 마지막 영역에 내부 단편화가 발생합니다.

 

  • 세그멘테이션
    • 페이지 단위가 아닌 의미 단위인 세그먼트로 나눕니다.
    • 의미는 코드와 데이터 등으로 나눌 수 있으며 함수 단위로 나눌 수도 있습니다.
    • 중요한 부분과 중요하지 않은 부분을 분리하여 저장할 수 있어 보안 측면에서 좋고, 연관된 데이터끼리 엮어 공유 측면에서도 좋습니다.
    • 외부 단편화가 발생합니다.

 

  • 페이지드 세그멘테이션
    • 프로세스를 먼저 의미 단위인 세그먼트로 나누고 그 후 다시 동일한 크기의 페이지로 나눕니다.
    • 외부단편화를 해결하고 공유와 보호의 이점을 얻을 수 있습니다.
    • 하지만 페이징 테이블, 세그멘테이션 테이블, 총 두 번의 테이블을 거쳐야 하므로 속도가 느립니다.

 

※ 잘못된 정보, 혹은 다른 의견이 있다면 댓글로 말해주세요. 감사합니다.