Pregunta 1. Protección de memoria por hardware

La única forma de garantizar una cierta protección de memoria sin recurrir a hardware específico consiste en que el sistema operativo interprete el código del usuario instrucción por instrucción, con lo que la eficiencia del sistema caería prácticamente a cero. Así y todo, el propio código del sistema operativo, el vector de interrupciones, etc., no estarían en sí mismos protegidos y serían vulnerables a todo tipo de accesos indebidos.

Pregunta 2. Supuesto de planificación de procesos

¿Qué ventajas potenciales ofrece la política?

La memoria tenderá a estar ocupada por muchos procesos pequeños en ver de pocos procesos que ocupan más espacio: aumenta el grado medio de multiprogramación y por ello el rendimiento de la CPU y los periféricos, dado que es más probable que se hallen ocupados. Al haber más procesos por unidad de tiempo, se tiende a incrementar la productividad (número de procesos finalizados por unidad de tiempo).

¿Qué inconvenientes pueden aparecer? ¿Soluciones?

El riesgo de postergación indefinida de los procesos con alta demanda de memoria. La solución es lograr un tiempo de espera máximo para todos los procesos por medio, por ejemplo, del envejecimiento. El riesgo no se elimina del todo si la gestión de la memoria no es capaz de eliminar el problema de la fragmentación de la memoria libre.

Aparte, no se garantiza una adecuada mezcla de procesos entre intensivos en E/S o CPU, porque no se seleccionan a los procesos por sus demandas en esos recursos, sino por su ocupación de espacio.

¿Podrá influir esta política en las características de las aplicaciones que escriban los programadores?

Los programadores tenderán a escribir programas que consuman menos memoria, tanto en código como en datos; y descompondrán las aplicaciones en programas independientes que ejecuten secuencial o concurrentemente (si este sistema es multiprogramado).

¿Bajo qué condiciones podría afirmarse que este sistema es interactivo?

Sólo en ciertos casos. Por ejemplo, que sea un sistema no multiprogramado (el proceso en ejecución podría ser interactivo). Si es multiprogramado, la interactividad no tiene que ver con la elección de procesos más cortos, sino con la gestión de los procesos que están en ejecución. Esta política más bien impide la interactividad (el tiempo de respuesta no está acotado).

Pregunta 3. OPERACIÓN DE ENTRADA MEDIANTE TÉCNICA DE SPOOLING

Módulos Lógicos que intervienen: el proceso de usuario, el proceso spooler del dispositivo, el procedimiento genérico de E/S (DOIO), los manejadores de dispositivos de disco y del dispositivo de entrada y las rutinas de tratamiento de interrupción asociadas a la finalización de transferencia de datos (lectura completa del dispositivo de entrada y lectura/escritura de disco).

Descripción general: primeramente se ha de crear una imagen de los datos de entrada, provenientes del dispositivo gestionado mediante spooling, en un fichero de spool en disco, para ello intervienen el proceso spooler, procedimiento DOIO, los manejadores de los dispositivos y las rutinas de interrupción para el tratamiento de los eventos "fin de lectura del dispositivo de entrada spooleado" y "fin de escritura en disco". En segundo lugar, y una vez creado el fichero de spool, el proceso de usuario podrá realizar sus lecturas del dispositivo en cuestión (para él será transparente el hecho de que lo que lee son imágenes de los datos en disco), para ello ha de intervenir procedimiento DOIO, manejador de disco y rutinas de atendimiento de los eventos "lectura de disco finalizada" y "escritura de disco finalizada".

Descripción de los módulos:

Proceso de usuario Proced. DOIO

. Identificar disp.

. Chequeo de err.

DOIO(stream,mod,cant,dest,sem) Construir IORB

. Encolar IORB

. signal(pet_pend)(**)

wait(sem)(*) exit;

Manejador de dispositivo Rutina de Interrup.

Wait(pet_pend)(**) Buscar Descriptor

Tomar IORB Signal(oper_comp)(***)

Iniciar Transf.

Wait(oper_comp)(***)

Chequeo de err.

Signal(sem)

Borrar IORB

(*) sem: semáforo definido por el proceso de usuario y utilizado para operación de lectura de datos.

(**) pet_pend: semáforo característico de cada manejador de dispositivo existente en el sistema.

(***) oper_comp: semáforo característico de cada dispositivo físico del sistema.

Nota: NO se ha utilizado la técnica de buffering en la descripción realizada.

Pregunta 4. Descripción de la operación lseek

Sintaxis lseek: lseek(fd, despl, origen)

fd: Descriptor válido de fichero

despl: número de bytes a desplazar

origen: desde donde (principio, posición actual y final)

Datos necesarios para la descripción:

LB = tamaño de bloque del Sist. de Ficheros (dato dado)

NB = Número de bloques del Sist. de Ficheros (dato dado)

PF = Valor actual del puntero a fichero (se asume)

TF = Tamaño del fichero (se asume)

PB = Dirección primer bloque asignado al fichero (se asume)

LE = Tamaño del campo de enlace (a calcular)

BE = Bytes efectivos de almacenamiento (a calcular)

BA = Bloque actual donde se encuentra PF (a calcular)

Algoritmo:

0. Variables auxiliares:

np = nuevo valor del puntero del fichero

b = dirección de bloque

bnp = bloque afectado por np

onp = desplazamiento en bnp

1. Calcular el valor al que situar en puntero a fichero.

"Case" (origen)

DESDE_PRINCIPIO: np = despl;

DESDE_ACTUAL: np = PF + despl;

DESDE_FINAL: np = TF + despl;

