# spinlock

4개의 포스트
post-thumbnail

C++ SpinLock

※ Rookiss님의 [C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버 강의를 보고 정리한 글입니다. SpinLock: Lock에서 다른 쓰레드가 사용중이라 못 들어갈 때 쓰레드가 사용을 끝마칠때까지 기다리는 방법 SpinLock은 짧게 생각하면 이렇게 만들어볼 수 있을 것이다. 하지만 이렇게 만들 경우 0이 아닌 숫자가 나오게 된다.. ← 의도대로 실행되지않은 것!! 왜 그렇지?? 컴파일러의 최적화 때문이 아닌가 생각해 볼 수 있다. 컴파일러 최적화? → 컴파일러에서 출력되는 실행 프로그램의 효율성을 최적화하는 과정 volatile키워드를 붙인다면? 그래도 해결되지않는다. 그럼 최적화가 문제가 아니라는 것! 문제는 동시에 while문에

2023년 3월 16일
·
0개의 댓글
·

[운영체제] Synchronization (2) - Spin lock, Busy waiting, Test-And-Set, Compare-And-Swap

Spinlock 잡으려는 lock이 avaliable 해 질 때 까지 계속 루프를 돌며 진입을 재시도한다. 이른바 바쁘게 기다리는 busy waiting의 한 종류이다. Busy waiting lock을 잡기 위해 다른 작업을 수행하지 않고 계속해서 기다리는 경우 Sofrware-only Algorithm Peterson's Algorithm 동기화 문제를 해결하기 위해 처음으로 고안된 방법 오직 두개의 context만이 존재하는 상황을 가정한다. 전역변수 flag, turn 선언 flag: critical section에 들어갈 준비가 되었는지 turn: 누가 critical section에 들어갈 차례인지 문제점 두개의 context만 존재하는 상황에서만 가능 atomic하지 않은 아키텍쳐에서 사용 불가능 Hardware Approaches **Disabling Inter

2023년 1월 6일
·
0개의 댓글
·
post-thumbnail

Kernel - Mutex와 Spinlock 이해하기

Linux Kernel에서 동시성(Cuncurrency)문제를 해결하기 위해 많이 사용하는 Mutex와 Spinlock의 차이에 대해 알아보자. Preemtion and Synchronization 우선 Preemtion과 동시성 문제가 무엇인지 알아보자. 커널이 선점 가능하다(preemtible하다)는 의미는 한 프로세스가 이미 커널의 코드를 수행중이라도 자신의 의지와는 상관없이 다른 프로세스로 제어권이 양도 될 수 있다는 뜻이다. single processor 라고 하더라도 각각의 프로세스들이 커널을 선점할 수 있다.(preemptive multitasking) 따라서 각 프로세스들 공유자원에 접근할 수 있다. 때문에 single processor에서 동시성 문제가 발생할 수 있다. 커널에서는 인터럽트/ 커널의 선점/ 멀티 프로세싱/ 지연함수. 이 4가지가 동시성(cuncurrency) 문제를 발생 시킬 수 있다. > [(나무위키)](https://namu.wiki/w

2022년 8월 17일
·
0개의 댓글
·

하루일지 - 22.02.15

신문 우크라 불안에 석유·천연가스ETF 두자릿수 급등…곡물株도 들썩 > 정말.. 무섭다. 실제로 계속 기사가 나오니까 이게 뭔가 싶은 마음이 제일 크다. 그리고 가장 의문점은 어쩌다가 이렇게 되었는지 이유도 아직 모른다는 것이다. 물론 내가 이러한 위험의 경우에는 실물 경제가 더 빨리 움직이는 건가 싶기도 하다. "여기가 바닥인줄 알았는데 지하실 있었다"…저가매수 개미들 어쩌나 > 맨날 현금 비중을 늘리라고 한다. 나는 물론 매수의 기회로 잡을 거다. 최근에 비트코인을 접하며 역시 공부를 하는 것은 중요하다는 것을 다시 한 번 느꼈다. 그것 처럼 일단 샀으면 그냥 좀 가지고 있어야 겠다. 물론 언제나 물량이 적었으니까 이번에는 충분한 물량을 가져갈 수 있는 기회가 되

2022년 2월 15일
·
0개의 댓글
·