| [ CnUnix ] in KIDS 글 쓴 이(By): zzapuno (정내훈) 날 짜 (Date): 2002년 3월 7일 목요일 오후 11시 53분 17초 제 목(Title): Re: [Q] <> 메모리 제한 풀기... <> > > 지금 FreeBSD 4.5-RELEASE 환경에서 메모리를 많이 잡아 먹는 프로그램을 돌 > 릴 일이 있는데요.... setrlimt() 함수로 최대 data size를 잡아줘도 512M 정 > 도로만 잡히더군요.... 이 이상의 메모리를 쓸 수 있는 방법이 없을까요...? > 강제로 -1(unlimited)의 값을 주면 에러값을 리턴하면서 errno 변수가 값이 > 세팅되는군요:( > 미리 감사드립니다..... > 펜티엄계열의 프로세서의 레지스터의 크기는 32비트입니다.(대부분의 프로세서가 마찬가지) 또한 메모리를 사용할때도 32비트로 어드레싱합니다. 따라서 프로그램이 직접 억세스 가능한 영역은 2^32 = 4기가바이트 입니다. (세그먼트레지스터를 사용하는것 같은 편법도 있긴 합니다만...) 일반적인 OS는 32비트어드레스중 상위 몇비트를 특수한 용도로 사용합니다. Kernel/User구분이라던가 메모리/IO구분, Shared/Non Shared, Caching/Non-Caching의 구분을 위해 사용합니다. 또 User area라고 해도 text,data,bss의 영역이 따로 있기 때문에 bss에 alloc할 수 있는 최대 메모리는 어드레스 스페이스 자체에서 매우 제한되는 경우가 많습니다. 따라서, 64비트 CPU와 OS로 가기전에는 512메가 이상에서는 메모리 사용에 근본적인 한계에 부딫힐 위험이 매우 큽니다. nhjung |