Foro de elhacker.net

Informática => Hardware => Mensaje iniciado por: MRx86 en 15 Marzo 2017, 19:59 pm



Título: como se interrumpe un proceso en ejecucion en un OS de tiempo compartido?
Publicado por: MRx86 en 15 Marzo 2017, 19:59 pm
buen dia, mi duda es la siguiente:

cuando el planificador de un OS de tiempo compartido (en esta suposicion el tiempo de ejecucion de cada proceso es de 1 seg) "considera" asignar el control de la CPU  a un proceso, y este proceso cumple con su tiempo de ejecucion (1seg) cual es el mecanismo para que el PC (Program Counter) se devualva al planificador de procesos?

pienso que esto se puede hacer por medio de una IRQ, pero por estar seguros.

PD: si este mecanismo se realiza mediante hardware, y este depende de la arquitectura del mismo, agradeceria que me explicasen como funcionaria en una placa ATX estandar, si no es mlestia, claro. Y si se hace mediante software, que me lo explicaran con windows NT y/o con Linux 2.x, repitiendo, si no es molestia.

saludos


Título: Re: como se interrumpe un proceso en ejecucion en un OS de tiempo compartido?
Publicado por: Randomize en 15 Marzo 2017, 20:18 pm
Se me ocurre la tecla "Pause"...

Se me ocurre tirar del cable de corriente...

Se me ocurre saltar los plomos a tiempo...

Se me ocurre ir a tomar café...


Un saludo.


Título: Re: como se interrumpe un proceso en ejecucion en un OS de tiempo compartido?
Publicado por: MRx86 en 15 Marzo 2017, 20:27 pm
Se me ocurre la tecla "Pause"...

Se me ocurre tirar del cable de corriente...

Se me ocurre saltar los plomos a tiempo...

Se me ocurre ir a tomar café...


Un saludo.

Se me ocurre que no te gusto alguna parte de mi pregunta, se puede saber que?


Título: Re: como se interrumpe un proceso en ejecucion en un OS de tiempo compartido?
Publicado por: MRx86 en 15 Marzo 2017, 20:28 pm
Se me ocurre que no te gusto alguna parte de mi pregunta, se puede saber que?

edit: boton equivocado XD. sorry.


Título: Re: como se interrumpe un proceso en ejecucion en un OS de tiempo compartido?
Publicado por: Randomize en 15 Marzo 2017, 20:31 pm
Se me ocurre que no te gusto alguna parte de mi pregunta, se puede saber que?


A ver...


¿A que viene preguntar lo que pasa en la placa cuando es el procesador el que trabaja, si dijéramos el chipset, que hoy día está dentro del procesador...?



Citar
Se me ocurre la tecla "Pause"...

Se me ocurre tirar del cable de corriente...

Se me ocurre saltar los plomos a tiempo...

Se me ocurre ir a tomar café...


Se me pueden ocurrir más cosas...


Un saludo.



Título: Re: como se interrumpe un proceso en ejecucion en un OS de tiempo compartido?
Publicado por: Orubatosu en 16 Marzo 2017, 11:32 am
Esto no tiene una respuesta sencilla. Los SO normalmente tienen varias colas donde coloca los diferentes procesos y les asigna prioridades. Puede que un proceso quede parado mientras espera un determinado evento por parte del hardware, o que espere un resultado de otro proceso. No existe un único mecanismo para ello. El SO va "dando paso" a las instrucciones de diferentes programas poniendolos en colas de ejecución.

Por decirlo de otro modo, el SO va cogiendo cada uno de los hilos de ejecución que le llegan desde los programas, selecciona parte de los mismos marcando cuando finaliza cada uno y los envía a diferentes colas (como procesadores por lo general). Luego existen diferentes tipos de políticas para priorizar que procesos se ejecutan mas a menudo y cuales menos. Cada sistema usa métodos diferentes, por ejemplo si no me equivoco mucho Windows usa el "Round Robin"

https://es.wikipedia.org/wiki/Planificaci%C3%B3n_Round-robin

Ten en cuenta que todos los procesos corren bajo la supervisión del SO. No es que el SO "ceda el control" a un hilo de programa, sino que todo corre bajo su control


Título: Re: como se interrumpe un proceso en ejecucion en un OS de tiempo compartido?
Publicado por: Randomize en 16 Marzo 2017, 14:16 pm
Habría que explicar todo lo que ocurre en el procesador desde que se arranca la PC hasta que se ejecuta un .exe.


Bastamente o muy en grosso modo, o si quieres a lo bestia, la mayor parte del tiempo el procesador se está tocando los lereles hasta que una interrupción lo ponga a hacer algo, si es multihilo multiplicas la cosa...





