해결된 질문
작성
·
200
0
제가 scanf("%s",stringarr)를 이용해서 콘솔 입력(키보드)에 데이터를 이용하면
1. 화면에 커서가 깜빡깜빡 거리면서 콘솔화면(모니터)창에 쓰는 값이 보이는데 이게 입력 버퍼인가요? (그리고 이러한 버퍼는 일반적으로 4kB까지 입력을 칠 수 있는 건가요?)
아니면 입력 버퍼는 저희 눈에 안보이고 "CON"이라는 파일안에 들어가 있는 건가요? 이 부분이 혼동이 옵니다.
리눅스에 man puts 를 쳐서 설명을 보니 개행 문자가 딸려온다고 써져 있습니다. puts("")로 치면 출력버퍼안에 \n이 있다는 말인가요? 그렇다면 출력 버퍼는 \n으로 인해 비워지게 된건지 궁금합니다
질문과는 다른 이야기인데 4kB는 페이지 크기도 4kB인데 이게 무엇을 기준으로 나눈 건가요??
ps/ 수업을 너무 많이 듣고 정리하면서 이러한 개념들이 혼동이 생기네요... 마음은 급하고 배울건 많고, 배운건 또 안보면 까먹고 왕도가 없네요 하하.. 항상 열심히 수업듣고있습니다. 감사합니다.
답변 1
0
아니오. 그것은 Console 화면입니다. UI는 값을 시각화한 결과 입니다. 버퍼(메모리)는 보이지 않습니다. 또한 그 길이는 정해진 것이 아닙니다. 환경에 따라 얼마든지 달라질 수 있습니다. 파일 입/출력 버퍼라는 것은 원활한 입/출력을 위해 사용되는 중간 거점으로 사용되는 메모리 입니다. CON이 Console 장치를 추상화한 파일이고 이 파일에 대한 입/출력 버퍼는 존재합니다.
puts() 함수는 매개변수로 전달된 문자열 맨 끝에 개행 문자를 추가해 출력합니다. 즉, 출력후 개행된다는 이야기가 되겠습니다. 이는 버퍼를 비우는 것과 관련이 없습니다. 버퍼를 비우는 함수는 fflush() 함수입니다.
4KB는 통상 Page 단위로 사용되는 크기 입니다. 보조 기억장치나 주기억장치 모두 메모리 입니다. 관리를 위해 일정 크기로 잘라서 사용하는 것이 보통인데 CPU 수준에서 할당 단위가 일반적으로 64KB 입니다. 이를 4KB 단위(Page)로 잘라 관리하는 경우가 많습니다. 이런 내용과 관련된 이론들은 운영체제론과 시스템 프로그래밍을 공부하면 알 수 있습니다. 참고하시기 바랍니다.
외우고 잊고 실수하고...이 세 과정을 10회 이상 반복하는 수고는 평균이라 하겠습니다. 마음이 급한 상황은 이해합니다만...이런 현실을 인정하고 마음의 안식을 얻으시기 바랍니다. 잘 될겁니다. 너무 조급해 하지 마시기 바랍니다. 😄