fork 및 네트웍 프로그래밍..
글쓴이: 익명 사용자 / 작성시간: 월, 2002/10/21 - 9:59오전
안녕하세요..
지금까진 쭉 윈도우 프로그래밍만 하다다 리눅스 기반 서버프로그램을
만들 일이있어서 지금 리눅스 네트웍공부를 하고있습니다.
소켓프로그램이라서 윈도우와 크게 다르진 않는데
한가지 궁금한것은 리눅스용 서버프로그램을 보면 리슨하고 있다가
하나의 소켓이 오면 fork()함수를 사용해서 자식 프로세서를 생성시키고
소켓을 거기에서 처리하는거 같은데
이것이 상당히 비효율적이지 않나 합니다.
동시 만명이 접속한다면 프로세서를 만개를 생성시켜야 한다는 예긴데
메모리 문제뿐만아니라 작업시간보다 컨텍스트스위칭하는데 더많은 cpu시
간을 소모시켜버릴꺼 같은데...
윈도우 같은경우엔 iocp형식으로 서버프로그램을 많이 짜는데
리눅스에도 이런형식에 네트웍 프로그래밍이 가능하는지 궁금합니다.
마지막으로 리눅스에서는 동시접속이 약 6만정도 넘어갈경우 어떤식으로
서버프로그래밍을 하는지 궁금합니다...........
그럼 즐프....
ps. 리눅스 네트웍 프로그래밍 책좀 추천해주세요..
사이트도 좋구요.............
Forums:
Re: fork 및 네트웍 프로그래밍..
^^
http//kldp.org/script/bbs/read.php?table=qa2&no=3627
Re: fork 및 네트웍 프로그래밍..
흐... 재홍님 혹시 게제동에 자주 출몰하시는 분이 아니신지... ^^
재홍님 말씀대로 리눅스에서 fork를 사용하는 방법은 그렇게 좋은 방법
이 아닙니다. 보통 select 나 poll을 사용하게 됩니다. 저 같은 경우는
스레드로 나눠서, poll을 사용합니다.
현재 기본적으로는 리눅스에 NT의 IOCP 와 같은 방법은 없는걸로 알고
있습니다. 하지만, 그런 방법을 위한 커널 패치는 존재합니다.
뭐, RT Signal을 이용한다든지, Solaris의 /dev/poll을 구현한 패치
또는, /dev/epoll 이라고 해서 /dev/poll/ 비슷한 것도 있더군요.
http//epoll.hackerdojo.com/
하지만, 이것들은 패치일 뿐이므로, 아직 확실히 안정성이
검증되지는 않았다는, 개인적으로는 FreeBSD의 kqueue를 추천합니다.
IOCP와 비슷하게 동작하는 걸로, FreeBSD 에서는 현재 많이 사용하고
있습니다. 그럼 고운 하루...
이재홍 wrote..
안녕하세요..
지금까진 쭉 윈도우 프로그래밍만 하다다 리눅스 기반 서버프로그램을
만들 일이있어서 지금 리눅스 네트웍공부를 하고있습니다.
소켓프로그램이라서 윈도우와 크게 다르진 않는데
한가지 궁금한것은 리눅스용 서버프로그램을 보면 리슨하고 있다가
하나의 소켓이 오면 fork()함수를 사용해서 자식 프로세서를 생성시키 고
소켓을 거기에서 처리하는거 같은데
이것이 상당히 비효율적이지 않나 합니다.
동시 만명이 접속한다면 프로세서를 만개를 생성시켜야 한다는 예긴데
메모리 문제뿐만아니라 작업시간보다 컨텍스트스위칭하는데 더많은 cpu 시
간을 소모시켜버릴꺼 같은데...
윈도우 같은경우엔 iocp형식으로 서버프로그램을 많이 짜는데
리눅스에도 이런형식에 네트웍 프로그래밍이 가능하는지 궁금합니다.
마지막으로 리눅스에서는 동시접속이 약 6만정도 넘어갈경우 어떤식으 로
서버프로그래밍을 하는지 궁금합니다...........
그럼 즐프....
ps. 리눅스 네트웍 프로그래밍 책좀 추천해주세요..
사이트도 좋구요.............
^^ 두분께 감사드립니다[냉텅]...
^^
그렇군요
그럼 즐프~~~~~~~~
댓글 달기