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를 수용하기 위해 주기억장치를 동적 분할하는 메모리 관리작업이 필요하다.
연속 메모리 관리
- 프로그램 전체가 하나의 커다란 공간에 연속적으로 할당되는 방법
- 고정 분할 기법
- 주기억장치가 고정된 파티션으로 분할 - internal fragmentation 발생
- 동적 분할 기법
- 파티션들이 동적 생성되며 자신의 크기와 같은 파티션에 적재 - external fragmentation 발생
불연속 메모리 관리
- 프로그램의 일부가 서로 다른 주소 공간에 할당되는 방법
- paging
- 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 생길 수 있다.