Título: Re: como se interrumpe un proceso en ejecucion en un OS de tiempo compartido?
Publicado por: MRx86 en 16 Marzo 2017, 18:38 pm
Citar
Ten en cuenta que todos los procesos corren bajo la supervisión del SO. No es que el SO "ceda el control" a un hilo de programa, sino que todo corre bajo su control

O sea que ninguna instruccion de un programa de usuario se ejecuta directamente sobre el hardware (sobre la cpu), sino que las instrucciones "pasan" primero por el planificador que es el que las ejecuta?, entonces el palnificador hace como de maquina virtual para los programas de usuario?

Y una pregunta, el planificador puede ser un proceso como tal?, o sea como no se... scheduler.exe?, y si es un programa, alguno sabe como se llama en el kernel de linux? es que siento curiosidadsobre como funciona esto exactamente... y creo que leyendo el codigo fuente de uno real podria entender mejor esto.

gracias por responder Randomize y Orubatosu


Título: Re: como se interrumpe un proceso en ejecucion en un OS de tiempo compartido?
Publicado por: Randomize en 16 Marzo 2017, 20:39 pm
De nada, pero oye que hay libros sobre funcionamiento de CPUs y tal...


Título: Re: como se interrumpe un proceso en ejecucion en un OS de tiempo compartido?
Publicado por: Orubatosu en 16 Marzo 2017, 22:02 pm
Hasta donde se, Scheduler.exe no es un archivo de Windows


Título: Re: como se interrumpe un proceso en ejecucion en un OS de tiempo compartido?
Publicado por: Randomize en 17 Marzo 2017, 07:20 am
Hasta donde se, Scheduler.exe no es un archivo de Windows



https://www.virustotal.com/es/


Dále caña  :¬¬


Título: Re: como se interrumpe un proceso en ejecucion en un OS de tiempo compartido?
Publicado por: Orubatosu en 17 Marzo 2017, 13:04 pm
Será si lo encuentro... en mi directorio "Juindows" no existe ningún archivo con ese nombre

Me suena de otras cosas, pero me da pereza guglear


Título: Re: como se interrumpe un proceso en ejecucion en un OS de tiempo compartido?
Publicado por: Randomize en 17 Marzo 2017, 14:20 pm
Pereza es solo un vocablo, dí que no te da la gana y así nos enteramos todos.


Un saludo.


Título: Re:
Publicado por: kub0x en 17 Marzo 2017, 20:32 pm
El scheduler administra la gestión de los procesos del OS.

Al cargar el kernel del OS, hay un driver que se encarga de enviar IRQs al cargar procesos en el mismo.

Por lo tanto el scheduler mantiene una lista de éstos y cuando cambia de un proceso a otro se produce un context switch en el dispatcher el cual guarda en un registro el estado actual de ese hilo o proceso, para así luego poder resumirlo.

Esto resolvería tu duda sobre que pasa con el PC (prog counter).

Saludos!


Título: Re: como se interrumpe un proceso en ejecucion en un OS de tiempo compartido?
Publicado por: Randomize en 18 Marzo 2017, 15:53 pm
(http://courses.cs.vt.edu/csonline/MachineArchitecture/Lessons/CPU/cpu_circuit.gif)


Resto de info:

http://juanpablo-tcr.blogspot.com.es/2012/04/cpu.html



Un saludo.




Título: Re: como se interrumpe un proceso en ejecucion en un OS de tiempo compartido?
Publicado por: MRx86 en 22 Mayo 2017, 23:45 pm
Hasta donde se, Scheduler.exe no es un archivo de Windows

No me refería a un archivo existente, puse un ejemplo para entender mi pregunta, "scheduler.exe" podria ser el nombre del planificador, si fuera un proceso, y como en los micronucleos (por ejemplo, el paginador de OSX) se implementan muchas funciones importantes al nivel de usuario, había preguntado para saber si el planificador de Windows (por eso la extensión .exe) era implementado a ese nivel (ya que, según algunos libros sobre sistemas operativos, Windows es un micronucleo, y a la vez usa un núcleo monolítico, un nucleo híbrido), igual gracias orubatosu, me aclaraste mis dudas igual que los demás

Gracias por su ayuda, saludos


Título: Re: como se interrumpe un proceso en ejecucion en un OS de tiempo compartido?
Publicado por: Randomize en 23 Mayo 2017, 04:04 am
No se responden temas con cierta antiguedad...


Y...



Citar
ya que, según algunos libros sobre sistemas operativos, Windows es un micronucleo, y a la vez usa un núcleo monolítico, un nucleo híbrido


Título y autor de ese o esos libros...


Ten en cuenta que ahora hay procesadores multinúcleo... Y Windows se ha optimizado para ello, para la multitask... "Eso de núcleo híbrido creo que es propio de AMD edición Bulldozer/Vishera"...