관리 메뉴

개발자비행일지

버스 스누핑(Bus Snooping), 캐시 일관성, 커널 보안 본문

▶ Computer Science

버스 스누핑(Bus Snooping), 캐시 일관성, 커널 보안

Cyber0946 2020. 9. 3. 11:14

버스 스누핑은 캐시 일관성(cache coherence)를 위해 사용하는 기술이다. 

캐시 일관성이란 공유 메모리 시스템에서 각 클라이언트(프로세스)가 가진 로컬 캐시 간의 일관성을 유지하는 것을 말한다.  예를 들어 각 클라이언트가 각각 자신의 로컬 캐시를 가지고 다른 여러 클라이언트와 메모리를 공유 하고 있을 때, 캐시의 갱싱으로 인한 데이터 불일치가 발생할 수 이싿. 예를 들어 두 클라이언트가 변수 A를 공유하고 있다고 하며, 그 값은 0으로 선언되어 있다고 하자. 이 때, 클라이언트 1이 A=1 이라는 명령을 수행하였고, 동시에 클라이언트 2가 변수 A를 읽어 들이게 되면, 클라이언트 1은 A=1로 인식하고 클라이언트 2는 A=0으로 인식하게 된다. 

즉, 공유하는 메모리에 대해서 다른 값을 가지게 된다. 캐시 일관성 유지는 이러한 데이터 불일치 현상을 없애는 것을 의미한다. 이러한 불일치 현상을 무효 상태(invalid state)라고 한다.  캐시와 주기억장치의 내용이 일치하지 않는 상태

 

여기서 스누핑(snooping)은 주소 버스를 항상 모니터링 함으로써, 캐시 상의 메모리에 대한 접근을 감시하는 구조이다. 모니터링 하다가 다른 캐시에서 해당 영역의 쓰기가 발생하면 캐시 컨트롤러를 통해서 자신의 캐시 위에 있는 해당 영역의 복사본을 무효화 시킨다. 

하지만 스누핑의 경우 각 노드의 대역폭이 충분히 크다면 좋은 성능을 기대할 수 있다.

그러나 성능 확장성(Scalability)이 좋지 않다. 왜냐하면 메모리 요청(Request)에 대해 다른 모든 노드에 브로드캐스트 해야 하기 때문이며 노드의 수가 증가하면 더 많은 브로드캐스트가 발생하게 되고 이 때문에 버스의 대역폭도 더 늘어나야만 한다.

'▶ Computer Science' 카테고리의 다른 글

Write Through, Write Back  (0) 2020.09.28
스트림 암호 one-time-pad 공격  (0) 2020.09.03
리눅스 기초 명령어 head  (0) 2020.07.23
혼동된 대리인 문제(confused deputy problem)  (0) 2020.07.01
UID, EUID, RUID  (0) 2020.07.01