
157
이더넷 드라이버 사용자는 소켓에 접근하는 방법과 같은 세부 구현에 대처할
필요 없이 제공된 API를 사용하기만 하면 된다. 이 API의 두 함수는 언제든지
서로 독립적으로 호출할 수 있으며, 호출자는 소유권 및 리소스 해제를 고민할
필요 없이 함수에서 제공하는 데이터를 얻을 수 있다. 이 API를 사용하는 것은
간단하지만 매우 제한적이다.
다음으로 드라이버에 추가 기능을 제공하려 한다. 사용자가 이더넷 통신의
동작 여부를 확인할 수 있도록 송수신된 바이트 수를 보여주는 통계를 제공코
자 한다. 단순한 무상태 소프트웨어 모듈로는 이를 구현할 수 없다. 하나의 함
수 호출에서 다른 함수 호출까지 상태 정보를 보관하기 위해 별도로 확보한 메
모리가 없기 때문이다.
이를 달성하기 위해서는 전역 상태 소프트웨어 모듈(Software Module with
Global State)이 필요하다.
호출자에게 관련 기능이 포함된 함수를 제공하려 한다. 함수는 서로 공유되는
공통 데이터를 가지고 작업하며, 제공하는 기능을 사용할 수 있도록 함수 사용
전에 메모리를 초기화하는 등의 리소스 준비가 필요할 수 있지만, 함수는 호출
자에 종속된 상태 정보를 필요로 하지는 않는다.
...