TCP / IP 소켓 프로그래밍 4주차 ( Ch.15 ~ Ch.18 + α ).

Slides:



Advertisements
Similar presentations
7 장. 원격지에서 리눅스서버를 관리하자. 텔넷서버를 설치 / 운영한다. SSH 서버를 운영한다. VNC 서버를 설치 / 운영한다.
Advertisements

CHAP 22. 블루투스.
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
Ch.07-5 xml-rpc 사용하기 김상엽.
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
Network Lab. Young-Chul Hwang
Chapter 4 Multi-Threaded Socket
컴퓨터 프로그래밍 기초 [Final] 기말고사
PHP입문 Izayoi 김조흔.
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
Department of Computer Science and Engineering
Windows Server 장. 사고를 대비한 데이터 백업.
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
Linux서버를 이용한 채팅프로그램 지도 교수님 : 이형원 교수님 이 름 : 이 은 영 학 번 :
Multi-thread Programming
07. 디바이스 드라이버의 초기화와 종료 김진홍
Multi-thread Programming
8장. 원격지 시스템 관리하기.
Chapter 06 프로세스와 예약작업 관리 Solaris 1. 프로세스 관리
소리가 작으면 이어폰 사용 권장!.
Multi-thread Programming
Signal & Inter-Process Communication
Department of Computer Engineering
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
NJM Messenger 박상원 박연호.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
23장. 구조체와 사용자 정의 자료형 2.
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
프로젝트 발표 순서 12/7(수), 팀 별 15분 발표순서 PPT (팀 별 이름, 구현 내용, 결과-그래프 포함) 각 기법당
Sungkyunkwan University OS Project Dongkun Shin
TCP/IP Socket Programming…
뇌를 자극하는 Windows Server 장. 장애 조치 클러스터.
11장. 1차원 배열.
속성과 리스너 초기화 파라미터 외 파라미터에 대해 이해한다. 리스너를 생성해보고 사용에 대해 이해한다.
27장. 모듈화 프로그래밍.
메모리 관리 & 동적 할당.
뇌를 자극하는 Windows Server 2012 R2
Go Lang 리뷰 이동은.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
TCP / IP 소켓 프로그래밍 3주차 ( Ch.10 ~ Ch.14 ).
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
자바 5.0 프로그래밍.
School of Electronics and Information. Kyung Hee University.
데이터베이스실험실 석사 2학기 조정희 TCP/IP Socket Programming… 제 18장 윈도우 기반 쓰레드 사용하기 데이터베이스실험실 석사 2학기 조정희
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
Department of Computer Engineering
ARM Development Suite v1.2
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
자바로 만든 채팅 프로그램 임경진 조주경 지도교수님 : 이광세 교수님.
Signal & Inter-Process Communication
다중처리 기술 School of Electronics and Information. Kyung Hee University.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
01. 개요 네트워크에 있는 컴퓨터와 그룹에 대한 NetBIOS 이름에 대응되는 IP 주소를 찾아주는 서비스
Multi-thread Programming
클러스터 시스템에서 효과적인 미디어 트랜스코딩 부하분산 정책
.Net Web Application 2007 컴퓨터공학실험(Ⅰ)
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
9 브라우저 객체 모델.
다자간 채팅프로그램 김형도 허영민
과제 4: Thread (5월 9일까지) 4장 연습문제 풀이
채팅 및 파일전송 프로그램 권 경 곤 김 창 년.
Network Lab. Young-Chul Hwang
Completion Port기반의 채팅프로그램
CHAP 15. 데이터 스토리지.
CODE INJECTION 시스템B 김한슬.
M.B.TEAM 중간 발표 (5.18) 이 제걸 백 인호.
7 생성자 함수.
Signal & Inter-Process Communication
중간 결과 보고 ( Server & Client )
Presentation transcript:

TCP / IP 소켓 프로그래밍 4주차 ( Ch.15 ~ Ch.18 + α )

세부 계획 스터디 계획 및 Ch.1 ~ Ch.4 1주차 Ch.5 ~ Ch.10.2 2주차 Ch.10.3 ~ Ch.14 3주차 4주차 기말고사 Ch.18 5주차 기말고사 Ch.19 ~ Ch.24 6주차 채팅 프로그래밍 7주차 8주차 스터디 세부 계획 상의 모습은 다음과 같습니다.

