1 Instrucciones: Lea el captulo 2, "Procesess" del libro "Operating Systems Design and Implementation" y conteste los siguientes ejercicios:
1. Por qu la multiprogramacin es fundamental para el funcionamiento de un sistema operativo moderno? Debido a su modo de funcionar en el que se proporciona un entorno de multiprogramacin agradable y eficiente y sobre todo en donde los procesos se ejecutan simultneamente as que no pueden interferir unos con otros.
2. Cules son los tres estados principales que un proceso puede estar en? Describir el significado de cada uno brevemente. Tres estados principales de un proceso son los siguientes: a) Lista de estados: cuando un proceso est listo para ejecutarse en el CPU. b) Estado de bloqueo: cuando un proceso se bloquea a la espera de un recurso, la informacin o evento que ocurra (por ejemplo, a la espera de un mutex para ser desbloqueados). c) Estado de corriente: cuando un proceso mantiene la CPU y ejecuta las instrucciones individuales de programas.
3. Suponga que usted fuera a disear una arquitectura informtica avanzada que ha de cambiar el proceso en el hardware, en lugar de tener interrupciones. Qu informacin necesitara el CPU? Describa cmo podra funcionar el proceso de conmutacin hardware. La CPU tendra que entender la estructura de datos de la tabla de procesos. Esto incluira informacin tal como todos los procesos actualmente en el sistema, as como sus datos (o al menos un puntero a la ubicacin de memoria que almacena el bloque de control de proceso que contiene los datos del registro, contador de programa, lmites de memoria, etc). La CPU tendra que conocer el estado del proceso (listo, el bloqueo, la espera, etc) por lo que podra decidir qu proceso para cambiar. Tambin podra tener un registro que contiene un puntero de la entrada de la tabla de proceso actual. Cuando E / S complet, la CPU almacenar el estado actual de la mquina en la entrada de la tabla de proceso actual, luego se ira al vector de interrupcin para el dispositivo de interrupcin y buscar un puntero a otra entrada de la tabla de proceso (el procedimiento de servicio). Este proceso entonces empezara a subir.
2 4. En todos los equipos actuales, al menos parte de los controladores de interrupcin se escriben en lenguaje ensamblador. Por qu? Por lo general los lenguajes de alto nivel no permiten el tipo de acceso a hardware de la CPU que se requiere. Por ejemplo, un controlador de interrupciones puede ser requerido para activar y desactivar el servicio de la interrupcin de un dispositivo en particular, o para manipular los datos en el rea de pila de un proceso. Adems, las rutinas de servicio de interrupcin deben ejecutar lo ms rpido posible. Hay acciones (tales como el ahorro de registros) que ocurren mientras una interrupcin est siendo manejado. Estas acciones necesitan ser escritas en el montaje, ya que no pueden expresarse en lenguajes de alto nivel.
5. Vuelva a dibujar la figura. 2-2 agregando dos nuevos estados: Nuevos y terminados. Cuando un proceso es creado, que se encuentra inicialmente en el estado Nuevo. Cuando se sale, que est en el estado terminado.
3 6. En el texto se afirma que el modelo de la figura. 2-6 (a) no se ha adaptado a un servidor de archivos utilizando una cach en memoria. Por qu no? Podra cada proceso tiene su propia cach? En la primer figura se muestran tres procesos, cada uno de ellos tiene su propio espacio de direccionamiento y descriptor de procesos, como los tres procesos no comparten espacio de direcciones deben comunicarse haciendo uso de los servicios de comunicacin de procesos ofrecidos por el S.O. En la figura 2, se observa un nico proceso con 3 hilos de control. Cada uno de ellos tiene su propio contador de programa y su propia pila, pero todos ellos comparten el mismo espacio de direcciones. A estos mini-procesos se les denomina threads. En un sistema multiprocesador los threads se pueden ejecutar en paralelo. Un thread puede crear un thread hijo y poder invocar llamadas al sistema. Los threads comparten un mismo espacio de direccionamiento, de modo que no hay proteccin entre ellos, todos tienen acceso a las variables globales del resto. El hecho es que proporcionar proteccin entre los threads, primero, es imposible, y segundo, no es necesario. A diferencia de los procesos del usuario, los threads son programados por un mismo programador, de modo que no deben intentar acciones perjudiciales para el resto de los threads sino todo lo contrario, y si lo hacen debido a un error de codificacin, la responsabilidad recae sobre el programador. Adems de compartir espacio de direccionamiento, los threads comparten los mismos archivos abiertos, manejadores de sea, proceso hijo, etc.
7. Cul es la diferencia fundamental entre un proceso y un hilo? Ambos procesos y subprocesos son secuencias independientes de la ejecucin. La diferencia tpica es que los hilos (del mismo proceso) se ejecutan en un espacio de memoria compartida, mientras que los procesos se ejecutan en espacios de memoria diferentes. Proceso.- Cada proceso proporciona los recursos necesarios para ejecutar un programa. Un proceso tiene un espacio virtual de direcciones, cdigo ejecutable, identificadores abiertos a los objetos del sistema, un contexto de seguridad, un identificador nico proceso, variables de entorno, una clase de prioridad, mnima y tamaos mximos del espacio de trabajo, y al menos un hilo de ejecucin. Cada proceso se inicia con un solo hilo, a menudo llamado el hilo principal, pero puede crear subprocesos adicionales de cualquiera de sus hilos. Hilo.- Un hilo es la entidad dentro de un proceso que puede ser programado para su ejecucin. Todos los subprocesos de un proceso comparten sus direcciones espaciales y recursos del sistema virtual. Adems, cada subproceso mantiene controladores de excepciones, una prioridad de planificacin, almacenamiento local de subprocesos, un identificador nico hilo, y un conjunto de estructuras, el sistema utilizar para guardar el contexto del subproceso hasta que se programa. El contexto del subproceso incluye conjunto
4 de la rosca de registros de la mquina, la pila del ncleo, un bloque de entorno hilo, y una pila de usuario en el espacio de direcciones del proceso del hilo. Hilos tambin pueden tener su propio contexto de seguridad, que puede ser utilizado por hacerse pasar por clientes.
8. En un sistema con hilos, hay normalmente una pila por hilo o una pila por procesar? Explique. Hay una pila por hilo ya que cada hilo necesita sus propias variables para seguir la pista.
9. Qu es una condicin de carrera? Una condicin de carrera o un peligro de la carrera es el comportamiento de un sistema electrnico o software donde la salida depende de la secuencia o al calendario de otros eventos incontrolables. Se convierte en un error cuando los acontecimientos no suceden en el orden del programador pretenda. El trmino se origina con la idea de dos seales de carreras entre s para influir en la salida primero. Las condiciones de carrera pueden ocurrir en los sistemas electrnicos, especialmente los circuitos lgicos, y los programas de software, especialmente con mltiples subprocesos o distribuidos.
10. D un ejemplo de una condicin de carrera que podra ocurrir en la compra de billetes de avin para dos personas para ir en un viaje juntos. Para una condicin de carrera dos solicitudes concurrentes escribe tendr que ser hecha a base de datos (digamos RDBMS). Si el DBMScode es incapaz de hacer control de concurrencia y si el programa clientes intenta reservar las entradas de ambos simultneamente, entonces hay la posibilidad de que algo as puede suceder: threadA -getAvailableSeats()-returns[27A27B...] --------------------------------------...contextswitch threadB -getAvailableSeats()->returns[27A27B...] -bookseats[0] --------------------------------------...contextswitch threadA - book seats[0]
5 11. Escriba un script de shell que produce un archivo de nmeros secuenciales mediante la lectura del ltimo nmero en el archivo, la adicin de 1 a ella, y a continuacin, aadiendo al archivo. Ejecutar una instancia de la secuencia de comandos en el fondo y otro en el primer plano, cada uno accediendo al mismo archivo. Cunto tiempo se tarda antes de que una condicin de carrera se manifiesta? Qu es la crtica seccin? Modifique el script para evitar la carrera (Sugerencia: use En el archivo file.lock para bloquear el archivo de datos). Primero se inicializa un archive con un carcter . i=0 while [ $i != 300 ] do i=`expr $i + 1` n=`tail -1 file` expr $n + 1 >> file done
Si ejecutamos el script de arriba dos veces en la misma hora, en el centro, el nmero que anexar al expediente no se mostrar en la forma secuencial. Puede volver unos nmeros entonces mantienen secuencia para prximos nmeros. Esa es la condicin de carrera se produjo cuando un proceso lee el nmero e inmediatamente otro proceso escriba un nuevo nmero en el archivo. El primer proceso puede aadir un nmero despus de ella. Por lo tanto, el sistema inconsistente se produce.
12. Es una declaracin como en el archivo file.lock un mecanismo de bloqueo eficaz para un programa de usuario como los guiones utilizados en el problema anterior? Por qu (o por qu no)? Un bloqueo es un mecanismo para controlar el acceso a algo. En programacin, las cerraduras se suelen utilizar para que mltiples programas o hilos de un programa pueden compartir un recurso -por ejemplo, acceso a un archivo para actualizarlo - sobre una base de uno-en-un-tiempo. Tpicamente, una cerradura es de duracin temporal y cuando el recurso ya no es necesario, es liberado para el bloqueo y uso por el prximo comparte en una cola.
13. Funciona la solucin de espera ocupada que usa la variable a su vez (fig. 2-10) cuando los dos procesos se estn ejecutando en un multiprocesador de memoria compartida, es decir, dos CPU, comparten una memoria comn? Si y a la vez no, funciona en la medida en que la alternancia estricta solucin funciona, lo que equivale a decir que en realidad no es una solucin general. De hecho, esto fue algo de una
6 pregunta con trampa: la solucin como ilustrado fue escrito esencialmente por un multiprocesador de memoria compartida.
14. Considere un equipo que no tenga una prueba y la instruccin SET LOCK pero no hace tener una instruccin para cambiar el contenido de un registro y una palabra de memoria en una sola accin indivisible. Eso puede ser usado para escribir una entrar_en_region de rutina, tales como la encontrado en la figura. 2-12? Cuando los contenidos de los registros se intercambian con la memoria de escritura, aunque sea llamada por mltiples procesos cercanos simultneos, cualquier valor que sola estar en el registro ser cambiado a la memoria de escritura. El valor que estaba originalmente en el registro no puede perderse, ya que el intercambio se realiza en una sola accin indivisible y no puede ser interrumpido.
15. Haga un bosquejo de cmo un sistema operativo que puede deshabilitar las interrupciones podran implementar semforos. down(v) { if (v > 0) v--; else block_me() }
up(v) { v++; unblock_one_process() } La idea es que si (v) se est realizando una hacia abajo, el sistema operativo debe desactivar interrupciones, realizar la comprobacin / decremento en el valor de v, a continuacin, habilitar interrumpe. Si no se produce el incremento, a continuacin, el proceso debe ser bloqueado en ese punto. Si el sistema operativo es en realidad ejecuta todo el cdigo, entonces tambin puede esperar a que toda la lgica se realiza antes de que bloquea el proceso en cuestin. El seguimiento (v) la operacin es ms simple: las interrupciones deshabilitar, incremento de v, encontrar un proceso y bloqueado quitarlo de la lista de "bloqueado", y permitir interrumpe.
7 16. Mostrar cmo contar los semforos (es decir, los semforos que pueden contener una arbitrariamente grande valor) se puede implementar utilizando semforos slo binarios y mquina ordinaria instrucciones. Con cada semforo se asocia un contador de dos semforos binarios, M, utilizados para exclusin mutua, y B, que se utiliza para el bloqueo. Tambin se asocia un contador que contiene el nmero de subidas menos el nmero de bajas, y una lista de procesos bloqueados en ese semforo. Para implementar abajo, un proceso primero consigue acceso exclusivo al semforo, contador, y la lista haciendo una abajo en M. A continuacin, el contador disminuye. Si es cero o ms, simplemente lo hace para arriba en una M y salidas. Si M es negativo, el proceso se pone en la lista de procesos bloqueados. Entonces un up se hace en M y un abajo se realiza en B para bloquear el proceso. Para poner en prctica, primero M se apur para conseguir la exclusin mutua, y entonces el contador se incrementa. Si es ms que cero, nadie fue bloqueada, por lo que todo lo que hay que hacer es M. Si, sin embargo, el contador es ahora negativo o cero, algn proceso debe ser retirado de la lista. Por ltimo, un up se realiza en B y M en ese orden
17. En Sec. 2.2.4, una situacin con un proceso de alta prioridad, H, y un proceso de baja prioridad, L, fue descrito, lo que llev a H bucle para siempre. Se produce el mismo problema si planificacin de turno rotativo se utiliza en lugar de la programacin de prioridad? Discuta. Con planificacin de turno rotativo que funcionando, tarde o temprano L se ejecutar, y con el tiempo dejar su regin crtica. El punto es, con programacin de prioridad, L nunca llega a ejecutarse en absoluto; con la operacin por turnos, se pone una rebanada de tiempo normal peridicamente, por lo que tiene la oportunidad de salir de su regin crtica.
18. La sincronizacin en monitores utiliza variables de condicin y dos operaciones especiales, ESPERE y seal. Una forma ms general de la sincronizacin sera tener un solo primitivo, WaitUntil, que tena un predicado booleana arbitraria como parmetro. Por lo tanto, se podra decir, por ejemplo, WaitUntil x <0 o y + z <n La SEAL primitiva ya no seran necesarios. Este esquema es claramente ms general que el de Hoare o Brinch Hansen, pero no se utiliza. Por qu no? (Sugerencia: piense acerca de la aplicacin.) Es muy costoso de implementar, cada vez que cualquier variable aparece en un predicado sobre la que algn proceso est esperando cambios, el sistema de gestin de tiempo debe volver a evaluar el predicado para ver si el proceso se puede desbloquear. Con los monitores de Hoare y Brinch Hansen los procesos slo pueden ser despertados a una seal primitiva.
8 19. Un restaurante de comida rpida tiene cuatro tipos de empleados: (1) tomadores de pedidos, que toman los pedidos del cliente; (2) los cocineros que preparan el alimento; (3) especialistas de embalaje, que meter la comida en bolsas; y (4) los cajeros, que dan las bolsas a los clientes y toman su dinero. Cada empleado puede ser considerado como un secuencial la comunicacin proceso. Qu forma de comunicacin entre procesos estn utilizando? Relacionar este modelo para procesos en MINIX 3. Los empleados se comunican mediante paso de mensajes: pedidos, la comida, y las bolsas en este caso. En trminos de MINIX los cuatro procesos estn conectados por tuberas (pipes). - Comunicacion en ambos sentidos(send(P,message),receive(id,message)). - Communicacion indirecta(enviar(A,message),reciir(A,message)) puede ser usado en la Comunicacion entre procesos. Procesos UNIX(Llamadas al sistema). - Comunicaion simple: usando pipes direct communication related system calls: msgget(), msgctl(),msgsnd() and msgrcv(); - Comunicacin indirecta en llamadas al sistema: shmget();shmat();shmdt();shmctl();
20. Supongamos que tenemos un sistema de paso de mensajes utilizando los buzones. Al enviar a un buzn lleno o est tratando de recibir de una vaca, un proceso no se bloquea.En su lugar, se pone un cdigo de error de nuevo. El proceso responde al cdigo de error con slo de volver a intentarlo, una y otra vez, hasta que lo consiga. Tiene este sistema conduce a la raza condiciones? El sistema de paso de mensajes en s no dar lugar a condiciones de carrera, en el peor de los casos va a liderar el proceso inanicin. Se puede discutir acerca de lo que el sistema de mensajes, una vez que se colocan en el buzn, pero eso es una parte diferente del problema. No, no es indicativo de una condicin de carrera, pero est ocupado esperando, por lo que no conduce a condiciones de carrera (nada se pierde), pero est efectivamente ocupada y el mensaje de error proporciona informacin que impide que la carrera suceda.