운영체제 기본/x86-64 Linux의 i8042 키보드 입력

관리자 (토론 | 기여)님의 2026년 10월 31일 (토) 09:03 판 (BIOS 부팅·i8042 키보드 각론의 새 문서명으로 내부 링크 갱신)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

운영체제 기본 목차 · 관련 총론: 인터럽트

Linux v6.12, x86-64, i8042에 연결된 PS/2 키보드를 기준으로 키 입력이 사용자 프로세스에 도착하는 경로를 추적한다. IRQ 진입은 일반적인 IDT 경로를 다루며, USB 키보드와 FRED 진입 경로는 구분한다.

읽는 순서

  1. IRQ 진입과 디스패치: CPU가 인터럽트를 받아 등록된 장치 처리기를 실행하는 과정.
  2. i8042와 입력 이벤트: 수신 바이트가 스캔 코드와 Linux 키 이벤트로 바뀌는 과정.
  3. evdev와 프로세스 깨우기: 이벤트를 버퍼에 넣고 대기 중인 read를 깨우는 과정.
  4. 콘솔과 터미널 입력: 가상 콘솔에서 키 이벤트가 문자와 터미널 입력으로 바뀌는 경로.

evdev와 가상 콘솔은 input 계층 이후의 서로 다른 전달 경로다. evdev에서 읽은 이벤트가 차례로 콘솔을 거치는 구조는 아니다.

i8042 → IRQ 처리 → serio/PS2 → atkbd → input 계층
                                      |
                                      +→ evdev → 입력 이벤트를 읽는 프로세스
                                      |
                                      +→ 콘솔 키보드 처리 → tty → 문자를 읽는 프로세스

키보드가 보낸 스캔 코드, Linux 키 코드, 문자 데이터는 서로 다르다. 또한 입력 도착, 대기 중인 작업의 깨우기, 스케줄러의 선택, 사용자 버퍼로의 복사는 각각 다른 단계다.