GUIA DE TRABAJO PROGRAMA: INGENIERIA DE SISTEMAS CICLO DE FORMACIÓN: TECNICO ASIGNATURA: SISTEMAS OPERATIVOS DOCENTE – TUTOR: CARLOS MAURICIO DIAZ ROYERTH EJE DE APRENDIZAJE: DESCRIPCIÓN Y CONTROL DE PROCESOS COMPETENCIAS: Los y las estudiantes estarán en capacidad de identificar las fases de los procesos y las acciones de control que se llevan a cabo. Identificar los elementos constitutivos de los sistemas operativos, y formular con argumentos consideraciones sobre las estrategias de gestión que realizan y las relaciones que se establecen entre el software, el hardware y el usuario. ACTIVIDADES: Construcción de modelos gráficos de la estructura de los procesos de los S.O. PREGUNTA PROBLEMATIZADORA: ¿Qué es un proceso? ¿Cuáles son las fases de los procesos? ¿Qué procesos lleva a cabo los S.O.? ¿Cómo se controla la ejecución de procesos? PROCESOS 1. ¿QUÉ ES UN PROCESO? Un proceso es un programa en ejecución. Un proceso simple tiene un hilo de ejecución, Una vez definido que es un proceso nos podríamos preguntar cuál es la diferencia entre un programa y un proceso, y básicamente la diferencia es que un proceso es una actividad de cierto tipo que contiene un programa, entradas salidas y estados. Los procesos pueden ser cooperantes o independientes, en el primer caso se entiende que los procesos interactúan entre sí y pertenecen a una misma aplicación. En el caso de procesos independientes en general se debe a que no interactúan y un proceso no requiere información de otros o bien porque son procesos que pertenecen a distintos usuarios. Un proceso tiene recursos como: o o o o Datos Registros temporales Stack (pila) Program Counter Operaciones sobre procesos Los sistemas que administran los procesos deben ser capaces de realizar ciertas operaciones sobre los procesos. Estos incluyen: Los procesos en un S.O. pueden ejecutarse concurrentemente y deben ser creados y eliminados dinámicamente. Para esto se deben proveer llamadas al sistema que permitan: - Crear procesos - Destruir procesos - Terminar procesos Los sistemas operativos actuales poseen una serie de funciones cuyo objetivo es el de la manipulación de los procesos. Las operaciones que se pueden hacersobre 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 será insertado en la cola de procesos preparados. La creación de un proceso puede ser de dos tipos: Jerárquica. 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 será hijo del intérprete de comandos con el que interactúa. No jerárquica. 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. Un proceso puede crear nuevos procesos. El proceso que crea se denomina proceso padre y los procesos creados, procesos hijos. Cada uno de estos procesos, puede a su vez crear nuevos procesos. De esta forma se logra una jerarquía de procesos. Como cada proceso necesita recursos, éstos los puede obtener directamente del S.O, o compartir recursos con su padre. Cuando se crea un nuevo proceso existen dos alternativas: - El padre continúa ejecutándose en forma concurrente con el hijo. - El padre espera hasta que alguno o todos sus hijos terminen. Destruir un proceso. Se trata de la orden de eliminación del proceso con la cual el sistema operativo destruye su PCB. Un proceso termina cuando ejecuta su última sentencia y pide al S.O que lo elimine. Cuando esto ocurre, todos los recursos son devueltos al S.O. Pero ¿cuándo un proceso termina? - Se ejecutó la última sentencia. - El proceso decide terminar. - Un proceso decide matar a otro. - Un proceso padre puede matar a sus hijos. Suspender un proceso. Es un proceso 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. Cambiar la prioridad de un proceso. Temporizar la ejecución de un proceso. Hace que un determinado proceso se ejecute cada cierto tiempo (segundos, minutos, horas...) por etapas o de una sola vez, pero transcurrido un periodo de tiempo fijo. Despertar un proceso. Es una forma de desbloquear un proceso que habrá sido bloqueado previamente por temporización o cualquier otra causa. Prioridades 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. 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. 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 sistema de tiempo real, ya que algunos de sus procesos necesitan atender rápidamente 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: Estáticas. 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. Dinámicas. La prioridad de un proceso puede ser modificada con el fin de atender cualquier evento que se produzca. Estructuras de datos de procesos La creación de un proceso implica varias operaciones, incluyendo: PID. Identificador del proceso. Estado. Wait, Run, Ready etc. PC (Program Counter). Información relativa al contenido del contador de programa. Registros de CPU. Archivo de registros en uso. Información de itineración (Información para el Scheduler). Contadores, relojes, prioridad, punteros a colas de ejecución. Información de Manejo de Memoria. Registros base y límite, tablas para manejo de memoria virtual, lista de páginas, etc. Información de Contabilidad. Tiempo de CPU utilizado, tiempo real utilizado, límites de tiempo, etc. Información sobre el estado de E/S. Dispositivos asignados al proceso, lista de archivos abiertos, estado de esos archivos, etc. Credenciales. UID, GID, PPID (identificadores de usuario y de proceso). 2. ESTADOS DE LOS PROCESOS Los Sistemas Operativos deben disponer de una forma de crear y destruir procesos cuando se requiera durante la operación, teniendo además presente que los procesos pueden generar procesos hijos mediante llamadas al Sistema Operativo, pudiendo darse ejecución en paralelo. Respecto de los estados del proceso deben efectuarse las siguientes consideraciones: Cada proceso es una entidad independiente pero frecuentemente debe interactuar con otros procesos Los procesos pueden bloquearse en su ejecución porque: o o Desde el punto de vista lógico no puede continuar porque espera datos que aún no están disponibles. El Sistema Operativo asignó la CPU a otro proceso. Los estados que puede tener un proceso son: o o o En ejecución: utiliza la CPU en el instante dado. Listo: ejecutable, se detiene en forma temporal para que se ejecute otro proceso. Bloqueado: no se puede ejecutar debido a la ocurrencia de algún evento externo. Transiciones entre los estados De ejecución á Bloqueado: al iniciar una operación de E/S, al realizar una operación WAIT sobre un semáforo a cero (en el tema de procesos concurrentes se estudiarán los semáforos). De ejecución á Listo: por ejemplo, en un sistema de tiempo compartido, cuando el proceso que ocupa la CPU lleva demasiado tiempo ejecutándose continuamente (agota su cuanto) el sistema operativo decide que otro proceso ocupe la CPU, pasando el proceso que ocupaba la CPU a estado listo. De Listo á en ejecución: cuando lo requiere el planificador de la CPU (veremos el planificador de la CPU en el tema de planificación de procesos). De Bloqueado á Listo: se dispone del recurso por el que se había bloqueado el proceso. Por ejemplo, termina la operación de E/S, o se produce una operación SIGNAL sobre el semáforo en que se bloqueó el proceso, no habiendo otros procesos bloqueados en el semáforo. Obsérvese que de las cuatro transiciones de estado posibles, la única iniciada por el proceso de usuario es el bloqueo, las otras tres son iniciadas por entidades externas al proceso. EJERCICIO Supongamos la existencia de tres proceso cada uno con la siguiente información básica: PROCESO 1: Name: Time Slice: Prioridad: Tamaño: Proc1 3 ms 5 4000 líneas de código objeto En la línea 2000 esta la representación en código objeto de la instrucción read(a). PROCESO 2: Name: Time Slice: Prioridad: Tamaño: Proc2 2 ms 3 5000 líneas de código objeto PROCESO 3: Name: Time Slice: Prioridad: Tamaño: Proc3 2 ms 4 1000 líneas de código objeto En la línea 900 esta la representación en código objeto de la instrucción write(b). Suponga que se tienen estructuras de datos adecuadas para llevar una imagen o control del estado de procesos, básicamente la lista enlazada de los procesos en estado de LISTOS, así como la lista enlazada de los procesos en operaciones de E/S, estas listas inicialmente están como NULL. Adicionalmente el contador de programas PC, apunta la próxima instrucción de código a ejecutar. Suponga por simplicidad y para efectos de ilustración (ya que en la vida real las cifras son otras) que todas las operaciones de E/S tardan 5 ms en llevarse acabo, y que además el procesador es capaz de ejecutar 1000 líneas de código cada milisegundo. Entonces empieza a suceder los siguientes eventos: En el tiempo T1 se crea el PROCESO 1 Un milisegundo mas tarde se crea el PROCESO 2 1.50 ms después de T1 se crea el PROCESO 3 Haga una descripción del estado del sistema para cada uno de los eventos que se sucedan en el tiempo y que se representarán como Ti, desde T1 hasta que finalice la ejecución de todos los procesos. Recuerde que el modelo que subyace es la maquina de estados finito. Incluya para cada proceso en cada estado después de un evento el estado de las LISTAS ENLAZADAS y del PC. Solución TIEMPO (ms) T1 0 T2 1 T3 1.5 T4 3 T5 3.9 T6 5.9 T7 6.9 T8 7.9 T9 8.9 T10 10 T11 11.9 T12 13.9 LISTO Proc1 Proc1, proc3 Proc1, proc2 Proc1 Proc2 EJECUCION BLOQUEADO Proc1 Proc2 Proc2 Proc3 Proc2 Proc1 Proc2 Proc3 CP PROC1 CP PROC2 CP PROC3 TERMINADO 1000 500 2000 Proc3 Proc3 Proc1, proc3 Proc1, proc3 Proc1 Proc1 900 4000 2000 5000 Proc2 1000 Proc3 Proc1 4000 Proc1