OS - storage management란?

dddwsd·2022년 4월 17일
0

OS storage management

  • 1차 저장장치인 main memory와 2차 저장장치인 disk등을 관리하는 기능

1차 저장장치

  • main memory를 지칭함.
  • CPU가 직접 접근할 수 있는 기억장치이다.
  • 프로세스가 실행되려면 프로그램이 메모리에 올라와야 한다.
  • 각 프로세스에 할당하는 메모리 영역의 할당과 해제
  • 각 메모리 영역 간의 침범 방지
  • 메인 메모리의 효율적 활용을 위한 가상메모리 기능
  • 휘발성메모리

캐시 메모리

  • main memory에 저장된 내용의 일부를 임시로 저장해두는 기억장치
  • CPU가 이미 봤던 것에 재접근할 때, 메모리 참조 및 인출 과정에 대한 비용을 줄이기 위해 캐시에 저장해둔 데이터를 활용한다.
  • 플리플롭 소자로 구성된 SRAM으로 되어 있어서 DRAM보다 빠른 장점을 지녔다.
  • 캐시를 잘 활용하면 비용을 많이 줄일 수 있으므로 CPU가 어느 데이터를 원할지 예측을 잘하기 위해 '지역성의 원리'를 사용한다.
    • 지역성이란 기억 장치 내의 정보를 균일하게 access하는 것이 아니라 한 순간에 특정 부분을 집중적으로 참조하는 특성을 의미한다.
    • 시간 지역성
      • 최근에 참조된 주소의 내용은 곧 다음에도 참조되는 특성
    • 공간 지역성
      • 실제 프로그램이 참조된 주소와 인접한 주소의 내용이 다시 참조되는 특성.

2차 저장장치

  • disk, NAND flash memory등을 지칭함
  • 파일 형식의 데이터 저장
  • 이런 파일 데이터 관리를 위한 파일 시스템을 OS에서 관리.
  • 비휘발성 메모리

메모리 관리 기법

multi programming system에서는 여러 process를 수용하기 위해 주기억장치를 동적 분할하는 메모리 관리작업이 필요하다.

연속 메모리 관리

  • 프로그램 전체가 하나의 커다란 공간에 연속적으로 할당되는 방법
  1. 고정 분할 기법
    • 주기억장치가 고정된 파티션으로 분할 - internal fragmentation 발생
  2. 동적 분할 기법
    • 파티션들이 동적 생성되며 자신의 크기와 같은 파티션에 적재 - external fragmentation 발생

불연속 메모리 관리

  • 프로그램의 일부가 서로 다른 주소 공간에 할당되는 방법
  1. paging
  2. segmentation

paging

  • process를 일정한 크기의 page로 분할해서 메모리에 적제하는 방식
    • 페이지: 고정 사이즈의 가상 메모리 내 프로세스 조각
    • 프레임: 페이지와 같은 크기의 주기억장치 메모리 조각.
  • 페이지와 프레임을 mapping하기 위해 paging table이 존재한다.
  • 페이지를 사용해야 할때 프레임에 올리고 paging table을 통해 위치를 기억한다.
  • 연속적이지 않은 공간도 활용할 수 있기 때문에 외부단편화 문제를 해결할 수 있다.
  • 프로세스가 페이지 단위를 꽉 못채울 수 있으므로 내부 단편화가 발생할 수 있다.
  • 페이지 단위를 줄이면 내부단편화가 없어질수도 있으나, page mapping이 너무 많아지게 되므로 효율이 떨어질 수 있다.

단순 페이징

  • 각 프로세스는 프레임과 같은 길이의 페이지로 나뉜다.
  • 외부 단편화가 생기지 않는다
  • 내부 단편화가 생길 수 있다

가상메모리 페이징

  • 단순 페이징과 달리 프로세스 페이지를 전부 로드할 필요가 없다.
  • 필요한 페이지가 있으면 table을 통해 부른다.
  • 외부 단편화가 없다
  • 복잡한 메모리 관리로 overhead 발생할 수 있다.

segmentation

  • 프로세스를 물리적 단위인 페이지가 아닌 논리적 단위인 segment로 분할해서 메모리에 적재하는 방식.
    • 세그먼트: 가상 메모리를 서로 다른 크기의 논리적 단위로 분할한 것.
  • segment를 사용해야할 때 segment table을 통해서 mapping이 이루어진다.
  • segment별로 크기가 다르기때문에 내부 단편화가 해결된다.
  • 프로그램의 중요한 부분과 중요하지 않은 부분을 따로 저장함으로써 보호와 공유 기능을 할 수 있다.
  • 하지만 외부단편화가 발생할 수 있다.

단순 segmentation

  • 각 프로세스는 여러 세그먼트로 나뉜다.
  • 내부 단편화가 없다
  • 메모리 효율을 개선한다.
  • 동적 분할을 통한 overhead 감소한다.
  • 외부 단편화가 존재할 수 있다.

가상메모리 segmentation

  • 필요하지 않은 segment들은 로드되지 않는다.
  • 필요한 세그먼트가 있으면 table을 통해 부른다.
  • 내부 단편화가 없다.
  • 복잡한 메모리 관리로 overhead 생길 수 있다.
profile
Github - https://github.com/dddwsd

0개의 댓글