[duda] vector de interrupcion

Iniciado por MRx86, 12 Febrero 2017, 06:20 AM

0 Miembros y 1 Visitante están viendo este tema.

MRx86

Hola buena noche, tengo una pequena duda sobre el vector de interrupciones; cuando un dispositivo le avisa al controlador de interrupciones que acaba de terminar lo que estaba haciendo (por ejemplo, un disco avisando que acaba de terminar de escribir en un sector un dato), y este (el controlador de interrupcion) activa el pin de interrupcion de la CPU enviandole a esta (a la CPU) el numero del dispositivo, el OS utiliza este numero como indice en el vector de interrupciones para obtener el manejador (o handler) de interrupciones de ese dispositivo?, o sea cada vez que se inicia un trabajo con un dispositivo se guarda un numero que se necesita para obtener este manejador de interrupcion por la CPU? la pregunta viene de un libro que estoy leyendo y eso nu me quedo muy claro... (pongo eso en negritas para resaltar que esa es la pregunta en si)

Gracias y saludos!.
"Tengo una pregunta que a veces me tortura: ¿Estoy loco
yo, o los locos son los demas?"
- Albert Einstein

Randomize

Mira...

Imagina un procesador, e imagínalo quieto, e imagínalo quieto y esperando a que "algo" le pida hacer algo, cuando se ponga a ello hasta que no termine no pasará a otra cosa, pero están los multinúcleo, que inician varias tareas a la vez...

Un núcleo va por interrupciones o llamadas (estás haciendo una cosa y puedes inciar otra), varios núcleos funcionan igual, pero son varias las tareas las que se pueden realizar a la vez de manera completa (con mi núcleo cuando navego interrumpo la kissfm al cambiar de página).

Cuatro núcleos no son la multiplicación por cuatro de un núcleo, de hecho controlando un poco el apartado cachés del procesador un i7 (4 núcleos físicos + 4 núcleos lógicos) no hace el doble que un i3 (2 núcleos físicos + 2 núcleos lógicos), como mucho el 25% más.


Un saludo.


kub0x

Cuando un dispositivo hardware requiere realizar una tarea lanza una IRQ (interrupt request) desde el controlador (driver) hardware, de esta forma se señaliza al procesador en forma de evento, por lo tanto el procesador realizará dicha tarea.

Como Randomize dice, los procesadores modernos pueden manejar varias tareas a la vez, pero realmente no es "a la vez" hay un scheduler el cual se encarga de asignar un identificador a cada tarea y la trae al frente o al background segun las IRQs o la capacidad de trabajo requerida por los dispositivos. El Dispatcher se encarga de guardar en registro el contexto del proceso actual y cargar el contexto del proceso traído al frente, de esta manera intercalas dos procesos satisfactoriamente.

En software es harina de otro costal, pero el término es extrapolable.

Saludos!
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


Orubatosu

De hecho y como curiosidad, hace años (bastantes) en los tiempos de procesadores 386, 486 y demás, las diferentes tarjetas de un ordenador tenían un conjunto de "jumpers" para indicar manualmente la interrupción de cada dispositivo

Normalmente los dispositivos físicos no lanzan interrupciones directamente a la cpu, para eso tienen pequeños procesadores especializados con su propio software que se encargan de esos menesteres. Por ejemplo los discos duros lanzan interrupciones si, pero a la circuitería de la controladora de discos. Esta gestiona el uso de los discos y lanza a su vez las interrupciones correspondientes a la cpu. Lo mismo que los demás dispositivos.

Vamos, que hay una serie de capas. Y de hecho en los sistemas operativos normalmente no se accede tampoco directamente al hardware, sino que lo habitual es que se tenga que hacer "si o si" a través de los protocolos definidos por ese sistema
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998

MRx86

Gracias Randomize, kub0x y Orubatosu, me aclararon mis dudas :D.

Saludos!
"Tengo una pregunta que a veces me tortura: ¿Estoy loco
yo, o los locos son los demas?"
- Albert Einstein

Randomize

Ya te paso por IM el IBAN de mi cuenta.

A ver si eres generoso  :D :D :D