
152
이번 장의 예제는 이더넷 네트워크 인터페이스 카드용 장치 드라이버를 구현
하는 것이다. 이더넷 네트워크 인터페이스 카드는 소프트웨어가 실행되는 운
영 체제에 설치되므로 POSIX 소켓(socket) 함수를 사용하여 네트워크 데이터
를 주고받을 수 있다. 하지만, 소켓 함수를 사용하는 것보다 더 쉽게 데이터를
보내고 받을 수 있는 방법을 제공하고, 이더넷 드라이버에 몇 가지 부가 기능
을 추가하기 위해 사용자를 위한 추상화를 구축하려고 한다. 즉, 모든 소켓 세
부 정보를 캡슐화하는 무언가를 구현하려고 한다. 이를 달성하기 위해 우선 간
단하게 상태가 없는 형태인 무상태 소프트웨어 모듈(stateless software-mod
-
ule)로 시작할 것이다.
호출자에게 관련 기능이 포함된 함수를 제공하려 한다. 함수는 서로 공유되는
공통 데이터에서는 동작하지 않는다. 따라서 함수 호출 전에 메모리 초기화와
같은 리소스 준비는 필요치 않다.
제공하는 기능에 호출자가 쉽게 접근할 수 있도록 하고 싶다. 호출자는 제공
된 함수와 관련해 초기화 및 클린업을 처리할 필요가 없으며, 세부 구현 ...