Foro de elhacker.net

Informática => Hardware => Mensaje iniciado por: MRx86 en 12 Febrero 2017, 06:20 am



Título: [duda] vector de interrupcion
Publicado por: MRx86 en 12 Febrero 2017, 06:20 am
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!.


Título: Re: [duda] vector de interrupcion
Publicado por: Randomize en 12 Febrero 2017, 06:58 am
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.



Título: Re: [duda] vector de interrupcion
Publicado por: kub0x en 12 Febrero 2017, 07:29 am
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!


Título: Re: [duda] vector de interrupcion
Publicado por: Orubatosu en 12 Febrero 2017, 10:00 am
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


Título: Re: [duda] vector de interrupcion
Publicado por: MRx86 en 12 Febrero 2017, 15:11 pm
Gracias Randomize, kub0x y Orubatosu, me aclararon mis dudas :D.

Saludos!


Título: Re: [duda] vector de interrupcion
Publicado por: Randomize en 12 Febrero 2017, 15:36 pm
Ya te paso por IM el IBAN de mi cuenta.

A ver si eres generoso  :D :D :D