CS/운영체제

입출력 (콘솔입출력, 파일입출력)

혀니리리 2024. 1. 24. 14:22
728x90

[C언어 강좌] #17-1 콘솔 입출력과 파일 입출력 - 파일의 IT 블로그 (tistory.com)

 

[C언어 강좌] #17-1 콘솔 입출력과 파일 입출력

안녕하세요 파일입니다. 오늘은 본격적으로 파일 입출력에 대한 이론과 간단한 예제를 다뤄볼겁니다. 참고로 이번편부터 새롭게 알아야할 개념들이 늘어서 포인터 편처럼 머리가 아파질 수 있

pgh268400.tistory.com

콘솔: 대형 컴퓨터 시스템과 연결되어 데이터를 입력하는 장치 or 입력된 데이터를 처리하여 결과를 출력하는 장치
콘솔: 키보드, 모니터와 같은 표준 입출력 장치
콘솔 입출력 : 키보드에서 데이터를 입력받고 모니터에 데이터를 출력하는 것.

파일입출력 : 파일에서 데이터를 입력받고 파일에 데이터를 출력하는 것

스트림: 데이터를 입력하고 출력하기 위한 다리

실행중인 프로그램을 통해 어떻게 키보드로부터 데이터를 입력받고 모니터로부터 데이터 출력할 수 있는 것일까?

키보드 ------------------------> 프로그램 ----------------------> 모니터
표준 입력 스트림     표준 출력 스트림

키보드, 프로그램, 모니터는 서로 완전히 다른 개체임.
역할도 다르며 프로그램은 키보드/모니터와 달리 SW적인 개념임
이들간에 서로 연결을 위해 필요한 것이 바로 스트림(다리)
키보드로부터 데이터 입력하려면 표준 입력 스트림 필요,
모니터로 데이터 출력하려면 표준 출력 스트림 필요

스트림 : 운영체제에서 만들어지는 다리 
(하드웨어적 개념이 아닌 소프트웨어적으로 구현되어 있는 가상의 다리.)

스트림은 한 방향으로만 통신 가능(단방향)
그렇기에 입력과 출력을 동시에 처리할 수 없음 -> 입력스트림, 출력스트림으로 구분되어있는 이유.

C언어는 콘솔 입출력용으로 표준 입력 스트림을 제공.
(printf(), scanf() 함수가 이들 스트림을 이용함.)
stdin: 표준 입력 스트림을 가리키는 다리 이름. 입력대상장치:키보드
stdout: 표준 출력 스트림을 가리키는 다리 이름 출력대상장치:모니터
stderr: 표준 에러 스트림을 가리키는 다리 이름. 출력대상장치: 모니터

운영체제는 stdin, stdout, stderr와 키보드와 모니터로 연결하기 위해 
프로그램 시작 시 스트림 생성,프로그램 종료 시 스트림을 자동 소멸시킴.


입출력할 대상이 키보드, 모니터가 아닌 파일이라면? => 파일 입출력 스트림


버퍼

실제로는 프로그램 안에 입력버퍼, 출력버퍼가 있음
입력버퍼 : 입력데이터를 저장하기 위한 버퍼
출력버퍼: 출력데이터를 저장하기 위한 버퍼

표준 입출력 함수 : 입력버퍼와 출력버퍼를 사용하는 함수들

우리가 키보드를 통해서 입력한 데이터는 입력 스트림을 통해 입력 버퍼에 임시로 저장되고,  
printf() 함수를 호출해서 모니터에 데이터를 출력하기 위해 먼저 출력 버퍼에 저장되어서 
출력 스트림을 통해 모니터에 출력됨

버퍼링:  버퍼를 활용하는 방식 or 버퍼를 채우는 동작
버퍼링 하는 이유 :성능 향상을 위함임.
우리가 유투브를 보면서 '버퍼링 걸린다' 라는 말을 한적이 많을겁니다. 지금 버퍼링이 바로 그것인데요. 스트리밍 기술이 생기면서 우리는 영상을 통째로 다운받지 않아도 영상을 볼 수 있게 되었습니다.
스트리밍 기술의 원리는 영상을 조각조각 나눠서 다운 받아 보는것입니다. 이렇게 작은 조각을 다운로드해서 버퍼에 담는것, 이것을 버퍼링이라고 하는 것 입니다.

또한 콘솔 표준 입출력 함수는 버퍼를 사용하는 함수라는 특징이 있습니다


int getchar(void); 키보드로부터 문자 한개를 입력받음
int putchar(int c); 모니터에 문자 한개를 출력
char * gets(char * s); 키보드로부터 문자열 입력
int puts(char * str) 모니터에 문자열 출력
int scanf(const char * format, ...); 키보드로부터 데이터를 서식에 맞추어 입력
int printf(const char * format, ...); 모니터에 데이터를 서식에 맞추어 출력

파일입출력
지금까지는 프로그램 실행중에 데이터 만들어지면 데이터를 메모리에 보관해서 사용함 (ex) 변수)
but 이는 메모리(RAM)에 저장된 데이터이기에 프로그램이 종료되면 사라짐.

if 프로그램 실행 중 만들어진 데이터를 프로그램 종료 후에도 사용하려면? = > 이 떄 파일이 사용됨
파일은 두 가지 종류로 나뉨
1) 텍스트파일
2)바이너리파일(이진파일) - 이진형식(0,1)으로 인코딩된 데이터를 의미.

728x90