저장소 위반

Storage violation

컴퓨팅에서 저장소 위반작업이 액세스가 허용되지 않는 컴퓨터 저장소 영역에 액세스를 시도할 때 발생하는 하드웨어 또는 소프트웨어 결함이다.

저장소 위반 유형

예를 들어, 스토리지 위반은 태스크가 소유하지 않은 스토리지 읽기, 쓰기, 비우기 등으로 구성될 수 있다.일반적인 유형의 저장소 위반은 프로그램이 호출 스택에 대해 설정된 제한을 초과하려고 시도하는 스택 버퍼 오버플로라고 알려져 있다.또한 메모리 보호가 불완전하거나 없는 다른 스레드에 의해 "소유"된 메모리 수정 시도도 참조할 수 있다.

스토리지 위반 방지

CICS와 같은 트랜잭션 시스템에서 소유하지 않은 스토리지에 쓸 수 있는 스토리지 위반이 발생할 수 있으며, 이러한 위반은 스토리지 보호 및 트랜잭션 격리 등의 기능을 활성화하여 줄일 수 있다.

저장소 위반 탐지

스토리지 위반은 프로그램이 충돌하기 전에 위반 후 일정 기간 동안 실행될 수 있기 때문에 탐지하기 어려울 수 있다.예를 들어, 메모리 여유 영역에 대한 포인터를 유지하고 나중에 재사용하여 오류를 발생시킬 수 있다.결과적으로, 이러한 노력은 나중에 문제가 발견될 때보다는 위반이 발생할 때 이를 감지하는 데 초점을 맞추고 있다.

CICS와 같은 시스템에서는 (CICS 커널에 의해) 스토리지 위반이 (CICS 커널에 의해) 감지되는 경우가 있는데, 이 경우, 중첩 여부를 시험해 볼 수 있다.

추가 오버헤드 비용으로 스토리지 위반을 더 잘 감지하기 위해 대체 런타임 라이브러리를 사용할 수 있다.[1]일부 프로그래밍 언어는 이러한 발생을 방지하기 위해 소프트웨어 경계 검사를 사용한다.

일부 프로그램 디버깅 소프트웨어도 시험 중 위반을 탐지한다.

공통원인

  • 실행 시간 동안 참조 수정을 불법으로 사용할 수 있는 가출 첨자.
  • 호출 요소와 호출 요소 간의 연결 레이아웃 불일치
  • 이전에 확보된(때로는 이미 재할당된) 메모리 사용.

소프트웨어에서 저장소 위반을 탐지하는 예

참고 항목

참조

  1. ^ "Debug Malloc Library". Dmalloc - Debug Malloc Library. Retrieved 2017-04-26.

외부 링크