푸른청년 푸르게 살고있나?  
home | 살아가기 | news | 세상보기 | tip&tech | 방명록 |  
   전체
   asp
   php
   jsp
   mssql
   mysql
   informix
   linux
   unix
   win2000
   javascript
   html
   oracle
   java
   etc
    
:: Tip&Tech > etc
온라인 게임과 같은 대용량 서버 처리 방식인 IOCP방식과 thread pool방식은 무엇인가?
# IOCP (I/O Completion Ports)
- IOCP는 비동기 I/O로 쓰인다.이는 CreateIoCompletionPort 함수를 통해 하나 또는 다수의 파일핸들에 연결된다.
Completion Port작업이 완료시에 비동기 I/O가 작동하며 이에 I/O Completion packet이 큐에 넣어진다.
IOCP는 하나의 object에 대한 다수의 파일 핸들을 동기화 시키는데 사용한다.

- IOCP를 쓰는 이유
소켓의 경우 패킷이 들어오면 Opertiong System의 Buffer에 우선 쓰여지고 버퍼의 데이타가 일정치 쌓이면 이를 어플리케이션 버퍼에 Copy 한
다음 어플리케이션에 Receieve 메세지를 날려준다. 이는 쓸 데없이 버퍼의 값을 두번 쓰게 만드는 작업을 낳는다.
보다 속도를 향상 시키기 위해 어플리케이션과 Operationg System이 같은 버퍼의 메모리 위치를 참조하게 만드는 것이 IOCP이다.
파일 전송이나 지속적 연결 상태에서 연속적인 데이타를 보내주는 데 쓰이며 I/O 핸들에 Socket 핸들을 넣어준다


# Thread pool의 구현방식
- 미리 쓰레드를 할당시켜 농는기법
- 간단하게 말하면 생성하고자 하는 크기만큼 pthread_create() 함수를 돌리면 된다.
하지만 이건 개념적인 것이고 대부분의 경우 각각의 쓰레드를 스케줄링해주어야 한다.
- thread pool에 들어있는 각각의 쓰레드를 관리하기 위해서는 필수적으로 각각의 쓰레드의 상태를 가지고 있는
schedul 자료구조를 가지고 있어야 한다.


# fork방식 - 부모와 자식 프로세스
- 새로운 프로세스가 fork되면 부모 프로세스의 자식 프로세스가 된다.
- 부모 프로세스는 fork()를 호출해서 새로운 프로세스 ID가 반환되기를 기다린다.
- 리눅스 커널은 가상으로 부모프로세스의 모든 메모리를 새로운 자식 프로세스 메모리 공간에 복사한다.
- 자식 프로세스는 자신만의 프로세스 id를 얻게 되며 부모프로세스는 이 프로세스를 생성한 프로세스라는 의미로
부모 pid를 가지게 된다.

날짜: 2004-03-06 14:32:41, 조회수: 2806

다음글 아웃룩 다운시
이전글 OLTP, OLAP, ETT도구, DW, MIS, ERP는 무엇인가?

꼬리말
글쓴이 비밀번호 #스팸글방지(주인장 닉네임을 쓰시오)

  
since by 2003.03.23 / 3th 2005.07.26 / 4th 2009.04.22 made by bluesoul