Consultar ensayos de calidad


El núcleo y sus procesos (informatica) - núcleo (kernel), transiciones de estado, planificación de procesos en sistemas operativos, tipos de procesos



NÚCLEO (KERNEL)
El núcleo (kernel) de un sistema operativo es un conjunto de rutinas cuya misión es la de gestionar el procesador, la memoria, la entrada/salida y el resto de recursos disponibles en la instalación. Toda esta gestión la realiza para atender al funcionamiento y peticiones de los trabajos que se ejecutan en el sistema. Es un software que constituye la parte mas importante del sistema operativo. Es el principal responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma basica, es el encargado de gestionar recursos, a través de servicios de llamada al sistema.

 
Figura 1

Ya se ha indicado que el corazón de un sistema operativo es el núcleo, un programa de control que reacciona ante cualquier interrupción de eventos externos y que da servicio a los procesos, creandolos, terminandolos y respondiendo a cualquier petición de servicio por parte de los mismos. 


PROCESOS
Todo lo que sucede dentro de un ordenador esta determinado por la ejecución de procesos, quiere esto decir que se trata del objeto basico y fundamental. Podemos definir un proceso como un programa en ejecución o en disposición de ser ejecutado cuando las circunstancias que rodean el mismo así lo determinen. Este concepto surgió por primera vez con la multiprogramación, donde se puede ejecutar mas de un programa simultaneamente con el fin de aprovechar al maximo los recursos de la computadora.
Un proceso es un conjunto de actividades o eventos (coordinados u organizados) que serealizan o suceden (alternativa o simultaneamente) bajo ciertas circunstancias con un fin determinado.

Un proceso puede informalmente entenderse como un programa en ejecución. Formalmente un proceso es 'Una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados.


Figura 2

En la Figura 2 puede verse graficamente el funcionamiento de un proceso.

Bloque de Control del Sistema (SCB).
Como dijimos en el tema introductorio, un S.O. es un programa que tiene como función la asignación de elementos físicos a los elementos lógicos. Para poder llevar a cabo esta función, el S.O. mantiene una serie de informaciones acerca de esos objetos lógicos y físicos. El soporte de esta información se conoce como Bloque de Control del Sistema (SCB).

Estructura basica para almacenar los datos necesarios para poder ejecutar el sistema operativo
– Lista de descriptores de procesos.
– Puntero al descriptor del proceso que esta haciendo uso del procesador.
– Puntero a la cola de descriptores de procesos que no hacen uso del ordenador, pero estan en espera.
– Punteros a colas de procesos que se encuentran en diferentes situaciones.
– Identificadores de las rutinas necesarias para tratar las interrupciones producidas por el hardware, el software o errores indeseados.
– Puntero a la cola de descriptores de recursos.

El bloque de control del proceso (PCB)
Un proceso se representa, desde el punto de vista del sistemaoperativo, por un conjunto de datos donde se incluyen el estado en cada momento, recursos utilizados, registros, etc., denominado Bloque de Control del Proceso (PCB).

Figura 3

Los objetivos que se pretenden cubrir con el bloque de control del proceso son los siguientes
Localización de la información sobre el proceso por parte del sistema operativo.
Mantener registrados los datos del proceso en caso de tener que suspender temporalmente su ejecución o reanudarla.
En general, la información contenida en el bloque de control es la siguiente
Estado del proceso. Información relativa al contenido del contador de programa (Program Counter, PC), estado del procesador en cuanto a prioridad del proceso, modo de ejecución, etc., y por último el estado de los registros internos de la computadora.
Estadísticas de tiempo y ocupación de recursos para la gestión de la planificación del procesador.
Ocupación de memoria interna y externa para el intercambio (swapping).
Recursos en uso (normalmente unidades de entrada/salida).
Archivos en uso.
Privilegios.
Estas informaciones se encuentran en memoria principal o en disco y se accede a ellas en los momentos en que se hace necesaria su actualización o consulta. Los datos relativos al estado del proceso siempre se encuentran en memoria principal.
Trataremos de ver a continuación cómo se realiza el cambio de un proceso a otro, para lo cual supondremos que estamos en una computadora con un solo procesador (sólo un proceso puede estar ejecutandose en cada momento), yexisten varios procesos activos compitiendo por el acceso al procesador (se esta ejecutando un proceso A y el núcleo del sistema operativo decide que debe ejecutarse en un instante dado otro proceso B). Suponemos que los programas de los procesos A y B estan ambos en memoria principal.
Las acciones que realiza el sistema operativo para cambiar el proceso A por el B se denominan cambio de proceso, y son las siguientes
Deja de ejecutar el proceso en curso (A), cediéndose el control al núcleo del sistema operativo, y aparece lo que se denomina un cambio de contexto pasando del modo usuario al modo supervisor. Antes de realizarse el cambio de contexto se salva el estado del proceso A para su posterior vuelta al punto donde fue interrumpido.
El núcleo estudia si el proceso B esta preparado para su ejecución y, si es así, realiza el cambio de contexto correspondiente pasando del modo supervisor al modo usuario. A continuación repone el estado del proceso B (en caso de haber sido interrumpido con anterioridad) y, por último, pone en ejecución el proceso B
El cambio de contexto se producira en caso de ejecución de una instrucción privilegiada, una llamada al sistema operativo o una interrupción, es decir, siempre que se requiera la atención de algún servicio del sistema operativo.
En el cambio de contexto, el núcleo salva el estado del proceso que se estaba ejecutando en su bloque de control y restaura el proceso que va a ejecutarse a partir de los datos almacenados en su bloque de control.

