IRQL 중에 APC LEVEL이 있습니다. 그 녀석에 대해 알아 보겠습니다
APC 은 비동기 프로시저 호출을 처리할때 재 진입을 제어 하기 위해 커널 모드 루틴에
의해 사용된다고 하네요.
간단한 예를 들어서 알아 보겠습니다.
프로세서 A라는 녀석이 파일 I/O 를 처리 하기 위해 함수를 호출 하였습니다.
I/O 관리자는 경로를 찾기 위해 오브젝트 관리자를 호출하여 해당 볼륨을 찾습니다.
그런 다음 I/O 관리자는 IRP를 생성하여 파일 시스템 드라이버를 호출합니다.
파일 시스템 드라이버는 캐싱 관리자를 호출하여 해당 파일이 캐싱 되어 있으면
시스템 버퍼에 메모리를 복사 하던지 맵핑 합니다 .
자 그럼 다시 돌아와서 프로세서 A는 그동안 무엇을 하고 있을까요?
비동기 프로시저 라는 의미는 파일 입출력 하는 동안 운영체제는 프로세서 A를 컨텍스트 스위칭을
합니다. 동기의 경우에는 계속 기달리지만 비동기 같은경우는 그렇지 않습니다.
자 파일 I/O에 해당하는 데이터를 읽기 요청을 한 유저 프로세스 A의 유저 주소 공간 내에 존재하는
버퍼에 데이터를 복사 해야합니다. 하지만 현재 프로세스 A가 아닌 다른 프로세스가 CPU를 점유 하고
있습니다. 이처럼 해당 프로세스를 호출하기 위해서 APC를 사용합니다 ^^
이해가 되시나요? ㅎㅎ
'Soft Ware > Windows 구조와 원리' 카테고리의 다른 글
인터럽트 처리 방법 및 인터럽트 오브젝트 !!! (0) | 2012.02.16 |
---|---|
캐시 인터페이스 (0) | 2012.01.04 |
지연 쓰기 란 (0) | 2012.01.04 |
캐시 관리자 (0) | 2012.01.04 |
스레드 (0) | 2011.11.16 |