Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[OS] Mutex Lock은 무조건 Spin Lock 인가요? #1

Open
jjiwoning opened this issue Oct 4, 2023 · 2 comments
Open

[OS] Mutex Lock은 무조건 Spin Lock 인가요? #1

jjiwoning opened this issue Oct 4, 2023 · 2 comments
Assignees
Labels

Comments

@jjiwoning
Copy link
Contributor

제가 배운 Mutex Lock의 설명은 다음과 같았습니다.

  • Critical Section에 진입할 때 Mutex Lock을 얻고 나갈 때 릴리즈 하는 방식

  • acquire()로 Mutex Lock을 얻고, release() 함수로 릴리즈

  • busy waiting 발생 → 프로세스가 Running에서 계속 기다려야 된다.

  • Mutex Lock을 얻은 프로세스만 이를 해제할 수 있다.

이 Lock은 Spin Lock 형태인거 같은데 Mutex Lock에서 다른 Lock 방법이 있을까요?

@worldii
Copy link
Member

worldii commented Oct 5, 2023

저도 궁금해서 한번 찾아보았는데요
실제 POSIX 기반의 pthread lock을 거는 방식이 lock이 걸려있으면 system call 을 호출하고, 다시 sleep 상태로 가서 CPU를 내어주는 방식으로 되어 있어요. 즉 spin lock으로 구현되어 있지 않더라고요.
https://parthsl.wordpress.com/2019/01/20/pthread-locks-mutex-vs-spilocks-vs-futex/
https://stackoverflow.com/questions/76965112/why-are-pthread-spinlocks-so-much-faster-than-mutexes
https://stackoverflow.com/questions/5095781/how-pthread-mutex-lock-is-implemented
https://linux.die.net/man/2/futex

제가 생각하기 에는, mutex lock을 구현하는 방법 중에 spin lock으로 구현할 수 있고, 스핀락이 아닌 wait&signal 형태로 구현할 수도 있는 것 같습니다!

@jjiwoning
Copy link
Contributor Author

감사합니다 Lock에 대해서 더 공부해볼게요

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants