Los arquitectos de los Laboratorios Bell y sus socios originales de General Electric y el Instituto de Tecnología de Massachusetts diseñó Unix como sistema operativo multitarea de gran alcance. El kernel de Unix - el núcleo o centro alrededor del cual la funcionalidad externa del sistema operativo es en capas - se comunica con el hardware a través escueto controladores de dispositivos y software de control de procesos y asignar los recursos del sistema. Un proceso en Unix es cualquier procedimiento de flujo de control ejecutable cargado en la memoria , y se pone la atención de la CPU sólo cuando el núcleo lo permite. Proceso
La parte central y fundamental del núcleo de Unix , el subsistema de control de procesos , es responsable de la sincronización de procesos , la comunicación entre procesos , planificación de procesos y la gestión de memoria. Un proceso crea un proceso hijo con el tenedor () llamada al sistema , y con excepción de proceso 0 , todos los procesos tienen un proceso principal que se llama tenedor () en algún momento de crear el niño .
El kernel identifica un proceso por su ID , denominado PID . Un proceso Unix ejecuta en modo usuario o modo de núcleo , y mantiene dos pilas separadas al cambiar entre ellos. Un proceso entra en modo de núcleo cuando se hace una llamada al sistema o recibe una interrupción o una señal , que le da una mayor prioridad y más derecho a los recursos y de prioridad a los de modo de usuario .
Programación
el kernel permite que un proceso nuevo o diferente de usar la CPU sólo cuando el primer proceso se va a dormir , y no permite que cambie el estado de los recursos o de acceso asignado a otro proceso. Módulo planificador del kernel antepone un proceso de usuario periódicamente para evitar que se monopolice la CPU , sin embargo.
Control
procesos se comunican entre sí a través de llamadas al sistema , y si bien pueden sugerir que otro proceso desaparece, sólo el kernel puede anticiparse a él. Un proceso puede ir a dormir por su cuenta, pero el kernel puede despertarlo . Procesos típicamente duermen sobre un evento , que espera para ocupar la CPU , siempre y cuando el evento deseado no se ha producido .
Señales de
Cuando el núcleo asigna la CPU a otro proceso, llamado un cambio de contexto , el proceso adelantado a se guarda en la pila , lo que le permite continuar donde lo dejó en su siguiente turno. Un proceso puede enviar una señal a otro o el kernel puede enviar una señal interna, pero sólo el kernel puede enviar una señal a un proceso en ejecución para adelantarse de forma que se va a dormir . El kernel luego swaps con un proceso listo para correr que había estado esperando para obtener el control de la CPU . Un proceso puede dormir a una cierta prioridad interrumpible e ignorar una señal de baja prioridad.
Share Fair
El núcleo implementa un algoritmo de programación justo-parte que da a los procesos de cuota de tiempo de la CPU sobre la base de las prioridades asignadas a ellos , dependiendo de la naturaleza de la tarea . Procesos de mayor prioridad reciben notas más frecuencia y reciben más tiempo de CPU, sino un proceso pueden ejercer un control crudo de su programación mediante el uso de la llamada al sistema agradable ( ) de la siguiente manera : muy bien ( valor) , la prioridad de procesos es una función de este valor agradable. prioridad del proceso = reciente uso de la CPU /una prioridad constante + base + valor nice .
Este algoritmo da grupo de usuarios a dos veces la ranura para el grupo B , tres veces la de C y cuatro veces el de D , donde los procesos de usuario se agrupan según su prioridad . Este método no es adecuado para el procesamiento en tiempo real, donde el proceso no puede darse el lujo de esperar a que las tareas de misión crítica , como un proceso de uso de la CPU obtiene instantánea al hacer llamadas al sistema y el envío de señales de alta prioridad de interrupción
< . br>