언어 자료구조 알고리즘/C 언어 문법

17.기본 입출력 개요

언제나휴일 2009. 8. 19. 05:47
반응형

기본 입출력 개요

 

 

다루는 내용

   - 기본 입출력 개요

   - ASCII CODE와 UNICODE

 

 

컴퓨터 시스템의 구성 요소를 얘기를 하면 보통 H/W와 S/W만을 얘기하는 것이 일반적이다.  하지만, 이를 사용하는 사용자 또한 해당 구성 요소임에 틀림이 없다.  (참고로, 중학교 컴퓨터 교재[(주)두산]에 보니 컴퓨터 시스템의 구성 요소는 사용자, 설명서, 자료, H/W, S/W라고 되어 있는 것을 본 적이 있다.) 

 

콘솔 응용의 경우 사용자와의 대화를 하기 위해 보통 키보드와 모니터, 프린터, 마우스등의 H/W를 사용하게 되는데 이들은 O/S를 거치지 않고 응용이 바로 사용할 수 없는 것들이다.  이러한 이유로 거의 모든 고급언어에서는 기본 입출력에 관련된 라이브러리를 지원하고 있다.

 

C언어에서는 기본적인 입출력 장치에 관한 라이브러리를 제공하고 있으며 stdio.h를 포함함으로써 사용할 수가 있다.  응용 프로그램에서 기본 입출력 라이브러리 호출은 라이브러리 내부에서 시스템 호출(system call)을 함으로써 시스템 호출에 대한 깊은 이해 없이도 기본적인 콘솔 응용 프로그래밍을 하는데 지장이 없게 하고 있다.  하지만 기본 입출력 또한 O/S에서 다른 모든 장치를 관리하는 기본적인 매커니즘하에 동작하는 것이기 때문에 정확히 이해를 하기 위해서는 system programming에 관련된 책이나 문서를 참고하여야 할 것이다.  C언어를 학습하는 대부분에 이들이 어느 정도 이해했다고 생각을 하면 C++이나 자료구조 혹은 windows Form에 관련된 프로그래밍으로 전환을 하기 때문에 실제 기본 입출력을 잘못 사용하면서도 이를 깨닫지 못하는 경우가 많다. 

 

이 책에서는 시스템 호출까지 자세한 설명을 하지는 않겠지만 일반적으로 어떻게 잘못 사용하는지와 어떻게 사용해야 하는지에 대한 조언을 하고자 한다.(이 책의 내용 또한 논리적 허점이 충분히 있을 수 있으니 확인을 해 나가면서 학습을 하기 바란다.)

 

기본 입출력 헤더를 보면 stdin, stdout 등의 기본 입출력 상수들이 정의되어 있는 것을 볼 수 있는데 이들의 타입이 FILE *라는 것을 확인할 수가 있다.  실제 O/S에서는 모든 장치를 파일로 관리를 하고 있으며 하드 디스크나 CD-ROM등과 같이 정규파일을 보관할 수 있는 장치 파일을 block장치라 하며 키보드, 모니터 등과 같은 장치를 char장치라 하여 버퍼의 크기나 약간의 동작 기법을 달리 하고 있다.

 

키보드나 모니터 등과 같은 char장치의 경우에는 O/S와 장치 사이에 직렬화 된 제어 신호를 stream단위로 처리를 하고 있다.  stream이라 하면 ASCII CODE의 연속된 흐름으로 흐름의 구분을 개행문자('\n')인 것을 말한다.  우리가 응용 프로그래밍을 사용할 때 무엇을 입력할 때 엔터를 치는 것도 이러한 이유라고 보면 될 것이다. 

 

이러한 H/W와 O/S 사이에 데이터를 주고 받기 위해서는 내부적으로 buffer를 사용하게 되는데 이를 raw buffer라 하며 여기에는 가공되지 않은 데이터가 보관되게 된다.  기본 입출력 라이브러리의 경우는 O/S에게 시스템 호출을 통해 데이터를 주고 받는데 이 때 원본 데이터를 약간의 가공을 하게 된다.

 ASCII CODE와 UNICODE

 

  컴퓨터와 주변 장치와의 데이터 교환을 하기 위한 제어신호를 약속을 할 때 영문 알파벳과 숫자 문자 등 128개의 문자를 약속을 하고 여기에 패러티 검사를 위한 1비트를 추가한 것이 ASCII(American Standard Code for Information Interchange,미국 정보 교환 표준 코드)  코드이다.  하지만 최근에는 컴퓨터에서 세계 각국의 언어를 통일된 방법으로 표현할 수 있게 제안된 국제적인 문자 코드 규약인 UNICODE(Universal Code System)를 사용하는 것으로 바뀌어 가고 있는 추세이며 C언어의 경우도 이러한 흐름에 대한 변화가 있을 수 있다고 생각을 한다.

 

buffer

 전산이라는 학문을 공부하다보면 buffer, stack, queue등 많은 용어를 접하게 될 것이다.  buffer란 임시적으로 데이터를 저장하는 공간을 얘기하며 그 공간을 사용하는 다양한 방법 중에 FIFO(First In First Out)에 의해 사용할 수 있는 buffer를 stack이라 하며 LIFO(Last In Last Out)에 의해 사용하는 buffer queue라 한다.  FIFO를 사용하는 buffer로는 기본 입출력 장치를 비롯하여 순차적으로 처리를 요하는 많은 곳에서 쓰이고 있다.

반응형

'언어 자료구조 알고리즘 > C 언어 문법' 카테고리의 다른 글

22. 제어문 - 반복문  (0) 2009.08.19
21.제어문 - 선택문  (0) 2009.08.19
20. 제어문 - 조건문  (0) 2009.08.19
19. 기본입출력 - 입력  (0) 2009.08.19
18. 기본 입출력 - 출력  (0) 2009.08.19
16. 지시/주소/인덱스/간접연산자  (0) 2009.08.19
15. 비트/ 쉬프트 연산자  (0) 2009.08.19
14. 비교/논리 연산자  (0) 2009.08.19
13. 대입 연산자  (0) 2009.08.19
12. 증감연산자  (0) 2009.08.19