sólo estoy interesado cómo sleep(time in ms)
se implementa en una biblioteca C o básicamente a nivel de sistema operativo ...¿Cómo se implementa sleep en el nivel del sistema operativo?
estoy adivinando ...
- puede ser el basado en la velocidad del procesador haces una while loop of nop's (no estoy seguro de si el tiempo de suspensión será preciso) ...
- Cualquier registro especial en el procesador, donde se escribe algún valor y el procesador simplemente se detiene durante un tiempo específico (esto sería muy ineficiente ya que el procesador no puede ejecutar incluso otros programas).
¿Alguna pista? Probablemente el código fuente de la biblioteca C puede explicar? No soy demasiado particular acerca de cómo "C" lo está implementando ... Me pregunto en general cómo se implementa la función "dormir()".
ahhh .. así que no se garantiza que se despierte después del tiempo de espera ... ¿depende del planificador o básicamente de otras tareas del sistema ...? – FatDaemon
Qué tan pronto después de expirar el tiempo de espera, la tarea volverá a ejecutarse depende del planificador. El sistema puede garantizar que se ejecutará tan pronto como expire el tiempo de espera, pero creo que la mayoría simplemente lo colocará en el lugar apropiado de la cola lista para ejecutar (que podría estar en la parte delantera si la prioridad del hilo es mayor que cualquier otro), y se ejecutará cuando esté programado. –
Muchos procesadores integrados tienen una instrucción sleep dedicada – mocj