Lab06_Process_Synchronization.pdf

Daily_Homework6.c


what is Race condition?

→ 동시에 공유하는 데이터에 대하여 접근해서 값을 바꾸려는 현상

necesarry of lock and semaphore?

→ 여러개의 프로세스들이 공유된 데이터에 경쟁적으로 접근할때, 즉 process들이 critical section을 수행할때 다른 어떤 프로세스도 자신의 크리티컬 프로세스를 수행할 수 없게 막아야 하므로.

what is difference between lock and semaphore?

→ lock의 경우에는 acquire(lock) 을 통해서 lock을 획득한다는 개념으로, 락을 얻어야 critical section에 접근할 수 있다는 느낌이고, semaphore에 경우에는 p함수와 w함수를 정의해두고 두 함수의 세마포어 변수 접근으로 크리티컬 색션에 접근할 수 있는 프로세스를 결정해주는 개념이다. p함수가 다른 프로세스를 기다리게 만들 수 있고 특히 integer semaphore라는 것을 이용하여 몇개의 프로세스가 크리티컬 색션에 진입하고 싶은지 의미를 부여하는 등의 행위를 할 수 있다. 그리고 semaphore를 업그레이드 하면 while문을 없애 busy-waiting을 없애 overhead를 줄일 수 있다. 하지만 프로세스를 재우고 깨우고 하는 것도 일종의 오버해드로 작용하여 프로세스의 수가 적을 때는 더 성능이 안좋을 수 있다.

→이건 내 생각이고, 정답은 락은 하나만 걸 수 있고 세마포어는 여러개를 걸 수 있다는 것.

find critical section and reason.

→ producer customer 가 lock에 들어가는 선후관계가 정해지지 않아서, buffer에 data가 0인데도 customer가 들어가거나, buffer가 꽉차도 producer가 들어가는 경우가 있고 그때에도 일하는 횟수가 소모된다.

suggest a way to reomove that

→ 해결방법은 여러가지 존재하는데 그중 하나는 일하지 못하면 횟수를 세지 않는것이다.