본문 바로가기

System3

I/O Multiplexing 톺아보기 (2부) 이전 1부에서 Blocking/Non-Blocking, Synchronous/Asynchronous 기본 개념과 Linux 환경에서의 기법들을 살펴보았다. I/O 동작의 가장 기본 형태인 Synchronous Blocking 방식은 굉장히 직관적이긴 하지만 2개 이상의 파일을 처리할 때는 multi-process 또는 multi-thread 기법으로 동작해야했다. Non-Blocking이라 한들 지속적인 Context Switching이 일어나기도 한다. 즉 Synchronous 방식에서 성능을 고려하면 multi-processing 또는 multi-threading 을 구현하지 않을 수 없다는 것이다. 하지만 multi-processing 환경에선 IPC(프로세스간 통신)나 동기화(semaphore, .. 2021. 2. 16.
I/O Multiplexing 톺아보기 (1부) “Everything is a File” 이 말은 Linux/Unix에서는 socket도 하나의 파일(File), 더 정확히는 File Descriptor(FD, 파일 디스크립터)로 관리된다는 것에서 착안되었다. 이처럼 Low Level File Handling을 통해 socket 기반의 데이터 송수신이 가능하다. 즉 I/O 작업은 단순히 단일 server 내에서 일어나는 읽기/쓰기 뿐만 아니라 Server-Client 간 네트워크 통신에도 적용되는 개념인 셈이다. 이번 포스팅에서는 각종 I/O 모델 들을 이해하기 위한 선수 개념과 기본 동작 방식을 숙지하고 일련의 과정을 설명하기 위해 Linux 계열에 대한 Multiplexing 기법까지만 다루도록 한다. 그 외 Windows, Solaris, Ope.. 2020. 11. 25.
core dump 분석을 위한 gdb 사용법 간단 정리 살다보면 기껏 키워놓은 프로그램이 어느 날 갑자기 죽었거나 hang 걸리며 뻗어버리는 반항하는 모습을 보게 됨. 내가 널 어떻게 키웠는데 일반적인 운영 로그/에러는 직접 logger를 만들어 따로 잘 저장해두겠지만 미처 고려하지 못한(생각보다 low한) 부분에선 바로 원인을 파악하기가 힘듦. 따라서 프로그램 실행 시, core dump를 남기게 설정한다면 프로그램이 돌연사했을때 특정 시점의 메모리 상태를 알 수 있어 이슈 파악에 매우 유용 unix 환경에서 이를 도와주는 디버깅 툴이 gdb (=gnu debugger) 1. core dump 구조 core 파일은 ELF 형식 [ ELF - Executable and Linkable Format ] 실행 파일, 오브젝트 파일, 공유 라이브러리 그리고 '코어.. 2020. 5. 15.