C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[5921] Re: 이런 생각을 해보셨나요??
아리매 [arimae] 1799 읽음    2002-10-10 01:12
이것과 관련된 글이 kldp 에 가시면 볼 수 있을 것입니다.

아래는 링크입니다.
http://kldp.org/KoreanDoc/Ulimit-KLDP

문서를 보면 프로세스 생성 개수의 경우 커널의 헤더 파일에 정의가 되어 있다고 하는군요.


/usr/src/linux/include/linux/tasks.h

#define NR_TASKS        2560    /* On x86 Max 4092, or 4090 w/APM configured. */

#define MAX_TASKS_PER_USER          2048

x86 시스템에서는 최대 4092까지 가능하다고 되어있고
유저당 최대 프로세스수는 2048입니다. 이건 ulimit에서
보았지요?

위는 문서에 있는 내용을 가져 온것입니다.

그러면 1번의 경우 4092개 일것이고, 그리고 한 유저당 생성할 수 있는 최대의
프로세스의 개수는 2048 이라고 합니다.

2번의 경우 child 의 경우도 하나의 프로세스여서 4092라고 생각할지도 모르지만,
한명의 유저가 생성할 수 있는 최대의 프로세스의 개수가 2048이므로 parent + child를
합쳐서 2048개를 넘지 못할 것 같습니다. 프로세스에서 child를 fork 시키면 프로세스의
소유권이 parent와 동일하게 되므로 결국 한명의 유저가 두개의 프로세스를 실행
시킨것과 같은 결과가 될것입니다. 따라서 유저가 실행도중 내부에서 user id를 변경하지
않는 이상은 child의 개수는 parent 포함 2048개 라고 생각됩니다.

3번. 이것은 제 추측입니다만 2번하고 같지 않을까 싶습니다.
정확히는 모르지만 리눅스 쓰레드는 내부적으로 하나의 프로세스로 간주하므로 프로그래머
입장에서는 쓰레드 개념으로 프로그래밍을 하지만 실제 작동은 프로세스 처럼 작동한다고
들었습니다. 이것이 맞다면 프로세스가 실행시킨 쓰레드도 하나의 차일드 프로세스로
간주해도 무리가 없을듯 싶습니다. 따라서 제가 생각하기에 2번과 같이 2048개 인것 같습니다.

4. 소켓은 결국 리눅스에서 파일로 간주하므로 시스템이 한번에 열수 있는 file descriptor의
개수와 같을 것입니다. stdin, stdout, stderr를 전부 다 닫았다는 가정하에 문서에 보면
파일을 동시에 4096개를 오픈할수 있다고 하니 생성할 수 있는 소켓의 수는 4096개 입니다.

5. 역시 이겄도 4번과 마찬가지로 한 프로세스에서 한번에 열수 있는 파일의 개수와 같을 것입니다.
문서를 보니 1024개라고 하는군요.

이상은 래드햇 6.0 커널 2.2를 기준이고 2.4에서는 더 확장되지 않았을까 생각됩니다.
한번 헤더 파일을 뒤져보시면 (문서에서 가르키는 헤더파일) 2.4에 대한 정보를 얻을 수
있을 것입니다.

제 글에 틀린점이나 이상한 점이 있으면 주저말고 태클 걸어주시길 바랍니다. ^^;

최준호.스페로 님이 쓰신 글 :
: 안녕하세요 스페로입니다...
:
: 요즘 학과 교수님과 연구중인 프로젝트를 하다가... 떠오른 질문인데...
:
: 이곳 자게가 여러 경험많은 개발자들의 경험을 이야기 할수 잇는 좋은 공간 같아..
:
: 다음과 같은 질문을 쌔웁니다....
:
: 1. 머신당 프로세스 생성 에 한계 갯수?
:
:   process / machine (한 컴퓨터가 생성할수있는 프로세스수)
:
: 2. 프로세스가 생성할수 있는 자식프로세스의 한계 갯수?
:
:   child process / process (한프로세스가 거느릴수 잇는 자식프로세스)
:
: 3. 프로세스가 생성할수 있는 스레드의 수
:
:   thread / process
:
: 4. 한시스템이 생성할수 있는 socket의수
:
:   socket / machine
:
: 5. 한프로세스가 생성할수 있는 socket의수...
:
:   socket / process
:
:
: 질문이 애매 모할수 잇는데요.. 일단 OS별로 차이가 잇을거라 생각하고..
:
: 머신의 능력의 차이가 잇을거라 생각합니다...
:
: fork를 할때 fork에러를 일으키는 한도를 정확히 측정 하려고 하는데...
:
: 하나의 프로그램이 무한히 포크를 하다가 에러를 내는것은 1프로세스가 자식을 몇개를 생성 하는가?
:
: 만약 1000개 만들고 더이상 못 할때...
:
: 이 프로그램을 동시에 두개를 돌렸는데 두개 모두 1000개를 만든다면..
:
: 이건 머신에 한계프로세스에 도달한계아니고 한프로세스가 생성하는 자식 프로세스의 한계에
:
: 도달했다고 할수 잇죠...
:
: 이런 일련의 이상 야릇한 호기심이 생겻는데..
:
: 이런 것에 대한 명괘한 답을 찾을수가 없네요..
:
: 일단 플렛폼은 리눅스고요.. ㅎㅎ
:
: 소스를 첨부하는데요...
:
: 서버는 두가지 프로세스 모델과 스레드 모델로서.. 에코기능을 하는 에코 서버입니다.
:
: 모드 리퀘스트 마다 프로세스를 생성해서 또는 스레드를 생성해서 처리합니다..
:
: 클라이언트는 시뮬레이터로 동시에 수많은 클라이언트 생성을 위해 프로세스 모델입니다...
:
: 이런 테스트 중에 생긴 한계프로세스 생성과 한계 스레드 생성 한계 소켓 생성에 대한
:
: 이상 야릇한 질문이엇음다..
:
:
:
: ps /
:
: LInux / Kylix 게시판 에 게제할까 Turbo C/ Borland C++에 게시할까 고민하다가..
: 자게에서 여러 개발자님들의 경험을 듣고 시퍼서 이곳에 올립니다..
: 이점 양해 해주세요...
:
:
:
:
:
:
:
:
:
:
:
최준호.스페로 [sparrow]   2002-10-10 02:32 X
답변정말로 감사합니다... 역시 볼랜드포럼님들은 ...  정말 대단합니다...

+ -

관련 글 리스트
5920 이런 생각을 해보셨나요?? 최준호.스페로 1816 2002/10/09
5922     Re:이런 생각을 해보셨나요?? 박지훈.임프 2602 2002/10/10
5921     Re: 이런 생각을 해보셨나요?? 아리매 1799 2002/10/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.