학부 내용 정리/[ 2-1 ] 운영체제

[ OS ] Translation-Lookaside Buffer

haena02 2022. 4. 19. 00:00
반응형

1. paging

 

paging 은 주소공간을 페이지 단위로 다른다. 이는 많은 양의 정보를 필요로한다. 또, 각 가상 주소에 대해 추가 메모리 조회가 필요하다. 이 때 어떤 하드웨어 지원과 OS이 필요한가?

 

2. Translation-Lookaside Buffer (TLB)

MMU(메모리와 CPU에 관련되게 일하는 하드웨어)의 일부분이다. 이는 스스로는 아무것도 하지 못하고 OS가 이를 동작시켜줘야한다. Address-translation에 대한 캐시이다. 메모리까지 가서 table을 보기에는 오래걸리니까 캐시에 저장한다. 

 

3. TLB의 기본 알고리즘

 

VPN = (VirtualAddress & VPN_MASK) >> SHIFT  //상위 비트를 저장
(Success, TlbEntry) = TLB_Lookup(VPN) // 해당 VPN에 대한 TLB가 있는지 확인
if (Success == True) // TLB hit 찾았다!
	if (CanAccess(TlbEntry.ProtectBits) == True) // 보안 정상적인지 확인
		offset = VirtualAddress & OFFSET_MASK // 오프셋 알아내기
		PhysAddr = (TlbEntry.PFN << SHIFT) | offset // 합체
		Register = AccessMemory(PhysAddr) // 레지스터로 기기
	else
		RaiseException(PROTECTION_FAULT) // 예외
else // TLB miss 못찾았을 때는 paging 코드와 똑같다
	PTEAddr = PTBR + (VPN * sizeof(PTE))
	PTE = AccessMemory(PTEAddr)
	if (PTE.Valid == False)
		RaiseException(SEGMENTATION_FAULT)
	else if (CanAccess(PTE.ProtectBits) == False)
		RaiseException(PROTECTION_FAULT)
	else
		TLB_Insert(VPN, PTE.PFN, PTE.ProtectBits)
		RetryInstruction()

 

4. TLB Miss 는 누가 처리해주나 

1) 하드웨어가 알아서 처리, 그러기 위해서는 PTBR 꼭 필요 (넣어주는건 운영체제가 함)

2) OS 가 해결 (무한 연쇄 TLB 누락이 발생하지 않도록 주의)

 

5. TLB Contents

1) Fully associative

어떤 translation이던 빈공간이면 들어갈 수 있다. 

원하는 곳이 있을 때 일일이 찾아서 들어감

2) VPN | PFN | other bits

-Valid bit, Protection bits, Address-space identifier, dirty bit

 

6. TLB의 context switch

1) 다른 프로세스에서 VPN이 같은 친구들이 있으면 헷갈림으로 ASID 지정

2) 메모리 오버헤드를 위해 페이지가 공유 되었을 때 동기화가 되지 않도록 노력

 

7. TLB 교체 정책 설계 방법

 

1) Least-Recently-Used (LRU)

최근에 잘 안쓰인 애는 나중에도 안쓰일거다 라는 논리. 안쓰는 친구랑 바꿔치기한다. 

 

반응형

'학부 내용 정리 > [ 2-1 ] 운영체제' 카테고리의 다른 글

[ OS ] Locks_slides  (0) 2022.06.12
[ OS ] Concurrency and Thread  (0) 2022.06.11
[ OS ] Paging  (0) 2022.04.18
[ OS ] Segmentation  (0) 2022.04.18
[ OS ] Address Spaces  (0) 2022.04.18