예제
데이트 통장: 공유 자원
커플 둘 다 인출 할려고 함: 경합 조건
은행: 둘이 동시해 인출하지 못하게 락 걸음
→ 병렬로 실행되는 프로그램이 자원을 공유해야 경합 조건이 발생
프로세스와 스레드
- 운영체제는 프로세스를 관리
- 프로세스는 사용자 공간에서 실행되는 프로그램
- 멀티코어 시스템에서는 여러 프로그램이 병렬로 실행될 수 있음
- 스레드는 정적인 데이터와 힙을 공유하지만 자체적으로 스택을 갖는 프로그램의 일부분을 말함
- 스레드는 자신이 CPU 레지스터를 다 갖는다 생각
- 한 스레드에서 다른 스레드로 스위칭할 때 스레드 스케줄러가 CPU 레지스터를 저장
- 프로세스보다 저장할 컨텍스트 크기가 적어서 스레드 문맥 전환이 더 빠름
락
여러 연산으로 이뤄진 작업을 원자적으로 처리해야함
- 원자적: 더 이상 나눌 수 없고 인터럽트 할 수 없음
상호배제를 통해 원자적으로 로직을 만들어야함
- 프로그램이 충돌을 피하기 위해 따르는 어드바이저리 락을 만들어서 달성
- 어드바이저리 락: 프로그램이 락을 걸지 안걸지 결정
트랜잭션과 작업 크기