lunes, 13 de septiembre de 2010

Estructura de un SO Part 1

La clave de los sistemas operativos es el proceso. Un proceso es un programa de ejecución, cada uno tiene relacionado un espacio de direcciones (conteniendo el programa ejecutable, los datos de programa y su pila), una lista de posiciones de memoria desde algún mínimo hasta algún máximo, el cual el proceso puede leer y escribir. Cada proceso esta asociado con un grupo de registro, entre ellos se incluye el apuntador de la pila, el contador del programa y los registros de hardware, así como información necesaria para ejecutar el programa. Un proceso padre puede crear uno o más procesos distintos denominados procesos hijos; estos procesos hijos mueren cuando cumplen con la tarea asignada, sin embargo se convierten en zombis al no encontrar al proceso padre para darle la tarea que se le fue asignada.

El sistema operativo es el encargado de decidir en que momento dejar de ejecutar un proceso y comenzar a ejecutar otro; en muchos de los sistemas operativos la información acerca de cada proceso se almacena en una tabla del sistema operativo llamada “tabla de procesos” (arreglo o lista enlazada de estructuras), una para cada proceso existente en ese momento; aparte del contenido de su propio espacio de direcciones. Los procesos ligeros o Thread (Unidad básica de utilización del CPU) son interactivos, su ejecución es rápida y no pesa más de un Kb.; sin embargo los procesos por lote (batch) son procesos pesados y requieren de varias visitas al procesador.

El scheduler (planificador) es el parte de sistema operativo que toma la decisión de quien va hacer procesado cundo hay más de un proceso ejecutable, el algoritmo que utiliza se llama “algoritmo de planificación”; entre las posibilidades están:

1. Equitatividad —asegurarse de que cada proceso reciba una parte justa del tiempo de CPU.

2. Eficiencia —mantener la CPU ocupada todo el tiempo.

3. Tiempo de respuesta —minimizar el tiempo de respuesta para usuarios interactivos.

4. Retorno —minimizar el tiempo que los usuarios por lotes tienen que esperar sus salidas.

5. Volumen de producción —maximizar el número de trabajos procesados por hora.

La ejecución de un proceso consiste de un ciclo de ejecución de CPU continuado por un ciclo de espera por I/O. Cada proceso obtiene una pequeña unidad de tiempo de CPU (quantum), usualmente entre 10 – 100 [ms]. Al expirar el quantum, se desasigna el proceso y se reingresa al final de la fila ready. Si hay n procesos en la fila ready, y el quantum es “q”, entonces cada proceso obtiene 1/n de la CPU en bloques de a lo más “q” unidades de tiempo.

El sistema operativo contiene en el núcleo el kernel (interprete del CPU) el cual se encarga de manipular el hardware del equipo para poder ejecutar los procesos tanto del sistema como de las aplicaciones de los usuarios. El kernel es el encargado de realizar las llamadas al sistema que son el proceso más básico en una computadora. Las llamadas al sistema se pueden usar por medio de funciones en “C” y en el programa “símbolo del sistema”; las funciones tienen un formato común, tanto en su documentación como en la secuencia de llamada. Invocándose mediante una función retornando ésta siempre un valor con información acerca del servicio que proporciona o del error que se ha producido en su ejecución. Aunque dicho retorno puede ser ignorado, es recomendable siempre testearlo.

Algunas funciones:


No hay comentarios:

Publicar un comentario