Chapter 15~24 다중 접속 서버의 구현

다중 접속 서버와 비 다중 접속 서버 비 다중 접속 서버 다중 접속 서버 서비스 시간이 빠르다 접속 대기 시간이 길다 (순 차) 서비스 시간이 조금 느리다 접속 대기 시간이 짧다 (병렬)

다중 접속 서버란? 둘 이상의 클라이언트에게 동시 에 접속을 허용하여, 동시에 둘 이상의 클라이언트에 게 서비스를 제공하는 서버를 의미 한다.

다중 접속 서버의 종류 멀티 플렉싱 서버 멀티 쓰레드 서버 멀티 프로세 스 서버

멀티 플렉싱 서버에서의 epoll Select 함수의 단점 해결책 if((fd_num=select(fd_max+1, &cpy_reads, 0, 0, &timeout))==-1) ……. for(i=0; i<fd_max+1; i++) { if(FD_ISSET(i, &cpy_reads)) { ….. FD_SET(clnt_sock, &reads); .…. } else { ….. FD_CLR(i, &reads); ….. } } 해결책

Epoll의 장점 epoll 구현의 함수 VS select 구현의 함수

쓰레드의 등장 배경 프로세스는 부담스 럽다. 데이터의 교환이 어 렵다. 프로세스의 생성에는 많은 리소스가 소모 프로세스가 생성되면, 프로세스간의 컨텍스트 스위칭 으로 인해서 성능이 저하 컨텍스트 스위칭은 프로세스의 정보를 하드디스크에 저장 및 복원 하는 일 데이터의 교환이 어 렵다. 프로세스간 메모리가 독립적으로 운영되기 때문에 프로세스간 데이터 공유 불가능 운영체제가 별도로 제공하는 메모리공간을 대상으 로 별도의 IPC 기법 적용

그래서 쓰레드는? 프로세스보다 가벼운, 경량화된 프로세스 컨텍스트 스위칭이 빠름 쓰레드 별로 메모리공유가 가능하기 때문 에 별도의 IPC 기법 불필요

쓰레드와 프로세스의 차이점 프로세스 쓰레드 프로세스는 서로 완전히 독립 적 프로세스는 운영체제 관점에 서의 실행 흐름을 구성 프로세스는 서로 완전히 독립 적 프로세스는 운영체제 관점에 서의 실행 흐름을 구성 쓰레드는 데이터 영역과 힙 영 역을 공유 쓰레드는 프로세스 내에서의 실행 흐름

쓰레드의 문제점 쓰레드 메모리공유가 가능하기 때문에 문 제가 발생 ← 정상적인 접근 ↓ 잘못된 접 근

NO!!! YES!!! 쓰레드의 임계영역 둘 이상의 쓰레드가 동시에 실행하면 문 제를 일으키는 영역 전역변수 long long num = 0; NO!!! ↑ 임계영역? YES!!! 임계영역?

해결 방법은? 동기화! 둘 이상의 쓰레드가 동시에 실행하면 문 제를 일으키는 영역 뮤텍스 (Mutex) -동기 접근에 대한 해 결책 세마포어 (Semaphore) -실행 순서 컨트롤 중 심의 컨트롤

다중 접속 서버의 종류 Multi Connection Server Multi Process Multi Plexing Multi Threading Multi Plexing Select Epoll (linux) Asynchronous Notification IO (windos) Overlapped IO (windows) IOCP 다중 접속 서버의 종류

절대 우위를 점하는 서버의 모델은 없다! 상황에 맞게 적절한 모델을 선택할 수 있어야 한다. 다중 접속 서버의 선택 절대 우위를 점하는 서버의 모델은 없다! 상황에 맞게 적절한 모델을 선택할 수 있어야 한다.

채팅 프로그램 구현 계획

세부 계획 Ch.18 5주차 기말고사 Ch.19 ~ Ch.24 6주차 채팅 프로그래밍 7주차 Ch.18 5주차 기말고사 8주차 스터디 세부 계획 상의 모습은 다음과 같습니다.

