Universidad Central de Venezuela Facultad de Ciencias Escuela de Computación Sistemas Operativos (6004) Práctica #1 Introducción a los Sistemas Operativos y Procesos Objetivos de la práctica: Describir los principios en los que se basan los Sistemas Operativos para ofrecer un buen servicio al usuario. 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. Desarrollo de la práctica: 1. ¿Cuál es el propósito de las llamadas al sistema (System Calls) y cómo dichas llamadas se relacionan al Sistema Operativo y al concepto de funcionamiento de modo dual (modo usuario y modo supervisor)? 2. ¿Cuáles son los 3 propósitos principales de un sistema operativo? 3. Explique con ayuda de un diagrama, la gestión de invocación de una llamada al sistema. (Como por ejemplo Open();) 4. ¿Por qué un programador preferiría usar una API en lugar de invocar las propias llamadas al sistema? 5. El sistema operativo está formado conceptualmente por tres capas principales representadas en la figura con los números 3, 4 y 5. Se quiere que complete dichas capas y las demás partes requeridas de manera que la estructuración por niveles del sistema operativo representada en la figura sea correcta. Se proporcionan las siguientes palabras posibles a ubicar: - Software - Hardware - Sistema Operativo - Microkernel - Servicios - E/S - Shell - Usuarios - Middleware 6. ¿Es todo sistema de tiempo compartido multiprogramado? ¿Y viceversa? 7. Discutir si existen ventajas en el uso de sistemas operativos con multiprogramación, en vez de procesamiento en serie, en un computador dedicado a servir las necesidades de un único usuario. Universidad Central de Venezuela Facultad de Ciencias Escuela de Computación Sistemas Operativos (6004) Práctica #1 8. Discuta la definición de proceso, luego razone: ¿Existe alguna diferencia entre archivo ejecutable y un proceso? 9. Nombre y explique las estructuras de datos que mantiene el sistema operativo para el control de los procesos. 10. 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. 11. 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 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. 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 aun más de cuatro modos? 12. ¿Cuál(es) de los siguientes elementos no forma parte de la imagen del proceso? Explique detalladamente: a. Contador de programa Universidad Central de Venezuela Facultad de Ciencias Escuela de Computación Sistemas Operativos (6004) Práctica #1 b. Tabla de página del proceso c. El puntero de posición de un archivo d. Puntero de pila 13. 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.)? 14. 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: 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. 15. 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. 16. Dibuje el diagrama de estados de un proceso, explique qué ocurre en cada transición. Universidad Central de Venezuela Facultad de Ciencias Escuela de Computación Sistemas Operativos (6004) Práctica #1 17. ¿Tiene sentido un cambio de estado de bloqueado a bloqueado suspendido? ¿Y de bloqueado suspendido a bloqueado? 18. Explique los principales mecanismos de comunicación que ofrecen los sistemas Operativos mencionando ventajas y desventajas de algunos. 19. Explique el funcionamiento de fork() y vfork(), mencione diferencias y semejanzas. 20. Realice un código sencillo donde se utilice y aprovechen las características de la función fork() y vfork(). 21. ¿Puede un sistema con un solo procesador no tener procesos listos ni procesos en ejecución? ¿Es este un sistema “muerto”? 22. 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. 23. Escriba un programa en C que permita crear la siguiente estructura de procesos: 24. 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: Universidad Central de Venezuela Facultad de Ciencias Escuela de Computación Sistemas Operativos (6004) Práctica #1 Ejecución por consola. Explicación de la corrida. $> programaSO 27 Se lee 27 de entrada. 28 29 30 31 32 5 Se lee 5, la secuencia cambia.