안녕하세요 fork()로 프로세스를 만들어 네트웩프로그램을 만들고있읍니다 근데 프레프로세스란말을 들었는데여 내용좀 소개부탁드립니다 프로세스만드는데 시간걸리니까 미리프로세스를 만들어 실제 접속이오면 만들어진 프로세스를 이용한다는것이라고 들었읍니다 조금더 구체적이었으면좋겠읍니다 예제같은것이 있으려나..... 즐거운하루되세요
preprocessor 흠.. 한글로 전처리자 라고 합니다. #define, #ifdef, #ifndef 등등 다른 뜻도 있을지 모르겠지만 전 이렇게 알고 있습니다 ^^.
너의(yours) 프로그램 : 똑똑한체하는 트릭과 부적절한 주석이 넘치는 혼란 그자체.
나의(my) 프로그램 : 간결하며 효율적인 측면과 다음 개발자들을 위해서 완벽하게 주석을 단 최고로 균형잡힌 정교한 코드의 결정체
- Stan Kelly-Bootle
아마 프리프로세서가 아니라..
pre-forked process 인 것 같습니다.
하나의 프로세스가 socket을 bind 하고, listen 한다음
accept에 들어가기전에 fork를 합니다.
그렇게되면, 생기는 모든 process가 동시에 accept를 시도하고,
이 프로세스들중 하나만 정확히 접속하는 client를 accept하게 됩니다.
그리고, client가 socket를 끊게 되면, 다시 accept 하는 곳으로 와서
대기하도록 만듭니다. 이렇게 되면 접속하자마자 fork 라는 무거운 작업을 하지 않으므로, 비용을 절감하는 것이죠.
또 대개는 accept 전에 semaphore 등을 두어 한녀석만 accept에 참여하도록 만들기도 합니다. 확실히 한 녀석만 accept 하고 accept하자마 semaphore를 풀어 다른 녀석이 들어오게 만들지요.
이렇게 하면, 몇개의 프로세스가 놀고 있는지 semaphore 대기 count등을 통해 알수 있고, 만약 한녀석도 semaphore를 대기하고 있지 않은 경우 추가적으로 fork 할 수 있도록 만드는 방법도 있습니다.
---http://coolengineer.com
또 대개는 accept 전에 semaphore 등을 두어 한녀석만 accept에 참여하도록 만들기도 합니다. 확실히 한 녀석만 accept 하고 accept하자마 semaphore를 풀어 다른 녀석이 들어오게 만들지요. 이렇게 하면, 몇개의 프로세스가 놀고 있는지 semaphore 대기 count등을 통해 알수 있고, 만약 한녀석도 semaphore를 대기하고 있지 않은 경우 추가적으로 fork 할 수 있도록 만드는 방법도 있습니다.
http://www.ezdoum.com/stories.php?story=02/08/17/3254153 이유는 좀 다르긴 하지만서두요 ^^;
울랄라~ 호기심 천국~!!http://www.ezdoum.com
텍스트 포맷에 대한 자세한 정보
<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]
preprocessor
preprocessor 흠.. 한글로 전처리자 라고 합니다.
#define, #ifdef, #ifndef 등등
다른 뜻도 있을지 모르겠지만 전 이렇게 알고 있습니다 ^^.
너의(yours) 프로그램 : 똑똑한체하는 트릭과 부적절한 주석이 넘치는 혼란 그자체.
나의(my) 프로그램 : 간결하며 효율적인 측면과 다음 개발자들을 위해서 완벽하게 주석을 단 최고로 균형잡힌 정교한 코드의 결정체
- Stan Kelly-Bootle
아마 프리프로세서가 아니라..pre-forked process 인
아마 프리프로세서가 아니라..
pre-forked process 인 것 같습니다.
하나의 프로세스가 socket을 bind 하고, listen 한다음
accept에 들어가기전에 fork를 합니다.
그렇게되면, 생기는 모든 process가 동시에 accept를 시도하고,
이 프로세스들중 하나만 정확히 접속하는 client를 accept하게 됩니다.
그리고, client가 socket를 끊게 되면, 다시 accept 하는 곳으로 와서
대기하도록 만듭니다. 이렇게 되면 접속하자마자 fork 라는 무거운 작업을 하지 않으므로, 비용을 절감하는 것이죠.
또 대개는 accept 전에 semaphore 등을 두어 한녀석만 accept에 참여하도록 만들기도 합니다. 확실히 한 녀석만 accept 하고 accept하자마 semaphore를 풀어 다른 녀석이 들어오게 만들지요.
이렇게 하면, 몇개의 프로세스가 놀고 있는지 semaphore 대기 count등을 통해 알수 있고, 만약 한녀석도 semaphore를 대기하고 있지 않은 경우 추가적으로 fork 할 수 있도록 만드는 방법도 있습니다.
---
http://coolengineer.com
아파치 1.3.X 가 이런식으로 동작하지요,,
http://www.ezdoum.com/stories.php?story=02/08/17/3254153
이유는 좀 다르긴 하지만서두요 ^^;
울랄라~ 호기심 천국~!!
http://www.ezdoum.com
댓글 달기