본문 바로가기

전체 글174

Chapter 11 - 프로세스간 통신(Inter Process Communication) 11-1 : 프로세스간 통신의 기본 개념 프로세스들은 서로 별개의 메모리 공간을 점유하기 때문에 프로세스간 통신은 별도로 마련된 방법을 통해서만 이뤄질 수 있음 두 프로세스간 파이프(Pipe)를 생성하여 통신 가능 파이프는 소켓과 마찬가지로 운영체제에 속하는 자원으로 fork() 함수로 복사되지 않음 #include int pipe(int filedes[2]); // 성공시 0, 실패시 -1 반환 배열에 담기는 두개의 파일 디스크립터는 각각 파이프의 입구와 출구로 사용 fork() 함수로 입구 또는 출구에 해당하는 파일 디스크립터를 자식 프로세스에 전달 단, 이 때 파이프가 복사된 것이 아닌 파이프의 입출력에 사용되는 파일 디스크립터가 복사된 것에 유의 pipe() 함수 사용 예제 // pipe1.cpp.. 2023. 2. 24.
Chapter 10 - 멀티프로세스 기반의 서버구현 10-1 : 프로세스의 이해와 활용 다중접속 서버의 구현 모델 멀티프로세스 기반 서버 : 다수의 프로세스를 생성하는 방식으로 서비스 제공 멀티플렉싱 기반 서버 : 입출력 대상을 묶어서 관리하는 방식으로 서비스 제공 멀티쓰레딩 기반 서버 : 클라이언트의 수만큼 쓰레드를 생성하는 방식으로 서비스 제공 Windows에서는 멀티프로세스 기반의 서버 구현을 지원하지 않음 프로세스(Process) : 메모리 공간을 차지한 상태에서 실행중인 프로그램 모든 프로세스는 운영체제로부터 프로세스 ID를 부여받음 1번은 운영체제가 시작되자마자 실행되는 프로세스에 할당 따라서 프로세스 ID는 2 이상의 정수 형태를 띔 ps 명령어로 PID를 확인할 수 있음 프로세스의 생성에는 fork() 함수를 사용 #include pid_t.. 2023. 2. 24.
Chapter 09 - 소켓의 다양한 옵션 09-1 : 소켓의 옵션과 입출력 버퍼의 크기 소켓의 옵션은 계층별로 존재 SOL_SOCKET - 소켓에 대한 일반적인 옵션들 IPPROTO_IP - IP 프로토콜에 관련된 사항 IPPROTO_TCP - TCP 프로토콜에 관련된 사항 대부분의 옵션은 설정상태의 참조(Get) 및 변경(Set)이 가능 #include int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen); int setsockopt(int sock, int level, int optname, const void *optval, socklent_t optlen); // 성공시 0, 실패시 -1 반환 getsockopt() 함수를 사용한 예시 // so.. 2023. 2. 24.
Chapter 08 - 도메인 이름과 인터넷 주소 08-1 : Domain Name System 도메인 이름 : IP 주소에 부여되는 별칭(가상의 주소) DNS(Domain Name System) : IP주소와 도메인 이름 사이에서의 변환을 수행하는 시스템 DNS 서버 : 도메인 이름을 IP 주소로 변환 모든 컴퓨터에는 디폴트 DNS 서버의 주소가 등록되어있음 브라우저 주소창에 도메인 이름 입력시 해당 도메인 이름의 IP주소를 디폴트 DNS 서버를 통해 얻게됨 ping 명령어로 도메인 이름에 해당하는 IP 주소를 얻을 수 있음 nslookup 명령어로 디폴트 DNS 서버의 주소를 얻을 수 있음 호스트가 문의한 도메인 이름의 IP 주소를 디폴트 DNS 서버가 모를 경우 해당 요청에 대해 한단계 상위 계층에 있는 DNS 서버에 질의함 최상위 Rood DNS.. 2023. 2. 24.