본문 바로가기
카테고리 없음

네트워크 프로그래밍 12주차 복습

by 할 수 있다 ! 2023. 6. 15.

 

1. 멀티프로세스 기반의 서버의 단점을 설명하시오.

 

프로세스 생성이라는 부담스러운 작업과정을 거친다.

두 프로세스 사이에서의 데이터 교환을 위해서는

별도의 IPC 기법을 적용해야 한다.

컨텍스트 스위칭에 따른 부담은 프로세스 생성방식의

가장 큰 부담이다.

 

 

2. 멀티프로세스 기반의 다중접속 서버와 멀티쓰레드 기반의 다중접속 서버의 차이점을 설명하시오.

 

프로세스 : 운영체제 관점에서 별도의 실행흐름을 구성하는 단위 이다. , 하나의 운영체제 안에서 둘 이상의 실행흐름을 형성하기 위한 도구이다.

 

쓰레드: 프로세스 관점에서 별도의 실행흐름을 구성하는 단위 즉, 하나의 프로세스 내에서 둘 이상의 실행 흐름을 형성하기 위한 도구이다.

 

 

 

 

3. 쓰레드를 생성하기 위한 함수는 무엇인가? 이에 대한 예제를 실행하여 쓰레드를 생성하여 쓰레드 생성의 실행흐름을 그림으로 도시하시오.

 

thread1.c

10: thread_main 함수의 호출을 시작으로 별도의 실행흐름을 구성하는 쓰레드의 생성을 요청하고 있다. 더불어 thread_main 함수 호출 시 인자로 변수 thread_param의 주소 값을 전달하고 있다.

 

15: sleep 함수의 호출을 통해서 main함수의 실행을 10초간 중지시키고 있다. 이는 프로세스의 종료 시기를 늦추기 위함이다. 16행의 return 문이 실행되면 프로세스느 종료 된다. 그리고 프로세스의 종료는 그 안에서 생성된 쓰레드의 종료로 이어진다. 따라서 쓰레드의 실행을 보장하기 위해서 이 문장이 삽입 된다.

 

19,22: 매개변수 arg로 전달되는 것은 10행에서 호출한 pthread_create함수의 네 번째 전달인자이다.

 

lpthread : 이 옵션을 추가하여 위의 pthread_create가 정의된 쓰레드 라이브러리 링크 별도 지시이다.

 

 

4. 쓰레드의 실행과정 중에 메인 프로세스가 종료되지 않게 하기 위하여 사용하는 함수는 무엇인가?

 

Thread2.c의 소스를 작성하여 실행하고, 프로그램의 흐름을 도시하시오.

 

 

19: main함수에서, 13행에서 생성한 쓰레드를 대상으로 pthread_join함수를 호출하고 있다. 때문에 main함수는 변수 t_id에 저장된 id의 쓰레드가 종료될 때 까지 대기하게 된다.

 

11,19,41: 간단히 설명하면 41행에 의해서 반환되는 값이 19행의 두번째 인자로 전달된 변수 thr_ret에 저장된다. 이 반환 값은 thread_main함수 내에서 동적으로 할다오딘 메모리 공간의 주소 값이라는 사실에도 관심을 두어야 한다.

 

Return 을 통해 반환되는 값은 join함수의 두 번째 인자로 전달된 변수 thr_ret에 저장된다

 

이 그림에서 주목할 부분은 실행이 일시적으로 정지되었다가 쓰레드가 종료되면서

(쓰레드의 main함수가 반환하면서) 다시 실행 이어지고 있는 부분이다.

 

 

 

 

5. 쓰레드를 동기화 하기 위해서 사용하는 함수를 기술하고 교재의 mutex.c 소스를 실행하시오.

10: thread_main 함수의 호출을 시작으로 별도의 실행흐름을 구성하는 쓰레드의 생성을 요청하고 있다. 더불어 thread_main 함수 호출 시 인자로 변수 thread_param의 주소 값을 전달하고 있다.

 

15: sleep 함수의 호출을 통해서 main함수의 실행을 10초간 중지시키고 있다. 이는 프로세스의 종료 시기를 늦추기 위함이다. 16행의 return 문이 실행되면 프로세스느 종료 된다. 그리고 프로세스의 종료는 그 안에서 생성된 쓰레드의 종료로 이어진다. 따라서 쓰레드의 실행을 보장하기 위해서 이 문장이 삽입 된다.

 

19,22: 매개변수 arg로 전달되는 것은 10행에서 호출한 pthread_create함수의 네 번째 전달인자이다.

 

lpthread : 이 옵션을 추가하여 위의 pthread_create가 정의된 쓰레드 라이브러리 링크 별도 지시이다.