Recopilación de
Preguntas y Respuestas de
Prácticos, Parciales y Exámenes para los temas de la
PRIMERA PARTE de
Sistemas Operativos { version 2016 }
[ En Construcción ] TEMAS: ● Estru Estructura ctura de los Sistem Sistemas as Operativ Operativos os ● Pr Proc oces esos os ● Pro Progra gramac macion ion Concurr Concurrent entee
Propiedades Generales de Sistemas Operativos ¿QUE ES un sistema operativo? [ Práctico 1 - Ejercicio 1 ]
Es un programa que administra el hardware y que provee un entorno para ejecutar aplicaciones al usuario. Actúa como intermediario entre el usuario y el hardware.
Mencione las METAS PRINCIPALES de un sistema operativo. [ Práctico 1 - Ejercicio 2 ]
- Brindar un entorno para que: Los usuarios puedan ejecutar programas de forma conveniente. Los programas usen el harware con facilidad y eficiencia. - Asignar recursos de manera justa y eficiente. - Controlar la ejecución de programas para prevenir errores y uso indebido de la computadora. - Administracion de la operacion y control de los dispositivos de E/S.
Mencione los COMPONENTES PRINCIPALES de un sistema operativo. [ Práctico 2 - Ejercicio Ejercicio 1 ]
Administración: Procesos Memoria Almacenamiento secundario Subsistema: E/S Red Archivos Sistema de Seguridad
Mencione las TAREAS PRINCIPALES de un sistema operativo. [ Práctico 1 - Ejercicio 3 ]
Administración de: 1) Procesos 2) Memoria 3) Seguridad Manejo de: 4) Interrupciones 5) Sistemas de archivos 6) Control de E/S
Mencione las tres actividades principales de un sistema operativo en lo que concierne a la GESTIÓN DE LA MEMORIA. [ Práctico 2 - Ejercicio 3 ]
● Mantener registro de que partes de la memoria están siendo utilizadas y por quién. ● Decidir cuáles procesos serán cargados a memoria cuando exista espacio de memoria disponible. ● Asignar y quitar espacio de memoria según sea necesario.
Mencione las tres actividades principales de un sistema operativo en lo que concierne a la gestión del ALMACENAMIENTO SECUNDARIO. [ Práctico 2 - Ejercicio 4 ]
● Gestión del espacio libre. ● Administración de memoria ● Planificacion de disco
Mencione los SERVICIOS FUNDAMENTALES del sistema operativo concernientes a la manipulación del SISTEMA DE ARCHIVO. [ Primer Parcial 2012 - Pregunta 1.4 ]
El SO define una abstracción lógica de la información, el archivo. Para su fácil localización se suelen ubicar dentro de directorios. De esta forma, el SO se encarga de: - Crear/Eliminar archivos y directorios - Proveer primitivas para la manipulación de archivos/directorios - Establecer la correspondencia (mapeo) entre el archivo y el dispositivo de almacenamiento (disco duro por ejemplo). - Resguardar la información.
Mencione las cinco actividades principales de un sistema operativo en lo que concierne a la gestión de procesos. [ Práctico 2 - Ejercicio 2 ]
Describa las tareas y servicios que debe proveer el sistemas operativo para la ADMINISTRACIÓN DE PROCESOS. [ Primer Parcial 2015 - Pregunta 1.2 ]
- Creación y destrucción de procesos - Suspensión y reanudación de procesos - Comunicación entre procesos - Sincronización entre procesos - (OPCIONAL) Mecanismos para prevenir la generación de deadlocks o para lograr salir de ellos.
Defina las PROPIEDADES ESENCIALES de los siguientes tipos de sistemas operativos: (a) Por lotes (b) Interactivos (c) De tiempo compartido. (d) De tiempo real. (e) Paralelos. [ Práctico 1 - Ejercicio 5 ]
(a) Se deja un pool de trabajos para que la CPU los corra sin interacción del usuario: Entrada -> Proceso -> Salida (b) El usuario puede interactuar para modificar el flujo del programa. (c) Cada usuario (o programa de usuario) ejecuta de forma concurrente, con una tasa elevada de despacho, el planificador le da un “time slice”, lo que termina haciéndolo multitarea y le hace creer al usuario que el SO es exclusivo para si. Overhead del Context Switch. (d) Son sistemas usados para tareas críticas como marcapasos en los que es necesario asegurar un margen de tiempo a la hora de ejecutar. Suelen tener planificadores apropiativos. Están los Duros que acotan tiempos de respuesta, sin almacenamiento secundario. Y los blandos que mezclan procesos de tiempo real con otros de prioridad más baja. (e) Son sistemas que ejecutan instrucciones en paralelo en varias CPUs. Están los altamente integrados que comparte memoria y bus de datos y los bajamente integrados que tiene cada uno su memoria y se interconectan entre sí, por ejemplo usando una red LAN de alta velocidad.
Describa los 5 servicios principales que debe brindar un sistema operativo. [ Práctico 2 - Ejercicio 5 ]
- Ejecución de programas y administración de procesos:
El sistema operativo carga el contenido (o algunas secciones) de un archivo en memoria e inicia su ejecución. No se puede confiar en un programa de usuario en la asignación correcta del tiempo de CPU. - Operaciones de Entrada/Salida: La comunicación con los discos, cintas magnéticas y otros dispositivos deben ser a muy bajo nivel. El usuario solo necesita especificar el dispositivo y la operacion a realizar en el, mientras que el sistema convierte esa solicitud en comandos específicos del dispositivos o controlador. - Manipulación de sistemas de archivos:
Hay muchos detalles en la creación, eliminación, asignación y nombrado de archivos, que los usuarios no deberían poder realizar. Los bloques de espacio de disco son usados por los archivos y se les debe hacer un seguimiento. Borrar un archivo requiere borrar información del nombre del archivo y liberar los bloques asignados. Las protecciones también deben ser revisadas para asegurar un adecuado acceso al archivo. - Comunicación entre procesos:
El pasaje de mensajes entre sistemas, requiere que los mensajes sean convertidos en paquetes de información, enviadas al controlador de red, transmitido a través de un medio de comunicación, y reensamblado en el sistema destino. El ordenamiento de los paquetes y la corrección de los datos participan en esto. - Detección y manipulación de errores (excepciones):
La detección de errores ocurre tanto al nivel de hardware como de software. A nivel de hardware, todas las transferencias de datos deben ser inspeccionadas para asegurar que los datos no se han corrompido en la transferencia. A nivel de software, la consistencia de los datos deben ser verificada, por ejemplo. Si la suma del número de bloques asignados y no asignados da el total de bloques del medio de almacenamiento. En esto, los errores son frecuentemente independientes de los procesos (como la corrupción de los datos en el disco), por lo que debe haber un programa global (el sistema operativo) que maneje todo tipo de errores. También, al tener errores procesados por el sistema operativo, los procesos no deben contener código para atrapar y corregir todos los errores posibles en un sistema.
Comente 2 formas de estructurar un sistema operativo en la fase de diseño. [ Práctico 2 - Ejercicio 11 ]
Meta de los usuarios: amigable, seguro, rápido Metas del sistema: fácil de diseñar implementar y mantener, portable, escalable
Comente ventajas y desventajas de los distintos enfoques en el diseño del sistema operativo. [ Práctico 2 - Ejercicio 12 ]
Monolitico V: Más rápido, no hay ocultación de información. D: No es modulable, difícil cambiar un parámetro, Menos seguro.
Capas (Win) V: Modularidad, a la hora de implementar y debuguear D: Overhead en el pasaje de capas (hay ocultación de información). Costoso definir capas. Micronúcleo (interfaz de comunicación) V: Mas seguro (ya que sacando los servicios básicos de manejo de memoria, el resto se ejecuta en modo usuario), mas simple, cambiar servicios no requiere cambiar el kernel, mas portable D: Menos performante, debido al overhead en la comunicación entre los servicios.
Describa el diseño de un sistema operativo con el enfoque de micronúcleo (microkernel). [ Práctico 2 - Ejercicio 13 ]
El programa de usuario hace un system call al kernel y el kernel llama al servicio adecuado que implemente ese servicio (file system) y luego este servicio retorna al kernel el valor que este espera.
Multiprocesadores Mencione la principal VENTAJA DE LA MULTIPROGRAMACIÓN. [ Práctico 1 - Ejercicio 4 ]
¿Cuál es la principal ventaja de la multiprogramación? ¿Qué problemas nuevos le acarrea al sistema operativo? [ Primer Parcial 2012 - Pregunta 1.1 ]
La principal ventaja de la multiprogramación es fundamentalmente el objetivo que persigue, aprovechar al máximo el uso de la CPU. Lo realiza multiplexando dicho recurso entre varios procesos cargados en memoria, asegurándose de tener siempre un proceso que ejecutar. Un primer problema que surge a simple vista de este esquema, es que al multiplexar la CPU entre varios procesos, se debe dar lugar a algoritmos de Planificación, y la performance del sistema se ve fuertemente impactada por la política que apliquen. A su vez, dado que el recurso CPU en este esquema (multiprogramado) es compartido entre varios procesos, SO debe acarrear el problema de la concurrencia de procesos, los que compiten por los ciclos de CPU, y pudiendo dar lugar a inconsistencias si los procesos son de tipo cooperativo.
Los sistemas multiprocesadores, ¿donde caen dentro de la taxonomía de Flynn? [ Práctico 1 - Ejercicio 6 ]
MIMD - Multiple Instrucción Multiple Data
A nivel de capacidad de cómputo, ¿por qué los sistemas multiprocesadores (no distribuidos) no pueden escalar como lo hacen los sistemas de memoria distribuida? [ Práctico 1 - Ejercicio 7 ]
Porque el uso del bus de datos es un cuello de botella ya que este y la memoria son únicos y compartidos para todo el sistema.
Describa las diferencias entre multiprocesamiento simétrico y asimétrico. En un sistema multiprocesador, ¿qué ventajas presenta un sistema de multiprocesamiento simétrico ante uno asimétrico? [ Práctico 1 - Ejercicio 8 y 9 ]
El multiprocesamiento simétrico trata a todos los procesadores como iguales, y la E/S puede ser procesada en cualquier CPU. Cuando es asimétrico, hay un CPU maestro y los restantes CPU’s son esclavos. El maestro distribuye tareas entre los esclavos, y la E/S es usualmente procesada solo por el maestro. Los multiprocesadores pueden ahorrar dinero al no tener que duplicar fuentes de poder, carcazas y periféricos. Pueden ejecutar programas mas rapido y tener una confianza mayor.
Pero hay más complejidad en su hardware y software que en los de un solo procesador. La diferencia es que el asimétrico está diseñado para que se ejecuten jerárquicamente ciertos procesos en ciertos procesadores para evitar los problemas de concurrencia (pisada de memoria) y el simétrico necesita que el núcleo sea reentrante. El código del SO y el ancho de banda de la memoria es crítico para que sea escalable. Si el SO es reentrante, puede reducir el tiempo de cómputo ya que es más probable que todos los procesadores estén en uso, además es más escalable.
Seguridad Describa los mecanismos de protección que brinda el hardware para que el sistema operativo pueda controlar el sistema. [ Práctico 1 - Ejercicio 13 ]
- Modo Dual: Se provee de al menos dos modos de operación. Modo usuario (user mode): en este modo de ejecución se puede ejecutar un conjunto reducido de instrucciones de hardware. Los procesos a nivel de usuarios ejecutan en este modo. Modo monitor (monitor mode): en este modo todas las instrucciones de hardware están disponibles. El sistema operativo es el único que debe ejecutar en este modo. Un bit, llamado mode bit, es agregado al hardware para indicar el modo actual. - Protección de E/S: Todas las instrucciones de Entrada/Salida son privilegiadas. Es necesario restringir que los procesos a nivel de usuario no accedan directamente a los dispositivos, sino que deben hacerlo a través del sistema operativo. Por eso, se define que todas las instrucciones de E/S son privilegiadas. De esa forma, se asegura que un programa a nivel de usuario nunca pueda lograr cambiar el modo a monitor. Un usuario podría ingresar una nueva interrupción, modificar una ya existente, o cambiar el vector de interrupción y luego generar un trap (interrupción por software) para que ejecute. - Protección de Memoria: Evaluación de las direcciones de memoria a través de la MMU. Es necesario proteger la memoria del núcleo (p.ej.: el vector de interrupciones) y, a su vez, proteger el acceso de memoria entre los distintos procesos (un proceso no debería acceder a la memoria de otro). El sistema debe lograr saber si cada dirección generada por un proceso es válida. Una forma es utilizar dos registros: Base: Contiene la dirección de memoria física más baja que puede acceder. Límite: Contiene el tamaño del bloque de memoria a partir del registro base.
- Protección de CPU: Introducción de un timer que permite limitar el uso de CPU. Una vez que a un proceso se le asigna un recurso procesador, puede entrar en una iteración infinita (infinite loop) y no retornar nunca más el control al sistema. Deben existir mecanismos de protección de uso del procesador. Una alternativa es la utilización de un timer que interrumpa el procesador cada cierto tiempo. El sistema operativo al asignar la CPU carga un contador. Cada vez que la interrupción de timer se genera se ejecuta la rutina de atención correspondiente. En la rutina de atención de la interrupción el contador es disminuido. Si alcanza al valor 0, se le quita el recurso procesador al proceso y se invoca al planificador para que seleccione otro. La instrucción que permite cargar el contador debe ser privilegiada.
Explique cómo la distinción entre modo monitor y modo usuario sirve de protección. [ Práctico 1 - Ejercicio 14 ]
En modo monitor , solo el SO (programa que inició al bootear cuando arranca la PC en modo monitor) ejecuta todas las instrucciones. En modo usuario, se acceden a ciertas instrucciones y si intenta ejecutar una no permitida se dispara una interrupción que la atiende el SO y suele matar al proceso.
¿Cuáles de las instrucciones siguientes deben ser privilegiadas? [ Práctico 1 - Ejercicio 15 ]
Cambio al modo usuario? No. (De todas maneras, por el modo dual no tiene sentido que el usuario quiera cambiar a modo usuario ya que siempre está en usuario) Cambio al modo monitor? Si. Establecer al valor del temporizador del sistema? Si. Leer el reloj del sistema? No. Lectura de la memoria protegida por el modo monitor. Si. Escritura de la memoria protegida por el modo monitor? Si. Desactivar las interrupciones? Si.
Algunos sistemas de computación no cuentan con un modo de operación privilegiado en hardware. Considere si es posible construir un sistema operativo seguro para este tipo de computadores. Presente argumentos para ambos puntos de vista, cuando es posible y cuando no lo es.
[ Práctico 1 - Ejercicio 16 ]
No es posible a nivel de hardware ya que la CPU no sabe cuando una instrucción es del SO o de un programa de usuario. El sistema operativo para una maquina así tendría que tener el control (modo monitor) en todo momento. Esto podría lograrse de dos maneras: a. Interpretación de software de todos los programas de usuario (como algunos sistemas BASIC, Java y LISP, por ejemplo). El intérprete de software debería proveer lo que el hardware no provee. b. Requerir que todos los programas sean escritos en un lenguaje de alto nivel, asi todo el código objeto es producido por el compilador. El compilador debería ser capaz de generar los controles de seguridad que faltan en hardware.
Algunos de los primeros computadores protegían el sistema operativo colocándolo en una partición de memoria que no podía ser modificada por los programas de usuario ni por el sistema operativo mismo. Describa dos problemas que podrían surgir con un esquema semejante. [ Práctico 1 - Ejercicio 17 ]
● La memoria puede ser leída por el usuario y esto podría generar problemas de seguridad (Ej: En el código del sistema hay una clave que se utiliza para encriptar información). ● El sistema no es dinámico, o es dificil de modificarlo o actualizarlo. Si se quisiera mantener la protección de la partición de memoria del sistema se tendría que escribir todo el sistema actualizado a una nueva porción de memoria protegida. Teniendo en cuenta que el sistema normalmente escribe en memoria en su ejecución normal, va a escribir en una porción de memoria no protegida y esa info podría ser modificada por el usuario.
Nombre dos problemas de seguridad que aparecen al implementar un sistema operativo multiprogramado. Explique una forma de solucionar cada uno. [ Primer Parcial 2014 - Pregunta 1.3 ] (cada una de estas soluciones es tán más explayadas en una pregunta anterior bajo el tema Seguridad)
Los procesos podrían querer ejecutar instrucciones privilegiadas como acceder directamente a los dispositivos de entrada salida (y no a través del sistema operativo), tomar control del CPU por tiempo indefinido, etc Se soluciona con: - Modo Dual: Se provee de al menos dos modos de operación.
-
Protección de E/S: Todas las instrucciones de Entrada/Salida son privilegiadas. Protección de CPU: Introducción de un timer que permite limitar el uso de CPU.
Los procesos podrían intentar leer direcciones de memoria de otros procesos: - Protección de Memoria: Evaluación de las direcciones de memoria a través de la MMU.
Dispositivos ¿Qué componentes inciden en la velocidad del disco? [ Práctico 1 - Ejercicio 11 ]
● Tiempo de posicionamiento: (positioning time) ● Movimiento de cabezal (seek time) ● Giro del plato (rotational latency) ● Tasa de Transferencia: (transfer rate) Ancho del bus de datos y cantidad de cabezales, tasa en bits/s que demora la transferencia del disco a la computadora.
Cachés ¿Cuándo son útiles los caches? (a) ¿Qué problemas resuelven? (b) ¿Qué problemas causan? (c) Si un caché puede hacerse tan grande como el dispositivo para el cual está agilizando la transferencia de información (por ejemplo, un cache tan grande como un disco duro) ¿Por qué no hacerlo de ese tamaño y eliminar el disco duro? (d) [ Práctico 1 - Ejercicio 10 ]
Respuesta a) Cuando hay una memoria rapida y una lenta y debe de haber transferencia de datos, (registros de CPU y RAM) diferencia de lectura y escritura entre dispositivos. Respuesta b) Baja performance por acceso lentos a memoria, esperas por recurso ocupado. Cuando uso mucho un dato, ya que esta memoria es mas rapida y por ende tener un caché match aumenta la performance. Cuando Tengo un bus de memoria único, ya que esto genera un cuello de botella. Respuesta c) Más manejo de memoria, paginado, Políticas de reemplazo, performance con la cache miss. En multiprocesador o DMA puede quedar inconsistente con la memoria Global (RAM). Write Thru y Write Back. Respuesta d)
Una razón es el costo. Como la caché es más cara y la memoria y los discos de almacenamiento masivo son más baratos y más grandes, se balancea la cantidad que hay de estos 3 teniendo en cuenta costo, tamaño y necesidad. La otra razón es que la caché es volátil, por lo que no tendría sentido sustituir un medio de almacenamiento persistente (disco duro) por uno que no lo es (caché). Las caché son útiles cuando dos o más componentes necesitan intercambiar datos, y las velocidades de transferencia de cada uno son diferentes. Las caches resuelven el problema de la transferencia proporcionando un buffer de velocidad intermedia entre la de los dos componentes. Si el dispositivo rápido encuentra los datos que necesita en la caché, no necesita esperar por el dispositivo más lento. Los datos en la caché deben mantenerse consistentes con los datos en los componentes. Si el valor de un dato en el componente cambia y este dato también está en la cache, la cache debe ser actualizada tambien. Este es un problema frecuente de los sistemas multiprocesador donde mas de un proceso puede acceder a un dato. Un componente podría ser reemplazado por una cache de igual tamaño, solo si: El caché y el componente tienen equivalente capacidad para retener información (esto es, si el componente retiene la información cuando no hay electricidad, el cache tambien deberia retenerla) El costo del cache es accesible, porque un almacenamiento más rápido tiende a ser más caro.
Device Drivers ¿Para qué sirven los manejadores de dispositivos (device drivers)? [ Primer Parcial 2012 - Pregunta 1.2 ]
¿Cuál es el propósito de los manejadores de dispositivos (device drivers)? ¿Son una componente de hardware o software? [ Práctico 1 - Ejercicio 12 ]
El subsistema de E/S está compuesto por diversos periféricos. Éstos, están compuestos de dos partes: dispositivo y controlador (parte del periférico que contiene su inteligencia y por tanto lo controla). El device driver el software que se comunica con la controlador. Son provistos por cada fabricante y son incorporados al sistema operativo. Podemos ver a los device drivers como “manuales”, de esta forma, ante una solicitud de E/S, el SO consulta a este “manual” y ve cómo comunicarse con la controladora del dispositivo
solicitado. O también se puede decir que, traducen las instrucciones del SO de E/S a protocolos específicos de la controladora del Hardware. SO (read/write) <---> Device Driver (kernel o dinamico) <---> Firmware(controladora) <---> Bits (electricidad al HW)
Describa dos maneras de cargar un manejador de dispositivo (device driver). [ Primer Parcial 2015 - Pregunta 1.1.a ]
(Se dan las 3 maneras posible pero la pregunta solo pedia 2) - Especificado en un archivo de configuración y cargado al iniciar el sistema. - Cargado por demanda en el momento que se conecta un nuevo dispositivo. - Precargados en el núcleo del sistema.
Indique tres métodos posibles para realizar una operación de E/S con una Controladora [ Primer Parcial 2013 - Pregunta 1.1 ]
- Polling(Consulta): El procesador le pide a la controladora que ejecute una operación de E/S y se queda preguntando en busy-waiting hasta que la controladora finalice el pedido. - Interrupciones: El procesador le pide a la controladora que ejecute una operación de E/S y queda liberado para realizar otras tareas. Cuando la controladora termina de realizar el pedido, levanta una interrupción que es atendida por el procesador. - DMA: El procesador le pide a la DMA Controller que le pida a la controladora que ejecute una operación de E/S. Cuando la controladora termina de realizar la operación, la DMAC se encarga de guardar el resultado en la memoria, sin necesidad de que el procesador tenga que intervenir.
¿Para qué sirve la protección de memoria? ¿Quién realiza este control? [ Primer Parcial 2013 - Pregunta 1.2 ]
La protección de memoria tiene como objetivo establecer el área de memoria legal a la que un proceso puede acceder, de forma de evitar que el proceso pueda acceder a áreas restringidas de memoria (como el vector de interrupciones) y pueda llegar a corromper el funcionamiento del sistema. El SO tiene acceso irrestricto a la memoria, pudiendo cargar y desalojar a los procesos en caso de ser necesario. Para establecer el área de memoria válida de un proceso se incorporan dos registros especiales a su PCB, el registro base que contiene la dirección más
pequeña a la que el proceso puede acceder, y el registro límite que contiene el tamaño del intervalo. El componente de hardware encargado de verificar que las direcciones lógicas generadas por el proceso es la MMU (Memory Management Unit), quien compara la dirección generada en base a los registros base y límite del proceso, y en caso de no estar dentro del rango genera una trap que es capturada por el SO, llevando a cabo las acciones pertinentes.
A su vez, las instrucciones que cargan los registros base y límite son privilegiadas, por lo que solo el SO puede ejecutarlas.
Spooling ¿Cual es el beneficio de usar spooling? [ Primer Parcial 2015 - Pregunta 1.1.b ]
Aumenta el uso de la CPU dado que la misma no debe esperar por el procesamiento de dispositivos lentos. En lugar de esperar a que terminen, se escriben los requerimientos en el spooler y la CPU queda libre para hacer otras tareas. Cuando el dispositivo queda libre lee el siguiente trabajo a realizar desde el spooler.
Procesos Defina que es un proceso a nivel de un sistema operativo. [ Práctico 3 - Ejercicio 1 ]
Un proceso es un programa “en ejecución” con su program counter, registros y variables (PCB y tiene asignado un espacio de memoria, código fuente, datos, heap y stack). Tiene asignado un estado para que el scheduler planifique su ejecución.
Indique ¿qué es el PCB? Enumere y describa 5 campos del mismo. [ Primer Parcial 2014 - Pregunta 1.1 ]
¿Que es el PCB? Describa sus campos más importantes. [ Práctico 3 - Ejercicio 4 ]
Es un bloque de control de proceso, que describe a un proceso en su totalidad, útil para el cambio de contexto de la CPU Campos mas importantes: - Estado: guarda el estado del proceso (listo, waiting,etc) - PID: identificador del proceso - PC: ultimo program counter en la CPU antes de perderla - Registros: de la CPU para el cambio de contexto, si la Arq lo permite están los punteros del stack, indefinido cuando se está ejecutando. - Limites de memoria: base y límite (para protección que se le cargan a la MMU) “Memoria” mi y compartida - Lista de archivos abiertos: punteros a archivo abiertos y punteros de donde esta parado. Recursos (SW/HW semáforos, dispositivos) - Puntero de acceso al padre y a los hijos - Información contable: Como el tiempo que lleva ejecutando - Planificación - Prioridad - CPU que me ejecuta
Fork Cuando se hace un fork() ¿los procesos que se crean comparten el stack? ¿y el heap? [ Primer Parcial 2014 - Pregunta 1.5 ]
El proceso hijo es completamente independiente del padre, no comparten nada. Cuando se crea un hijo se le da un espacio de memoria nuevo que está inicializado con los mismos datos que el padre. O sea que si bien la memoria que ven es la misma son dos copias distintas y si uno la cambia el otro no se entera. A partir de ese momento cada proceso sigue su curso por lo que no comparten nada, ni el stack ni el heap ni los registros. Tampoco comparten las variables ni el código. Lo que ocurre es que al ser una copia exacta el proceso hijo tiene en sus variables los mismos valores que el proceso padre y también tiene el mismo código (y el mismo contenido en el stack y el heap). Pero cada proceso es libre de modificar sus secciones luego del fork.
Cambio de contexto Describa brevemente el proceso de cambio de contexto de la CPU. [ Primer Parcial 2013 - Pregunta 1.3 ]
Indicar la secuencia de pasos que sigue el sistema operativo al realizar un cambio de contexto entre dos procesos. [ Práctico 3 - Ejercicio 5 ]
El cambio de contexto es la tarea que lleva a cabo del SO cuando un proceso abandona la CPU, ya sea en forma voluntaria o involuntaria (en caso de tener un planificado expropiativo), debiendo asignar la CPU a otro proceso que este pronto para ejecutar. El SO ante un cambio de contexto debe llevar a cabo principalmente dos etapas: - Respaldo: - Se debe salvar el contexto en el que estaba el proceso, esto incluye el valor de su PC, registros, información de punteros de memoria, etc en su PCB. - Se debe cambiar el estado del proceso de ejecutando al que corresponda (Terminado, Esperando o Listo) - Reanudación: - Se debe cargar el contexto del proceso al que se le fue asignado la CPU a partir de su PCB, como PC, valor de registros, etc, de forma que el proceso pueda continuar su ejecución como si nada hubiese pasado - Se debe cambiar el estado del proceso que ahora tiene el CPU a ejecutando.
Threads Describa el modelo the threads MxN (many to many). [ Primer Parcial 2013 - Pregunta 1.4 ]
En el modelo de threads MxN tenemos un conjunto de User Threads asignados a un conjunto de Kernel Threads. Para que el modelo tenga sentido, la cantidad de Kernel Threads debe ser menor a la cantidad de User Threads, sino se degeneraría en un modelo 1x1 que podría llegar a tener kernel threads “de sobra”. En este esquema, el planificado a nivel usuario asigna los User Threads a los Kernel Threads, y pueden ejecutarse tantos User Threads como Kernel Threads estén asignados a un procesador (en caso de tener un sistema multiprocesador). Una gran ventaja de este esquema es que si un thread realiza una llamada bloqueante al sistema, el proceso entero no se bloquea (como ocurre en el modelo Mx1), sino que puede planificarse otro Kernel Thread que tenga asignado un User Thread y ejecutar sin problemas.
Cite dos ventajas que tienen los hilos (threads) sobre los procesos. ¿Qué desventaja importante tienen? Sugerir una aplicación que se beneficiaría del uso de hilos y una que no lo haría. [ Práctico 3 - Ejercicio 6 ]
Ventajas: Compartes el text y el data del proceso, por lo cual es mas liviano crear en hilo que un proceso (ya que no hay que hacer system calls al kernel para crearlos y compartir recursos) y sus cambio de contexto es mas rapido (PC registros de CPU y Stack, pues su bloque de control es menor). Mejor tiempo de respuesta, ya que no me tengo que quedar esperando por tareas en el codigo, que puedan ser ejecutadas por otros hilos, E/S, red, proceso, rendering, etc. Cada uno en uno o varios hilos. Desventajas: Dificulta la programación, ya que puedo pisar memoria (punteros a archivos, etc) y es difícil de debugear pues no es tan fácil de reproducir, ya que el incidente puede suceder a veces. Cualquiera que comparta el text o el data y los recursos, por ej tratamiento de imágenes Ya que suelen ser grandes(en memoria o en archivo). Uno que no comparta datos y haga tareas independientes que puedan ser paralelizables, donde se requiera mayor control de la memoria compartida.
Describa las acciones del núcleo del sistema operativo (kernel), cuando este conmuta el contexto entre: Hilos y Procesos [ Práctico 3 - Ejercicio 7 ]
.H solo cambia registros de PC y el Stack Pointer, nada de límites de memoria ni lista de recursos .P Cambia todo.
¿Qué diferencias hay entre los hilos a nivel de usuario (user-level threads) y los hilos a nivel del núcleo (kernel-level threads)? ¿En qué circunstancias es un tipo mejor que el otro? [ Práctico 3 - Ejercicio 8 ]
Los de usuario son una biblioteca que “emula” hilos, con su creación, planificación y cambio de contexto (PC, SP), brinde o no soporte el SO para hilos (con cambio de contextos más rápido que de kernel). Los de kernel , implica que el SO brinda soporte para hilos y los planifica y hace el cambio de contexto el SO, el PCB soporta varios PCs y SPs, que se pueden asignar a varias cpu o cores distintos.
Los de usuario te abstraen de la implementación del SO (independiza de la estrategia), y luego si el kernel soporta threads los mapea según su estrategia(MxM o MxN) y sino no, te ve como un solo proceso(Mx1), atendiendo solo de a un thread, con lo cual si ese thread se bloquea el proceso se bloquea. En el caso que soporte thread el kernel, el proceso no se bloquea si un thread se bloquea. El de usuario es mejor en SO sin soporte de threads, o en los que yo quiera decidir como planificar mis threads y no dejarselos al SO. El otro es mejor en arquitecturas multinúcleo y SO que soporte threads.
Qué cambios realizaría al bloque principal del proceso (PCB–Process Control Block) de un sistema que no soporta hilos (threads) si se quisiera que soportara? [ Primer Parcial 2012 - Pregunta 1.5 ]
El PCB es una estructura de datos que representa al proceso. Dado que sus principales componentes son el pid (process id), el valor del PC, el valor de los registros y variables, el estado, entre otros; si quisiéramos que el sistema soportara hilos deberíamos incluir por cada thread un PC, un espacio de stack y registros propios. El resto de los componentes sería compartido entre todos los threads del proceso.
System Calls ¿Para qué sirven las llamadas al sistema (system calls)? [ Práctico 2 - Ejercicio 6 ]
Para que un proceso a nivel de usuario pueda solicitar servicios del sistema operativo (que solo se ejecutan en modo monitor).
¿Quienes invocan los llamados al sistema? [ Práctico 2 - Ejercicio 7 ]
Los procesos de usuario.
Describa las 5 clasificaciones básicas de los llamados al sistema. [ Práctico 2 - Ejercicio 9 ]
- Control de procesos - Gestion de archivos - Gestion de dispositivos
- Gestion de info del sistema - Comunicaciones
Describa brevemente el proceso de invocar un llamado al sistema (system call). Mencione tres formas posibles de pasaje de parámetros entre el proceso de usuario y el núcleo (kernel). [ Primer Parcial 2012 - Pregunta 1.3 ]
Describa las 3 formas utilizadas para pasar parámetros en los llamados al sistema. [ Práctico 2 - Ejercicio 8 ]
Los system call son la interfaz generada por el SO para que las aplicaciones de usuario puedan consumir los distintos servicios que el SO brinda. Ante un system call, se deben llevar a cabo las siguientes tareas: - Cargar los parámetros - Cargar el número del system call en el registro específico - invocar a la interrupción por software adecuada - cambiar el bit a modo monitor - invocar al manejador de la interrupción que controla que el número de system call pasado en el registro sea menor que el mayor del sistema e invoca al system call correspondiente - El valor retornado por el system call es puesto en un registro específico. - Volver a modo usuario
Las tres formas de pasar parametros en los syscalls son: - Pasar parametros en registros, Tiene como desventaja que acota el número de parámetros que se le pueden pasar al system call. - Pasar un registro indicando direcciones de bloques de memoria con parametros. - Los parametros pueden ser ubicados en el stack por los programas y quitado por el sistema operativo.
Indique los pasos que deben realizarse efectuar un llamado al sistema (system call), indicando quién realiza cada paso. [ Primer Parcial 2015 - Pregunta 1.5 ]
1) El proceso de usuario guarda los parámetros del system call y el número de system call a invocar donde corresponda 2) El proceso de usuario invoca a una interrupción por software 3) El hardware cambia la CPU a modo monitor e invoca al manejador de la interrupción correspondiente (cuyo código es parte del SO) 4) El SO procesa la system call y guarda el resultado donde corresponda 5) El planificador del SO selecciona el próximo proceso a ejecutar
6) Se pasa el CPU a modo usuario y se pasa el control al nuevo proceso
Planificación Defina la diferencia entre planificación expropiativa (preemptive) y no expropiativa (non preemptive). Explique en qué ámbitos sería preferible utilizar uno u otro mecanismo. [ Práctico 3 - Ejercicio 9 ]
Uno no expropiativo llama al planificador en el momento en un proceso se bloquea y cuando un proceso finaliza.(Te deja la CPU hasta que terminas o te bloqueas) El expropiativo llama al planificador cada vez que un proceso cambia de estado, de ejecutando a pronto por una interrupción, de bloqueado a pronto por int E/S, cuando se crea un proceso.(Te quita la CPU cuando hay un proceso de mayor prioridad y se produce un cambio de estado)
¿Qué ventaja tendría definir cuántos de tiempo de diferente tamaño en distintos niveles de un sistema de colas multinivel? [ Práctico 3 - Ejercicio 10 ]
La ventaja es que se atienden primero los procesos de menor cpu burst, esto permite un sistema más interactivo, ya que estos tiene bajo cpu burst se bloquean rápido (E/S), por lo cual los de alta y media cpu burst se ponen en una cola de mayor cuánto de tiempo ya van a ser atendidos luego de los baja cpu burst, por lo general los de la cola de poca prioridad (cuánto alto) son procesos que no requieren interacción de usr.
Suponga que un algoritmo de planificación favorece los procesos que han consumido la menor cantidad de tiempo de procesador en el pasado reciente. ¿Por qué este algoritmo favorecería a los procesos limitados por E/S pero sin postergar infinitamente los procesos limitados por CPU? [ Práctico 3 - Ejercicio 12 ]
Los procesos I/O-bounds no consumen cpu mientras están bloq ueados, lo cual haría que su consumo de cpu en le pasado reciente sea bajo, haciendo que el planificador los pueda elegir con mayor probabilidad. Los procesos de CPU-bouns no se postergan indefinidamente pues luego de un tiempo van a pasar a estar mas all del pasado reciente y por ende en el pasado reciente su consumo de CPU va a ser 0, haciéndolos buenos candidatos para ser elegidos por el planificador.
Indique una posible estrategia de scheduling para usar en un sistema de tiempo real estricto (hard) y justifique la respuesta. [ Primer Parcial 2013 - Pregunta 1.5 ]
En un sistema de tiempo real estricto tenemos un conjunto procesos que deben e jecutar y entregar una respuesta al usuario dentro cierto margen temporal, de lo contrario el sistema falla. En este caso, no necesario tener una estrategia de planificación expropiativa, ya que si proceso ejecuta lo hace por un periodo corto de tiempo.
¿Qué tareas realizan un despachador y un planificador? [ Primer Parcial 2014 - Pregunta 1.2 ]
Planificador: Es el responsable de seleccionar el próximo proceso a ejecutarse de entre todos los que están listos, utilizando una estrategia de planificación (SJF, Prioridad, RR, etc) Despachador: Da el control de la CPU al proceso seleccionado por el planificador de corto plazo. El despachador realiza el cambio de contexto de procesos. La latencia de l despachador debe ser la menor posible.
¿Cuál es la diferencia entre los planificadores de largo plazo, de mediano plazo y de corto plazo? [ Primer Parcial 2014 - Pregunta 1.4 ]
Largo plazo: - Determina qué programas son admitidos al sistema para ejecución - Controla el grado de multiprogramación - Mientras más procesos son admitidos, cada uno tendrá un porcentaje menor de uso del procesador Mediano plazo: - Determina si agregar más programas a los que ya están parcialmente o totalmente en memoria principal Corto plazo: - Determina qué proceso es ejecutado en el procesador - Se ejecuta frecuentemente y debe ser eficiente - Evento típicos que desencadena al despachador: interrupciones del reloj uso del procesador totalmente en memoria principal (quantum), interrupciones de I/O, llamados al sistemas, señales, etc.
Máquinas Virtuales Indique las ventajas y desventajas del uso de máquinas virtuales. [ Primer Parcial 2015 - Pregunta 1.4 ]
(se acepta que no mencionen alguna) Ventajas:
-
-
-
Seguridad: Los procesos en cada máquina virtual son completamente independientes de los procesos en las otras máquinas virtuales (por lo que se mejora la seguridad del sistema). Alta disponibilidad: En caso de falla del hardware se puede levantar otra máquina virtual rápidamente en otro hardware (con lo cual se mejora la disponibilidad del sistema). Flexibilidad: se puede correr un SO en una arquitectura diferente Facilidad de desarrollo: Permite ejecutar un sistema operativo de test sin correr riesgos con el sistema real.
Desventajas:
-
Las operaciones tardan más tiempo que en una máquina real (puesto que hay que traducir algunas operaciones) Los tiempos de respuesta son muy poco predecibles
Concurrencia Varios sistemas operativos populares para microcomputadores ofrecían poco o ningún soporte para el procesamiento concurrente. Comente las principales dificultades que el procesamiento concurrente añade al sistema operativo. [ Práctico 3 - Ejercicio 2 ]
Tiene que brindar mecanismos para manejar mutua exclusión, y eventualmente operaciones atómicas de lo contrario los procesos de programas reentrantes pueden pisar recursos compartidos (interferencia) como memoria compartida. También herramientas de comunicación y sincronización IPC (Inter-Process-Communication)
Rendezvous / Citas - ADA Describa la semántica/funcionamiento de la siguiente sentencia de un programa en ADA: [ Primer Parcial 2015 - Pregunta 1.3 ] Select When A > 15 => accept ENTRADA1 (a:in integer) do v:= a end ENTRADA1 v:= f(v) OR When B > 0 accept ENTRADA2;
v:= v*2 End Select
Al inicio se evalúan las dos guardas una sola vez. Las entradas que evalúan la guarda como verdadera quedan habilitadas, las otras es como si no existieran. Si las dos guardas dan falsas se produce un error. Si hay solicitudes previas para alguna de las entradas abiertas se produce el encuentro. En caso de haber solicitudes para las dos entradas (abiertas) se atiende una entrada al azar. Para cada entrada se forma una cola de atención FIFO. Si no había solicitudes previas se bloquea hasta que aparezca una solicitud para alguna de las entradas habilitadas. Una vez que se produjo el encuentro el proceso que lo llama se bloquea hasta que termine de ejecutarse el cuerpo del accept (para ENTRADA1) y luego se ejecuta el comando que sigue al accept (v:= f(v) para ENTRADA1 y v:= v*2 para ENTRADA2).
-