Post

키보드 타이핑 시 일어나는 일들

타이핑 시 발생하는 일들

키보드를 타이핑 하는 순간 컴퓨터에서는 어떤 일이 일어날까?

키를 누르는 순간부터 모니터에 표시되기 까지의 과정이 궁금해서 알아보았다.

키캡을 누른 순간

키보드

먼저 특정 키를 누르면 키보드 아래의 회로에 전류가 흐르고, 마이크로 컨트롤러가 신호를 인식한다.

이때 컨트롤러는 키가 눌리거나 떨어질 때 마다 고유 코드를 전송하는데, 이런 특정 키의 상태에 따라 다른 고유 코드를 Scan Code 라고 한다.

Key NameDown CodeUp Code
Q0x100x90
W0x110x91
E0x120x92
R0x130x93
T0x140x94
Y0x150x95

이런 식으로 별도의 스캔 코드가 존재하며, 이 스캔 코드가 키보드 컨트롤러에 전달된다. 키보드 드라이버에서 컨트롤러의 출력 버퍼를 확인 후, 데이터가 존재한다면 이를 ASCII 코드로 변환한다. 그렇다면 OS에는 어떻게 이 정보가 전달될까?

인터럽트

컨알딜

키보드 입력 정보는 인터럽트를 통해서 전달된다.

인터럽트는 프로세서에 신호를 보내 현재 작업을 멈추고 다른 일을 실행하게 하는 것이며 하드웨어 인터럽트, 소프트웨어 인터럽트, 내부 인터럽트가 존재한다. 가장 쉽게 접할 수 있는 예시로는 윈도우에서 Ctrl + Alt + Del 키를 누르면 뜨는 작업 관리자 창을 생각하면 될 것 같다.

키보드 입력이라는 이벤트가 발생하고, 인터럽트가 요청되면 현재 실행중이던 프로그램을 일시 중단한다. 그리고 PCB(Process Control Block), PC(Program Counter) 등에 현재의 프로그램 상태 보존 후 인터럽트를 요청한 장치를 식별한다.

이 후 요청과 관련된 작업이 시작되는데 만약 우선순위가 더 높은 인터럽트 발생 시 키보드 입력을 중지하고 해당 인터럽트 처리가 시작된다. 이때 인터럽트 플래그(IF)를 0으로 하면 다른 인터럽트의 발생을 방지할 수 있다. 작업이 끝나면 인터럽트 발생 전 원래 작업중이던 프로그램의 실행을 재개한다.

디스플레이

VGA

이제 입력된 키 값을 모니터에 표시해야 한다.

화면에 표시할 이미지, 텍스트, 그래픽 요소 등을 생성하고 조합하는 작업은 보통 GPU에서 실행되며 안티앨리어싱, 래스터화등의 작업을 거친 후 각 픽셀의 색상 정보를 저장하는 역할인 프레임 버퍼 메모리 영역에 저장된다.

이제 이 변환된 데이터들을 모니터로 전송하면 해당 정보를 바탕으로 화면에 이미지, 텍스트를 표시하게 된다.

참고

  • 피누.log, 키보드를 누르면 어떤 일이 발생할까?, https://velog.io/@litien/키보드를-누르면-어떤-일이-발생할까
  • bss 영역, 64비트 멀티코어 OS[10] - 1. 키보드 컨트롤러의 구조와 기능과 키보드 컨트롤러 제어,https://sean.tistory.com/151
  • bss 영역, 64비트 멀티코어 OS[10] - 2. 스캔 코드와 간단한 셸, https://sean.tistory.com/152
  • IT위키, 인터럽트, https://itwiki.kr/w/%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8
  • 위키백과, 래스터 그래픽스, https://ko.wikipedia.org/wiki/%EB%9E%98%EC%8A%A4%ED%84%B0_%EA%B7%B8%EB%9E%98%ED%94%BD%EC%8A%A4
  • SKKU CE STUDY, 컴퓨터 그래픽스(1), https://trpark.tistory.com/entry/%EC%BB%B4%ED%93%A8%ED%84%B0-%EA%B7%B8%EB%9E%98%ED%94%BD%EC%8A%A41
  • 위키백과, 프레임버퍼, https://ko.wikipedia.org/wiki/%ED%94%84%EB%A0%88%EC%9E%84%EB%B2%84%ED%8D%BC
This post is licensed under CC BY 4.0 by the author.

© . Some rights reserved.

Using the Jekyll theme Chirpy