본문 바로가기
IT/데이터베이스_네트워크

윤성우의 열혈 tcp/ip 소켓 프로그래밍 20장 연습문제 솔루션

by nutrient 2021. 5. 24.
728x90
728x170

 

문    제 1.  a, b, c, d

문    제 2. 


유저모드 동기화는 커널모드로의 전환을 수반하지 않는다. 즉, 운영체제 레벨에서 제공되는 기능의 동기화가 아니다. ( o )
커널모드 동기화는 운영체제를 통해서 제공되는 기능이므로, 유저모드 동기화에 비해서 많은 기능을 제공한다.     ( o )
커널모드 동기화 과정에서는 유저모드에서 커널모드로, 다시 커널모드에서 유저모드로의 전환과정이 수반된다는 단점이 있다.    ( o )
특별한 경우가 아니면 커널모드 동기화를 사용하는 것이 원칙이다. 유저모드 동기화는 커널모드 동기화가 제공되기 이전의 동기화 기법이다.    ( x )

문    제 3.
scanf 함수의 호출과 같이 일정시간 이상 대기상태에 놓일 수 있는 함수의 호출은 가급적이면 임계영역에 포함시키지 말아야 한다. 따라서 예제 SyncSema_win.c의 Read 함수는 다음과 같이 정의하는 것이 옳다. 

unsigned WINAPI Read(void * arg)
{
   int i, rdData;
   for(i=0; i<5; i++)
   {
       fputs("Input num: ", stdout);
       scanf("%d", &rdData);
       
       WaitForSingleObject(semTwo, INFINITE);
       num=rdData;
       ReleaseSemaphore(semOne, 1, NULL);
   }
   return 0;
}
728x90
그리드형

댓글