반응형
lock-free란 키워드가 궁금해서 찾아보던 도중 알아두어야 할 내용인 것 같아 메모
공유 자원이 여러 스레드에 의해 점유되는 현상을 막기 위해 mutex나 semaphore를 이용하여 lock을 걸어 사용할 수 있다. 고성능이 요구되지 않는 환경에선 좋은 방법일 수 있지만, 고성능이 필요한 환경에선 좋은 방법이 아닐 수 있다.
어떤 스레드가 lock을 얻으면 다른 스레드들은 lock을 가진 스레드가 unlock을 할 때까지 해당 자원에 접근하지 못한다. unlock 이후 lock을 얻더라도 스케줄러에 의해 CPU를 할당받지 못하면 lock을 소유한 채로 기다려야 한다. 심지어 스케줄링 우선 순위가 밀리게 되면 해야하는 동작을 하지 않고 있음에도 lock을 소유하고 있고, 다른 스레드 들은 계속해서 대기 상태에 있게 된다.
이는 lock에 대한 경쟁이 심해질수록 실제 필요한 작업 외에 동기화 작업에 소요되는 오버헤드가 많아지면서 결국 성능을 떨어뜨리게 된다.
참고
이건 별개로 슬랙방 사장님이 공유해주신 링크. 나중에 멀티스레드 공부할 때 한번 보자~
lock free
https://www.slideshare.net/ssuser278e05/lock-freealgorithm
'CS 기초 > Operating System' 카테고리의 다른 글
Sleep() 함수는 정확히 입력 시간만큼의 Sleep을 보장하진 못한다. (0) | 2023.02.04 |
---|---|
[OS] 운영체제 연습 문제 풀이 (2) (0) | 2020.11.07 |
[OS] 스레드(Thread)와 스케줄링(Scheduling) (1) | 2020.06.07 |
[OS] 프로세스(Process)에 관하여 알아보자 (0) | 2020.05.31 |
[OS] 운영체제 연습 문제 풀이 (1) (0) | 2020.05.25 |
댓글