Skip to content

Latest commit

 

History

History
117 lines (67 loc) · 5.47 KB

06. 동기화 (2023-01-02).md

File metadata and controls

117 lines (67 loc) · 5.47 KB

질문 리스트


💻 Race Condition(경쟁 상태)이란 무엇인가요? (유리)


공유 자원에 여러 프로세스나 스레드가 동시에 접근할 때 생기는 문제로, 결과값에 영향을 주어 데이터의 일관성이 깨지는 문제가 발생할 수 있습니다.




💻 뮤텍스와 세마포어에 대해 설명하고, 그 차이점을 말해주세요. (소연)


뮤텍스락은 race condition을 해결하기 위한 방법으로, 자원을 점유할 때 lock을 걸어서 정상적으로 작동하게 하는 방법이고, 세마포는 다수의 자원을 분배하는 방식입니다.

가장 큰 차이는 동기화 대상의 갯수입니다. 뮤텍스는 동기화 대상이 하나뿐이고, 세마포어는 동기화 대상이 하나 이상일 때 사용합니다.




💻 뮤텍스와 세마포어의 또 다른 차이점을 말해주세요. (지윤)


뮤텍스는 Locking 메커니즘으로 락을 걸은 쓰레드만이 임계 영역을 나갈때 락을 해제할 수 있습니다.

반대로 세마포어는 Signaling 메커니즘으로 락을 걸지 않은 쓰레드도 signal을 사용해 락을 해제할 수 있습니다.



차이점

  • 세마포어는 뮤텍스가 될 수 있지만, 뮤텍스는 세마포어가 될 수 없음
  • 세마포어는 소유 불가능하지만, 뮤택스는 소유가 가능함
  • 동기화의 개수가 다름




💻 Busy waiting(바쁜 대기)가 무엇인가요? (아람)


두 개 이상의 프로세스(또는 스레드)가 공유하는 자원에 접근하기 위해 계속해서 권한을 얻으려는 시도를 하며 CPU를 낭비하는 현상을 말합니다.




💻 임계 영역 문제를 해결하기 위한 3가지 조건에 대해 설명하세요. (예지)


임계 영역 문제를 해결하기 위한 3가지 조건(상호 배제를 위한 동기화 조건)에는 ‘상호 배제’, ‘진행’, ‘유한 대기’ 3가지가 있습니다.

상호배제는 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 임계 구역에 들어올 수 없는 것을 의미합니다.

진행은 임계 구역에 어떤 프로세스도 진입하지 않았다면 임계 구역에 진입하고자 하는 프로세스는 들어갈 수 있어야 하는 것을 의미합니다.

유한 대기는 임계구역에 들어오기 위해서는 무한정 개시해서는 안된다는 것을 의미합니다.




💻 프로세스 동기화 방법 중 실행 순서를 보장하는 방법이 있다면 말해주세요. (지윤)


모니터에서 조건 변수를 사용하거나, 세마포어에서 함수의 위치를 적절히 조절하여 실행 순서를 보장할 수 있습니다.



추가 질문 : 세마포어 구체적인 방법은?

세마포어의 변수 S를 0으로 두고 먼저 실행할 프로세스 뒤에 signal 함수를, 다음에 실행할 프로세스 앞에 wait함수를 붙입니다.




💻 동기화 해결 방법 중 모니터에 대해 설명하세요. (예지)


모니터는 뮤텍스와 세마포어에 비해 사용자가 사용하기 편리한 동기화 도구로 조건 변수를 사용합니다.

모니터는 세마포어의 타이밍 문제를 해결하는 고수준 동기화 기법입니다.

모니터는 공유 자원을 다루는 인터페이스에 접근하기 위한 큐를 만들고, 모니터 안에 항상 하나의 프로세스만 들어오도록 하여 상호 배제를 위한 동기화를 제공 합니다.



모니터는 공유 자원 + 공유 자원 접근함수로 이루어져 있고, 2개의 큐를 가지고 있다. 각각 mutual exclusion(상호배타) queue, conditional synchronization(조건동기) queue이다.

  • 상호배타 큐는 말그대로 공유 자원에 하나의 프로세스만 진입하도록 하기 위한 큐이다.
  • 조건동기 큐는 이미 공유자원을 사용하고 있는 프로세스가 특정한 호출 wait()을 통해 조건동기 큐로 들어갈 수 있다.

조건동기 큐에 들어가 있는 프로세스는 공유자원을 사용하고 있는 다른 프로세스에 의해 깨워줄 수 있다. 이 역시 깨워주는 프로세스에서 특정한 호출 notify()을 해주며, 깨워주더라도 이미 공유자원을 사용하고 있는 프로세스가 해당 구역을 나가야 비로소 큐에 있던 프로세스가 실행된다.




💻 동기화를 위해 필요한 두 가지에 대해 설명하세요. (아람)


동기화를 위해 상호 배제프로세스 실행 순서 제어가 필요합니다.

하나의 프로세스가 공유 자원에 접근하면 다른 프로세스는 접근하지 못하도록 하고, 프로세스 실행 순서의 규칙을 두어 데이터의 일관성을 보장해야 합니다.




💻 세마포어 변수가 의미하는 것은 무엇인가요? (소연)


임계 구역에 진입할 수 있는 프로세스의 개수. 즉 현재 사용 가능한 공유 자원의 개수를 의미합니다.




💻 세마포어란 무엇인지 설명하세요. (유리)


공유자원이 여러 개 있는 임계구역 문제를 해결할 수 있는 동기화 방법입니다.

세마포어의 값은 공통 자원의 상태를 나타냅니다. 공유 리소스에 접근할 수 있는 프로세스의 최대 허용치만큼 동시에 사용자가 접근하여 사용할 수 있습니다.