문제가 무엇인지도 잘 모르겠지만 설명된 커널 공격에 대해 이야기하고 있습니다.여기. 이 목록에논평누구묻다프로세스 재최적화 정보. 이 트릭은 상황을 개선하지 못했고(머신은 여전히 매우 느린 방식으로 실행됨) 댓글에 대한 답변에는 커널 공간과 사용자 공간에 대한 내용이 나와 있었습니다.
첫째, 댓글이 올바르게 응답되고 있습니까? 그렇다면 renice가 사용자 공간에서는 작동하지만 커널 공간에서는 작동하지 않는 이유는 무엇입니까? 또한 내 상황에 따라읽다, 사용자가 시작한 모든 프로그램은 사용자 공간에 있어야 합니다. 무엇이 빠졌나요?
그것이 사실이 아니라면 왜 레니스는 상황을 개선하지 않습니까?
답변1
커널은 사용자 공간에 일부 서비스(예: 소켓 열기)를 제공합니다. 사용자 공간 프로그램은 잘 정의된 인터페이스(API)를 통해 커널과 상호 작용할 수 있습니다.
이 경우 사용자 공간 프로그램은 반복적으로 소켓을 열고 이를 통해 파일 설명자를 보낸 다음 소켓을 닫습니다. 이러한 작업은 커널에 의해 수행됩니다. 소켓의 다른 쪽 끝에서 파일 설명자를 읽을 때까지 버퍼에 파일 설명자를 보관합니다. 구체적인 버그는 가비지 수집기가 결국 파일 설명자를 해제해야 하지만 그렇지 않다는 것입니다. fd가 유출되었습니다. 유출된 fd는 리소스를 축적하고 소비합니다. 프로그램을 종료해도 리소스는 해당 프로그램에 속하지 않기 때문에 해제되지 않습니다.