donaricano-btn

배타적제어(2) - DBMS, OS


1. DBMS

- 특정 프로세스가 공유 데이터를 변경하고 있는 도중에 다른 프로세스가 해당 공유 데이터를 읽거나 공유 데이터를 동시에 변경하지 못하도록 배타적 제어를 한다

1) 래치(latch)(스핀락- spin-lock)

- 짧은 시간동안 락을 하는 방식

- CPU에서 의미없는 처리를 하면서 대기하는 방식

- 극히 단시간 락에서 사용

2) 슬립락(sleep-lock)

- 비교적 장시간 락을 유지

- 큐를 이용

3) 어댑티브락(adaptive-lock)

- 단순히 계속반복만하는 것이 아니라 스핀해서 락을 확보못하면 슬립으로 전환

- 상황에 따라 스핀할지 슬립할지 판단


2. OS

- 여러 프로세스나 스레드에서 빅 커널락을 이용해서 경합하면 CPU 코어가 여러개라도 병렬처리가 안되고 선행 처리가 끝날 때까지 기다려야한다

1) 빅 커널락(Big Kernel Lock)

- 리눅스 커널에서 사용

- 하나의 스핀락으로 유지된다

- 처리가 직렬화돼서 동시에 하나의 CPU만 커널 코드를 실행

- 이 부분은 병목지점이 되기 쉽다



블로그 이미지

리딩리드

,