- 현대에는 메모리를 효율적으로 사용 하기 위해
페이징
이라는 방법으로 메모리를 사용- 필요한 데이터만 메모리에 올리고 당장 사용하지 않는 데이터는
디스크영역
의Swap area
에 저장MMU
,TLB
와 같은하드웨어
의 지원을 받아메모리영역
의Page Table
을 통해 메모리를 참조
논리 주소
는 cpu가 보는 주소로 각 프로세스마다 독립적으로 갖는 주소 공간
물리 주소
는 메모리에 실제로 올라가는 위치
주소 변환은 아래의 과정으로 진행하고
Symbolic Address
-> (Compiler) -> Logical Address
-> (MMU) -> Physical Address
프로그램이 물리 메모리에 어디에 올릴지 결정 하기 위해서 주소 바인딩
을 하게 되는데
주소 바인딩은 3가지 종류로 Complie
, Load
,Execution(Run)
타임 바인딩이 있다.
이 중에 논리주소를 물리주소로 변환하는 부분에 해당하는게 주소 바인딩
이다.
논리주소를 물리주소로 변환 시켜주는 장치
MMU는 프로그램의 시작 주소
를 가진 Base register
,
마지막 주소
를 가진 Limit register
와 간단한 산술연산기
로 구성
Limit register보다 큰 물리주소가 나오게 되면
레지스터가 제어권을 CPU에게
넘겨서 확인 후 문제 프로세스를 종료
프로그램마다 필요한 메모리의 크기가 다르다.
이러한 여러 프로그램을 연속할당 방식으로 하게되면 외부 단편화 문제를 발생시킨다.
프로그램을 Page
(4KB)라는 동일한 크기로 잘라서
물리 메모리에 올리는 방법
을 말한다.
물리메모리를 Page에 크기와 동일하게 사용하기 위해 Frame
이라는 단위로 메모리를 적재한다.
동일한 크기로 자른 Page들을 메모리에 적재 할때 연속적이지가 않게 된다.
이러한 Page들을 순차적으로 실행하기 메모리에 적재된
Page Table이 필요
하게 된다.
모든 메모리의 접근 연산에는 2번의 memory access 필요(page table 접근
1번, data/instruction 접근
1번)
이렇게 메모리를 사용하게 되면 속도가 2배로 늦어지게 되는데
이것을 개선하기 위해 추가적인 하드웨어 사용
이 필요하게 되는데 이것이 TLB
이다.
TLB는 주소 변환의 속도 향상
을 위해 사용하는 캐시메모리
이며 페이지 테이블의 일부
를 담고 있다.
TLB는 일부를 담고 있기 때문에 page number
와 frame number
를 가지고 있어야 한다.
TLB의 전체를 탐색 해야되기 때문에 소프트웨어로 하면 overhead가 커질 수 있으나
TLB의 내부
의 내용을 병렬로 탐색
하기 위해 고속 lookup hardware cache
를 사용
메모리를 더 효율적으로 사용하기위 프로세스마다 공통적으로 사용하는 것을 모아놓은 Page를 Shared Page
메모리가 부족하여서 프로그램을 올릴 수 없는 경우에는
관리의 중요도에 따라서 메모리
와 디스크의 Swap Area
사이에 데이터를 넣고 빼고 하게되는데
이것을 Swap in
, Swap out
이라고 한다.
잘못된 주소를 참조
했다면 프로세스를 종료
시키고제대로 된 주소
라면 해당 페이지를 disk의 Swap area
에서 memory
로 읽어온다.page table entry에
valid/invalid bit에 valid로 표시
메모리 공간이 부족해서 Swap in/out을 하게 되는데 이것을 Page replacement라고 한다.
그리고 이 정책은 운영체제가 관리
한다. Clock 알고리즘을 사용하여 replacement 대상을 정한다.
이에 관한 내용도 Page table에 기록한다. out하는 page에 변경사항이 있다면 변경사항을 swap area에도 반영해줘야한다.
메모리가 고갈되면 프로세스의 원활한 수행에 필요한 최소한의 page frame수를 할당 받지 못한 경우 발생하고 페이지 폴트 비율이 매우 높아지고, CPU 이용률이 낮아진다.
CPU는 이용률이 낮아지니 프로세스를 추가하게 되고 쓰레싱이 발생
한다.
쓰레싱이 해소되지 않을 경우
Out of Memory
상태로 판단 중요도가 낮은 프로세스
를 찾아 강제 종료
한다.
쓰레싱 문제를 해결하기 위해 Working set
알고리즘을 사용한다.
일정 시간 동안 원활하게 수행되기 위해 한꺼번에 메모리에 올라와 있어야 하는 Page들의 집합이다
그렇지 않을 경우에는 모든 frame을 반납하고 swap out 한다.
특정 시점만 체크한 경우 CPU 사용률이 높아보일 수 있음
연속 체크시 CPU 사용률이 급격하게 떨어지는 구간 발견 가능
메모리 적재량을 함께 체크하면서 쓰레싱 유무 확인
추가적인 서버자원을 배치하는 등 해결방안 마련