|
임펠리테리입니다.
아래분이 말씀하셨다시피 유닉스에서는 fork를 써서 프로세스를 새로 생성합니다만, 윈도우즈에서는 보통 쓰레드를 만듭니다. 유닉스계열과 윈도우즈계열의 특징 차이라고 할까, 유닉스에서는 프로세스가 더 안정적이고 많이 쓰이지만, 윈도우즈에서는 쓰레드가 더 안정적이고 많이 쓰입니다. 이유를 다 설명하려면 넘 길구요.
그런데 이 쓰레드는 프로세스와 달리 물리적인 갯수의 한계가 있습니다. 잘 알려져 있지는 않습니다만. 한 프로세스당 생성할 수 있는 쓰레드의 갯수는, 그 프로세스에서 총 사용하는 메모리의 양에 따라 더 작아질 수도 있습니다만, 대략 2000개가 조금 넘습니다. (이것은 윈도우즈 커널에서 각 쓰레드에 스택을 할당하는 방법상의 문제입니다.) 그래서 대략 2000개가 좀 넘어가면 메모리부족으로 더이상 쓰레드가 생성되지 않는 시점이 발생합니다.
또 한가지. 일반적으로 인스턴트 메신저의 경우, 버디리스트 등 서버로부터 꼭 받아야 할 정보 외에는, 클라이언트끼리 직접 통신을 합니다. 만약 인스턴트 메신저에서 바로 옆 직원에게 메시지를 보내기 위해 서버를 거친다면 미국에 서버가 있는 경우 미국까지 패킷이 돌아서 올거고, 그럼 엄청나게 느려질 뿐 아니라 아무리 서버를 증설해도 서버가 부하를 감당하지도 못합니다. 그래서, 서버로부터 자신이 등록한 친구들의 주소 등의 정보를 받아놓고, 그 주소로 직접 메시지를 날리는 방법이 일반적이지요.
그럼 참고하시길...
최해술 님이 쓰신 글 :
: 답변감사합니다. 한가지 더 알고 싶어서요
: 그럼 한 서버에서 동시에 생성할 수 있는 fork의 수는 얼마나 되나요?
: 서버가 한대 있고 나머지 클라이언트가 서버를 통해 채팅을 하게 된다면
: 모든 클라이언트에 대해서 fork가 생성될것 같은데 PC의 프로세스란 것이 한계가 있는것으로 알고 있거든요
:
|