Figura 3.1
Estado delos procesos
Todo proceso en un sistema operativo presenta un estado que indica la situación de la ejecución en que se encuentra.
Los bloques de control de los procesos se almacenan en colas, cada una de las cuales representa un estado particular de los procesos, existiendo en cada bloque, entre otras informaciones, tantos campos como colas en las que el proceso se pueda situar, para que a partir de ellos se indique la cola en que se encuentra.
Los estados de los procesos son internos del sistema operativo y transparente al usuario. Para éste, su proceso estara siempre en ejecución independientemente del estado en que se encuentre internamente en el sistema.
Los estados de los procesos se pueden dividir en dos tipos: activos e inactivos. 
  
 Estados activos
Son aquellos que compiten con el procesador o estan en condiciones de hacerlo. Se dividen en
· Ejecución. Estado en el que se encuentra un proceso cuando tiene el control del procesador. En un sistema monoprocesador este estado sólo lo puede tener un proceso.
· Preparado. Aquellos procesos que estan dispuestos para ser ejecutados, pero no estan en ejecución por alguna causa (interrupción, haber entrado en cola estando otro proceso en ejecución, etc.).
· Bloqueado. Son los procesos que no pueden ejecutarse de momento por necesitar algún recurso no disponible (generalmente recursos de entrada/salida). 
  
 
Estados inactivos
Son aquellos que no pueden competir por el procesador, pero que pueden volver a hacerlo por medio de ciertas operaciones.
Enestos estados se mantiene el bloque de control del proceso aparcado hasta que vuelva a ser activado. Se trata de procesos que no han terminado su trabajo por causas que lo han impedido (por ejemplo, avería en un dispositivo de entrada/salida) y que pueden volver a activarse desde el punto en que se quedaron sin que tengan que volver a ejecutarse desde el principio (se puede pensar en procesos cuya duración es larga).

Son de dos tipos

· Suspendido bloqueado.
Es el proceso que fue suspendido en espera de un evento, sin que hayan desaparecido las causas de su bloqueo.
· Suspendido preparado. Es el proceso que ha sido suspendido, pero no tiene causa para estar bloqueado.

Transiciones de estado
Todo proceso a lo largo de su existencia puede cambiar de estado varias veces. Cada uno de estos cambios se denomina transición de estado. Estas transiciones son las siguientes
· Comienzo de la ejecución.
 Todo proceso comienza al ser dada la orden de ejecución del programa insertandose en la cola de preparados. El encolamiento dependera de la política de gestión de dicha cola.
· Paso a estado de ejecución. Cuando el procesador se encuentre inactivo y en la cola de preparados exista algún proceso en espera de ser ejecutado, se pondra en ejecución el primero de ellos.
· Paso a estado bloqueado. Un proceso que se encuentre en ejecución y que solicite una operación a un dispositivo externo (unidad de entrada/salida), teniendo que esperar a que dicha operación finalice, sera pasado de estado de ejecución a estadobloqueado insertandose su PCB en la cola correspondiente de bloqueados. A partir de ese momento el procesador pone en ejecución el siguiente proceso, que sera el primero de la cola de preparados.
· Paso a estado preparado. Este paso puede ser producido por alguna de las siguientes causas
- Orden de ejecución de un programa, con lo cual, como ya hemos dicho, el proceso pasa a la cola de preparados.
- Si un proceso esta en estado bloqueado por causa de una operación de entrada/salida y ésta finaliza, pasara de la cola de bloqueados a la de preparados.
- Si un proceso esta en ejecución y aparece una interrupción que fuerza al sistema operativo a ejecutar otro proceso, el primero pasara al estado preparado y su PCB a la cola de preparados.
- Activación. Un proceso suspendido previamente sin estar bloqueado pasara al estado preparado al ser activado nuevamente. 
  
 
· Paso a estado suspendido bloqueado. Si un proceso esta bloqueado y el sistema operativo recibe la orden de suspenderlo, su PCB entrara en la cola de procesos suspendidos bloqueados.
· Paso a estado suspendido preparado. Este paso se puede producir bajo tres circunstancias: 
 
