블로그 이미지
fiadot_old

칼퇴근을 위한 게임 서버 개발 방법론에 대한 심도있는 고찰 및 성찰을 위한 블로그!

Rss feed Tistory
Technical Article/펌 2003. 12. 22. 18:01

OS별 자주쓰는놈들

1. WinNT계열
IOCP

2. FreeBSD계열
kqueue

3. Linux

답변입니다.
원문보기를 어떻게 해야하는지 몰라서 간단히 답변만 적습니다.

답변 1. 어느 OS건 상관없이 됩니다. 다만 OS마다 API가 조금 차이납니다.

답변 2. 요즘은 둘다 안씁니다. 게임 서버에서는 이미 잋혀져가는 API이며 1user 1thread 방식도 OS의 한계로 인하여 사용하지 않습니다.
그래서 최근의 추세는 Windows-IOCP, NetBsd-FreeBSD-kqueue,Linux-/dev/epoll 등이 있고 그 외에도 RT Signal, AIO 등이 있습니다만 /dev/epoll은 디스크립터 모두를 계속 체크한다는 문제는 기존의 poll과
차이가 없기에 성능상의 문제가 있습니다.
결론은, 시스템의 CPU를 효율적으로 활용하기 위하여 귀찮은일은 커널레벨에서 해준다는거죠(어떻게 해서 효율적으로 활용하냐고 물어보신다면 '찾아보세요'라고 말씀드릴수 밖에 없네요-귀차니즘ㅡㅡ;

답변 3. 에....이게 질문이 소스구한다 였던거 같은데 Windows-IOCP는 http://www.devpia.com 에 많이 있고
나머지 소스들은 구글에서 검색해보시거나 해당 방식으로 작성된 프로그램의 소스를 받아서 분석해보세요




Posix Thread ??

실제 서버 프로그래밍에서는 쓰레드를 이용한 Multiplexing을 합니다.
즉 데이터를 입력받기 위해서 Select나 Poll을 사용하고 데이터를
처리하기 위해서 Posix Thread를 사용한다고 보시면 됩니다.
Select보다는 Poll이 빠르다고 하구요. 요즘은 /dev/poll이나
RT signal을 이용한 처리가 사용됩니다. 그리고 조만간 FreeBSD의
kqueue를 능가할 방식(전 그렇게 생각하고 있습니다만 ^^)
event poll 이라는 시스템 콜(epoll)을 2.6 커널에서 지원할 예정입니다
,
TOTAL TODAY