목록2024/05/09 (1)
버티의 블로그
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cuyKuc/btsHgB6swcA/n7YapEkVm8SMmzjCcVKNH0/img.png)
기존의 counter++를 하려면, 메모리에 존재하는 counter 변수 값을 CPU 내 레지스터 R1에 복사해온 다음, R1에서 증가시키고 다시 counter에 넘겨준다. 이처럼 high-level language인 counter++는 low-level language(assembly language)로 3개의 명령어로 쪼개져 실행된다. 여기서 문제는 위처럼 프로세스가 동시에 실행됐을 때이다. 명령어 실행 순서가 랜덤하므로 항상 다른 값이 나올 수 있다. 누가 마지막에 counter를 write했느냐에 따라 값이 변경되는데, 이런 상황을 race condition이라고 한다. OS에서도 같은 문제가 발생할 수 있다. 위 그림처럼 두 프로세스가 동시에 fork를 요청하면 생성된 프로세스 pid가 같을 수..
전공 공부/운영체제
2024. 5. 9. 11:49