|
1. 뮤텍스 또는 세마포어의 매개변수 리스트 중 보안속성에 관한 것이있는데 이 보안속성이라는 것이
무엇인지..인터넷이나 책에서는 그냥 NULL값을 쓰라고 되어 있는데 좀 더 자세히 알고 싶습니다..
2. 크리티컬 섹션은 하나의 동일한 프로세스내의 여러 스레드를 관리할 때 사용하고 뮤텍스는 다른 프로
세스내의 스레드도 관리 할 수 있다고 하는데 프로세스가 하나의 프로그램단위로 알고 있는데 그렇다면
우리가 exe 실행 파일을 만든다면 두 개의 exe 파일끼리 주고 받는 것을 말하는 건가요??
3. 세마 포어에 대해 문의드립니다...
예를 들어 공통으로 사용되는 코드 내용이
int i = 0; ........... ①
i++; ............... ②
printf("%d", i); ...... ③
이런게 있다면..크리티컬 섹션이나 뮤텍스의 경우 예를 들어 A와 B라는 스레드가 있을 경우 A스레드가 ① ~ ③까지 수행하기 전까지 B 스레드는 접근하지 못하고 대기하고 있다고 A스레드가 ① ~ ③까지의 작업을 완료하면 그때서 B스레드가 다시 ① ~ ③까지 수행하는 거잖아요(위 아래로 lock, unlock 있다고 가정하에)
근데 세마포어는 동시에 여러개의 스레드가 접근할 수 있다고 하는데...예를 들어 3개까지 동시 접속을 허용했을 경우
A, B, C라는 스레드가 있다고 가정했을 때 A라는 스레드가 ①부터 시작해서 ②을 수행중이라고 가정했을 때 B라는 스레드가 동시에 ①부터 다시 수행할 수있다는 건가요??
근데 그렇게 되면 A라는 스레드가 ② 코드를 수행하여 i의 값을 1로 증가 시켰는데 다시 B라는 스레드가 ①의 기능을 수행한다면 i값을 0으로 만든다면 A스레드가 i값을 사용하는데 영향을 받지않게되나요??
세마포어는 각각 스레드 마다 값을 저장하는 장소(?)가 따로따로 주어주는 건가요?? 그래서 A스레드는 A스레드데로 값을 저장하고.. B스레는 B스레드 데로 값을 저장하고...C스레드는 C스레드데로 값을 저장하고 그런 형태인건가요??
그렇다면 각각의 스레드가 자신들의 값은 스택에 저장해 놓는건가요?? 메모리에 별도의 공간이 생기는건가요??
세마포어 실행 방식에 대해 설명 부탁드립니다 인터넷이나 책은 그냥 여러개의 스레드가 사용할 수 있도록 허용하는 것이다 라고만 나와있고 그 데이터 처리를 어떻게 하는지에 대한 부분이 없어서요.///
|