캐시 관리자는 파일 시스템이 파일 데이터의 캐싱을 원할때 사용할수 있도록 복사 , 고정,
MDL(Memory Descriptor List) 이 라는 세 가지 종류의 인터페이스를 제공
(1) 복사 인터페이스
1. 파일 시스템이 데이터에 대해 처음으로 발생하는 파일 액세스로 판단하면 파일 캐싱을 초기화한다.
↓
2. 이때 캐시 관리자는 공유된 캐시 맵을 생성한다.
↓
3. 파일 시스템은 캐시 관리자가 제공하는 복사 인터페이스인 CcCopyRead()함수를 호출
↓
4. CcCopyRead() 함수는 파일의 공유된 캐시 맵 구조체를 조사
↓
5. 캐시 관리자는 'Active'로 표시되지 않은 VACB(Virtual Address Control Blocks)를 찾으며
이를 'Active' 상태로 표시하고, 다른 파일 데이터가 매핑되어 있는지 조사
↓
6. 캐시 관리자는 VACB에 있는 공유된 캐시 맵 포인터를 조사하고, 이 포인터가 유효하면 이전에
사용 했던 캐시 슬롯에 대한 매핑을 해제
↓
7. 메모리 관리자를 호출하여 파일 블록을 캐시의 가상 주소 영역으로 매핑
↓
8. 캐시 메모리에서 애플리케이션이 제공한 버퍼로 메모리 복사를 수행
--> 애플리케이션이 파일에 있는 데이터의 각 페이지를 처음으로 액세스하면 어떤 물리 메모리도
가상 메모리와 연결 되어 있지 않기 때문에 페이지 오류 가 발생
↓
9. 파일의 일부분과 일치하는 가상 메모리를 결정하고 , 이 가상 메모리와 연결하기 위한 물리 메모리를 할당
↓
10. 메모리 관리자는 디스크에서 파일의 내용을 읽어 가상 메모리에 저장하도록 파일 시스템 드라이버를 호출
↓
11. 애플리케이션의 버퍼로 성공적으로 복사하도록 캐시 관리자를 호출
--> 복사가 완료되면 VACB에 있는 액티브 카운트는 감소
'Soft Ware > Windows 구조와 원리' 카테고리의 다른 글
비동기 프로시저 콜 < APC > 에 대해서 ~~ (0) | 2012.02.19 |
---|---|
인터럽트 처리 방법 및 인터럽트 오브젝트 !!! (0) | 2012.02.16 |
지연 쓰기 란 (0) | 2012.01.04 |
캐시 관리자 (0) | 2012.01.04 |
스레드 (0) | 2011.11.16 |