어플리케이션이 어떤 데이터 x 를 access 하려고 할때, 이 데이터 x 가 현재 메인메모리 위에 캐시되었는지 아니면 디스크에 있는지 어플리케이션이 알아낼 수 있을까요? 다른 말로 하면 데이터 x 를 access 할 때, Cache miss 가 나는지 hit 가 나는지 정확히 알아낼 수 있을까요?
제가 아는 범위내에서 답 : 알수있다. OS는 커널단에서 관리하기때문에 메모리와 디스크 사이의 상관관계는 작업관리자에서도 보임. 덧 : 절대 디스크로 스왑 안되는 메모리 공간을 만들 수도 있음 -_ -ㅋ
2008.07.04 01:56:20 (*.248.242.224)
문보창
잘 모르겠어서 그러는데 구체적으로 말해줄 수 있어? for (int i=0; i<100000; ++i) print data[i]; 예를 들어서 코드가 위와 같을때 캐시 미스가 발생한 횟수를 어떻게 측정하지?
2008.07.04 12:41:00 (*.137.7.171)
undinekr
답 : 최초 1회 또는 0회 (메모리가 모지라지 않다는 전재하에서) 요즘 같이 메모리가 넉넉한 환경에서는 메모리와 하드의 스왑은 큰 문제가 없을듯 알아내려면 디바이스 드라이버를 작성해서 조사하면 됩니다. 하드디스크 필터 드라이버를 만들면 프로그램에서 파일에 접근하는 것을 다 확인할 수 있다능 -_ -ㅋ
답 : 알수있다.
OS는 커널단에서 관리하기때문에 메모리와 디스크 사이의 상관관계는 작업관리자에서도 보임.
덧 : 절대 디스크로 스왑 안되는 메모리 공간을 만들 수도 있음 -_ -ㅋ