해결된 질문
작성
·
53
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요. 강의 잘 보고 있습니다.
경쟁 상태 즉 공유 자원의 정합성과 무결성을 위해 세마포어로 해결한다고 이해했습니다.
그런데 세마포어가 여러개의 프로세스가 공유 자원에 접근한다는게 이해가 되지 않습니다.
공유 자원에 여러개의 프로세스가 동시에 접근하는 것을 막기 위해 만든 방법이 여러 프로세스가 공유 자원에 접근한다?? 이런 느낌으로 받아드려지고 있어서 어디서 잘못됐는지 잘 모르겠네요 ㅠㅠ
감사합니다.
답변 2
0
안녕하세요 ㅎㅎ
세마포어가 여러개의 프로세스가 공유 자원에 접근한다는게
->
음... 먼저 세마포어는 단순히 “접근을 완전히 차단”하는 것이 아니라 허용된 개수(1 혹은 N)까지만 접근을 허용하고, 그 이상은 대기시키는 메커니즘입니다.
"세마포어가 여러 프로세스가 공유 자원에 접근한다”가 아니라
“세마포어가 관리하는 숫자(카운터)에 따라 최대 그만큼 프로세스만 진입한다”가 정확한 의미라고 보시면 됩니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴입니다. alzm9191님.
세마포어에 대한 개념과 활용 방식에 혼란이 있으신 것 같습니다. 세마포어는 프로세스 간의 동기화를 위해 사용되는 도구입니다. 이를 통해 여러 프로세스가 동일한 공유 자원에 동시에 접근하는 상황을 제어할 수 있습니다.
세마포어의 동작 방식: 세마포어는 정수 값과 두 개의 원자적 (atomic) 연산인 wait(P)와 signal(V)을 사용합니다. wait
연산에서는 세마포어 값을 감소시키고, 값이 음수가 되면 프로세스는 대기합니다. signal
연산에서는 세마포어 값을 증가시키고, 대기 중인 프로세스가 있으면 이를 활성화시킵니다.
공유 자원 보호: 여러 프로세스가 동시에 접근할 수 없도록 하기 위해 세마포어는 일반적으로 제한된 자원의 사용을 관리합니다. 예를 들어, 특정 시점에 오직 하나의 프로세스만 리소스를 사용할 수 있도록 하거나, 최대 N개의 프로세스만 접근을 허용하도록 설정할 수 있습니다.
응용 예시: 만약 특정 자원에 대한 접근을 하나의 프로세스로 제한하고 싶다면, 바이너리 세마포어 (또는 뮤텍스)를 사용할 수 있습니다. 여러 프로세스가 진입할 수 있는 상황에서는 세마포어를 사용하여 접근 가능한 프로세스 수를 조절할 수 있습니다.
이와 관련하여 이미 구체적인 설명이 포함된 게시물을 참고하시면 이해하는 데 도움이 될 것입니다: 세마포어의 signal() 메서드 질문.
해당 답변을 통해 세마포어의 역할과 목적, 그리고 그 사용 방식에 대해 좀 더 구체적으로 이해하실 수 있을 것입니다.
저는 질문자님 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
답변 감사합니다.
세마포어가 관리하는 숫자에 따라 최대 그만큼 프로세스가 진입한다. 에서 임계영역에 진입한다는 말씀이신가요??
만약 맞다면 임계 영역에 공유 자원을 처리하는 코드가 있다면 문제가 발생할 수 있지 않을까? 라는 생각이 계속 들어서요,,
똑같은 질문 드려서 죄송합니다. ㅜㅜ