Universidad Central de Venezuela Facultad de Ciencias Escuela de Computación Sistemas Operativos (6004) Práctica #1 Procesos Objetivos: • • • Estudiar el concepto de proceso y su importancia en el desarrollo de los sistemas operativos. Analizar cada uno de los posibles estados por los cuales pasa un proceso así como también las estructuras que hacen posible la representación de estos estados. Estudiar las diferentes formas de comunicación entre procesos Preguntas: 1. Discuta la definición de proceso, luego razone: ¿Existe alguna diferencia entre archivo ejecutable y un proceso? 2. Nombre y explique las estructuras de datos que mantiene el sistema operativo para el control de los procesos. 3. Muchos sistemas operativos reservan un arreglo estático para los descriptores de proceso (PCB), de modo que existe un número máximo fijo de procesos que pueden existir en el SO. Proporcione algunos argumentos para justificar que el núcleo no utilice una estructura dinámica de datos para permitir que exista un número variable de descriptores de proceso. 4. El sistema operativo VAX / MVS tiene cuatro modos de acceso al procesador para facilitar la protección de los recursos del sistema y compartirlos entre los procesos. El modo de acceso determina: • • • Privilegios de ejecución de las instrucciones: que instrucciones puede ejecutar el procesador Privilegios de acceso a la memoria: a que posiciones de memoria virtual puede acceder la instrucción en curso Los cuatro modos son los siguientes: a. Núcleo: ejecuta el núcleo del sistema operativo VMS, lo que incluye la gestión de memoria, el tratamiento de interrupciones y las operaciones de E/S b. Ejecutivo: ejecuta muchas de las llamadas a servicios del sistema operativo, incluyendo las rutinas de gestión de archivos y registros c. Supervisor: ejecuta otros servicios del sistema operativo, como las respuestas a las órdenes de usuario. d. Usuario: ejecuta programas de usuario y utilidades como compiladores, editores y depuradores Semestre II-2013 Universidad Central de Venezuela Facultad de Ciencias Escuela de Computación Sistemas Operativos (6004) Práctica #1 Un proceso que esté ejecutándose en un modo menos privilegiado tiene que llamar a menudo a procedimientos que ejecutan en un modo más privilegiado. Por ejemplo, un programa de usuario solicita un servicio del sistema operativo. Esta llamada se lleva a cabo mediante una instrucción de cambio de modo, que provoca una interrupción y transfiere el control a una rutina con un nuevo modo de acceso. • • 5. Algunos sistemas operativos tienen dos modos, de núcleo y de usuario. ¿Cuáles son las ventajas y desventajas de tener cuatro modos en lugar de dos ¿Se puede encontrar un motivo para tener aún más de cuatro modos? ¿Cuál(es) de los siguientes elementos no forma parte de la imagen del proceso? Explique detalladamente: a. b. c. d. Contador de programa Tabla de página del proceso El puntero de posición de un archivo Puntero de pila 6. Básicamente un proceso se encuentra en estado de ejecución o en estado de no ejecución, dependiendo de la disponibilidad del procesador o del estado en el cual estén los recursos del sistema (Dispositivos de E/S, Archivos, Memoria) ¿Explique por qué es necesario separar a los procesos en distintos estados (listos, bloqueados, suspendidos, etc.)? 7. Se desea mantener el bloque de control de procesos (PCB) en una estructura de datos denominada tabla de procesos. La tabla tendrá una entrada por cada uno de los procesos. El pid de cada proceso es un entero entre 0 y <número máximo de procesos – 1> que proporciona su entrada en la tabla. Una de las entradas corresponderá siempre a la del proceso en ejecución, y el resto a procesos que esperan por una u otra causa. Cada entrada de la tabla dispondrá de toda la información necesaria por el proceso, que supone que es: Semestre II-2013 Universidad Central de Venezuela Facultad de Ciencias Escuela de Computación Sistemas Operativos (6004) Práctica #1 a. b. c. d. Dirección inicial del código del proceso. Número del identificador del proceso (pid). Un arreglo con el nombre del proceso. Estado del proceso (ejecución, preparado, suspendido y entrada sin proceso para una entrada no ocupada por proceso). e. Prioridad del proceso (0 a 9). f. Un campo que contiene el estado del proceso que se salvará al hacer el cambio de contexto, y que contiene: i. Contador del programa ii. El estado del CPU iii. El segmento de datos iv. El segmento de código v. El segmento de pila vi. El puntero de pila g. Un apuntador al PCB del siguiente proceso Con base a lo anterior se desea que usted plantee un pseudocódigo de alto nivel para una estructura adecuada del PCB que se ha definido. 8. Cuando se mueve a un proceso del estado listo al estado de ejecución, cada registro en la CPU debe establecerse a unos valores iniciales o a los valores que el proceso tenía cuando fue interrumpido la última vez. Explique porque el valor del registro PC normalmente es el último registro cargado para el nuevo proceso. 9. ¿Tiene sentido un cambio de estado de bloqueado a bloqueado suspendido? ¿Y de bloqueado suspendido a bloqueado? 10. Explique los principales mecanismos de comunicación que ofrecen los sistemas Operativos mencionando ventajas y desventajas de algunos. 11. Explique el funcionamiento de fork() y vfork(), mencione diferencias y semejanzas. 12. Realice un código sencillo donde se utilice y aprovechen las características de la función fork() y vfork(). 13. ¿Puede un sistema con un solo procesador no tener procesos listos ni procesos en ejecución? ¿Es este un sistema “muerto” Semestre II-2013 Universidad Central de Venezuela Facultad de Ciencias Escuela de Computación Sistemas Operativos (6004) Práctica #1 14. Dado el siguiente programa: void main (int argc, char argv) { int i; for( i =1; i < = argc; i ++ ) fork(); } Dibuje un esquema de la jerarquía de procesos generada. 15. Se desea implementar un programa llamado programaSO el cual lea un número entero de teclado y empiece a escribir por la consola los números consecutivos, del mismo modo deberá mantenerse leyendo una nueva entrada de un número entero. Si se lee una nueva entrada el programa deberá parar de imprimir la secuencia y comenzar a escribir los números consecutivos a partir de ella. El programa deberá culminar si se lee el numero 0 (cero). Una impresión ejemplo seria: GDSO Semestre II-2013