키보드를 누르면 무슨 일이 일어날까?

김동현·2024년 3월 29일

Question

목록 보기
15/15
post-thumbnail

HID(Human Interface Device)

HID는 인간에게 입력받고 처리된 결과를 인간이 알아 볼 수 있도록 구현된 장치를 말한다.

대표적인 HID로 키보드, 마우스, 스피커, 모니터 등이 있다.

스위치

스위치는 전류의 흐름을 우리가 제어할 수 있게 만들어 주는 장치이다.
On/Off 상태를 통해 전류를 흐르게 하거나 흐르지 않게 관리할 수 있는 장치인 것이다.


-출처

키보드

키보드는 손가락으로 타건하여 문자를 입력하는 대표적인 HID이다.

원래 피아노나 오르간 같은 작은 건반 악기를 부르던 단어였다.
하지만 타자기의 문자 입력 장치와 비슷하여 타자기의 자판 또한 키보드라 부르게 되었다.
타자기가 컴퓨터로 대체되면서, 컴퓨터의 입력 장치도 키보드라 부르게 되었다.

키보드에 전류가 흐르는 방법

키보드에는 크게 스위치, 스프링, 슬라이더라고 불리우는 장치로 구성되어 있다.
1. 슬라이더: 걸개를 이용해 키보드를 누르지 않으면 스위치를 Off 상태로 키보드를 누르면 ON 상태로 만드는 역할
2. 스프링: 키보드를 눌렀을 때 원복시키기 위한 역할
3. 스위치: 키보드를 눌렀을 때 전류가 흐르고, 키보드를 누르지 않았을 때 전류가 흐르지 않도록 하는 역할

💡 위 이미지와 같이 키보드의 키를 누르게 되면 걸개가 함께 내려가고 스위치가 연결되는 것을 볼 수 있다.
이 후 해당 키에 전류가 흐르고 컴퓨터에게 스캔 코드가 전송되는 것이다!

스캔 코드

키보드의 데이터는 약속된 스캔 코드의 형태로 제공된다. 스캔 코드란 컴퓨터 키보드가 무엇을 눌렀는지 구분할 수 있는 것이다.

💡 키보드의 종류에 따라 스캔 코드 일부분이 달라질 수도 있다.

자판스캔 코드
Error00
ESC1
1!2
2@3
3#4
4$5
......

즉 키보드를 누르면 위와 같은 스캔 코드 값이 바이너리로 넘어가는 것이다.


키보드 마더보드(?) 이미지를 보면 아래와 같은데 각 자판에 부분마다 회로가 있는 걸 확인할 수 있다.
해당 키보드를 누르고 스위치가 On이 되어 전류가 흐르게 되면 스캔 코드의 값이 전달되는 것 같다!

키보드를 누르면 일어나는 일

⬇️ 메모장 어플리케이션 내에서 키보드를 누름
1. 슬라이더가 내려가면서 걸개가 풀리고 스위치가 연결된다.
2. 스위치가 연결되어 전류가 흐른다.
3. 키보드 마더보드에 구성된 회로의 스캔 코드가 이진수로 컴퓨터에 전송된다.
4. 스캔코드 데이터가 유선이라면 USB 포트로, 블루투스 연결이라면 블루투스 수신기로 이동한다.
5. 스캔코드 데이터는 Keyboard Interrupts로 운영 체제로 전달된다.
6. 스캔코드를 해석하고 ASCII 코드 또는 유니코드 문자로 변환한다.
7. 메모장에 변환된 유니코드 문자를 바이너리로 전달한다.

Interrupts

인터럽트란 키보드나 마우스, 하드 드라이브와 같은 장치에서 CPU로 보내는 신호이다.
이 신호는 현재 수행중인 작업을 중단하고 다른 작업을 수행할 수 있도록 하는 것이다.

표준 ISA 인터럽트 시그널은 아래와 같다.

키보드 컨트롤러
키보드 컨트롤러는 키보드와 컴퓨터를 연결하는 장치이다. 컨트롤러의 주요 기능은 키보드에서 키가 눌러졌을 때 컴퓨터에게 알려주는 것이다.
키보드에서 데이터가 도작하게 되면 컨트롤러는 키보드 인터럽트를 발생시켜 CPU가 입력을 처리할 수 있도록 도와주는 기능을 한다.

장치 드라이버
키보드의 종류는 수도 없이 많다.
그렇기에 보조 장치들의 하드웨어, 소프트웨어는 제조사, 모델의 구동 방식, 기능에 따라 차이가 날 수 밖에 없다.

하지만, 우리가 만드는 응용 프로그램에서 수많은 종류의 하드웨어를 제어하기 위한 프로세스를 내장하고 있는 것은 불가능에 가깝다.
그렇기에 운엥체제는 응용 프로그램들이 여러 종류의 하드웨어를 제어할 수 있도록 도와주는 장치 드라이버를 내장하고 있다.

장치 컨트롤러 vs 장치 드라이버
컨트롤러는 디바이스와 디바이스 드라이버를 연결하여 OS와 기능을 단계적으로 실행하게 활용되는 하드웨어이다. -> 키보드 그 자체, 실물 키보드도 장치 컨트롤러로 볼 수 있다.
드라이버는 응용 프로그램이 디바이스를 잘 사용할 수 있도록 제어하기 위한 소프트웨어 프로그램이다.
장치 드라이버는 장치 컨트롤러 보다 더 큰 개념이라고 볼 수도 있다.

인터럽트의 우선순위는 아래와 같다

참고자료

profile
달려보자

0개의 댓글