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

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

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

1. 다중접속 서버의 기능은? 구현하는 방법은 무엇인가?

 

1. 멀티 프로세스 기반 서버  2. 멀티 플렉싱 기반 서버  3. 멀티 쓰레딩 기반 서버 

 

 

2. 프로세스의 정의와 프로세스 ID의 의미를 쓰고, 교재 222 p.의 그림을 실행하시오.

 

모든 프로세스는 생성되는 형태와 상관없이 운영체제로부터 ID를 부여받는다. 

 

그리고 이를 가리켜서 '프로세스 ID' 라고 하는데 , 이는 정수 2이상을 뛴다. 

 

 

 

3. fork 함수의 실행결과로 발생하는 것은 무엇인가?

함수호출의 결과를 그림 10-1로 설명하시오.

 

parent proc : [9, 23] 

 

child proc: [13, 27] 

 

부모 프로세스가 forck  함수를 호출하느 순간 자식 프로세스가 복사되어서 각각이 fork 함수 호출의 반환 값을 받게 된다. 

 

 

4. 교재의 fork.c 소스를 작성하여 실행하고, 수행되는 동작을 그림 10-1과 같이 그리시오.

 
부모 프로세스가 전역 변수 gval 의 값을 11 반환 값을 차로 인해서 부모 프로세스는 1val 의 값을 1증가 시키지만 이는 자식 프로세스의 1val 에 영향을 미치지 않는다. 
 
마찬가지로 자식 프로세스는 gval 의 값을 1 증가 시키지만 이는 부모 프로세스의 gval 에 영향을 미치지 않는다. 
 
 
 

5. 좀비 프로세스의 생성 이유와 소멸되는 시점을 설명하시오.

 

좀비 프로세스 생성 이유는 인자를 전달하면서 exit 를 호출하는 경우 main 함수에서 return 문을 실행하면서 값을 반환하는 경우 소멸되는 시점은 해당 자식 프로세스를 생성한 부모 프로세스에게 exit 함수의 인자 값이나 반환 값이 전달되어야 한다. 

 

 

6. zombie.c 소스를 실행하여 좀비 프로세스 발생을 확인하고 터미널의 좀비 확인 라인을 쓰시오.

 

child process ID : 4479 

 

Hi , I am a child process 

 

End child process

 

End parent process 

 

 

7. 좀비 프로세스를 소멸하기 위한 2가지 함수 호출의 방법은 무엇인가?

 

1. WIFEXITED 자식 프로세스가 정상 종료한 경우 "참" 을 반환한다. 

 

2. WEXITSTATUS  자식 프로세스의 전달 값을 반환한다. 

 

1. wait 함수 사용한다. 

 

2. waitpid 함수를 사용한다. 

 

 

8. 시그널 핸들링의 사용 목적은 무엇인가 ? 

 

자식 프로세스 종료를 기다리면서 waitpid 함수만 호출 할 수 없기에 시그널 핸들링을 사용한다.

 

9. 시그널 등록함수의 역할과 기본형을 설명하시오.

 

SIGALRM => alarm 함수 호출을 통해서 등록이 지난 상황이다. 

 

SIGINT => CTRL + C 가 입력한 상황이다. 

 

SIGCHLD => 자식 프로세스가 종료된 상황이다. 

 

 

10. 교재의 signal.c 소스를 작성하여 실행하고, 시그널 핸들링이 없는 소스로 수정하여 동작의 차이를 설명하시오.

 

wait ... 반복 3번

time out ! 

 

signal 함수는 유닉스 계열의 운영체제 별로 동작 방식에 있어서 약간의 차이를 보인다. 

 

 

11. sigaction 함수의 원형 및 sigaction 구조체 변수의 멤버변수를 설명하시오.

 

struct sigction 

 

{

 

void (*sa_handler) (int) ;

 

sigset_t sa_mask; 

 

int sa_flags; 

 

}

 

 

sa_handler 에 시그널 핸들러의 함수 포인터 값을 저장한다. 

 

이 두 멤버는 시그널 관련 옵션 및 특성의 지정에 사용한다.