본문 바로가기
반응형

file descriptor2

[C언어] 다중화된 입출력(Multiplexed IO) 관련 시스템 콜(System call) Multiplexed I/OMultiplexed I/O는 하나의 프로세스가 여러 개의 I/O 작업(파일, 소켓, 디바이스 등)을 동시에 처리할 수 있도록 하는 기술이다. 이를 통해 비동기적으로 여러 데이터 소스를 효율적으로 관리할 수 있다.단일 프로세스는 1개 이상의 파일 디스크립터(fd)를 동시에 블로킹할 수 없다. 따라서 read() 함수가 호출될 경우, 해당 파일에 데이터가 없으면 다음과 같은 동작을 수행한다.일반 파일: read()는 0을 반환하며, 이는 EOF(End of File) 상태를 의미한다.파이프, 소켓, FIFO: 기본적으로 블로킹 동작을 수행하며, 데이터가 준비될 때까지 대기하므로 다른 fd에 대한 처리가 불가능하다.이러한 한계를 극복하기 위해 I/O Multiplexing이 사용된.. 2025. 3. 2.
[C언어] 리눅스 파일 시스템과 file table의 구조(inode, offset등) 리눅스 파일 시스템리눅스에서 파일은 단순한 데이터의 집합이 아니라, 운영체제가 효율적으로 관리할 수 있도록 설계된 데이터 구조이다.파일은 바이트의 연속적인 시퀀스이며, 다양한 입출력(I/O) 방식과 파일 관리 구조를 통해 운영된다.1. 리눅스의 파일 I/O 방식리눅스에서는 다양한 방식으로 파일을 처리할 수 있으며, 대표적인 방법은 다음과 같다.다중화된 I/O (Multiplexed I/O)여러 개의 파일을 동시에 처리할 때, 운영체제는 다중화된 I/O 기법을 사용하여 성능을 최적화한다. select(), poll(), epoll() 등의 시스템 콜을 활용하면 여러 파일을 동시에 감시하고, 준비된 파일에 대해 데이터를 읽거나 쓸 수 있다.메모리 매핑 I/O (Memory Mapped I/O)파일을 물리적인.. 2025. 3. 2.