경쟁 상태

1 개요[ | ]

race condition, race hazard
경쟁 상태, 경합 상태, 경쟁 조건, 경쟁 위험, 레이스 컨디션, 레이스 해저드
  • 둘 이상의 입력 또는 조작이 동시에 이루어지는 상태
  • 공유 자원을 여러 개의 프로세스가 동시에 접근을 시도하는 상태
  • 2개의 입력이 하나의 출력에 영향을 주어 잘못된 출력이 발생할 수 있는 상태
  • 비정상적인 결과가 나올 위험이 있음

2 예시[ | ]

2.1 프로그램의 파일 작성 순서[ | ]

경쟁상태 발생 시나리오의 이해를 위해서는 프로그램이 파일을 수정하는 순서를 이해해야함. 우선 프로그램이 파일을 수정하기 위해서는 프로그램이 파일의 내용을 먼저 메모리로 읽어들임. 이후 메모리에서 그 내용을 수정한 다음 변경된 메모리의 값을 다시 파일로 쓰게됨.

2.2 발생 시나리오[ | ]

  1. 두 프로그램 A, B 가 존재
  2. A가 먼저 파일을 메모리로 읽어 들이고 메모리에서 그내용을 변경
  3. A가 변경된 메모리의 내용을 파일로 쓰기 이전 B가 동일 파일을 읽고, 고치고, 쓰는 작업을 함
  4. A는 B가 파일을 변경하기 이전의 내용을 가지므로 B의 변경은 사라짐
→ 침입자는 이런 비정상적인 조건을 만들기 위해 수 만번 이상을 시도하며 시스템 침입을 시도함

3 같이 보기[ | ]

4 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}