- Suspensión de un proceso preparado pasando éste de la cola de procesos preparados a la de suspendidos preparados.
- Suspensión de un proceso en ejecución, con lo cual el proceso pasa a la cola de suspendidos preparados.
- Desbloqueo de un proceso suspendido bloqueado por desaparecer la causa que impedía el ser activado de nuevo.


Figura 4
En la Figura 4 semuestran las distintas transiciones de estado que puede tener un proceso

Operaciones sobre procesos
Los sistemas operativos actuales poseen una serie de funciones cuyo objetivo es el de la manipulación de los procesos.


En general, las operaciones que se pueden hacer sobre un proceso son las siguientes
· Crear el proceso. Se produce con la orden de ejecución del programa y suele necesitar varios argumentos, como el nombre y la prioridad del proceso. Aparece en este momento el PCB, que sera insertado en la cola de procesos preparados
La creación de un proceso puede ser de dos tipos
- Jerarquica. En ella, cada proceso que se crea es hijo del proceso creador y hereda el entorno de ejecución de su padre. El primer proceso que ejecuta un usuario sera hijo del intérprete de comandos con el que interactúa
- No jerarquica. Cada proceso creado por otro proceso se ejecuta independientemente de su creador con un entorno diferente. Es un tipo de creación que no suele darse en los sistemas operativos actuales. 
  
· Destruir un proceso. Se trata de la orden de eliminación del proceso con la cual el sistema operativo destruye su PCB.
· Suspender un proceso. Es una operación de alta prioridad que paraliza un proceso que puede ser reanudado posteriormente. Suele utilizarse en ocasiones de mal funcionamiento o sobrecarga del sistema.
· Reanudar un proceso. Trata de activar un proceso que ha sido previamente suspendido.
· Temporizar la ejecución de un proceso. Hace que un determinado proceso se ejecute cada ciertotiempo (segundos, minutos, horas) por etapas o de una sola vez, pero transcurrido un período de tiempo fijo.
· Despertar un proceso. Es una forma de desbloquear un proceso que habra sido bloqueado previamente por temporización o cualquier otra causa. 
  
PLANIFICACIÓN DE PROCESOS EN SISTEMAS OPERATIVOS
Conjunto de políticas y mecanismos incorporados al sistema operativo, a través de un módulo denominado planificador, que debe decidir cual de los procesos en condiciones de ser ejecutado conviene ser despachado primero y qué orden de ejecución debe seguirse.
La Planificación de procesos tiene como principales objetivos la equidad, la eficacia, el tiempo de respuesta, el tiempo de regreso y el rendimiento.
Equidad: Todos los procesos deben ser atendidos.
Eficacia: El procesador debe estar ocupado el 100% del tiempo.
Tiempo de respuesta: El tiempo empleado en dar respuesta a las solicitudes del usuario debe ser el menor posible.
Tiempo de regreso: Reducir al mínimo el tiempo de espera de los resultados esperados por los usuarios por lotes.
Rendimiento: Maximizar el número de tareas que se procesan por cada hora.

Algoritmos de Planificación
Primero en llegar primero en ser servido
Conocido como FCFS (First Come First Served). Este algoritmo emplea una cola de procesos, asignando un lugar a cada proceso por el orden de llegada. Cuando el proceso llega es puesto en su lugar en la cola después del que llegó antes que él y se pone en estado de listo. Cuando un proceso comienza a ejecutarse no seinterrumpe su ejecución hasta que termina de hacerlo.
Prioridad al mas corto
Su nombre es SJF (Shortest Job First).
El proceso que se encuentra en ejecución cambiara de estado voluntariamente, o sea, no tendra un tiempo de ejecución determinado para el proceso. A cada proceso se le asigna el tiempo que usara cuando vuelva a estar en ejecución, y se ira ejecutando el que tenga un menor tiempo asignado. Si se da el caso de que dos procesos tengan igual valor en ese aspecto emplea el algoritmo FCFS.
Round Robin
A cada proceso se le asigna un tiempo determinado para su ejecución, el mismo tiempo para todos. En caso de que un proceso no pueda ser ejecutado completamente en ese tiempo se continuara su ejecución después de que todos los procesos restantes sean ejecutados durante el tiempo establecido. Este es un algoritmo basado en FCFS que trata la cola de procesos que se encuentran en estado de listos como una cola circular.
Planificación por prioridad
En este tipo de planificación a cada proceso se le asigna una prioridad siguiendo un criterio determinado, y de acuerdo con esa prioridad sera el orden en que se atienda cada proceso.

