Soft Ware/Windows 구조와 원리

비동기 프로시저 콜 < APC > 에 대해서 ~~

달려가보자 2012. 2. 19. 16:22

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