검색어 입력폼

[공학]다중 접속 서버의 구현방법: 멀티쓰레드 서버

저작시기 2006.12 |등록일 2006.12.15 한글파일한글 (hwp) | 16페이지 | 가격 700원

소개글

다중 접속 서버의 구현방법으로는 fork() 함수를 이용한 멀티타스킹 서버, select() 함수를 이용한 멀티플렉싱 서버, thread 생성함수를 이용한 멀티쓰레드 서버 방식이 있습니다.

본 실험․실습에서는 쓰레드 관련 함수를 이용한 멀티쓰레드 서버의 구현방법에 관해 알아봅니다. 그리고 클라이언트와 서버의 실행 플랫폼이 리눅스와 윈도우라 할지라도 이들 간의 통신에는 아무런 문제가 없다는 것을 확인하고, 끝으로 멀티타스킹 서버, 멀티플렉싱 서버, 멀티쓰레드 서버 구현방식의 차이점 및 장단점을 비교 ․ 분석 하고자 합니다.

목차

1. 목 적
2. 기초 지식
3. 설비 및 준비사항
4. 실습 절차 및 실습 프로그램
5. 실습 결과
6. 결론 및 토의사항

본문내용

■ LINUX 운영체제에서는 새로운 프로세스를 생성하기 위해선 fork() 시스템 콜을 이용합니다. 이는 부모 프로세스의 메모리 이미지를 복사하여 자식 프로세스가 동일한 메모리 이미지를 갖도록 합니다.
■ fork()는 부모 프로세스의 메모리 이미지를 복사할 뿐만 아니라, 일반적으로 exec()에 의해 자식 프로세스의 code segment를 대체하므로 많은 오버헤드를 야기하는 시스템 콜입니다. vfork()는 fork()의 오버헤드를 줄이기 위해 두 프로세스가 data segment를 공유하게 하고, copy-on-write 방식에 의해 두 프로세스 중 하나의 프로세스가 data segment를 변경할 경우 복사하여 독립적인 data segment를 갖도록 합니다.
■ 요약하면, LINUX의 프로세스 생성을 위한 fork() 시스템 콜은 필요 이상의 많은 자원과 수행시간을 요구하기에 시스템에 많은 오버헤드를 발생시킵니다.

■ 카네기멜론 대학에서 개발한 Mach 운영체제는 기존의 프로세스 개념을 타스크와 쓰레드의 개념으로 분리하였습니다. 시스템 오버헤드가 큰 프로세스에 대응되는 시스템 오버헤드를 최소화한 쓰레드가 등장하게 되었습니다.
■ 타스크(Task): 타스크는 많은 쓰레드가 실행할 수 있는 실행 환경을 제공합니다; 이는 어떤 일도 수행하지 않습니다. 그리고 시스템 내 자원의 할당은 타스크 단위로 이루어집니다.
■ 쓰레드(Thread): 쓰레드는 실제 CPU의 제어를 받아 실행되는 주체로서 타스크 내의 모든 쓰레드는 타스크에 할당된 모든 자원을 공유하게 되고 병렬(concurrent) 실행됩니다. 쓰레드의 제어를 위해선 프로그램카운터, 스텍포인터와 레지스터셋과 같은 최소한의 상태정보만이 유지합니다.
다운로드 맨위로