오래 못 할 짓 하지 않기
[ 운영체제 ] 18. Synchronization 본문
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
'3학년 1학기 > 운영체제 (OS)' 카테고리의 다른 글
[ 운영체제 ] 20. Deadlock 예방/회피/감지 , Recovery (0) | 2024.05.16 |
---|---|
[ 운영체제 ] 19. DeadLock (0) | 2024.05.10 |
[ 운영체제 ] 17. Liveness / Sychronization example (0) | 2024.05.07 |
[ 운영체제 ] 16. Sychronization tool (0) | 2024.05.06 |
[ 운영체제 ] 15. 동기화와 관련된 문제 해결 (0) | 2024.04.30 |