C/TCPIP 소켓 프로그래밍(윤성우 저) 23

TCP/IP 소켓 프로그래밍 18장 내용 확인문제

1. 하나의 CPU를 기반으로 어떻게 둘 이상의 프로세스가 동시에 실행되는지 설명해보자. 그리고 그 과정에서 발생하는 컨텍스트 스위칭이 무엇인지도 함께 설명해보자. >CPU의 실행시간을 프로세스가 고속으로 나누기 때문에 둘 이상의 프로세스가 동시에 실행 가능하다. 그리고 컨텍스트 스위칭이란, CPU에 의한 실행의 대상을 변경하는 과정에서 발생하는 준비과정으로써, 이전에 실행되던 프로세스의 데이터를 메모리 공간에서 내리고 이어서 실행될 프로세스의 데이터를 메모리 공간 위에 올리는 작업이다. 2. 쓰레드의 컨텍스트 스위칭이 빠른 이유는 어디에 있는가? 그리고 쓰레드간의 데이터 교환에는 IPC와 같은 별도의 기법이 불필요한 이유는 무엇인가? >쓰레드 각각의 고유 데이터는 프로세스 각각의 고유 데이터보다 크기가..

TCP/IP 소켓 프로그래밍 17장 내용 확인문제

1. select 함수를 기반으로 서버를 구현할 때 코드상에서 확인할 수 있는 단점 두 가지는 무엇인가? >select 함수 호출 이후에 항상 등장하는 모든 파일디스크립터를 대상으로 하는 반복문과 select 함수를 호출할 때마다 인자로 매번 전달해야하는 관찰 대상에 대한 정보들이 단점이다. 2. select 방식이나 epoll 방식이나, 관찰의 대상이 되는 파일 디스크립터의 정보를 함수호출을 통해서 운영체제에게 전달해야 한다. 그렇다면 이들 정보를 운영체제에게 전달하는 이유는 어디에 있는가? >select과 epoll은 파일 디스크립터, 정확히 말하면 소켓변화의 관찰이 요구되는 방식이다. 그런데 소켓은 운영체제에 의해 관리가 된다. 즉, select 방식과 epoll 방식은 절대적으로 운영체제에 의해 ..

TCP/IP 소켓 프로그래밍 16장 내용 확인문제

1. 다음 중 FILE 구조체의 포인터와 파일 디스크립터에 대한 설명으로 옳은 것은? >d. 파일 디스크립터를 기반으로 FILE 구조체의 포인터를 생성하는 것은 가능하다. 그리고 이렇게 생성된 FILE 구조체의 포인터를 이용하면 소켓 기반의 데이터 입출력도 가능하다. *틀린 설명 a. FILE 구조체의 포인터와 마찬가지로 파일 디스크립터도 입력용과 출력용이 나뉜다 ->파일 디스크립터는 입출력 모두 가능하다. b. 파일 디스크립터가 복사되면 동일한 정수 값의 파일 디스크립터가 하나 더 추가되어서 총 두개의 파일 디스크립터로 데이터를 입출력 할 수 있게 된다.->파일 디스크립터가 하나 추가된다 하더라도 프로세스 자체는 하나이기 때문에(fork 함수를 썼을 때와 다른점) 하나의 파일 드스크립터로 데이터를 입출..

TCP/IP 소켓 프로그래밍 15장 내용 확인문제

1. 표준 입출력 함수를 사용했을 때 얻게 되는 장점 두 가지는 무엇인가? 그리고 그 두가지 장점을 얻게 되는 이유는 또 무엇인가? >표준 입출력 함수를 사용할 경우 이식성이 좋고 버퍼링을 통한 성능 향상에 도움이 된다. a. 표준 입출력 함수는 모든 운영체제에서 동작하는 함수들이기 때문에 이식성이 좋아진다. b. 그리고 표준 입출력 함수를 사용하면 소켓의 입출력 버퍼의 앞단계에서 성능의 향상을 목적으로 하는 입출력 버퍼가 하나 더 추가되기 때문에 성능의 향상에 도움이 된다. 2. 표준 출력함수를 이용해서 데이터를 전송하는 경우에는 다음과 같이 생각하는 것은 옳지 않다."fputs 함수호출을 통해서 데이터를 전송하면, 함수가 호출되자마자 데이터의 전송이 시작될 거야!"그렇다면 위와 같은 생각이 옳지 않은..

TCP/IP 소켓 프로그래밍 10~14장 함수 복습

[리눅스 호출한 프로세스 복사본 생성하는 함수]#include pid_t fork(void);->성공 시 프로세스 ID, 실패 시 -1 반환 *부모 프로세스: fork 함수의 반환 값은 자식 프로세스의 ID*자식 프로세스: fork 함수의 반환 값은 0 [리눅스 종료된 자식 프로세스의 ID 반환하는 함수]#include pid_t wait(int *statloc);->성공 시 종료된 자식 프로세스의 ID, 실패 시 -1 반환 *WIFEXITED: 자식 프로세스가 정상 종료한 경우 '참(true)' 반환한다.*WEXITSTATUS: 자식 프로세스의 전달 값을 반환한다. 예시)if (WIFEXITED(status)) //정상 종료하였는가?{ puts("Normal termination!"); printf("..

