개발조아

메모리 관리 본문

CS/OS

메모리 관리

개발조아 2021. 10. 18. 19:40
728x90
  • 가상 메모리
    • 보조 기억장치 일부를 주기억장치(메인메모리)처럼 사용하는 것
    • 실제 메모리보다 큰 공간을 사용할 수 있다.(보조기억 장치 공간 사용)
    • 프로세스 실행 시 필요한 부분(요구페이지)만 가상 메모리에 올리고, 그중 일부분만 물리 메모리에서 실행한다.
    • 이후 CPU가 논리주소로 가상 메모리에 접근하여 실제 메모리에 필요한 부분을 적재한다.
    • 이때 논리주소를 실제 물리 주소로 바꾸는게 과정이 필요한데 이것을 MMU(Memory Management Unit)가 수행한다.
  • 메모리 할당
    • 연속 할당(Continuous Allocattion)
      • 프로그램을 연속인 메모리 공간에 배치
      • 충분히 큰 연속된 메모리가 없으면 할당 불가
      • 구현 단순
      • 고정 분할 기법 : 메모리를 고정된 크기로 분할, 내부단편화 발생
      • 동적 분할 기법 : 메모리를 필요한 공간만큼 할당, 외부단편화 발생
    • 불연속 할당(Non-Continuous Allocattion)
      • 프로그램을 여러 조각(페이징, 세그먼트)으로 분할
      • 각 조각을 메모리에 임으로 배치
      • 많은 프로세스가 메모리에 적재 가능
      • 페이징 기법 : 메모리를 같은 크기의 frame으로,  프로그램을 frame과 같은 크기의 페이지로 분할
      • 세그먼테이션 기법 : 서로 다른 크기의 세그먼트로 나누어 할당
  • 스와핑(Swapping)
    • 프로세스를 일시적으로 보조기억장치로 이동시켰다가 다시 실행이 필요할 경우 메모리에 적재
    • CPU 스케쥴링에 의해 CPU를 선점 당했을 때 다른 프로세스를 위해 보조 기억장치로 이동, 다시 CPU를 받았을 때 메모리에 적재
    • 적은 메모리 공간에서 여러 프로세스 실행 가능
  • 단편화
    • 프로세스가 메모리에 적재되고 제거되는 과정에서 프로세스들이 차지하는 메모리 틈 사이의 사용하지 못할 만큼 작은 크기의 빈 공간
    • 외부 단편화
      • 메모리 공간 중 사용하지 못하게 되는 일부분
      • 메모리 사이사이에 공간들을 합치면 충분한 공간이 되는 부분들이 분산되어 발생
      • 압축
        • 외부 단편화를 해소하기 위해 프로세스가 사용하는 공간을 한쪽으로 몰아 공간을 확보
        • 작업효율이 좋지 않음
    • 내부 단편화
      • 메모리의 고정된 크기 안에 남는 공간
      • 메모리가 100B로 나뉘어져있고, 프로세스가 90B라면 내부단편화는 10B 이다.
  • 불연속 할당 방식
    • 가상 메모리의 공간은 연속적이지만 실제 물리 메모리 공간은 연속적일 필요가 없다.
    • CPU가 가상 메모리의 공간을 참조하여 실제 메모리을 사용하기 때문이다.
    •  페이징
      • 물리 메모리는 Frame이라는 고정 크기로 분할, 가상 메모리는 Page라는 고정 크기로 분할, frame과 page의 크기는 같다
      • 논리 주소를 물리 메모리 주소 변환을 위해 페이지 맵 테이블이 필요함
      • 내부 단편화 문제 발생
    • 세그먼테이션
      • 가상 메모리와 물리 메모리를 다양한 크기의 세그먼트로 분할
      • 논리 주소를 물리 메모리 주소로 변환을 위해 세그먼트 맵 테이블이 필요함
      • 외부 단편화 문제 발생

'CS > OS' 카테고리의 다른 글

캐시 메모리  (0) 2021.10.18
페이지 교체 전략  (0) 2021.10.18
프로세스 스케줄링  (0) 2021.10.18
교착상태(DeadLock)  (0) 2021.10.18
프로세스 동기화  (0) 2021.10.18
Comments