맨위로가기

자원 누수

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

자원 누수는 프로그래밍 오류로 인해 획득한 자원이 제대로 해제되지 않아 발생하는 현상이다. 파일 핸들 누수, 파이프 누수, 좀비 프로세스 등이 대표적인 예시이다. 자원 관리를 통해 예방하고 관리할 수 있으며, 자원 즉시 해제, 운영체제의 자원 회수 등을 통해 해결할 수 있다. 주로 오래 지속되는 프로세스나 많은 자원을 빠르게 획득하고 누수하는 프로세스에서 문제가 발생한다.

더 읽어볼만한 페이지

  • 계산 자원 - 계산 복잡도
    계산 복잡도는 알고리즘의 효율성을 평가하는 척도로, 시간, 공간 등의 자원을 고려하며, 입력 크기의 함수로 표현되고, 빅 오 표기법을 사용하여 알고리즘의 예상 성능을 파악하는 데 중요한 역할을 한다.
  • 계산 자원 - 공간 복잡도
    공간 복잡도는 알고리즘이 문제 해결에 필요한 메모리 공간의 양을 나타내며, DSPACE와 NSPACE는 튜링 기계의 공간 사용량을, PSPACE와 NPSPACE는 다항식 공간 사용 문제를 나타내고, 사비치 정리는 NSPACE와 DSPACE의 관계를 보여주며, LOGSPACE는 O(log n) 공간으로 풀 수 있는 문제의 집합을 의미한다.
  • 소프트웨어 버그 - 교착 상태
    교착 상태는 둘 이상의 프로세스가 자원을 점유하고 서로의 자원을 요청하여 더 이상 진행할 수 없는 상태를 의미하며, 상호 배제, 점유 대기, 비선점, 순환 대기 네 가지 조건이 모두 충족되어야 발생하고, 운영 체제는 이를 예방, 회피, 무시, 발견하는 방법으로 관리한다.
  • 소프트웨어 버그 - 글리치
    글리치는 예기치 않은 오작동이나 오류를 뜻하며, 전자 공학, 컴퓨터, 비디오 게임, 텔레비전 방송, 대중문화 등 다양한 분야에서 기능 실패, 오류, 그래픽 및 사운드 문제, 신호 오류 등의 이상 현상을 포괄적으로 지칭하는 용어이다.
자원 누수
일반 정보
메모리 누수의 시각적 표현
메모리 누수의 시각적 표현
유형소프트웨어 버그
증상성능 저하
불안정한 운영
충돌
사용 가능한 메모리 부족으로 인한 시스템 전체 정지
일반적인 원인획득한 시스템 자원 해제 실패
예방자원 획득이 해제와 일치하는지 확인
자원 누수
자원 누수 유형메모리 누수
파일 디스크립터 누수
세션 누수
스레드 누수
관련 용어
관련댕글링 포인터

2. 원인

자원 누수는 일반적으로 프로그래밍 오류 때문에 발생한다. 획득된 자원은 반드시 놓아져야 하지만 획득과 놓아주기 사이의 기간 동안 많은 일이 벌어질 수 있고 놓아주기를 놓치기가 쉽다.[1]

흔한 예로 열었던 파일을 닫지 않아 파일 핸들 누수가 발생하는 것이 있다. 파이프의 경우에도 발생한다. 다른 예로 부모 프로세스가 자식 프로세스에 wait 시스템 호출을 하는 것을 잊는 경우가 있는데, 이 경우 프로세스 테이블 엔트리가 누수되면서 자식 프로세스를 좀비 프로세스로 만든다.[1]

3. 예방과 완화

자원 누수는 자원 관리를 통해 예방하거나 해결할 수 있다. 프로그래밍 기법이나 언어 구조를 통해 자원을 즉시 해제하여 누수를 방지할 수 있으며, 별도의 프로세스를 통해 누수된 자원을 회수할 수도 있다. 많은 자원 누수는 프로세스가 종료되고 exit 시스템 호출을 한 후 운영 체제에 의해 자원이 회수되어 해결된다.

따라서 자원 누수는 주로 오래 지속되는 프로세스에서 문제가 되는데, 이는 여전히 실행 중인 프로세스에 의해 보유된 누수 자원이 종종 회수되지 않기 때문이다. 또한 많은 자원을 빠르게 획득하고 누수하는 프로세스에서도 문제가 발생한다.

4. 자원 관리 기법 (한국 프로그래밍 환경 고려)

(요약과 원본 소스를 확인하였으나, 원본 소스에 내용이 없어 작성이 불가능합니다.)

참조

[1] 서적 C# for Programmers https://books.google[...] Prentice Hall Professional 2005
[2] 서적 Windows Internals, Part 1 https://books.google[...] Pearson Education 2012
[3] 서적 Using Visual C++ 6 https://archive.org/[...] Que Publishing 1998
[4] 서적 C# for Programmers https://books.google[...] Prentice Hall Professional 2005
[5] 서적 Windows Internals, Part 1 https://books.google[...] Pearson Education 2012
[6] 서적 Using Visual C++ 6 Que Publishing 1998



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com