TCP/IP 소켓 프로그래밍 6~9장 함수 복습

[리눅스 UDP 데이터 송신함수]#include ssize_t sendto(int sock, void *buff, size_t nbytes, int flags, struct sockaddr *to, socklen_t addrlen); *sock:데이터 전송에 사용될 UDP 소켓의 파일 디스크립터를 인자로 전달*buff:전송할 데이터를 저장하고 있는 버퍼의 주소 값 전달*nbytes:전송할 데이터 크기를 바이트 단위로 전달*flags:목적지 주소정보를 담고 있는 sockaddr 구조체 변수의 주소 값 전달*to:목적지 주소정보를 담고 있는 sockaddr 구조체 변수의 주소 값 전달*addrlen:매개변수 to로 전달된 주소 값의 구조체 변수 크기 전달 [리눅스 UDP 데이터 수신함수]#include ss..

TCP/IP 소켓 프로그래밍 14장 내용 확인문제

1. TTL이 의미하는 바는 무엇인가? 그리고 TTL의 값이 크게 설정되는 것과 작게 설정되는 것에 따른 차이와 문제점을 라우팅의 관점에서 설명해보자 >TTL이란 Time to Live의 약자로써 '패킷을 얼마나 멀리 전달할 것인가'를 결정하는 요소이다. TTL은 정수로 표현되며, 이 값은 라우터를 하나 거칠 때마다 1씩 감소한다. 그리고 이 값이 0이 되면 패킷을 더 이상 전달하지 못하고 소멸된다. 따라서 TTL을 크게 설정하면 네트워크 트래픽에 좋지 않은 영향을 줄 수 있다. 반대로 너무 적게 설정할 경우 목적지에 도달하지 않을 경우가 발생하니 적절한 값을 설정하는 것이 중요하다.(예를 들어 교재에서는 64로 설정하였다) 2. 멀티캐스트와 브로드캐스트의 공통점을 무엇이고 또 차이점은 무엇인가? 데이터..

TCP/IP 소켓 프로그래밍 13장 내용 확인문제

1. 다음 중, 데이터 전송옵션인 MSB_OOB에 대한 설명 중 맞는 것을 모두 고르면? >a. MSG_OOB는 Out-of-band 데이터의 전송을 의미한다. 그리고 이는 다른 경로를 통한 고속의 데이터 전송이라는 의미를 갖는다. d. MSG_OOB는 TCP의 기본 데이터 전송방식을 벗어나지 못한다. 즉, MSG_OOB는 옵션이 지정되더라도 전송순서는 그대로 유지된다. 다만 이는 수신 측에 데이터 처리의 긴급을 요청하는 용도로 사용될 뿐이다. *틀린 설명b. MSG_OOB는 다른 경로를 통한 고속의 데이터 전송이라는 의미를 갖기 때문에, TCP 상에서도 이 옵션을 이용해서 전송된 데이터는 상대 호스트로 먼저 전송된다. ->TCP의 기본 데이터 전송방식에는 다른 경로가 없기 때문에 전송순서는 그대로이다...

TCP/IP 소켓 프로그래밍 12장 내용 확인문제

1. 멀티플렉싱 기술에 대한 일반적인 의미를 말하고, IO를 멀티플렉싱 한다는 것이 무엇을 의미하는지 설명해보자. >멀티플렉싱이란 최소한의 물리적인 요소만 사용해서 최대한의 데이터를 전송하는 기술이다. 마찬가지로 IO 멀티플렉싱이란 IO를 필요로 하는 소켓을 하나로 묶어서 최소한의 리소스 및 프로세스를 이용해서 데이터를 송수신하는 기술을 의미한다. 2. 멀티프로세스 기반의 동시접속 서버의 단점은 무엇이며, 이를 멀티플렉싱 서버에서 어떻게 보완하는지 설명해 보자. >멀티프로세스 기반의 동시접속 서버는 클라이언트가 연결 요청을 할 때마다 추가로 프로세스를 생성해서 서비스를 하는 방식이다. 그런데 프로세스의 생성은 부담이 되는 작업이기 때문에 많은 수의 클라이언트에게 서비스를 제공하기에는 한계가 있다. 반면 ..

TCP/IP 소켓 프로그래밍 11장 내용 확인문제

1. 프로세스간 통신이 의미하는 바는 무엇인가? 이를 개념적으로, 그리고 메모리의 관점에서 각각 설명해보자 >개념적으로 프로세스간 통신은 두 프로세스 사이에서 데이터를 주고 받는 것을 의미한다.메모리의 관점에서 보면 이는 두 프로세스가 메모리를 공유하는 것으로 이해할 수 있다. 공유하는 메모리의 영역이 존재함으로써 프로세스 상호간에 데이터를 전달할 수 있기 때문이다. 2. 프로세스간 통신에는 IPC라는 별도의 메커니즘이 요구된다. 그리고 이는 운영체제에 의해서 지원되는 별도의 기능이다. 그렇다면 프로세스간 통신에 있어서 이렇듯 운영체제의 도움이 필요한 이유는 무엇인가? >IPC를 위해서는 공유되는 메모리가 필요한데, 프로세스간에는 메모리를 공유하지 않기 때문에 운영체제의 도움이 필요하다. 즉, 두 프로세..