어플리케이션 레벨에서 동작하는 프로세스에서
메모리 / 공유메모리 / 쓰레드 등으로 인한 메모리 공간을 확보후 반환 해주지 않을경우
이를 감지 스케쥴링해주는 기능이 커널에 있나요?
만약 없다면 사용자가 메모리 공간을 확보 후 사용하지 않는걸 감지할 수 있는 방법이 있을까요? 한번 만들어 보고 싶어서요..
Linux Kernel 에서 일반적으로
자식프로세스가 죽기 전까지는 부모프로세스가 먼저 죽지 않습니다. 간혹 심각한 오류로 인해 부모프로세스가 먼저 죽는 경우가 있습니다.
이때 자식프로세스는 좀비프로세스가 됩니다.
Linux Kernel 은 모든 프로세스가 트리 형태로 계층화되어 유지됩니다.
따라서 최상위 프로세스가 당연히 존재하는데 이를 Init Process 라고 합니다.
좀비가 된 프로세스는 메커니즘상 init process의 자식으로 변경이 되고,
일정 시간 뒤 죽는 절차를 밟습니다.
질문자가 말씀하시는 Application 레벨에서의 Memory Leak과 같은 문제는
Kernel 에서 detecting 하기에는 상당히 큰 비용이 들기 때문에
아마도(?) 해당 방식은 지원되지 않을 것입니다.
하지만 Application 에서 시스템 콜을 호출하는 라이브러리를 만들고, 해당 문제를 kernel에서 해결할 수 있는 시스템 콜을 제작하셔서 직접 포팅하신다면, 특정 PC/시스템에서는 질문자가 원하는 작업을 수행은 할 수 있을 것 같습니다.
흠... Kernel 과 관련된 위 내용은 분석한지가 좀 되어서, 새로운 방식이 도입되었는지 여부는
다른 답변자가 해주시길 기대해 봅니다.
텍스트 포맷에 대한 자세한 정보
<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]
우선
Linux Kernel 에서 일반적으로
자식프로세스가 죽기 전까지는 부모프로세스가 먼저 죽지 않습니다.
간혹 심각한 오류로 인해 부모프로세스가 먼저 죽는 경우가 있습니다.
이때 자식프로세스는 좀비프로세스가 됩니다.
Linux Kernel 은 모든 프로세스가 트리 형태로 계층화되어 유지됩니다.
따라서 최상위 프로세스가 당연히 존재하는데 이를 Init Process 라고 합니다.
좀비가 된 프로세스는 메커니즘상 init process의 자식으로 변경이 되고,
일정 시간 뒤 죽는 절차를 밟습니다.
질문자가 말씀하시는 Application 레벨에서의 Memory Leak과 같은 문제는
Kernel 에서 detecting 하기에는 상당히 큰 비용이 들기 때문에
아마도(?) 해당 방식은 지원되지 않을 것입니다.
하지만 Application 에서 시스템 콜을 호출하는 라이브러리를 만들고, 해당 문제를 kernel에서 해결할 수 있는
시스템 콜을 제작하셔서 직접 포팅하신다면, 특정 PC/시스템에서는 질문자가 원하는 작업을 수행은 할 수 있을 것 같습니다.
흠... Kernel 과 관련된 위 내용은 분석한지가 좀 되어서, 새로운 방식이 도입되었는지 여부는
다른 답변자가 해주시길 기대해 봅니다.
댓글 달기