출처: https://3months.tistory.com/307 [Deep Play]

4-1/시스템프로그래밍

Standard I/O, Unix I/O vs Standard I/O vs RIO

코딩하는 랄뚜기 2022. 4. 4. 11:14

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
  • 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