개발자는 기록이 답이다

패스트캠퍼스 환급챌린지 13일차 미션 (2월 13일) : Spring Webflux 완전 정복 : 코루틴부터 리액티브 MSA 프로젝트까지 강의 후기 본문

패스트캠퍼스

패스트캠퍼스 환급챌린지 13일차 미션 (2월 13일) : Spring Webflux 완전 정복 : 코루틴부터 리액티브 MSA 프로젝트까지 강의 후기

slow-walker 2024. 2. 13. 23:05

 

1. Epoll 소개

 

어떻게 Selector는 select할 수 있을까?

1) Selector 종류

  • 플랫폼마다 된 구현을 제공한다.
  • PollSelectorImp : Solarispoll시스템용하는 PollSelector
  • EPollSelectorImpl : Linux에서 사용하는 epoll기반 의 EPollSelector
  • KQueueSelectorImpl : macOS / BSD에서 사용하 는 kqueue 기반의 KQueueSelector
  • WindowsSelectorImpl : WindowsIOCP기능을 용한 WindowsSelector

 

2) file descriptor

  • 스계os에서는일반적인파일,워크소켓, 파이프, 블록 디바이스, 캐릭바이스 등 모든 체를 파일로 관리
  • 려있는 파일에 접근할, fd를 이용해서 파일을 지정
  • fd이 아닌 정수를 사용. file descriptor tableindex로 사용되기
  • 파일을open하면,fd로사용하지않은가장작은값할당
  • 준 입력, 준 출력, 준 에러에 각각 0, 1, 2 라는 fd 가부여

 

3) file descriptor 접근

var file = new File(FileFdExample.class .getClassLoader()
        .getResource("data.txt")
        .getFile());
try (var fis = new FileInputStream(file)) {
        FileDescriptor fd = fis.getFD();
        Field field = FileDescriptor.class.getDeclaredField("fd");
        field.setAccessible(true);
        long value = field.getInt(fd);
        log.info("fd: {}", value);
}

• java에서는FileInputStreamgetFdFileDescriptor 객체에 접근 가능

• FileDescriptorfdprivate으로가지고있기문에 reflection으로 조

 

4) select system call

int select(int nfds, fd_set *restrict readfds,
fd_set *restrict writefds, fd_set *restrict
errorfds, struct timeval *restrict timeout);

!// ndfs: 감시할 fd 개수
!// readfds: 읽을 데이터가 있는지 감시할 fd 세트
!// writefds: 쓰여진 데이터가 있는지 감시할 fd 세트
!// exceptfds: 예외가 있는지 감시할 fd 세트
!// timeout: 감시를 지속하는 시간. null이라면 계속 대기
  • 대부분의 os에서 지원. 용적으로 사용 가능
  • fd_setfd를 등하고 이 fd_setsystem call을 통해서 체
  • fd를 하나로 시간이 형적으로 증 가. O(n)의 계산 필요
  • fd1024 혹은 2048개까지만 등가능
  • fd 세트를 어에서 직접 다에 유지보수가 어

5) epoll

• linux 2.6 이상에서 지원
• osfd 세트를 관하고 I/O비된 fd가 있다면 application

에게 전달
• macOS/BSD 이라면 kqueue, Windows라면 IOCP 지원

 

epoll 함수
epoll_create: epoll 인스스를 생성한다

epoll_ctl: epoll 인스스에 fd와 관심있는 작을 등//수정한다

epoll_wait: fd와 관된 이트를 시한다

 

 

 

와 점점 더 어려워지는것같고, 무슨내용인지 잘 이해가 되지 않는다...


※ 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다. https://bit.ly/48sS29N