다중처리 기술 School of Electronics and Information. Kyung Hee University.

Slides:



Advertisements
Similar presentations
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
Advertisements

10장. 소켓 입출력 모델(I) 블로킹과 넌블로킹 소켓의 특징을 이해한다. Select 소켓 입출력 모델을 이해하고 활용한다.
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
Ch.07-5 xml-rpc 사용하기 김상엽.
Network Lab. Young-Chul Hwang
TCP Client/Server Program
Department of Computer Science and Engineering
제 9 장 구조체와 공용체.
PHP입문 Izayoi 김조흔.
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
Department of Computer Science and Engineering
Department of Computer Science and Engineering
제 12장 I/O멀티플렉싱(Multiplexing)
제 14장 Multicast & Broadcast
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Department of Computer Engineering
Department of Computer Engineering
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 7장 소켓 연결의 우아한 종료 인공지능실험실 석사 2학기 이희재
Linux서버를 이용한 채팅프로그램 지도 교수님 : 이형원 교수님 이 름 : 이 은 영 학 번 :
12장 파이프.
07. 디바이스 드라이버의 초기화와 종료 김진홍
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
Department of Computer Engineering
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
23장. 구조체와 사용자 정의 자료형 2.
Advanced Socket Programming
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
프로젝트 발표 순서 12/7(수), 팀 별 15분 발표순서 PPT (팀 별 이름, 구현 내용, 결과-그래프 포함) 각 기법당
Department of Computer Science and Engineering
13장 고급 입출력 함수 박사 4학기 최 성자.
TCP/IP Socket Programming…
Socket Address Structure and Byte Ordering Functions
Socket Address Structure and Byte Ordering Functions
Advanced Socket Programming
03. 병행 프로세스 (Parallel Process)
11장. 1차원 배열.
Department of Computer Engineering
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
29강 JAVA 스레드 - 스레드란? - 멀티스레드 문법 - synchronized Lecturer Kim Myoung-Ho
메모리 관리 & 동적 할당.
(분산 통신 실습) : 소켓(Sockets)
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
24장. 파일 입출력.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
School of Electronics and Information. Kyung Hee University.
데이터베이스실험실 석사 2학기 조정희 TCP/IP Socket Programming… 제 18장 윈도우 기반 쓰레드 사용하기 데이터베이스실험실 석사 2학기 조정희
Department of Computer Engineering
TCP / IP 소켓 프로그래밍 4주차 ( Ch.15 ~ Ch.18 + α ).
Department of Computer Engineering
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
제 19 장 TCP 대화식 데이터 흐름.
3. 모듈 (5장. 모듈).
구조체(struct)와 공용체(union)
Chapter 11 구조체.
프로그래밍 언어 학습을 위한 가상실습환경 창원대학교 이수현.
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
엔코더 프로그램 설명 // 쓰레드를 사용하기 때문에 변수와 핸들을 전역변수로 지정 HANDLE hDevice;
Department of Computer Engineering
06. 디바이스의 등록과 해제 김진홍
Network Lab. Young-Chul Hwang
Completion Port기반의 채팅프로그램
CODE INJECTION 시스템B 김한슬.
Power Java 제23장 스레드.
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
7 생성자 함수.
6 객체.
중간 결과 보고 ( Server & Client )
Presentation transcript:

다중처리 기술 School of Electronics and Information. Kyung Hee University. Dae Sun Kim <dskim@networking.khu.ac.kr>

다중 접속 서버의 구현 방법들 프로세스 생성을 통한 멀티태스킹(Multitasking) 서버의 구현. select 함수에 의한 멀티플렉싱(Multiplexing) 서버의 구현. 쓰레드를 기반으로 하는 멀티쓰레딩(Multithreading) 서버의 구현

Multitasking 여러 작업(task)을 병행하여 처리하는 기법 Multiprocess Multiprocess , Multithread, Multiplexing Multiprocess 독립적으로 처리해야 할 작업의 수만큼 프로세스를 만드는 방법 장점 각 프로세스들이 독립적으로 작업을 처리하므로 구현이 간편 단점 병렬처리 해야 할 작업 수만큼 프로세스를 생성 프로세스가 많이 생성될수록 메모리 사용량이 증가하고 프로세스 스케줄링 횟수도 많아져 프로그램의 성능이 떨어짐 동시에 개설할 수 있는 프로세스의 수가 제한

