상상면접 : IOCP란 ? (Socket)

취업/면접준비

2020. 6. 9. 00:41

면접관 : IOCP에 대해서 설명해주시겠어요?

 

나 : 먼저, IOCP의 목적은 동시에 수행되는 스레드의 상한을 설정해서 CPU의 자원을 최대한 효율적으로 사용하게 하는 것입니다.

 

나 : IOCP는 Overlapped I/O가 완료되면 이를 감지해서 사용자에게 알려주는 역할을 합니다.

 

면접관 : Overlapped I/O가 뭔가요?

 

나 : Overlapped I/O는 I/O에 대한 처리를 Device Driver에 권한을 넘김으로서 별도의 스레드 없이 비동기로 둘 이상의 데이터 전송을 중첩시키는 것을 의미합니다. Device Driver는 작업을 끝내면 유저 버퍼에 데이터를 채워넣기에 I/O에 대한 처리를 중첩해서 처리할 수 있습니다.

 

면접관 : Overlapped I/O와 Nonblock Socket의 차이점이 뭐라고 생각하십니까?

 

나 : Overlapped I/O는 I/O 처리를 비동기로 처리하기 때문에 데이터 복사과정에서 Block되지 않습니다. 그리고 I/O 처리를 순서대로 하지 않고 디스크에 가까운 순서대로 처리를 하며 Zero-Copy를 통해서 소켓 버퍼로의 복사를 건너뛰고 유저 버퍼에 바로 데이터를 복사할 수 있습니다.

 

면접관 : Zero-Copy가 뭔가요?

 

나 : Zero-Copy의 목적은 디스크에 있는 데이터를 네트워크로 전송할 때 일어나는 바이트 카피를 최소화 하기위한 것입니다. 일반적으로 네트워크를 이용해서 데이터를 전송하려면  커널영역에서 사용자영역으로 데이터를 읽어들인 후 다시 사용자영역에서 커널영역으로 데이터를 복사해야합니다. 이러한 과정은 사용자영역에서 데이터를 조작하지 않고 바로 보내도 될시에 불필요한 과정이 됩니다. 그렇기 때문에 커널과 사용자 영역을 넘나드는 과정을 거치지 않고 커널의 Read Buffer에서 Socket Buffer로의 복사만을 거쳐서 커널과 사용자 영역간의 2번의 복사 과정을 생략할 수 있습니다.

 

면접관 : 계속 설명해보세요.

 

나 :  Overlapped의 입출력이 완료되면 Completion port라고하는 queue에 Completion Packet을 기록되고 스레드가 queue를 확인하여 Completion Packet이 있으면 완료된 내용을 받아갈 수 있습니다. 

 

나 : Select 방식과 비교해 봤을 때 소켓 하나에 스레드 하나를 할당해주는 것과 비교하여 소수의 스레드로 I/O처리를 할 수 있다는 점에서 CPU자원을 효율적으로 사용한다고 할 수 있습니다.

 

 

 

'취업 > 면접준비' 카테고리의 다른 글

플랫폼이란?  (0) 2020.07.24
상상면접 : 퀵정렬 (정렬)  (0) 2020.06.11
상상면접 1 : 해시 [CS]  (0) 2020.06.09