Standard I/O Streams
Standard I/O model은 file을 stream 개념으로 open한다.
Buffered I/O : Motivation
Application은 한 번에 한 문자만을 read/write하는 경우가 있는데 이는 많은 system call을 불러오기 때문에 비효율적이다.
Standard I/O는 Buffer만큼 read,write을 하기 때문에 system call이 적게 발생한다.
printf가 발생할 때마다 disk에 접근하는 것이 아니라 '\n'를 읽거나 exit, return from main이 발생할 때만 disk에 접근하게 된다.
Unix I/O vs Standard I/O vs RIO
Standard I/O와 RIO는 low-level Unix I/O를 이용하여 실행된다.
Pros and Cons of Unix I/O
- Pros
- Unix I/O is the most general and lowest overhead form of I/O
- All other I/O packages are implemented using Unix I/O
- Unix I/O provides functions for accessing file metadata
- Unix I/O fuctions are async-signal-safe and can be used safely in signal handlers
- Unix I/O is the most general and lowest overhead form of I/O
- Cons
- Dealing with short counts is tricky and error prone
- Efficient reading of text lines requires some form of buffering, also tricky and error prone
- Both of these issues are addressed by the standard I/O and RIO packages
Pros and Cons of Standard I/O
- Pros
- Buffering increases effciency by decreasing the number of read and write system calls
- Short counts are handled automatically
- Cons
- Provides no function for accessing file metadata
- Standard I/O functions are not async-signal-safe, and not appropriate for signal handlers
- Standard I/O is not appropriate for input and output on network sokets
일반적으로는 highest-level I/O function을 사용하는 것이 좋다.
disk 또는 terminal file을 사용할 때는 standard I/O가 좋다.
signal handler 처럼 async-signal-safe해야 하는 경우 Unix I/O를 사용하는 것이 좋다.
network soket에서 read,write를 할 때 RIO를 사용하는 것이 좋다.
'4-1 > 시스템프로그래밍' 카테고리의 다른 글
Concurrent Programming (0) | 2022.04.15 |
---|---|
Network Programming (0) | 2022.04.05 |
Metadata, sharing and redirection (0) | 2022.04.04 |
Unix I/O, RIO package (0) | 2022.04.04 |
Signal (0) | 2022.03.28 |