Multitasking (Cont’d) Multithread Thread는 프로세스 내에서 독립적으로 실행되는 작업 단위 프로세스 내에서 여러 thread를 실행시켰을 때 외부에서는 이 thread들 전체가 하나의 프로세스처럼 취급 Thread생성시 원래 프로세스의 이미지를 같이 사용(공유) 새로 생성된 thread용 스텍 영역은 thread별로 배정 장점 같은 프로세스에서 생성된 thread들은 스텍을 제외한 이미지 영역을 서로 공유 따라서 thread가 생성되는 데 필요한 메모리양은 프로세스가 생성되는 데 필요로 하는 메모리양보다 작고 thread 생성 시간도 매우 짧다. 단점 전역 변수공유 따라서 동기화 문제가 발생

Multiplexing 하나의 전송로를 여러 사용자가 동시에 사용해서 효율성을 극대화 하는 것

Multiplexing (Cont’d) 한 프로세스(또는 스레드)내에서 이루어지는 다중처리 방법 Polling 처리해야 할 작업들을 순차적으로 돌아가면서 처리하는 방법 Selecting 변화(입력,출력,에러)를 감지하여 작업을 처리하는 방법 Interrupt 프로세스가 어떤 작업을 처리하는 도중에 특정한 이벤트가 발생하면 해당 이벤트를 처리하는 방식

I/O 멀티플렉싱 기반의 서버 I/O 멀티플렉싱이란? 클라이언트와의 입/출력을 담당하는 프로세스를 하나로 묶어버리는 형식 프로세스가 고속의 전송로에 해당한다.

select 함수의 기능과 호출 순서 지정된 파일 디스크립터의 변화를 확인한다. 파일 디스크립터 변화 : 파일 디스크립터를 통해 데이터 송수신 가능한 상태

select 함수의 기능과 호출 순서 파일 디스크립터 변화 파일 또는 소켓생성시 파일 디스크립터를 받음 파일디스크립터 입력버퍼 출력버퍼 입력버퍼에 데이터가 있는가???? - -? 출력버퍼에 데이터가 있는가???? - -?

select 함수의 기능과 호출 순서 디스크립터 설정 bind 파일디스크립터 입력버퍼 출력버퍼 파일디스크립터 입력버퍼 출력버퍼

파일 디스크립터의 변화와 설정 파일 디스크립터의 설정. 파일 디스크립터의 변화. fd_set 자료형 변화를 확인 할 파일 디스크립터를 구분 지어 모아두는 것(총 3 묶음). 파일 디스크립터의 변화. 수신 할 데이터가 존재하는가? (입력 버퍼에 데이터 존재) 데이터 전송이 가능한 상태인가? (출력 버퍼에 충분한 여유공간 존재) 소켓에서 예외상황이 발생 하였는가? (OOB 메시지 전송) fd_set 자료형 파일 디스크립터를 구분 지어 모아두기 위한 자료형(비트단위 배열)

파일 디스크립터의 변화와 설정 함수 선언 FD_ZERO(fd_set * fdset); FD_SET(int fd, fd_set * fdset); FD_CLR(int fd, fd_set * fdset); FD_ISSET(int fd, fd_set * fdset);

검사 범위와 타임 아웃의 설정 검사 해야 할 파일 디스크립터의 범위를 지정. 타임 아웃을 설정 실제로는 검사해야 하는 파일 디스크립터의 개수를 인자로 전달. 가장 큰 파일 디스크립터 값에 1을 더해서 인자로 전달한다. 타임 아웃을 설정 struct timeval { long tv_sec; /* seconds */ long tv_usec; /* microseconds */ }

select 함수의 호출 및 결과 확인 #include <sys/time.h> #include <sys/types.h> #include <unistd.h> int select(int n, fd_set * readfes, fd_set * writefds, fe_set * exceptfds, struct timeval * timeout); 리턴 값 의미 -1 오류 발생 타임 아웃 0보다 큰 수 변화 발생 파일 디스크립터 수

select 함수의 호출 및 결과 확인

프로그램 예제확인 #1 프로그램 예제 select.c 실행결과

프로그램 예제 확인 #2 프로그램 예제 echo_selserv.c 실행결과

실습과제 채팅 서버 /클라이언트 구현 tcp_chatcli.c, tcp_chatserv.c - Chat Server Code While(1){…… if(FD_ISSET(s, &read_fds)){ accept() 호출 chat_client[] 업데이트 } for(i=0; i<chat_number; i++) { if(FD_ISSET(chat_client[i], &read_fds)){ 클라이언트 검사 write() 채팅참가자에게 메시지 전송

실습과제 - Chat Client Code While(1){…… FD_SET(0, &read_fds); - 표준 입력 파일디스크립터 셋 FD_SET(s, &read_fds); - 서버와 연결된 소켓번호 셋 select() 호출 if(FD_ISSET(s, &read_fds)) 서버로 부터 오는 메시지 출력 키보드 입력 데이터를 서버로 전송 }