해결된 질문
작성
·
269
0
안녕하세요 널널한 개발자님 덕분에 강의 잘 듣고 있습니다.
기존의 GDI 엔진을 이용한 그래픽 처리의 경우 아래의 세 가지 경우에 대해 interrupt가 발생한다고 표시하셨습니다(27:49부터 작은 노란색 동그라미 표시). 자세한 설명은 없었지만 제가 이해한 바를 덧붙여서 써보면(틀린 부분 있으면 정정 부탁드립니다.)
user mode에서 API를 통해 system call이 호출되어 kernel mode에 있는 GDI엔진이 실행되도록 cpu가 일을 처리해야 할 때.
video card가 작업을 끝냈다고 cpu(PCI-e로 cpu와 직접 연결된 경우), 혹은 입출력 관리자에 통보할 때
GDI 엔진이 작업을 끝냈다고 cpu에 통보할 때
강의 내용과 관련하여 여쭤보고 싶은 점은 3 가지 입니다.
kernel mode에 있는 Driver가 H/W인 video card에 작업을 요청할 때에는 interrupt가 발생하지 않는지.
GDI엔진, Driver 등 커널 내부의 요소들끼리 작업을 요청할 때에는 interrupt가 발생하지 않는지.
DirectX도 어쨌든 kernel mode에 진입해야 하기에 system call을 호출하여 interrupt는 발생할텐데, GDI 엔진을 사용했을 때의 interrupt 발생 횟수와 Direct X를 사용했을 때의 interrupt 발생 횟수가 어떻게 차이가 있는지.
바쁘실텐데 긴 글 읽어주셔서 감사합니다.
답변 2
1
[정정사항]
GDI 엔진은 이미 실행 중입니다. 다만 커널에 진입하는 과정에서 I/O 요청 인터럽트가 발생합니다.
그래픽 카드에 따라 차이가 많습니다. 그래픽 카드는 출력전용 장치이므로 사실상 Output만 있습니다. 출력할 정보가 그래픽 카드에게 전송이 끝났다면 입/출력이 완료되는 것입니다. 이 과정에서 장치 수준 인터럽트가 있을 수 있습니다.
작업이 끝났다는 것이 출력완료를 뜻하는 것이라면 아닐 수 있습니다. 그래픽 카드로 정보가 모두 전달되었다는 것 자체가 출력완료로 보는 것이 맞겠습니다.
[질문에 대한 답변]
경우에 따라 다릅니다. 소프트웨어적 인터럽트도 있기 때문에 아예 발생하지 않는다 할 수는 없겠습니다.
보통은 발생하지 않습니다. OS마다 정해진 인터페이스 함수를 이용하는 것이 보통인데 그 내부에서 추가적인 발생이 있는지는 저도 알 수 없습니다.
응용 프로그램이 가질 수 없는 OS 커널 수준 권한이 일부 주어진 것처럼 커널 모드 스위칭 대기가 없습니다. 참고하시기 바랍니다.
친절한 답변 감사드립니다. 널널한 개발자님 강의들에서 종종 실제 서비스들을 3계층 구조로 설명해주시는데 이렇게 프로그램의 전체적인 3계층 구조를 파악하고, 이번 directX처럼 OS로부터 권한이 주어지는지의 여부까지 디테일하게 알려면 어떤 노력들을 해야 하는지 방향을 잡아주시면 감사하겠습니다. 항상 큰 도움이 되어 주셔서 감사합니다.