"경쟁 상태"의 두 판 사이의 차이

10번째 줄: 10번째 줄:


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


===시나리오===
===발생 시나리오===
#두 프로그램 A, B 가 존재
#두 프로그램 A, B 가 존재
#A가 먼저 파일을 메모리로 읽어 들이고 메모리에서 그내용을 변경
#A가 먼저 파일을 메모리로 읽어 들이고 메모리에서 그내용을 변경

2018년 6월 16일 (토) 07:03 판

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 }}