무한자식프로세스

segfault의 이미지

#include <unistd.h>

int main(void) { while(1) fork(); }

제 컴퓨터에서 돌려보니 시스템이 거의 통제불능상태까지 가더군요.

원래대로라면 그냥 저것만 죽고 끝나지 않는지요?

ㅡ,.ㅡ;;의 이미지

시스템이 거의 마비상태가 되는게 정상이겠죠..
cpu와 리소스를 모두 잡아먹는 상태가 되겠죠.
보통 무한루프만돌아서는 괜찮은데 저건 프로세스를 무한으로 생성하니..
다른프로세스가 경쟁에 끼어들어도 제어권을 넘겨받을확률이 0으로 발산하겠죠..


----------------------------------------------------------------------------

noohgnas의 이미지

babjo87 wrote:
#include <unistd.h>

int main(void) { while(1) fork(); }

제 컴퓨터에서 돌려보니 시스템이 거의 통제불능상태까지 가더군요.

원래대로라면 그냥 저것만 죽고 끝나지 않는지요?

http://www.superuser.co.kr/security/certcc/DOS-1.htm

보시면 막을 수 있다고 되어있습니다. 사용자가 많은 서버라면 막아 둬야겠지요... 막는 법은 읽어 보시면 아시겠지만, 사용자가 생성할 수 있는 최대 프로세스 수에 제한을 두는 방법입니다. =)


----
I think, therefore I am.

세벌의 이미지

ㅡ,.ㅡ;; wrote:
시스템이 거의 마비상태가 되는게 정상이겠죠..
cpu와 리소스를 모두 잡아먹는 상태가 되겠죠.
보통 무한루프만돌아서는 괜찮은데 저건 프로세스를 무한으로 생성하니..
다른프로세스가 경쟁에 끼어들어도 제어권을 넘겨받을확률이 0으로 발산하겠죠..

0으로 수렴한다는 말은 들어봤어도 0으로 발산한다는 말은 못 들어봤는데...
ㅡ,.ㅡ;;의 이미지

sebul wrote:
ㅡ,.ㅡ;; wrote:
시스템이 거의 마비상태가 되는게 정상이겠죠..
cpu와 리소스를 모두 잡아먹는 상태가 되겠죠.
보통 무한루프만돌아서는 괜찮은데 저건 프로세스를 무한으로 생성하니..
다른프로세스가 경쟁에 끼어들어도 제어권을 넘겨받을확률이 0으로 발산하겠죠..

0으로 수렴한다는 말은 들어봤어도 0으로 발산한다는 말은 못 들어봤는데...

수렴..^^;;


----------------------------------------------------------------------------