¿Cómo le explicaría el subproceso múltiple a un niño de siete años?


21

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?


55
Le preguntaría al entrevistador si estaba planeando contratar a algún niño de 7 años.
Craige

14
Hubiera golpeado al entrevistador en la cara.
Morons

11
Probablemente sea para probar que conoce el tema lo suficientemente bien como para enseñarlo a alguien que no tiene absolutamente ningún conocimiento del tema.
FrustratedWithFormsDesigner

66
@ Morons Primero que nada, eso es un poco violento. En segundo lugar, ¿están sus palabras en mayúscula debido a algún significado especial?
Nicole

11
@FrustratedWithFormsDesigner Bueno, es muy estúpido. ¿Puedes explicar números complejos a alguien que no sabe contar? ¿No? Eres basura en los números complejos entonces.
biziclop

Respuestas:


35

Describa qué es, solo omita los términos técnicos, excepto las definiciones:

  1. Tienes cinco trabajos que hacer. Debe comenzar a trabajar en todos ellos ahora mismo.
  2. Cada trabajo es un hilo.
  3. Tú eres el procesador.
  4. Dedique un poco de tiempo a trabajar en cada trabajo y luego pase al siguiente, asegurándose de prestar atención a todos ellos.
  5. Si tiene más personas, un trabajo solo puede ser trabajado por una persona a la vez.
  6. Dado que cada persona puede trabajar en un trabajo diferente, más personas pueden hacer todo el trabajo más rápido, si tiene más de un trabajo.

15
Creo que lo único que agregaría es tal vez cambiar "trabajos" a "juegos" o jugar con juguetes o hacer tareas o tareas.
bethlakshmi

Entonces, si usted tiene 'el procesador' 'notas de Keep' cuando están trabajando en un trabajo, puede explicar caché y coherencia de caché en un procesador de múltiples env
Steven Evers

Buena descripción, pero conociendo a los niños de 7 años, esto no va a volar.
Red-dirt

fusor @el Yo soy un hijo de 7 años! o atlest i ac lke 1 jajajajajaja
Mateen Ulhaq

@bethlakshmi, ¿estás asumiendo que a los 7 años la mayoría de los niños todavía juegan y no han salido y tienen trabajos productivos todavía? ¡venga!
Tipo anónimo

22

Hey chico. ¿Alguna vez has caminado y masticado chicle al mismo tiempo mientras pensabas en Pokémon? Ese es tu cerebro multihilo.


1
Esos son los periféricos de tu cerebro capaces de actuar de manera relativamente independiente. Es (casi) como su cerebro usando DMA.
Nick T

@nick T, más como la computación en la nube con solo acceso a los componentes sin código fuente Incluso la persona que mastica el chicle no tiene idea de cómo están realizando la acción.
Tipo anónimo el

@Ano, tu última declaración parece reforzar mi analogía periférica. El periférico hace cosas sin que la CPU profundice en las minucias, simplemente delegando. Supongo que también se podría decir que es como la computación en la nube, pero eso es a una escala mucho mayor; DMA y periféricos son de nivel bastante bajo.
Nick T

¿De Verdad? Pensé que jugar pokemon (resolución de problemas de orden superior) definitivamente requeriría memoria en modo de usuario y el uso de un lenguaje de programación de nivel superior, pero quizás algo como masticularse podría ser DMA.
Anónimo tipo

10

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í ...


44
Si el enhebrado múltiple es un camino, entonces es uno en el que cuando un automóvil conduce, el otro no se mueve en absoluto, no lo sigue ...
Nicole

@Renesis, buen punto, supongo que podría cambiar el ejemplo a un puente estrecho que solo un automóvil puede cruzar a la vez porque dos autos serían dos pesados ​​...
CaffGeek

10

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.


2
Además, no puede secar la ropa hasta que haya pasado una carga por la lavadora, por lo que también puede describir el bloqueo
zzzzBov

Casi te doy un +1 pero luego me di cuenta de que ningún niño en su sano juicio seguiría esta explicación. Para empezar, usaste algo extremadamente aburrido (desde la perspectiva de los niños, no el mío), que es una tarea. Tan pronto como dices la palabra lavandería, su mente se apaga, literalmente solo escuchan las primeras 7 palabras.
Anónimo tipo

6

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.


3

Un malabarista de circo que comienza con dos bolas y poco a poco agrega más y más bolas a su acto.


Esta es la mejor respuesta porque responde la pregunta desde la perspectiva de un niño de 7 años, no un programador de 30 años.
Anónimo tipo

2

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.


2

"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".


2

Algunas de estas respuestas son alucinantes ... ¿Creo que podría ser el único aquí que conoce a niños de 7 años?

Entonces, Johnny ... El multihilo es similar a lo que sucede cuando es tiempo de limpieza en la escuela. Toda su clase necesita limpiarse después del final del día ... Cada niño es básicamente un hilo ... recoger los juguetes es la tarea, y la caja de juguetes es un recurso compartido.

En general, creo que golpear al entrevistador en la cara es una mejor respuesta.


quien haya marcado este -1 se está engañando a sí mismo. En serio crecer un sentido del humor. Es una pregunta ridícula que debe ser tratada de esa manera.
Tipo anónimo el

Esta es probablemente una de las mejores respuestas escuchadas hasta ahora. Toma el concepto y lo pone en términos que el oyente comprende : incluso si el oyente no tiene idea de cómo codificar una aplicación multiproceso, ahora comprenderá la idea básica.
FrustratedWithFormsDesigner

2

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.


1

Tiene un conjunto de 6 tareas que debe hacer:

  • Haz tu tarea
  • limpia tu cuarto
  • hacer las compras
  • recoger las manzanas en el jardín
  • lavar los platos
  • barrer el porche

Cada tarea lleva 1 hora para hacer. Tienes 2 hermanos

  • Si no utiliza la multitarea, significa que debe hacer todo el trabajo usted mismo. Le llevará 6 horas (si comienza a las 12:00, todas las tareas se completarán a las 18:00).
  • Si usa la multitarea, significa que puede asignar algunas tareas a sus hermanos. Si todos comienzan a trabajar al mismo tiempo, terminarán todas las tareas antes. En este caso, los 3 harán 2 tareas cada uno, lo que tomará 2 horas (si todos comienzan a las 12:00, ¡todas las tareas se completarán a las 14:00!).

0

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!


0

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.


-1

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.


2
Los filósofos comen con dos tenedores? ¡Hombre, son aún más extraños de lo que pensaba! : P Esta historia tiene más sentido con palillos en lugar de tenedores ...
FrustratedWithFormsDesigner

44
@ Frustrados, es por eso que necesitan pensar tanto.

No creo que reemplazar los palillos con tenedores funcione bien. :)
Tyanna

44
Me gusta más la analogía de los palillos. Definitivamente necesitas dos palillos para comer. Realmente no necesitas dos tenedores. Lo de los tenedores realmente confunde el problema. Sobre todo porque la bifurcación es un término clave en el multiprocesamiento.
Paul Sasik

.. y luego estás atrapado explicando qué es un filósofo. Y por eso preguntarán por qué necesitan dos tenedores (lo cual es un poco tonto desde la perspectiva de 7 años) y por qué alguien esperaría antes de comer.
Anónimo tipo

-1

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.


-1

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.


-2

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.


"¿Pero por qué no hace las dos cosas al mismo tiempo?"
Mateen Ulhaq

-2

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?


-3

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.