Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "다중처리 기술 School of Electronics and Information. Kyung Hee University."— Presentation transcript:

1 다중처리 기술 School of Electronics and Information. Kyung Hee University.
Dae Sun Kim

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

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

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

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

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

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

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

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

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

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

12 파일 디스크립터의 변화와 설정 함수 선언 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);

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

14 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보다 큰 수 변화 발생 파일 디스크립터 수

15 select 함수의 호출 및 결과 확인

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

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

18 실습과제 채팅 서버 /클라이언트 구현 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() 채팅참가자에게 메시지 전송

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


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

Similar presentations


Ads by Google