경쟁상태(Race Condition)
정의
다수의 프로세스 혹은 스레드가 동기화 없이 공유 자원에 접근하려는 현상
멀티 스레드 환경에서 동시성 이슈가 발생
경쟁상태를 해결하기 위해 필요한 것이 동기화
임계 영역(Critical Section)
정의
공유 자원의 일관성을 유지시키기 위해서는 공통 변수에 접근하는 스레드가 하나만 존재하도록 관리해야 하는데, 이 공통 변수를 변경하는 코드의 영역을 의미
공유자원에 접근하는 프로세스 내부의 코드 영역
어떤 프로세스가 임계 영역을 수행 중인데 다른 프로세스가 같은 영역을 수행한다면 문제 발생
따라서 한 번에 하나의 프로세스만 이용하도록 보장해야 함!
프로세스의 메모리 영역
Code 영역
프로그램 명령이 위치하는 곳으로 기계어로 제어되는 메모리 영역
Data 영역
전역/정적변수, 배열, 구조체 등이 위치하는 메모리 영역
Heap 영역
동적 메모리 할당을 위한 메모리 영역 (예: malloc(), new())
Stack 영역
지역/매개변수, 리턴 값 등 잠시 사용되었다가 사라지는 데이터를 저장하는 메모리 영역
프로세스의 메모리 영역