오래 못 할 짓 하지 않기

[ 운영체제 ] 18. Synchronization 본문

3학년 1학기/운영체제 (OS)

[ 운영체제 ] 18. Synchronization

쫑알bot 2024. 5. 10. 01:48
728x90

Posix Synchronization

Posix에서는 Synchronization을 위한 API를 제공한다.

  • Mutex Lock
  • Semaphore
  • Condition Variable

이는 리눅스, 맥OS 등 여러 곳에 쓰인다.

 

딱히 자세히 볼 건 없는 것 같으니 PPT 에서 슥 보자.

 

 


 

Synchronization in Java

JAVA에서도 Synchronization을 위한 API를 제공한다.

  • Java monitor
  • Reentrant lock
  • Semaphore
  • Condition Variable

● JAVA Monitor 특징

: 자바에서 Method 를  Synchronized로 선언하면,

그 Method를 부르는 Thread는 해당 Object에 대한 Lock을 가지고 있어야 한다.

 

만약 다른 Thread가 사용하고 있다면, Released 될 때까지 기다려야함.

 

 

이에 대한 구현은 Entry Set (Entry queue) 로 구현된다.

 

▶ 만약 Lock을 가진 Thread가 모종의 이유로 ( deadlock , 기타 등등)
    진행할 수 없다면 Wait()을 call한다.

 

     ▶  1. Object에 대한 Lock을 Release

     ▶  2. Thread의 상태를  Blcok으로 바꾸고

     ▶  3. 해당 Object에 대한 Wait queue에 그 Thread를 위치시킨다.

 

 

 

   

●  JAVA Reentrant Lock 특징

Mutex Lock과 비슷함

 

Finally 구문에서 key를 반납하도록 안전장치를 걸어둔 셈이다.

 

 

  JAVA Semaphore 특징

 

 

 

  JAVA Condition Variable 특징

 

 

 

Alternative Approaches

 

  • Memory Transaction
    : Memory 에 대한 Read - Write 동작이 Atomically하게 이루어지는 것

 

요랬는데

 

 

요래됐슴다

 

 

 

(출처)

한동대학교 고윤민교수님 - OS