Note/운영체제

메모리 관리

유니_ 2020. 11. 27. 18:06

운영체제가 메모리를 관리하는 방법은 크게 3가지 이다.

1)     Contiguous alloc: external pregamentation으로 compaction을 필요로 하나 컴팩션 하는데 많은 비용이 소모된다.

 

2)     Paging alloc : 페이지 테이블을 두고 생성되는 virtual address logical address를 실제 phiscal 메모리에 매핑을 시킨다.

하나의 프로세스가 하나의 페이지 테이블을 갖는다.

페이지에서 중요한 것은 페이지 테이블을 어떻게 잘 관리해서 성능을 높일 것인가. 페이지 테이블을 이용하면 메미로에 접근이 2번 일어나야 하기 때문.

따라서 TLB(translation look a side buffer)라는 하드웨어의 도움을 받는다. 이것은 pararell하게 접근해서 프레임을 바로 잡아낸다. TLB에 있으면 거기의 프레임 번호가 displacement와 합해져서 피지컬 메모리에 접근한다.

Tlb access 스피드는 메인메모리의 페이지테이블보다 10배이상 5배이상 빠르다 할 수 있다. TLb 에 없으면 페이지 테이블을 참조한다.

 

Tlb hit ratio가 보통 90%이상 된다. 로컬리티의 문제와 결부된다.

 

TLB도 캐시의 일종이기 때문에 연관 액세스 방식을 사용하며,
CPU가 생성한 가상 주소에 대한 페이지 정보가 변환 우선참조 버퍼 안에 존재한다면,
시간을 지체하지 않고 바로 물리 주소를 생성합니다.

존재하지 않는다면 페이지 테이블을 참조하는데 이때, 테이블에서 적중(hit)하면 TLB를 갱신하는 작업을 거칩니다.

페이지 테이블에서 page fault가 발생할 경우에는 OS에서 그 처리를 담당하는데요.
특히, MMU(Memory Management Unit)가 가상 기억장치 운영을 지원합니다.

MMU는 논리 주소를 물리 주소로 변환, 고정/동적 분할, 페이징, 세그먼테이션 등의 작업을 담당합니다.

m.blog.naver.com/PostView.nhn?blogId=qbxlvnf11&logNo=221363771287&proxyReferer=https:%2F%2Fwww.google.com%2F

 

http://blog.skby.net/tlb-translation-look-aside-buffer/
출처 : https://en.wikipedia.org/wiki/Page_table#/media/File:Page_table_actions.svg

 

https://m.blog.naver.com/PostView.nhn?blogId=qbxlvnf11&logNo=221363771287&proxyReferer=https:%2F%2Fwww.google.com%2F

 

3)     Segmentation alloc :