프로그램의 크기는 계속 증가하고 있기에 메모리는 항상 부족하다.
단편화(Fragmentation)
1) 외부 단편화(External Fragmentation)
2) 내부 단편화(Internal Fragmentation)
3) 압축(Compaction)
외부 단편화를 해소하기 위한 방법으로 Scattered Holes를 모으는 방법
Scattered Holes를 합치는 과정에서 메모리에 적재된 프로세스를 정지시키고 한쪽으로 이동시키는 작업이 필요해 비효율적
또한, Scattered Holes를 어느 자유공간을 기준으로 모을지 결정하는 알고리즘도 모호
물리 메모리 크기의 한계를 극복하기 위한 기술
100MB 메모리에 200MB 프로세스를 수행할 수 있도록 하는 것 -(어떻게?)-> "필요한 부분만" 메모리에 적재
대부분 세그먼트가 아닌 페이지 단위를 사용
정의 : 현재 필요한 페이지만 메모리에 올리는 것
정의 : CPU가 접근하려는 페이지가 메모리에 없는 경우
페이지 폴트가 발생하면 운영체제는 그 데이터를 메모리로 가져와서, 마치 페이지 폴트가 전혀 발생하지 않은 것처럼 프로그램이 계속적으로 작동하게 해줌.
이러한 페이지 폴트가 자주 일어날수록 운영체제의 성능이 많이 저하되기 때문에 페이지 폴트가 일어나지 않도록 하는 것이 중요함. 페이지 폴트를 최소화하기 위한 방법으로는 페이지 교체 정책(page replacement policy)이 있음.
참고자료 : https://ahnanne.tistory.com/15
https://velog.io/@codemcd/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-15.-%EA%B0%80%EC%83%81%EB%A9%94%EB%AA%A8%EB%A6%AC
캐시가 효율적으로 동작하려면, 캐시에 저장할 데이터가 지역성을 가져야 한다. 지역성이란 데이터 접근이 시간적 혹은 공간적으로 가깝게 일어나는 것
캐시메모리는 병목현상을 줄이기 위한 범용메모리이고 이런 역할을 수행하기 위해서는 CPU가 원하는 데이터를 어느정도 예측할 수 있어야 한다.
왜냐하면 캐시의 성능을 좌우하는 것은 작은 용량의 캐시 메모리에 CPU가 사용할 의미있는 정보가 얼마나 들어있는가 이기 때문이다.
이때 Hit rate를 극대화 시키기 위해 지역성의 원리를 사용한다.
지역성의 특성은 기억장치 내의 정보를 균일하게 참조하는 것이 아닌 어느 한 순간에 특정 부분을 집중 참조하는 것이다.
캐시의 지역성은 시간 지역성과 공간 지역성으로 나뉜다.
시간 지역성 : 최근에 참조된 주소의 내용은 곧 다음에 다시 참조되는 특성
공간 지역성 : 대부분의 실제 프로그램이 참조된 주소와 인접한 주소의 내용이 다시 참조되는 특성