작성
·
253
0
안녕하세요! 좋은 강의 제공해주셔서 감사드립니다.
강의를 듣던 중 궁금한 점이 있습니다.
1. Producer-Consumer 실습(36:18)에서 해당 코드를 수행 시 Producer와 Consumer가 각각 1개씩만 존재할 때 가끔 Consumer가 2번씩 수행되는 이유가 무엇인가요?
Producer와 Consumer가 여러 개 존재하고 소비하는 Item이 다르다면 모르겠지만, 한 개씩 존재하는데 소비하는 Item 이 같아 왜 그런지 이해가 잘 가지않습니다!
2. 만약 멀티 프로세싱 환경에서 서로 다른 프로세서에서 2개의 Producer를 동시에 수행시켜도 해당 코드에수 mutual exclusive를 보장하나요?
예를 들어 Producer1과 Producer2가 서로 다른 cpu core에서 pthread_mutex_lock을 동시에 수행하면 어떤 일이 벌어지나요?
조금 복잡한 질문 드린 것 같아 죄송합니다. 언제나 좋은 강의 감사합니다!
답변 2
1
1번은 해결하셨다니, 다행입니다. ^^;
2번에 대해서는 simple하게 생각하면 뮤텍스를 보장합니다.
서로 다른 코어에서 실행되더라도 뮤텍스 락을 획득한 프로세스만 임계영역에 진입하기 때문이죠.
하지만, 만약 뮤텍스 락을 메모리 변수 등으로 구현한다면, 상호배제가 안 될 수도 있겠죠.
그래서 멀티 코어 환경에서는 반드시 test_and_set이나 compare_and_swap 같은
하드웨어 인스트럭션으로 뮤텍스 락을 구현해 주어야 됩니다.
하드웨어 인스트럭션으로 뮤텍스 락이 구현되어 있다면,
다른 코어에서 같은 CPU 클럭에 동시에 실행하더라도 동시에 락을 획득할 수가 없을 것입니다.
0
하드웨어 단에서 반드시 지원을 해주어야하는군요..!
감사합니다!!