IT_Infra/Architecture
[IT_Infra]배타적제어(2) - DBMS, OS
리딩리드
2016. 10. 25. 22:21
배타적제어(2) - DBMS, OS
1. DBMS
- 특정 프로세스가 공유 데이터를 변경하고 있는 도중에 다른 프로세스가 해당 공유 데이터를 읽거나 공유 데이터를 동시에 변경하지 못하도록 배타적 제어를 한다
1) 래치(latch)(스핀락- spin-lock)
- 짧은 시간동안 락을 하는 방식
- CPU에서 의미없는 처리를 하면서 대기하는 방식
- 극히 단시간 락에서 사용
2) 슬립락(sleep-lock)
- 비교적 장시간 락을 유지
- 큐를 이용
3) 어댑티브락(adaptive-lock)
- 단순히 계속반복만하는 것이 아니라 스핀해서 락을 확보못하면 슬립으로 전환
- 상황에 따라 스핀할지 슬립할지 판단
2. OS
- 여러 프로세스나 스레드에서 빅 커널락을 이용해서 경합하면 CPU 코어가 여러개라도 병렬처리가 안되고 선행 처리가 끝날 때까지 기다려야한다
1) 빅 커널락(Big Kernel Lock)
- 리눅스 커널에서 사용
- 하나의 스핀락으로 유지된다
- 처리가 직렬화돼서 동시에 하나의 CPU만 커널 코드를 실행
- 이 부분은 병목지점이 되기 쉽다