다음 세 트랜잭션에 대한 설명으로 옳지 않은 것은? (단, lock-X는 배타 로크(exclusive lock), lock-S는 공유 로크(shared lock)를 의미하며, 최초 A의 값이 1,000이고 B의 값이 500이라고 가정한다)
T1 | T2 | T3 |
lock-X(B);
read(B);
B := B + 100;
write(B);
unlock(B);
lock-X(A);
read(A);
A := A - 100;
write(A);
unlock(A); | lock-X(B);
read(B);
B := B - 100;
write(B);
lock-X(A);
read(A);
A := A + 100;
write(A);
unlock(B);
unlock(A); | lock-S(A);
read(A);
lock-S(B);
read(B);
display(A+B);
unlock(A);
unlock(B); |
- ①T1과 T3이 동시에 수행될 경우 트랜잭션의 결과 값이 항상 옳게 나온다는 보장은 할 수 없다.
- ②T2와 T3이 동시에 수행될 경우 교착상태에 빠질 수 있다.
- ③T2와 T3이 동시에 수행될 경우 출력(display) 결과는 두 트랜잭션의 수행 순서와 상관없이 1,500이다.
- ④T1, T2, T3은 모두 2단계 로킹 규약을 따르고 있다.
선지를 골라 바로 채점해 보세요.
정답 ④
출처: 인사혁신처 공개 기출(공공데이터포털, 이용허락 제한 없음)