그럴듯한 개발 블로그
kqueue와 달리 epoll은 왜 fd에 대한 event 추적이 불가능한가
<고민했던거> 2023. 11. 29. 03:16

c++로 nginx와 비슷하게 동작하는 웹서브를 만들면서 의문이 생겼다. 난 kqueue를 사용해 fd에 대한 read write를 kevent에 등록해서 socket, 정적 파일에 대한 I/O작업 buffer_size로 잘라 전부 event로 관리했다. (subject 규칙에 file에 대한 I/O는 멀티플렉싱 event를 통해서만 가능하다고 쓰여 있다) 파일을 read 할 때도 socket read 할 때와 동일한 buffersize만큼 읽어 와서 제일 오래 걸리는 I/O작업을 분할하는 데 의의가 있다고 생각했다. buffersize가 100일 때 파일의 크기가 10000이고 그 파일을 읽는 작업을 이벤트 하나에서 처리해 버리면(ex. 반복문 안에서 eof까지 무한 read) 100번으로 잘게 쪼개지..

wait함수에 대해서...
<고민했던거> 2023. 3. 22. 20:59

minishell 과제에 새로 추가된 허용함수를 정리중 이상한 것을 발견했다.. #include pid_t wait(int *stat); wait 함수는 자식 프로세스가 종료될 때까지 기다린다. 그런데 함수 인자로 주어진 *stat은 현 상황을 저장하기 위해 주소로 받은 인자로 자식 프로세스에 관한 정보가 아니다. 여태 과제에서 주어진 허용 함수는 참고하고 싶거나 저장하고 싶은 데이터를 인자로 받았었다. 예를 들어 malloc (size) 는 size만큼 메모리를 할당 free(addr) addr에 접근해서 메모리 해제 sleep(sec) sec만큼 기다림 등등 그런데 wait(stat) 에선 인자로 받지 않은 자식 프로세스의 정보를 어디선가 받고 그동안 기다리는 함수인데 어떤 식으로 동작하는지 궁금해서..