인프런 커뮤니티 질문&답변

김민수님의 프로필 이미지
김민수

작성한 질문수

독하게 시작하는 C 프로그래밍

콘솔(Console)이란 무엇일까?

강의의 대한 추가 개념이해

해결된 질문

작성

·

75

·

수정됨

0

안녕하세요, 제가 이해한바가 맞는지 확인하고 싶습니다.

기본적으로 H/W장치가 있고 그 장치를 컴퓨터에 연결을 하면

S/W Kernel단에 해당 장치의 대한 디바이스 드라이버가 있고

S/W Kernel단 OS에 해당 디바이스 드라이버를 처리하기 위한? 대응이 되는 요소가 있고 OS는 해당 장치를 추상화한 File이라는 걸 User단에 만들어준다. 해당 File에는 Buffer라는 개념이 존재한다.

User단에서 해당 장치를 사용하기 위해선 OS가 만든 장치를 추상화한 File을 사용하는 프로그램을 만들어서 사용해야 한다. 이걸로 프로세서와 장치는 RWX를 할 수 있는 조건이 갖춰진다.

그리고 같은 H/W단에 있는 CPU와 장치는 Interrupt라는 걸로 통신(제어)하게 된다.

컴퓨터 외에 H/W장치는 크게 두가지로 볼 수 있다. 입력 장치와 출력 장치가 있다. 입력 장치는 마우스, 키보드, 캠, 마이크 등이 있고 / 출력 장치는 모니터, 스피커 등이 있다.

입력 장치들은 데이터들을 추상화한 File Buffer로 전송하고 이 데이터들을 (Read)사용하기 위해선 해당 File의 대한 프로그램을 개발해야한다.

출력 장치들은 출력 장치를 추상화한 File을 사용하는 프로그램을 개발한 다음 Read프로그램의 데이터들을 가져와서 가공을 한 다음 write(쓰기)를 하면 File Buffer에 데이터들이 차곡차곡 쌓은다음 출력 장치로 가게 되어서 해당 데이터들을 출력 장치를 통해 볼 수 있게 되는 것이다.

이것이 강의에서 나온 키보드로 Hello World 같은 프로그램 만들고 -> 모니터 콘솔화면으로 결과물을 볼 수 있는 구조다.

라고 이해했는데 이해한바가 맞을까요?

또 Buffer라는 것도 입력 or 출력장치로 R/W을 했을 때 데이터들을 차곡차곡 모아서 한번에 전송하기 위함인가요?

예를 들어 숙소A, 버스B, 건설현장C가 있을 때 버스B가 숙소A로부터 노동자들을 건설현장C로 수송해야할 때 노동자들을 한명씩 태워서 수송하면 오래걸리지만 버스B의 상한선까지 노동자들을 가득 태워 한번에 수송하면 노동자들을 금방 보낼 수 있는 것 처럼 Buffer라는 것도 OS가 H/W입출력 장치로 부터 데이터들을 효율적으로 처리하기 위한 기법 중 하나다.

즉 OS에서 데이터들을 효과적으로 처리하기 위한 데이터 처리기법으로 Buffer라는걸 만들었다. 고 이해했는데 이해한 개념이 맞을까요?

답변 1

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

'OS가 만든 장치'가 아니라 '장치에 대한 OS의 구성요소'가 맞습니다.

'인터럽트라는 걸로 통신'이 아니라 주변기기와 통신하기 위해 인터럽트를 사용합니다.

'해당 File에 대한 프로그램'은 입/출력 프로그램이라고 추가 보완합니다.

전체적으로 대략 맞기는 한데...아쉬운 부분이 좀 있습니다. 그러나 이는 어쩔 수 없는 현상입니다. 경험이 없기 때문입니다. 시간과 경험이 해결해줄 것으로 기대합니다.

Buffer는 메모리로 구현합니다. 입/출력간 흐름이 끊기는 등의 충격을 막기 위해 존재합니다. 때로는 흐름을 직렬화하기 위한 용도로 제한 될 수도 있습니다. 참고하시기 바랍니다. 😄

김민수님의 프로필 이미지
김민수

작성한 질문수

질문하기