← 질문 목록
#211깊이 0

경쟁 상태를 막으려면 무엇을 고려해야 하는가?

운영체제기초동시성

공유 자원에 접근하는 순서가 결과에 영향을 주는 상황을 제어해야 한다. 원자적 연산으로 처리하거나 상호 배제 기법을 사용한다.

순서스레드 A스레드 B
1잔액 100을 읽는다아무것도 하지 않습니다
2아무것도 하지 않습니다잔액 100을 읽는다
3150을 쓴다아무것도 하지 않습니다
4아무것도 하지 않습니다130을 쓴다

스레드 B가 A의 150을 130으로 덮어써 50이 사라진다. 둘 다 100을 읽은 뒤에 각자 계산했기 때문에 A가 더한 50이 사라진다. 그래서 임계 구역에 들어가기 전에 락을 걸어 다른 스레드의 진입을 막는다.

다만 락의 범위가 넓으면 성능이 떨어진다. 꼭 필요한 구간만 묶거나, 원자적 변수처럼 하드웨어 수준의 명령어를 사용해 오버헤드를 줄여야 한다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

경쟁 상태를 막으려면 무엇을 고려해야 하는가?