Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- ansible
- 헬름
- 코틀린
- spring microservice
- 머신러닝
- Algorithm
- nGrinder
- 쿠버네티스
- MySQL
- devops
- MSA
- cloud native
- cloud native java
- Microservice
- Stress test
- 익명클래스
- ingress
- 자바
- CRD
- kubernetes
- 마이크로서비스
- 동기화
- 클라우드 네이티브
- Kotlin
- Adapter 패턴
- Spring
- decorator 패턴
- 클라우드 네이티브 자바
- java
- Semaphore
Archives
- Today
- Total
카샤의 만개시기
세마포어(Semaphore)와 뮤텍스(Mutex) 본문
공유 되어 있는 자원에 프로세스 혹은 스레드가 접근하고자 할 때 한번에 하나의 프로세스가 접근 할 수 있도록 고안 된 것이 세마포어입니다.
세마포어
공유된 자원의 데이터를 경쟁적으로 사용하는 프로세스들의 행동을 조정하거나 동기화 하는 기술입니다.
예를 들어 어떤 운영체제의 리소스를 동시에 4개의 프로세스만 사용 할 수 있다고 할 때, 이 리소스를 가지고 경쟁하는 여러 프로세스간 우선순위 등을 고려하여 행동을 조정하는 기술입니다.
뮤텍스
공유된 자원의 데이터를 여러 쓰레드가 접근 하는 것을 막는 기술입니다.
공유 리소스에 대하여 locking과 unlocking을 통하여 임계 영역
을 가진 쓰레드들의 Running time이 서로 겹치지 않게 각각 단독으로 실행되게 하는 기술입니다.
임계 영역 (Critical Section)
다중 프로그래밍에서 여러 프로세스가 데이터를 공유하면서 수행될 때 각 프로세스에서 공유데이터에 접근하는 프로그램 코드부분을 말합니다.
세마포어와 뮤텍스 차이
- 세마포어는 뮤텍스가 될수 있지만, 뮤텍스는 세마포어가 될 수 없습니다.
- 뮤텍스는 상태가 0과 1(locking, unlocking)로 나뉘는 binary Semaphore입니다.
- 세마포어는 파일시스템 상 파일 형태로 존재하고 뮤텍스는 프로세스 범위입니다. (프로세스가 사라질 때 뮤텍스는 clean up 됩니다.)
- 세마포어는 소유할 수 없고 뮤텍스는 소유할 수 있습니다.
뮤텍스를 소유하고 있는 쓰레드는 해당 뮤텍스를 해제 할 수 있지만 세마포어는 소유하고 있지 않은 쓰레드도 이 세마포어를 해제 할 수 있습니다.
Comments