Si tiene que explicar el concepto de subprocesos múltiples a un niño de siete años, ¿cómo lo haría? Recientemente recibí esta pregunta en una entrevista. Se me ocurrió una historia usando trabajos (la tarea a realizar) y trabajadores (los hilos) pero no fue del todo convincente (considerando que el niño es demasiado joven).
Si le pidieran que describiera esto, ¿cómo lo haría?
interview
teaching
multithreading
Vinoth Kumar
fuente
fuente
Respuestas:
Describa qué es, solo omita los términos técnicos, excepto las definiciones:
fuente
Hey chico. ¿Alguna vez has caminado y masticado chicle al mismo tiempo mientras pensabas en Pokémon? Ese es tu cerebro multihilo.
fuente
Relacionarlo con algo que puedan entender fácilmente. Coches en una carretera.
Piense en un camino de un solo carril. Con 12 autos, conducen uno tras otro. Y solo un auto puede terminar al mismo tiempo, y un auto más rápido no puede pasar a los más lentos.
Pero, con subprocesos múltiples, es como si todos esos autos circularan por una carretera ancha con cuatro carriles. Los autos más rápidos pueden pasar a los más lentos.
Editar: y, si no tienen cuidado, pueden chocar entre sí ...
fuente
Lo explicaría como lavar la ropa.
Tiene 3 cargas de ropa, y una lavadora y una secadora.
La forma en que todos lavan la ropa es mover la primera carga a la secadora que poner la siguiente carga para lavar.
Cualquier niño entendería que esperar a que se seque la primera carga antes de comenzar a lavar la segunda carga tomaría más tiempo.
Incluso podría ir un paso más allá al explicar si tiene más lavadoras y secadoras (como en una lavandería), puede hacer las cargas más rápido.
fuente
Cocinar una comida con varios platos en una pequeña estufa. Tiene dos quemadores (es decir, procesadores o núcleos) y cuatro platos (hilos) para cocinar. Por lo tanto, solo se pueden cocinar (ejecutar) un máximo de dos platos a la vez. Diferentes platos tienen diferentes tiempos de cocción. El cocinero (el SO) tiene que hacer malabarismos con todo esto para que todo se cocine a tiempo para la cena.
fuente
Un malabarista de circo que comienza con dos bolas y poco a poco agrega más y más bolas a su acto.
fuente
En mi experiencia, los niños de 7 años no tienen problemas con el concepto de cosas diferentes que suceden al mismo tiempo, como lo demuestran los diversos juegos de herramientas de programación diseñados para niños. Cabe destacar los kits de Lego, pero también el sistema Scratch.
Quizás el entrevistador simplemente estaba tratando de encontrar un nuevo ángulo para preguntarte algo inesperado.
fuente
"Necesito que lleves dos vasos de la cocina a la mesa . (Corren, con un vaso en cada mano.) Ahora, hazlo de nuevo, pero solo usa una mano".
fuente
Algunas de estas respuestas son alucinantes ... ¿Creo que podría ser el único aquí que conoce a niños de 7 años?
En general, creo que golpear al entrevistador en la cara es una mejor respuesta.
fuente
Multi hilo, es como tener muchas cosas que hacer a la vez, y hacerlas poco a poco.
Hola, el joven curioso, todos los días debes comer, jugar y dormir; ¿Derecha? Pero, ¿por qué no comes una vez ... toma mucho hasta que no puedas tomar más, luego duermes todo el tiempo que necesites y luego juegas y juegas juegos interesantes?
Bueno, no puede hacer eso, porque si no come, tendrá hambre, sin importar cuánto haya comido en la comida anterior. Si no duermes, estarás cansado y no podrás jugar con tus amigos. ¿Entendido? Hay varias cosas que deben hacerse, pero no podemos hacerlas a la vez. Desayunamos, jugamos, tomamos el almuerzo, volvemos a jugar ... y al fin dice "buenas noches".
Esa es también la forma en que funciona una computadora: reproducen un poco la música, luego cambian a la imagen que está dibujando, luego cambian nuevamente para reproducir música. Pero el tiempo que tomó hacer todas esas cosas mil veces es solo un guiño, por lo que no puede verlo.
fuente
Tiene un conjunto de 6 tareas que debe hacer:
Cada tarea lleva 1 hora para hacer. Tienes 2 hermanos
fuente
Tienes un joystick / controlador de juego.
Hay 4 niños. Cada niño se turna para jugar cada nivel mientras que los demás descansan. Usando el trabajo en equipo, finalmente alcanzan el nivel 255 *.
Mientras cada niño está jugando, también está comiendo de la bolsa de fichas que solo el jugador actual puede comer.
* Entonces el juego se bloquea. ;)
"¿Por qué no compras 3 controladores más?"
Bueno, esos son múltiples procesadores!
fuente
Clase de arte (aplicación multiproceso)
Como no puede haber clase sin un maestro, necesitas un maestro (hilo principal). Cuando llegas a clase te sientas y el maestro da cuenta de todos y asigna a la clase a pintar cuadros para el día.
El maestro asigna a todos los estudiantes para el día para comenzar a pintar (inicialización y asignación de hilos).
Debido a que la escuela solo tiene tantas pinturas, todos tendrán que compartir colores entre sí (las pinturas representan la memoria).
Digamos que estás pintando un dragón y quieres darle ojos rojos locos, pero alguien más está usando la pintura roja. No puedes simplemente ir y tomar la pintura por ti mismo porque nadie más podría usarla. En cambio, lo que haces es pedir cortésmente compartir (bloqueo de recursos) la pintura. Usas un poco y luego lo pasas. Puede que tengas que esperar un poco para recuperarlo, pero permite que todos los que lo necesiten obtengan un poco sin una pelea de pintura (condiciones de carrera).
Al final de la clase, el profesor cierra la clase (unión de hilos).
Juegos (aplicación multiproceso)
Jugar un juego de cartas con amigos (o un juego equivalente con coleccionables):
Digamos que te reúnes con tus amigos (procesos) después de la escuela. No hay maestros cerca, nadie está allí para decirte qué hacer.
Todos se reúnen para jugar juegos (aplicación multiproceso o multicapa).
Piensa mucho en cómo puede usar sus cartas para vencer a sus oponentes (procesamiento interno) e intenta compartir ideas con su compañero cuando se le ocurre una idea (pasar un mensaje).
Si te pones realmente bien, puedes unirte a un club:
Líder (programa ejecutivo) Miembros (subprogramas)
Si el club se vuelve realmente bueno, pueden encontrar una forma especial (API) para comunicarse entre sí para ayudar a crear una mejor estrategia.
Elegí no mencionar múltiples procesadores / núcleos aquí porque la abstracción se vuelve bastante complicada (y el cambio de contexto sigue siendo transparente para la mayoría de las aplicaciones). Probablemente podría comenzar diciendo que cada equipo en el juego representa un procesador / núcleo separado y la mayoría de los juegos todavía apestan porque solo permiten que unos pocos equipos jueguen juntos en un juego. El futuro puede parecerse más a un MMORPG donde muchas personas pueden jugar juntas en un juego en muchos equipos diferentes.
Intentar desarrollar una metáfora infantil para un sistema de procesamiento distributivo en una computadora central o en una red host sería bastante interesante para jugar, pero eso no es lo que pidió el Op.
Nota:
El mensaje que pasa arriba es una referencia a las muchas formas de comunicación que los programas usan para comunicarse entre sí. Al igual que las personas, las aplicaciones tienen muchas formas de comunicarse entre sí. Escribir es como canalizar datos serializados, hablar es como trabajar en red, susurrar es como conectarse en red a través de una conexión encriptada, las bases de datos son como una tarjeta de puntaje (estructura finita con datos bien definidos), y usar MSMQ es como tocar código morse golpeando tu cabeza contra un superficie sólida.
La mayoría de las otras formas de comunicación más allá de eso se confunden demasiado para que yo las considere indistinguibles.
Aparte:
Si alguna vez has jugado un juego en línea como Halo, las personas que se unen a grupos (o se convierten en jugadores profesionales) generalmente tienen un lenguaje abreviado para dar llamadas para dirigirse entre sí sobre dónde están los jugadores del otro equipo y qué están usando. Es realmente desagradable si no conoce las llamadas, pero es sorprendentemente efectivo durante el juego.
Es interesante cómo, a pesar de que la mayoría de las personas que viven dentro de una cultura determinada hablan un idioma común, pero dentro de esa cultura las personas desarrollan lenguajes de dominio breves más breves que están optimizados para manejar tareas específicas. En informática lo compararía con una API.
fuente
Utilice un modelo ampliamente adoptado: los filósofos gastronómicos.
5 filósofos comiendo su cena de pasta.
5 tenedores disponibles alrededor de la mesa.
Cada filósofo necesita dos tenedores para comer.
Algunos comen Algunos filosofan mientras esperan.
fuente
Supongamos que usted (el niño) hace rebotar una pelota en su cabeza. Después de cada rebote, lo estás contando, es decir, el número de rebotes. Además, después de cada rebote, estás diciendo las letras del alfabeto (A, B, C, ...)
Chico, eres multiproceso.
fuente
Placas giratorias es un buen ejemplo. Piensa en esas personas mágicas que toman algunos platos y los hacen girar al mismo tiempo. El mago cambia constantemente entre placas para asegurarse de que todas sigan girando.
fuente
Una computadora realmente solo puede funcionar en una cosa a la vez, pero puede hacer las cosas muy rápidamente. (Estoy dejando de lado el procesamiento multinúcleo por simplicidad). ¿Pero qué pasa si quieres escuchar música y jugar un juego al mismo tiempo? La computadora (muy rápidamente) cambia entre manejar la música y manejar el juego.
fuente
Nuestro patio de recreo local tiene un tobogán triple y un tobogán simple. El enhebrado es como la triple diapositiva, 3 niños pueden deslizarse hacia abajo simultáneamente. Pero en el solo tobogán dos niños tienen que esperar en la parte superior para que el primer niño baje por el tobogán.
¿Era parte de la descripción del trabajo que se reportaba al CFO?
fuente
Dos niños en un patio compartiendo (peleando) recursos limitados, dicen las piezas de lego requeridas de una pequeña caja para hacer sus robots favoritos.
fuente