2010-06-21 9 views
9

Esta pregunta estaba en mi entrevista de trabajo .. Sólo para ver si le di todos los detalles ...¿Qué ocurre desde el momento en que pulse una tecla del teclado, hasta que aparece en el documento de Word

+3

¿se trata de un teclado con cable o inalámbrico? :-) –

+2

Pista: el entrevistador probablemente no estaba interesado en escuchar una respuesta enlatada. La pregunta fue probablemente para averiguar cuánto sabe sobre los diferentes niveles de una computadora, cuánto interés tiene en cada parte. Responder con una respuesta enlatada es totalmente perdido el punto. –

+2

La mayoría de las respuestas aquí omiten los detalles más importantes: si el fusible de tensión (también conocido como fusible de fecha límite) está por encima de un umbral establecido por el fabricante, la CPU volteará aleatoriamente un poco en la RAM. Solo para meterme contigo. En algunos sistemas operativos, el soporte más sofisticado está disponible y el umbral de fusibles de estrés puede aumentarse de forma selectiva, teniendo en cuenta la presencia de respaldo (medios de almacenamiento conectados y servicios de red), hora del día (¡múltiples vueltas después de las 3AM!) de malas palabras a través de micrófonos detectados) y la importancia de la tarea (búsqueda completa de correo electrónico). – detly

Respuesta

36
  • mecha interruptor Nical cortocircuitos tire hacia arriba extremo resistencia R1 al suelo
  • un multiplexor especial lo traduce en un mensaje, para reducir el número de cables
  • el mensaje interpretado por un CPU incrustado en el teclado mensaje
  • traducido a un mensaje de protocolo USB, y se modula como una serie de impulsos eléctricos de tensión alterna entre cero y 5 voltios
  • USB recibir hub voltaje de línea medidas muestras periódicamente
  • controlador concentrador
  • anfitrión traduce el mensaje a los datos
  • datos entra PC a través Control de bus USB r, conectado al bus PCIE, a través de una combinación de notificaitons IRQ y una transferencia de DMA, emitida por el conductor del autobús
  • conductor Bus interpreta el mensaje y lo reenvía a lo largo de la pila de controlador, en última instancia, a un controlador HID
  • conductor habla HID a Windows, lo que finalmente da como resultado un mensaje de ventana enviado a una ventana que pertenece al proceso msword
  • WM_KEYDOWN se traduce a WM_CHAR por DefWindowProc(). Mientras la tecla está desactivada, se pueden crear múltiples WM_CHAR.
  • aplicación de Word atrapa WM_CHAR añadir otro personaje con el modelo de documento y asunto re-representación de IU
  • interfaz de usuario motor de renderizado se traduce punto de código Unicode a la imagen gráfica mediante la carga respectiva fuente
  • motor
  • gráficos calcula la nueva imagen de la totalidad área para evitar el parpadeo, y lo pone píxel por píxel en la pantalla
+0

buena respuesta. Si se mantiene presionado después de un poco de retraso, la secuencia se repite en un intervalo específico (a excepción del cierre mecánico inicial del interruptor). Cuando se suelta la tecla, la secuencia se repite, excepto por el cierre del interruptor que ahora es un interruptor abierto y tiene KEYUPS en lugar de KEYDOWNS. En caso de que se le solicite a los ratones que operen con el botón de liberación no en el cierre del botón, pruébelo usted mismo, presione el botón del mouse sobre algún objeto, mueva el mouse y suéltelo sobre otra cosa. –

+3

Lo siento, pero dado que no abordó el hecho de que, dado que con el USB el host tiene que pedir al teclado nuevos datos antes de que el teclado pueda enviarse al host, su respuesta es inadecuada. Es una broma. Muy bien. – nategoose

1

Uh , si tiene una antigua computadora binaria antigua: http://en.wikipedia.org/wiki/Punched_card

¡Entonces, en el momento en que presionó la tecla, probablemente podría preparar una taza de té!

+1

Una vez me quedé desconcertado, ¿por qué han usado tan grandes agujeros en las tarjetas perforadas? La respuesta fue asombrosa El escaneo no fue óptico en absoluto. Simplemente lo usaron para conectar interruptores de metal a metal. –

+0

Simplicidad en sí! –

10
  1. que oiga un clic;) [pero no es necesario en este paso, tal vez en el día 10 o 20]
  2. señales del teclado a KB controlador
  3. controlador emite una interrupción a la CPU
  4. OS kernel ve interrumpir
  5. despachos OS kernel de interrupción al correspondiente conductor
  6. controlador comunica a la CPU para leer un charCode desde el controlador kb
  7. CPU hace
  8. conductor de alguna manera hace que el núcleo publicar un evento 'KEY_DOWN' en el subsistema de interfaz de usuario
  9. kernel despacha caso
  10. cheques subsistema de interfaz de usuario si hay ventana activa
  11. envía un evento KEY_DOWN interfaz de usuario para la ventana activa

... uh .. cansado :) así, después de que se enviará una clave, actualizar contenido de la ventana, y llamar al controlador de vídeo/subsistema de dibujar que Char

+0

11 está mal. 11 es el evento KEY_DOWN va a la aplicación activa, como se identifica por la ventana activa. Déjame continuar 12. La aplicación a través del bucle principal de GetMessage() obtiene el evento y lo despacha a través de DispatchMessage(), probablemente aplicando algunas traducciones (ahí es donde se asigna a qué ventana va realmente el evento). 13. asignado a la ventana, incluso se llama a la rutina de manejo, y a partir de ahora es responsabilidad de la aplicación. El procesador de textos aplicará la pulsación de tecla al documento en la memoria y activará la actualización de la pantalla para que el nuevo documento en la memoria se refleje adecuadamente en la pantalla. – Dummy00001

Cuestiones relacionadas