:: 게시판
:: 이전 게시판
|
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다. 통합 규정을 준수해 주십시오. (2015.12.25.)
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
16/06/07 23:38
제가 예전에 했던 걸 다 까먹어서 지금 정확히 기억이 안 나는데(틀리면 다른 분들이 정정해주실 겁니다 -_-;;)...
semaphore는 실행하는 thread들이 서로 알고 맞춰서(표현을 좀 더 정확히 해야 할텐데 -_-a) 동작을 해야 할겁니다. 그걸 사용자가 할 수 없어서, OS가 제공하는 함수를 사용해야 합니다. 리눅스, 윈도우 등등 OS따라 다를 거예요.
16/06/08 00:11
주활용 용도가 조금 다르기는 한데, 뮤텍스는 적어주신 단일 리소스에 대해 쓰기를 하는 경우에 대한 동기화를 보장하기 위해 많이 사용하고, 세마포어를 일반적으로 사용하는 경우는 여러 개의 리소스(예: DB 커넥션 풀 등)에 동시에 접근하는 스레드의 수를 제한하는 경우에 많이 사용됩니다. 그런데 세마포어로 접근을 허용한 여러개의 쓰레드 중 쓰기를 하는 쓰레드가 따로 있다면 쓰기를 하는 부분에 다시 세마포어를 1로 설정하거나 뮤텍스를 걸거나 내부에 다시 critical section을 만들어서 동기화를 보장하도록 하는 것도 가능합니다.
16/06/08 01:31
세마포어를 4개의 화장실과 4개의 열쇠라고 생각하시면 될거 같아요. 공유자원의 갯수가 1인 세마포어 = 뮤택스인걸로 알고있습니다만... 만약 틀리다면 다른분들이 정정을 해주시겠....
16/06/08 20:52
위에 Unikys님 설명해주신 게 정확한 것 같아요. 대체로 1. 카운트를 1로 설정하면 뮤텍스 처럼 쓸 수 있고 2. 공유된 resource pool 같은 것에 카운트를 총 리소스 수로 설정해서 쓸 수 있고 3. 쓰레드간 signalling으로 쓰일 수 있습니다. 순서가 1번 프로세스가 먼저 실행된 다음에 2번이 실행돼야하면 1번은 V하고 2번은 P하는 식으로요. 여기 정리가 잘 돼있습니다. http://www.cs.cornell.edu/Courses/cs4410/2015su/lectures/lec07-sema.html
|