운영체제 기본/Linux/x86-64/i8042 키보드 입력: 두 판 사이의 차이
외관
둘러보기와 상하단 이전 다음 문서 틀 통일 |
직접 관련된 총론 링크와 선행 개념 안내 정리 |
||
| (같은 사용자의 중간 판 3개는 보이지 않습니다) | |||
| 6번째 줄: | 6번째 줄: | ||
'''Linux v6.12, x86-64, i8042에 연결된 PS/2 키보드'''를 기준으로 키 입력이 사용자 프로세스에 도착하는 경로를 추적한다. IRQ 진입은 일반적인 IDT 경로를 다루며, USB 키보드와 FRED 진입 경로는 구분한다. | '''Linux v6.12, x86-64, i8042에 연결된 PS/2 키보드'''를 기준으로 키 입력이 사용자 프로세스에 도착하는 경로를 추적한다. IRQ 진입은 일반적인 IDT 경로를 다루며, USB 키보드와 FRED 진입 경로는 구분한다. | ||
== 관련 총론 == | |||
* [[운영체제 기본/장치 제어와 입출력|장치 제어와 입출력]]: IRQ 통지와 처리 진입점, 장치 접근. | |||
* [[운영체제 기본/프로세스와 스레드|프로세스와 스레드]]: 입력 대기와 깨우기, 실제 실행 시점의 구분. | |||
* [[운영체제 기본/파일과 입출력|파일과 입출력]]: 파일 인터페이스를 통한 입력과 버퍼링. | |||
== 문서 구성 == | == 문서 구성 == | ||
# [[운영체제 기본/x86-64 | # [[운영체제 기본/Linux/x86-64/i8042 키보드 입력/IRQ 진입과 디스패치|IRQ 진입과 디스패치]]: CPU가 인터럽트를 받아 등록된 장치 처리기를 실행하는 과정. | ||
# [[운영체제 기본/x86-64 | # [[운영체제 기본/Linux/x86-64/i8042 키보드 입력/i8042와 입력 이벤트|i8042와 입력 이벤트]]: 수신 바이트가 스캔 코드와 Linux 키 이벤트로 바뀌는 과정. | ||
# [[운영체제 기본/x86-64 | # [[운영체제 기본/Linux/x86-64/i8042 키보드 입력/evdev의 이벤트 전달과 대기 해제|evdev의 이벤트 전달과 대기 해제]]: 이벤트를 버퍼에 넣고 대기 중인 read를 깨우는 과정. | ||
# [[운영체제 기본/x86-64 | # [[운영체제 기본/Linux/x86-64/i8042 키보드 입력/콘솔과 터미널 입력|콘솔과 터미널 입력]]: 가상 콘솔에서 키 이벤트가 문자와 터미널 입력으로 바뀌는 경로. | ||
evdev와 가상 콘솔은 input 계층 이후의 서로 다른 전달 경로다. evdev에서 읽은 이벤트가 차례로 콘솔을 거치는 구조는 아니다. | evdev와 가상 콘솔은 input 계층 이후의 서로 다른 전달 경로다. evdev에서 읽은 이벤트가 차례로 콘솔을 거치는 구조는 아니다. | ||
| 25번째 줄: | 30번째 줄: | ||
키보드가 보낸 스캔 코드, Linux 키 코드, 문자 데이터는 서로 다르다. 또한 입력 도착, 대기 중인 작업의 깨우기, 스케줄러의 선택, 사용자 버퍼로의 복사는 각각 다른 단계다. | 키보드가 보낸 스캔 코드, Linux 키 코드, 문자 데이터는 서로 다르다. 또한 입력 도착, 대기 중인 작업의 깨우기, 스케줄러의 선택, 사용자 버퍼로의 복사는 각각 다른 단계다. | ||
{{이전 다음 문서 | {{이전 다음 문서 | ||
2026년 11월 1일 (일) 04:03 기준 최신판
Linux v6.12, x86-64, i8042에 연결된 PS/2 키보드를 기준으로 키 입력이 사용자 프로세스에 도착하는 경로를 추적한다. IRQ 진입은 일반적인 IDT 경로를 다루며, USB 키보드와 FRED 진입 경로는 구분한다.
관련 총론
- 장치 제어와 입출력: IRQ 통지와 처리 진입점, 장치 접근.
- 프로세스와 스레드: 입력 대기와 깨우기, 실제 실행 시점의 구분.
- 파일과 입출력: 파일 인터페이스를 통한 입력과 버퍼링.
문서 구성
- IRQ 진입과 디스패치: CPU가 인터럽트를 받아 등록된 장치 처리기를 실행하는 과정.
- i8042와 입력 이벤트: 수신 바이트가 스캔 코드와 Linux 키 이벤트로 바뀌는 과정.
- evdev의 이벤트 전달과 대기 해제: 이벤트를 버퍼에 넣고 대기 중인 read를 깨우는 과정.
- 콘솔과 터미널 입력: 가상 콘솔에서 키 이벤트가 문자와 터미널 입력으로 바뀌는 경로.
evdev와 가상 콘솔은 input 계층 이후의 서로 다른 전달 경로다. evdev에서 읽은 이벤트가 차례로 콘솔을 거치는 구조는 아니다.
i8042 → IRQ 처리 → serio/PS2 → atkbd → input 계층
|
+→ evdev → 입력 이벤트를 읽는 프로세스
|
+→ 콘솔 키보드 처리 → tty → 문자를 읽는 프로세스
키보드가 보낸 스캔 코드, Linux 키 코드, 문자 데이터는 서로 다르다. 또한 입력 도착, 대기 중인 작업의 깨우기, 스케줄러의 선택, 사용자 버퍼로의 복사는 각각 다른 단계다.