[운영체제]메모리 할당

찬들이·2022년 8월 16일
0

컴퓨터공학

목록 보기
14/34
post-thumbnail

🎯 메모리 할당이란?

  • 프로그램이나 데이터를 주기억장치에 할당하는 기법을 말한다.

  • 메모리할당은 연속 로딩 기법(단일, 다중 분할 할당)과 분산 로딩 기법(페이징, 세그먼테이션)으로 나눌 수 있다.

    단일분할 할당

    • 한 순간에 하나만 주기억장치의 USER영역을 사용하는 기법
    • 초기 운영체제에서 사용하던 기법으로 가장 단순하며, 운영체제가 사용하는 KERNEL영역과 해당 프로세스의 USER영역을 구분하는 경계레지스터를 사용한다.
    • 오버레이 기법과 스와핑기법을 사용한다.

      오버레이

      • 프로그램의 메모리가 주 기억장치보다 클 때의 문제를 해결하기 위한 기법
      • 하나의 프로그램을 여러 개의 조각으로 분할한 후 필요한 조각을 순서대로 주기억장치에 적재하여 프로그램을 실행한다.
      • 실행 중에 주기억장치의 메모리가 부족하면 불필요한 조각이 있는 곳에 새로운 조각을 중첩하여 적재한다.

      스와핑

      • 주기억장치에 적재한 하나의 프로그램과 보조기억장치에 적재한 다른 프로그램의 메모리를 교체하는 기법
      • Swap Out : 주기억장치에 있는 프로그램이 보조기억장치로 이동
      • Swap In : 보조기억장치에 있는 프로그램이 주기억장치로 이동
      • 가상기억장치의 페이징 기법으로 발전하였다.

    다중분할 할당

    • 고정 분할 할당과 동적 분할 할당이 있다.

      다중분할 할당

    • 주기억장치의 USER영역을 여러개의 고정 크기로 분할하여 사용하는 기법으로 프로그램 전체가 주기억장치에 적재한다.
    • 프로그램이 분할 영역보다 크면 분할 영역을 사용할 수 없어서 빈 공간으로 남은 전체 영역을 사용하는 외부 단편화가 발생한다.
    • 분할 영역보다 크기가 작은 프로그램을 적재하였을 때 내부 단편화가 발생한다.
    • 초기 다중 프로그래밍을 위해 사용했던 방법이며, 정적할당기법으로도 불린다.

      가변분할 할당

    • 프로그램을 주기억장치에 적재할 때 필요한 크기로 영역을 분할하는 기법이다.
    • 고정 분할 기법의 단편화를 줄이기 위한 방법으로 나왔지만, 영역 사이에 단편화는 발생할 수도 있다.

    버디 시스템

    • 2의 지수승으로 커널 프로세스에 메모리를 할당하는 방식
    • 요청된 메모리 크기를 수용할 수 있는 최소 크기로 메모리를 쪼개어 할당하며 그러한 메모리 조각을 buddy라고 부른다.
    • 작업 종료 후 원본 buddy와 합치기 좋다는 장점이 있다
    • 단점으로는 buddy로 인해 internal fragmentation이 생길 수도 있다는점과 buddy 생성 시 오버헤드가 크다는 점이 있다.
profile
Junior-Backend-Developer

0개의 댓글