Planificación garantizada
Para realizar esta planificación el sistema tiene en cuenta el número de usuarios que deben ser atendidos. Para un número 'n' de usuarios se asignara a cada uno un tiempo de ejecución igual a 1/n
Planificación de Colas Múltiples
El nombre se deriva de MQS (Multilevel Queue Schedulling). En este algoritmo la cola de procesos que se encuentran en estado delistos es dividida en un número determinado de colas mas pequeñas. Los procesos son clasificados mediante un criterio para determinar en qué cola sera colocado cada uno cuando quede en estado de listo. Cada cola puede manejar un algoritmo de planificación diferente a las demas.
Tiempos
En la Planificación de procesos se tiene en cuenta diferentes tiempos que pueden ser calculados, como son el 'Tiempo de espera medio', el 'Tiempo de retorno del proceso' y el 'Tiempo de retorno medio'.
Tiempo de espera medio
Es el promedio de tiempos en que los procesos estan en estado de listos.
En algoritmos FCFS este tiempo suele ser bastante largo. En algoritmos SJF para los procesos largos este tiempo suele ser muy grande, pues se estaran ejecutando constantemente los procesos mas cortos y los mas largos se encontraran constantemente en espera, por lo que pueden entrar en inanición. En Planificación por prioridad los procesos de prioridad baja podrían no ejecutarse nunca. Para dar solución a este problema el envejecimiento de un programa eleva su prioridad.
Tiempo de retorno del proceso
Es el tiempo que transcurre desde la creación de un proceso hasta que termina la ejecución del programa que le dio lugar.

Tiempo de retorno medio
Es la suma de los tiempos de retorno de cada uno de los procesos dividida entre la cantidad de procesos.



PRIORIDADES
En general, todo proceso por sus características e importancia lleva aparejadas unas determinadas necesidades de ejecución en cuanto a urgencia y asignación de recursos.Esto hace que los distintos procesos presentes en un sistema no accedan de igual forma y con igual frecuencia al procesador debido a la prioridad que cada uno de ellos tiene asignada.
Las prioridades según los sistemas operativos se pueden clasificar del siguiente modo
· Asignadas por el sistema operativo. Se trata de prioridades que son asignadas a un proceso en el momento de comenzar su ejecución y dependen fundamentalmente de los privilegios de su propietario y del modo de ejecución.










Unos pocos servicios del sistema (procesos que inicia el sistema ) tienen prioridad ALTA y ellos son: El administrador de tareas ( taskmgr.ese ), windows logon ( winlogon.exe ) y el subsistema de cliente/servidor ( csrss.exe ).
· Asignadas por el propietario. En este caso es el propio usuario el que asigna a cada proceso la prioridad con que éste debe ejecutarse. Esta modalidad de asignación de prioridades es muy utilizada en sistemas de tiempo real, ya que algunos de sus procesos necesitan atender rapidamente algún evento sin que tengan que interrumpirse.











Otra clasificación de prioridades atendiendo a la posibilidad de variación de las mismas es la siguiente

· Estaticas. Son aquellas prioridades que no pueden ser modificadas durante la ejecución del proceso. Pueden ser utilizadas en sistemas de tiempo compartido, pero no en los de tiempo real.
Las principales características de las prioridades estaticas son las siguientes
No cambian.
Los mecanismos de implementación sonsencillos.
Implican una sobrecarga relativamente baja.
No responden a cambios en el ambiente (contexto) que harían deseable ajustar alguna prioridad.
· Dinamicas. La prioridad de un proceso puede ser modificada con el fin de atender cualquier evento que se produzca.
Las principales características de las prioridades dinamicas son las siguientes
Responden al cambio.
La prioridad inicial asignada a un proceso puede durar poco tiempo, luego se la reajusta a un mejor valor.
Los mecanismos de implementación son mas complicados que para prioridades estaticas.
Implican una sobrecarga mayor que para esquemas estaticos
Notar: realizar cualquier tipo de cambios en el nivel de prioridad es muy peligroso ya que este nivel es asignado por el propio programa y un cambio en el puede tener consecuencias inesperadas. No debe cambiarse los niveles de los procesos iniciados por el sistema.
En el caso de ordenadores multiprocesador (caso de 2 procesadores) puede cambiarse la asignación del uso de los dos procesadores o de uno solo de ellos a los distintos procesos. Esta opción solo es accesible cuando en el sistema haya dos o mas procesadores.

