키보드는 동시 입력을 어떻게 처리합니까? [닫은]


0

최근에는 프로그래밍의 동시성에 대한 기본 개념을 다루고 있습니다. 내 마음에 떠오른 생각 중 하나는 키보드의 동시 입력이었습니다. 프로그래밍에서 메소드 또는 함수는 한 번에 한 번의 키 누르기 만 전달하는 이벤트 리스너를 통해 호출됩니다. 프로그래머는 동시 / 복수 키 누름을 처리하기 위해 특정 방식으로 코드를 프로그래밍해야합니다. 하드웨어가 어떻게 "완전히 동시"입력을 처리하는지 궁금합니다. 인식 된 입력을 특정 순서로 자동으로 우선 순위를 정하는 메커니즘이 있습니까?


진정한 동시성은 없습니다. 타임 스탬프는 밀리 초 정확도를 가질 수 있습니다 ...
DavidPostill

따라서 "동시 입력"을 의도적으로 또는 순수한 우연히 달성하는 것이 완전히 불가능합니까?
Bennett Yeo

답변:


0

키보드 입력에 대한 특정 질문을합니다. - 컴퓨터 따라서 키 입력들이 있어야로 동시에 수신되지 않고, 직렬 링크를 따라 키 입력을 수신하는 - 직렬.

키보드 자체는 키 누르기를 읽고 직렬 링크를 통해 컴퓨터로 전송하는 소형 프로세서입니다. 누군가가 두 개의 키를 '동시 적으로'(실제로 시간 정밀도의 의미로 무엇이든) 누르는 경우를 생각해 봅시다. 키보드 프로세서가 키 입력을 제공하는 디지털 입력 매트릭스를 스캔하고 있습니다. 단순히 키를 가로 지르는 스캔 때문에 항상 한 번 누르는 것을 볼 수 있습니다. 이 스캔에서도 마이크로 초가 걸리므로 한 번의 프레스가 다른 프레스보다 먼저 감지됩니다.

이 스캔으로 인해 프레스가 서로 매우 가까이있을 수 있지만 두 번째가 먼저 보입니다.

보다 일반적인 실시간 프로세스 제어 분야에서, 입력에 의해 이벤트를 알리기 위해 입력이 프로세서를 중단시키는 인터럽트 메커니즘이 이용 될 수있다. 다시 말하지만, 이벤트를 제 시간에 분리 할 수 ​​없더라도 한 인터럽트가 다른 인터럽트보다 먼저 프로세서에 도달합니다.

적절하게 작성된 이벤트 중심 소프트웨어는 두 이벤트가 서로 매우 근접하게 감지되어 실제로는 역순으로 보일 수 있다는 사실을 허용해야합니다.

입력을 효과적으로 집계하는 프로토콜을 사용하여 컨트롤러 컴퓨터에보고하는 I / O 프로세서의 경우 다른 시퀀싱 문제가 있습니다.

요약하면, 진정한 동시 입력이 가능합니다.


키보드가 '배열'을 사용하고 하나의 '입력'이 항상 먼저 등록 될 것이라고 생각했지만 지금은 확실합니다.
Bennett Yeo

0

키를 누를 때마다 손을 떼면 USB 케이블을 통해 키보드에서 컴퓨터로 전송되므로 키보드에서 실제 동시 키 조작을 보낼 수있는 방법이 없습니다. 키보드는 키를 누르거나 놓을 때 메시지를 보냅니다. 컴퓨터는 마지막으로 누른 키에 대한 "key release"메시지 앞에 하나의 "key pressed"메시지가 도착하면 두 개의 키가 눌러 졌음을 응용 프로그램에 알립니다.


좋은 점은 단지 0이나 1을 얻는다는 것입니다. 양자 전자 장치가 동시성을 달성 할 수 있을지 궁금합니다 ...
Bennett Yeo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.