fork 및 네트웍 프로그래밍..

익명 사용자의 이미지

안녕하세요..

지금까진 쭉 윈도우 프로그래밍만 하다다 리눅스 기반 서버프로그램을
만들 일이있어서 지금 리눅스 네트웍공부를 하고있습니다.
소켓프로그램이라서 윈도우와 크게 다르진 않는데
한가지 궁금한것은 리눅스용 서버프로그램을 보면 리슨하고 있다가
하나의 소켓이 오면 fork()함수를 사용해서 자식 프로세서를 생성시키고
소켓을 거기에서 처리하는거 같은데
이것이 상당히 비효율적이지 않나 합니다.
동시 만명이 접속한다면 프로세서를 만개를 생성시켜야 한다는 예긴데
메모리 문제뿐만아니라 작업시간보다 컨텍스트스위칭하는데 더많은 cpu시
간을 소모시켜버릴꺼 같은데...
윈도우 같은경우엔 iocp형식으로 서버프로그램을 많이 짜는데
리눅스에도 이런형식에 네트웍 프로그래밍이 가능하는지 궁금합니다.

마지막으로 리눅스에서는 동시접속이 약 6만정도 넘어갈경우 어떤식으로
서버프로그래밍을 하는지 궁금합니다...........

그럼 즐프....

ps. 리눅스 네트웍 프로그래밍 책좀 추천해주세요..
사이트도 좋구요.............

익명 사용자의 이미지

^^

http//kldp.org/script/bbs/read.php?table=qa2&no=3627

익명 사용자의 이미지

흐... 재홍님 혹시 게제동에 자주 출몰하시는 분이 아니신지... ^^

재홍님 말씀대로 리눅스에서 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. 리눅스 네트웍 프로그래밍 책좀 추천해주세요..
사이트도 좋구요.............

익명 사용자의 이미지

^^

그렇군요

그럼 즐프~~~~~~~~

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.