표준 입출력과 소켓

heeseok·2024년 12월 29일

TCP/IP

목록 보기
4/4


이미지는 그냥 한번 보고 넘어가자.

본론

오늘은 표준 입출력 함수에 관해 이야기 해보려고 한다.

이미지에서 "하나의 file에 관해 api와 ansi가 어떻게 다루는가?"를 따져보고 있다.

표준 입출력 함수의 두 가지 장점이 존재한다.

1. 이식성이 좋음.(어디든지 호환이 가능함)
2. 버퍼링을 통한 성능 향상에 도움이 됨.

첫 번째부터 생각해보자. 왜 이식성이 좋을까?

표준의 뜻에 대해 알아 볼 필요가 있다. 표준이라 함은 어느표준이라 함은 사회적 합의를 통해 이루어진 통일 규격을 의미한다. 즉 모든 환경에서 모든 운영체제(컴파일러)가 지원하도록 ANSI C에서 표준으로 정의했기 때문이다.

두 번째 버퍼링이 항상 성능 향상에 도움이 되는가?

음... 솔직히 버퍼링이 모든 상황에서 우월한 성능을 보이는 건 아닐거라 생각한다.
그러나 전송해야 할 데이터가 많으면 많을수록 버퍼링의 유무가 성능을 좌지우지한다.
즉, 전송하는 데이터의 양출력버퍼로의 데이터 이동 횟수가 성능의 우월함을 가져온다.

소켓을 생성하면 운영체제가 입출력을 위한 버퍼를 마련하는데 이 버퍼는 TCP 프로토콜을 진행하는데 매우 중요한 역활을 한다. 이와는 별도로 표준 입출력 함수를 사용하게 되면, 이에 더불어 추가로 또 하나의 버퍼를 제공받는다.

자 다음은 표준 입출력 함수의 세 가지의 단점이 있다.

1. 양방향 통신이 쉽지 않다.
2. 상황에 따라서 fflush 함수의 호출이 빈번히 등장할 수 있다.
3. 파일 디스크립터를 FILE 구조체의 포인터로 변환해야 한다.

첫 번째 이미지에서 보여지듯이 표준 입출력 함수는 API에 비해 세세하지 못 하기 때문에 이러한 단점들이 존재한다.

profile
서버공부하는 사람

0개의 댓글