"Final Case"

2. Calcular en qué bloque estaría np.

bnp = INT(np/BE);

obnp = RESTO(np/BE);

3. Acceder al bloque afectado.

b = PB;

"Para" i=0 hasta bnp-1 "hacer"

Acceder al bloque b;

b = link(b);

"Fin Para"

BA = b;

Notas:

1. No se han tenido en cuenta las condiciones de error

2. Cabría una actualización del algoritmo (ejercicio).

Pregunta 5. Ocho cuestiones de respuesta corta.

1. La posibilidad de que un proceso circule por colas diferentes durante su ejecución

2. Porque de lo contrario un usuario podría enviar órdenes directas a los periféricos, alterando su normal funcionamiento y así se dañaría la integridad del sistema. En el caso del almacenamiento secundario, el usuario sería además capaz de leer y escribir información privilegiada.

3. Es un conjunto de privilegios sobre un objeto, que puede ser poseído por uno o más procesos. Un proceso que posee una capacidad posee los privilegios contenidos en ésta.

4. Que se realicen cambios de contexto con más frecuencia, disminuyendo con ello la productividad porque se realiza menos trabajo productivo.

5. Para que un proceso dentro de un monitor pueda esperar por un evento sin que acapare el uso del monitor y sin necesidad de recurrir a semáforos u otras construcciones.

6. La excepción es generada por la propia CPU, habitualmente cuando ocurre alguna anomalía; una interrupción puede provenir del exterior de la CPU de forma asíncrona e imprevista.

7. Porque trata de que sólo un proceso dentro de un grupo pueda ejecutar código de sección crítica; por tanto los restantes procesos han de esperar y el grupo ha de sincronizarse.

8. Una política no contigua, enlazada. Los encadenamientos residen en un área del disco denominada FAT (File Allocation Table).

Pregunta 6. Cuestiones sobre memoria

a) Puesto que combinando ambos esquemas conseguimos: uso eficiente de la memoria principal (gestión de la memoria principal), y con la Segmentación una mejor organización lógica y protección de la memoria.

b) La compartición se haría a nivel de segmentos, los procesos a través de su tabla de segmentos apuntarían a una misma tabla de páginas. En la tabla de segmentos se registraría el modo de acceso permitido.

c) Cuando se sobrepasa los límites de una zona de memoria dimensionada estáticamente (variable dimensionada) o dinámicamente (bloque de memoria previamente solicitado). También, cuando se intenta acceder a una zona compartida de memoria en un modo no permitido.

d) La anomalía de Belady es un fenómeno paradójico consistente en que bajo algunas condiciones al aumenta el conjunto de trabajo de los procesos aumenta los fallos de página. El origen de esta anomalía radica en las políticas de sustitución empleadas, concretamente aquellas que no poseen la propiedad de "pila", la FIFO es un ejemplo de tales políticas.

Pregunta 7. Cuestiones sobre interbloqueo

a) Se limita la libertad de escritura de código y se puede inducir a una mala utilización de los recursos.

b) Un proceso puede que nunca se ejecute y el coste alto que conlleva las desasignaciones de algunos recursos.

c) No se imponen restricciones a la hora de pedir recursos y no se necesita suministrar información a priori sobre el uso de los recursos a utilizar.

d) Si se puede dar esa situación, para demostrarlo basta con un ejemplo, suponer un sistema con:

· Tres procesos,p0, p1 y p2, habiendo declarado cada uno unas necesidades máximas: p0 (1,1), p1 (1,1), p2 (0,1).

· Dos tipos de recursos con posibilidades 1 y 2.

Si se está en el siguiente estado:

· p0 tiene asignado una posibilidad de t0 y pide una de t1.

· p1 posee una posibilidad de t1 y pide una de t0.

· p2 tiene una de t1.

Se estará en un estado seguro habiendo un ciclo.

Pregunta 8. Cuestiones sobre UNIX

a) Estado Zombie: se llega a él cuando un proceso finaliza su ejecución implícitamente o explícitamente, se sale de él cuando el proceso padre recibe la notificación de la finalización mediante el uso de la llamada al sistema wait.

Estado dormido en Swap: se llega a él cuando un proceso, en estado de dormido en memoria, es extraído de la memoria principal debido a que el sistema tiene que hacer frente a una demanda de memoria, se sale de este estado cuando el evento por el que esperaba se ha producido y el sistema decide reiniciar su ejecución.

b) No lo comparten puesto que desde sus entradas respectivas en la tabla de ficheros abiertos (ubicada en el área U de cada proceso) se apuntan a entradas distintas en la tabla de ficheros activos del sistema (lugar donde se almacena el puntero de acceso al fichero).

c) Un inode es una estructura de control que todo fichero UNIX tiene asociada con el objeto de controlarlo en el ámbito del Sistema de Ficheros en donde está almacenado. Un in_core inode es una estructura de control, que se construye a partir de la anterior, que permite manipular los ficheros que están activos en el sistema, contiendo por tanto más información que el inode.

d) Se trata de una estructura de control utilizada en la gestión de la memoria, empleándose para conocer el estado de las páginas de la memoria principal, la información que contiene: Estado de la página, dispositivo que contiene una imagen, número de referencias y puntero a otras entradas.

Pregunta 9. Test

               Pregunta                            Opción correcta              
                  1                                       b                     
                  2                                       d                     
                  3                                       a                     
                  4                                       c                     
                  5                                       d                     
                  6                                       d                     
                  7                                       b                     
                  8                                       d                     
                  9                                       c                     
                  10                                      c                     
                  11                                      b                     
                  12                                      c