TIPOS DE PROCESOS
Un proceso puede clasificarse en dos grandes grupos según el uso que vaya a tener y la forma como se haya construido el código ejecutable de su programa. Estos grupos son
· Reutilizables. Son aquellos que pueden cambiar los datos que utilizan, pero si vuelven a ejecutarse necesitan comenzar en su estado inicial y procesar nuevos datos. Es el caso de losprogramas normales de usuario.
· Reentrantes. Se caracterizan por no tener asociados datos, es decir, sólo tienen código puro. Los datos que utilizan se encuentran en la pila o en registros internos y no pueden ser modificados durante su uso. Este es el caso de programas compartidos por varios usuarios a la vez, como es el de los editores cuyo código se encuentra una sola vez en memoria, siendo utilizados por usuarios cuyos datos particulares estaran en una zona del disco asignada a cada uno de ellos. 
 
Otra clasificación de procesos según la capacidad que tienen de acceso al procesador y al resto de recursos es
· Apropiativos. Son aquellos que al tener asignado un recurso no permiten que otro proceso pueda acceder a él hasta que hayan terminado de utilizarlo.
· No apropiativos. Permiten que otros procesos puedan acceder a un recurso que esté siendo utilizado por ellos.
Por último, los procesos según su forma de ejecución se clasifican en
· Residentes. Son los que permanecen en memoria todo el tiempo que dure su ejecución.
· Intercambiables. Son aquellos que pueden ser llevados de memoria principal a disco mientras estén bloqueados. La memoria principal liberada por ellos puede ser utilizada por otro proceso que en ese momento la necesite. 

EXCEPCIONES
A lo largo de la ejecución de un proceso pueden aparecer una serie de irregularidades o fallos que de alguna forma un sistema operativo debe tratar de controlar y en su caso corregir.
Estos pueden ser de distinta naturaleza y afectar en mayor o menormedida al proceso; entre ellos podemos citar
- Fallos hardware.


- Fallos software.






- Entrada de datos incorrectos.


- Eventos anómalos.
Según la gravedad de los eventos que pueden presentarse, se establecen tres categorías de errores
· Catastróficos. Son aquellos que imposibilitan el funcionamiento del sistema y no hay modo de recuperarlo; por ejemplo, un fallo en la tensión de alimentación.



· No recuperables. Son los que sin afectar al sistema, hacen que el proceso no pueda continuar su ejecución; por ejemplo, la aparición de una división por 0.
· Recuperables. Son los que con ciertos ajustes permiten que el proceso continúe su ejecución normal; por ejemplo, datos con formato indebido. 
 
El tratamiento de una excepción puede seguir dos modelos diferentes 
Tratamiento de la excepción y continuación del proceso.
Tratamiento de la excepción y finalización del proceso.

Planificación del procesador
El objetivo principal es el de dar un buen servicio a todos los procesos que existan en un momento dado en el sistema.
En general, se distinguen varios niveles de planificación

Figura 5
· Planificación a largo plazo (planificador de trabajos).
Decide cual sera el próximo trabajo que se va a ejecutar. Este nivel sólo existe en los sistemas de proceso por lotes, donde la decisión se basa en las necesidades de recursos y su disponibilidad. En los sistemas de tiempo compartido tiene como única misión cargar los programas que se desean ejecutar en memoria. Este nivel es, portanto, el encargado de crear los procesos.
 
· Planificación a medio plazo (planificador de swapping). Decide si un proceso que esta en ejecución en estado bloqueado o suspendido debe ser extraído de la memoria temporalmente. Posteriormente, cuando el sistema se encuentre mas descargado, devolvera dicho proceso a la memoria y al estado de ejecución. Este nivel, por tanto, gestiona los procesos suspendidos en espera de algún recurso no disponible en el momento de la suspensión.
 · Planificación a corto plazo (planificador del procesador). Es el encargado de decidir cómo y cuando tendra acceso al procesador un proceso que esta preparado para utilizarlo. Por tanto, lleva a cabo las funciones de la multiprogramación, estando siempre residente en memoria y ejecutandose con mucha frecuencia; por ello, debe ser de ejecución muy rapida. En este nivel es donde se debe dar un buen servicio a los procesos interactivos para que el usuario no perciba, o lo haga en pequeño grado, que esta compitiendo por el procesador junto con otros usuarios.












Republica Bolivariana De Venezuela
Ministerio De Del Poder Popular Para La Educación Superior
Universidad Politécnica Territorial Del Norte De Monagas
“Ludovico Silva”
Caripito Estado – Monagas





Política de privacidad