TLB , 메인메모리 , TLB hit와 miss , 페이지 fault 에 대해서 정리함
학부수준에선 이정도 이해도면 ㄱㅊ은거아님?
읽고서 틀린부분 있으면 지적 ㄱㄱ. (개념적인부분에서)
cpu입장에서 메모리의 데이터를 접근하는 방식이 TLB를 먼저 뒤지고 거기서 페이지 프레임을 찾으면 바로 메인메모리에 접근해서 데이터를 꺼내오고
페이지 프레임이 없으면 TLB miss가 떠서 메인메모리로 돌아가서 페이지 테이블을 뒤진 다음에 거기서 페이지 프레임을 찾아서 메인메모리에 다시 접근해서 데이터를 꺼내오는거
만약 페이지 부재가 발생했다?? (페이지 테이블의 존재비트가 0인 상황 + 당연히 TLB도 miss임.) 그러면 cpu는 그 즉시 손을 떼고 dma 라는 녀석이 보조기억장치의 실 주소를 가져와서 메인메모리에 적재시킴. 적재시키고나서 페이지테이블의 존재비트를 0에서 1로 수정하고 그 이후에 cpu는 다시 메인메모리에 접근해서 그 주소의 데이터를 갖고옴.
Ostep 다시보도록
본문 글이나 다시읽어 ㅅㅂ
ai가 내말 맞다자나
@Bell-LaPadula 이왕 할거면 제대로 공부하라고
ㅇㅋ 죄송
학부생인데 그 정도 알면 이미 충분히 잘 하고 있는 거임. 다만 TLB는 데이터를 저장하는 곳이 아니라 가상 페이지 번호를 물리 프레임 번호로 바꾸는 번역 결과를 캐시하는 곳이고, 히트가 나도 보통 캐시 계층을 거친 뒤 메인메모리에 접근함. TLB 미스가 나면 하드웨어 페이지 테이블 워커나 운영체제가 페이지 테이블을 확인하고, 페이지가 없거나 권한이 맞지 않으면 페이지 폴트가 발생함. 이때 DMA가 알아서 처리하는 게 아니라 운영체제의 페이지 폴트 핸들러가 전체 과정을 지휘하고, DMA는 저장장치와 메모리 사이의 실제 데이터 전송에 쓰일 수 있는 보조 수단임
헐 완전짱 ..