구현 환경과 내용 구현 환경 구현 내용 멀티캐스트 멀티 쓰레드 (혹은 멀티 프로세스) 리눅스 (C언어)

구현 계획 서버 클라이언트 클라이언트간 통신 중계 대화 내용 및 요청 저장 파일 요청에 따른 제 공 및 중계 클라이언트간 통신 중계 대화 내용 및 요청 저장 파일 요청에 따른 제 공 및 중계 서버에 접속 및 종료 전송 받은 내용 화면 표시 파일 요청 및 수신

멀티프로세스 기반의 서버구현

프로세스란? 간단하게는 실행중인 프로그램을 뜻한다. 실행중인 프로그램에 관련된 메모리, 리소스등을 총칭하는 의미이다. 실행중인 프로그램에 관련된 메모리, 리소스등을 총칭하는 의미이다. 멀티프로세스 운영체제는 둘 이상의 프로세스를 동 시에 생성 가능하다.

Fork 함수 fork 함수가 호출되면, 호 출한 프로세스가 복사되 어 fork 함수 호출 이후를 각각의 프로세스가 독립 적으로 실행하게 된다. 부모 자식

Fork 함수 사용 방법 pid=fork(); if(pid==0) // if Child Process gval+=2, lval+=2; else // if Parent Process gval-=2, lval-=2; if(pid==0) printf("Child Proc: [%d, %d] \n", gval, lval); else printf("Parent Proc: [%d, %d] \n", gval, lval);

좀비 프로세스 실행이 완료되었음에도 불 구하고, 소멸되지 않은 프로세스 wait 함수 waitpid 함수 퇴치 방법은 ?

시그널 핸들링 특정 상황이 되었을 때 운 영체제가 프로세스에게 해당 상황이 발생했음을 알리는 일종의 메시지를 가 리켜 프로세스에게 해당 상황이 발생했음을 알리는 일종의 메시지를 가 리켜 시그널이라 한다. pid=fork(); …………… if(pid==0) printf("Child Proc: [%d, %d] \n", gval, lval); else printf("Parent Proc: [%d, %d] \n", gval, lval); return 0; 시그널 발생 !

프로세스 기반 다중접속 서버 연결이 하나 생성될 때마다 프로세 스를 생성해서 해당 클라이언트에 대해 서비스를 제공하는 것이다.

fork 를 통한 디스크립터의 복사 프로세스에 의해 만들어진 소켓이 복사되는 게 아니고, 파일 디스크립터가 복사된다

멀티플렉싱 기반의 서버 구현

멀티 프로세스의 단점 프로세스의 빈번한 생성은 성능의 저하로 이어 진다. 멀티프로세스의 흐름을 고려해서 구현해야 하 기 때문에 구현이 쉽지않다. 프로세스간 통신이 필요한 상황에서는 서버의 구현이 더 복잡해진다.

“하나의 통신채널을 통해서 둘 이상의 데이터를 전송하는데 사용되는 기술” 멀티플렉싱이란? 전자 및 통신공학에서의 멀티 플렉싱의 의미 “하나의 통신채널을 통해서 둘 이상의 데이터를 전송하는데 사용되는 기술” 서버에 적용한 멀티 플렉싱 Client Server Client Client

Select 함수 멀티플렉싱 서버의 구현에 있어서 가장 대표적인 방법 수신한 데이터를 지니고 있는 소켓이 존재하는가? 블로킹되지 않고 데이터의 전송이 가능한 소켓은 무엇인가? 예외상황이 발생한 소켓은 무엇인가? Select함수 호출과정

파일 디스크립터의 설정 함수 안에는 파일들을 관찰항목(수신, 전송, 예외)에 따 라서 구분해서 모으기 위한 fd_set형 변수존재

검사의 범위지정과 타임아웃의 설정 * 변수 maxfd는 파일 스크립터의 검사 범위를 지정 파일 디스크립터의 수를 넣는다. * 변수 timeout은 함수의 블로킹 상태를 방지하기 위하여 설정. * 반환 값 파일스크립터가 변화 변화한 파일스크립터 수 timeout에 의한 반환 값 0 오류발생시 -1