Teórico, Práctico, Preguntas (Damián Salvia) (1) - 230210 - 001706
Teórico, Práctico, Preguntas (Damián Salvia) (1) - 230210 - 001706
Teórico, Práctico, Preguntas (Damián Salvia) (1) - 230210 - 001706
Sistemas
Operativos
Facultad de Ingeniería - UdelaR
Damián Salvia - 2014
1
Sistemas Operativos, FING - UdelaR Damián Salvia
Índice - Temas
1 Introducción ................................................................................................................9
2 Evolución histórica de los Sistemas Operativos ........................................................... 10
2.1 Sistemas por lotes sencillos (Batch) [‘70] ................................................................................ 10
2.2 Sistemas por lotes multiprogramados [‘80] ............................................................................ 10
2.3 Sistemas de tiempo compartido [‘80] ..................................................................................... 11
2.4 Sistemas de computador personal [‘80].................................................................................. 11
2.5 Sistemas paralelos [‘90]........................................................................................................... 12
2.6 Sistemas distribuidos [‘90] ...................................................................................................... 15
2.7 Sistemas Cluster [‘00] .............................................................................................................. 15
2.8 Sistemas de tiempo real [‘00] .................................................................................................. 15
2.9 Sistemas Multimedia ............................................................................................................... 16
2.10 Sistemas de mano (Handheld) ................................................................................................ 16
2.11 Sistemas Interactivos .............................................................................................................. 16
3 Estructura de los Sistemas Informáticos ..................................................................... 17
3.1 Componentes Básicos ............................................................................................................. 17
3.1.1 CPU (Central Process Unit) ........................................................................................ 17
3.1.2 I/O (Entrada/Salida) .................................................................................................. 18
3.1.3 Memoria .................................................................................................................... 19
3.2 Protección por Hardware ........................................................................................................ 21
3.2.1 Operación en Modo Dual .......................................................................................... 21
3.2.2 Protección de E/S ...................................................................................................... 22
3.2.3 Protección de Memoria ............................................................................................ 22
3.2.4 Protección de CPU..................................................................................................... 23
3.2.5 Conclusiones ............................................................................................................. 23
3.3 Estructura de los Sistemas Operativos .................................................................................... 24
3.3.1 Administración de Procesos ...................................................................................... 24
3.3.2 Administración de Memoria ..................................................................................... 24
3.3.3 Subsistema de E/S ..................................................................................................... 25
3.3.4 Administración de Memoria Secundaria ................................................................... 25
3.3.5 Subsistema de Archivos ............................................................................................ 25
3.3.6 Subsistema de Red .................................................................................................... 26
3.3.7 Sistema de Protección ............................................................................................... 26
3.4 Servicio del Sistema Operativo ................................................................................................ 26
3.5 Llamadas al Sistema ................................................................................................................ 28
3.5.1 System Call - Control de Procesos ............................................................................. 29
3.5.2 System Call - Gestión de Archivos ............................................................................. 29
3.5.3 System Call - Gestión de Dispositivos........................................................................ 30
3.5.4 System Call - Gestión de Información ....................................................................... 30
3.5.5 System Call - Comunicación ...................................................................................... 30
3.6 Estructura del sistema ............................................................................................................. 32
3.6.1 Sistema monolítico .................................................................................................... 32
3.6.2 Sistema en capas ....................................................................................................... 32
3.6.3 Sistemas con microkernel ......................................................................................... 33
3.6.4 Sistemas con módulo ................................................................................................ 34
3.7 Máquinas virtuales (VM) ......................................................................................................... 34
4 Procesos .................................................................................................................... 36
4.1 Estado de un Proceso .............................................................................................................. 37
4.2 Bloque Descriptor de Proceso (PCB) ....................................................................................... 38
4.3 Creación de procesos .............................................................................................................. 39
4.4 Colas de Planificación de Procesos. ......................................................................................... 41
4.5 Cambio de Contexto ................................................................................................................ 43
2
Sistemas Operativos, FING - UdelaR Damián Salvia
3
Sistemas Operativos, FING - UdelaR Damián Salvia
4
Sistemas Operativos, FING - UdelaR Damián Salvia
6
Sistemas Operativos, FING - UdelaR Damián Salvia
7
Sistemas Operativos, FING - UdelaR Damián Salvia
8
Sistemas Operativos, FING - UdelaR Damián Salvia
1 Introducción
Los componentes de un Sistema Informático podemos distribuirlo como
se muestra en el siguiente esquema:
9
Sistemas Operativos, FING - UdelaR Damián Salvia
1
SPOOLER: Buffer donde se guardan datos a la espera de su procesamiento por parte de un dispositivo
más lento.
2
Proceso mediante el cual se introducen trabajos en un buffer de manera que un dispositivo pueda
acceder a ellos cuando esté listo.
10
Sistemas Operativos, FING - UdelaR Damián Salvia
Para que los usuarios accedan con comodidad a los datos, deben contar con
un sistema de archivos controlados por el SO. Éstos se organizan en directorios,
facilitando su localización y acceso.
11
Sistemas Operativos, FING - UdelaR Damián Salvia
Ventajas:
12
Sistemas Operativos, FING - UdelaR Damián Salvia
3
En función de cuántas instrucciones se ejecutan en simultáneo y sobre qué datos.
13
Sistemas Operativos, FING - UdelaR Damián Salvia
14
Sistemas Operativos, FING - UdelaR Damián Salvia
Hard Real Time: Las tareas críticas se deben terminar a tiempo. Todos los
retardos del sistema están limitados, por lo tanto los datos se deben
guardar en memoria rápida como ROM, además carecen de la mayor parte
de las funciones avanzadas de los SO, como por ejemplo, memoria virtual.
Soft Real Time: Una tarea crítica tiene prioridad respecto a otras, y se
deben evitar los retardos, pero no apoyan el cumplimiento estricto de
plazos.
15
Sistemas Operativos, FING - UdelaR Damián Salvia
16
Sistemas Operativos, FING - UdelaR Damián Salvia
17
Sistemas Operativos, FING - UdelaR Damián Salvia
4
Parte del dispositivo (o periférico) que contiene su inteligencia, y por tanto lo controla.
18
Sistemas Operativos, FING - UdelaR Damián Salvia
3.1.3 Memoria
El sistema de memoria está construido en base a una jerarquía que permite
optimizar la utilización del procesador, tal y como muestra la siguiente imagen:
19
Sistemas Operativos, FING - UdelaR Damián Salvia
Consta de:
5
Establece que los programas acceden a una porción reducida del espacio de memoria. Para ello realiza
copias de las posiciones más accedidas (Principio de Localidad Temporal) y bloques contiguos a él
(Principio de Localidad Espacial)
20
Sistemas Operativos, FING - UdelaR Damián Salvia
- Pistas circulares.
- Sectores por cada pista.
- Cilindros, el conjunto de todas las pistas (de todos los platos) que están
en una posición del brazo mecánico.
21
Sistemas Operativos, FING - UdelaR Damián Salvia
22
Sistemas Operativos, FING - UdelaR Damián Salvia
3.2.5 Conclusiones
En el momento de arrancar el sistema, el hardware inicia en modo monitor,
luego se carga el SO inicializando los componentes necesarios y se pasa a modo
usuario.
23
Sistemas Operativos, FING - UdelaR Damián Salvia
El SO se encarga de:
El SO se encarga de:
25
Sistemas Operativos, FING - UdelaR Damián Salvia
organizan en directorios para facilitar su uso, y si pueden ser accedidos por varios
usuarios a la vez el SO debe llevar un control.
El SO se encarga de:
Debe asegurar que solo aquellos procesos que obtuvieron autorización debida
del SO puedan operar con archivos, memoria, CPU o demás recursos. Esto se hace
mediante mecanismos por los que se controla el acceso de los procesos a los
recursos, debiendo incorporar reglas de acceso y asegurar su verificación.
26
Sistemas Operativos, FING - UdelaR Damián Salvia
27
Sistemas Operativos, FING - UdelaR Damián Salvia
controlados, para ello se obliga a que cada usuario del sistema deba
identificarse, por lo general con una contraseña, antes de poder acceder a
los recursos. Esto sirve para defender los dispositivos de E/S externos
contra intentos de acceso no autorizado, y registrar todas las conexiones.
Estos servicios son invocados por los procesos en modo usuario, cuando
ejecutan lo hacen en modo monitor, y al retornar se vuelven al modo usuario.
A los system calls se les asocia un número que los identifica. A continuación se
observa en la siguiente imagen un esquema del funcionamiento de los mismos:
28
Sistemas Operativos, FING - UdelaR Damián Salvia
Los system call pueden agruparse de forma muy general en cinco categorías,
cada una con un propósito específico, detallados a continuación.
29
Sistemas Operativos, FING - UdelaR Damián Salvia
Abrir, cerrar: Una vez creado, se necesita abrirlo para usarlo, y cerrarlo
cuando no lo necesitemos más.
30
Sistemas Operativos, FING - UdelaR Damián Salvia
Ambos métodos son comunes en los SO, y algunos hasta implementan los dos.
La transferencia de mensajes es útil cuando se desean intercambiar pocos datos,
evitando conflictos. La memoria compartida es más rápida, pero hay problemas en las
áreas de protección y sincronización.
31
Sistemas Operativos, FING - UdelaR Damián Salvia
- Sistema monolítico
- Sistema en capas
- Sistema con micronúcleo
- Sistema con módulo
32
Sistemas Operativos, FING - UdelaR Damián Salvia
Ventajas:
- Al utilizar solo operaciones implementadas en el nivel inferior, se simplifica
la depuración y verificación del sistema. Si se encuentra un error en
determinado nivel, el mismo deberá estar localizado en dicho nivel dado
que los niveles inferiores ya han sido depurados.
- Se logra abstracción, ya que no sabemos como la capa inferior
implementó la operación, sino que solo la usamos. Cada capa oculta las
estructuras de datos, operaciones y hardware, de las capas superiores.
Desventajas:
- El principal problema es la definición apropiada, puesto que una capa solo
puede usar las capas de nivel más bajo, y la planificación debe ser muy
cuidadosa.
- El sistema por capas tiende a ser menos eficiente, ya que una rutina
invoca a otra y así sucesivamente, creando un gasto extra.
Ventajas:
- Aumenta la portabilidad y escalabilidad ya que encapsula las
características físicas del SO.
- Para incorporar un nuevo servicio no es necesario modificar el núcleo.
33
Sistemas Operativos, FING - UdelaR Damián Salvia
Desventajas:
- Pueden tener un rendimiento peor a otras soluciones debido a la carga de
procesamiento adicional impuesta por las funciones del sistema.
El resultado es similar a un
Sistema en Capas en el sentido de que
se ofrecen interfaces bien definidas y
protegidas, pero es más flexible ya que
cualquier módulo puede llamar a
cualquier otro. Además, es similar al
Sistema con Microkernel en cuanto a
que el módulo principal dispone de las
funciones esenciales y de los
conocimientos de cómo cargar y
comunicarse con otros módulos; sin
embargo, es más eficiente en el
sentido de que los módulos no
necesitan invocar un mecanismo de
paso de mensajes para comunicarse.
34
Sistemas Operativos, FING - UdelaR Damián Salvia
Una máquina virtual también implementa discos virtuales sobre los discos
físicos, denominados minidiscos en el SO VM. El sistema implementa cada minidisco
asignando tantas pistas de disco físico como necesite. Obviamente, la suma de los
tamaños de los minidiscos debe ser menor al tamaño del disco físico.
Ventajas:
Desventajas:
- Las operaciones pueden tardar más que un SO real, puesto que las
instrucciones del SO invitado deben ser interpretadas.
- El tiempo de respuesta es poco predecible.
35
Sistemas Operativos, FING - UdelaR Damián Salvia
4 Procesos
Podemos considerar un proceso como un programa en ejecución. También es
considerado como la unidad de trabajo de los SO. Un SO entonces consiste en una
colección de procesos, por un lado Procesos de Usuario y por otro Procesos del
Sistema.
36
Sistemas Operativos, FING - UdelaR Damián Salvia
37
Sistemas Operativos, FING - UdelaR Damián Salvia
38
Sistemas Operativos, FING - UdelaR Damián Salvia
Dicho esto, podemos afirmar que existen varias opciones respecto a qué
recursos comparten padre e hijo al momento de la creación del hijo, puede ser que
estos procesos compartan todo, algo, o nada. Cuando un proceso es creado, el hijo
tiene un hilo de ejecución independiente al del padre, con un PC independiente. El SO
crea un nuevo PCB para el proceso hijo.
39
Sistemas Operativos, FING - UdelaR Damián Salvia
Ahora tenemos dos procesos diferentes ejecutando una copia del mismo
programa. El valor pid del proceso hijo es cero; el del padre es un valor entero mayor
que cero. El proceso hijo sustituye su espacio de direcciones mediante el comando
/bin/ls de UNIX (utilizado para obtener un listado de directorios) usando el system call
execlp() que es una versión del exec(). El padre espera a que el proceso hijo se
complete usando la system call wait(). Cuando el proceso hijo termina, invocando
implícita o explícitamente exit(), el proceso padre reanuda su ejecución finalizando
mediante la llamada exit().
6
Por mas información consultar Fundamentos de Sistemas Operativos – Silberschatz – pg.83
40
Sistemas Operativos, FING - UdelaR Damián Salvia
Cola de procesos del sistema (job queue): Están todos los procesos del
sistema. Al crearse un nuevo proceso se agrega su PCB a esta cola.
Cuando un proceso termina su ejecución es borrado.
41
Sistemas Operativos, FING - UdelaR Damián Salvia
Cola de procesos listos (ready queue): Contiene a los procesos que estén
en estado ready esperando a ser asignados por el procesador.
Cola de espera de dispositivos (I/O queue): Existe una de estas colas por
cada uno de los dispositivos en el sistema. En ellas, se encuentran los PCB
de los procesos que se encuentran esperando por una operación sobre el
dispositivo.
Esquemáticamente:
42
Sistemas Operativos, FING - UdelaR Damián Salvia
Respaldar
Salvar el contexto del proceso desalojado de la CPU en su PCB
Cambiar el estado del proceso que estaba ejecutando en la CPU al
que corresponda.
Reanudar
Cargar el contexto del proceso asignado a la CPU a partir del PCB
Cambiar el estado del proceso asignado a la CPU a running
43
Sistemas Operativos, FING - UdelaR Damián Salvia
Cuanto más complejo sea el SO, más trabajo hay que efectuar en la
conmutación. Esta conmutación se ha convertido en un cuello de botella, tan
importante que se están empleando estructuras nuevas, como threads, para evitarla.
Esquemáticamente:
44
Sistemas Operativos, FING - UdelaR Damián Salvia
Ejemplo:
7
Ambos modelos son comunes y muchos SO implementan ambos
45
Sistemas Operativos, FING - UdelaR Damián Salvia
A nivel del PCB, el sistema debe tener una estructura independiente para cada
thread de un proceso que contenga por lo menos el stack, registros y el program
counter, tal y como muestra la siguiente imagen:
Ventajas:
Desventajas:
46
Sistemas Operativos, FING - UdelaR Damián Salvia
Los hilos operan en muchos sentidos, de la misma forma que los procesos.
Pueden estar en varios estados (listo, bloqueado, ejecutando o terminado).
Ventajas:
Desventajas:
Ventajas:
8
Tiempo desperdiciado por el procesador para realizar un cambio de contexto.
47
Sistemas Operativos, FING - UdelaR Damián Salvia
Desventajas
Dado que la mayoría de los SO proveen threads tanto a nivel usuario como a
nivel del kernel es que surgen distintos modelos detallados a continuación.
Básicamente se utiliza la notación UserThread x KernelThread.
48
Sistemas Operativos, FING - UdelaR Damián Salvia
Con este modelo los desarrolladores pueden crear tantos user threads como
sean necesarios y los correspondientes kernel threads pueden ser ejecutados en
forma paralela en un multiprocesador. Asimismo, cuando un thread realiza una
llamada bloqueante al sistema, el kernel puede planificar otro thread para su
ejecución.
49
Sistemas Operativos, FING - UdelaR Damián Salvia
5 Planificación
La planificación de la CPU es la base de los SO multiprogramados. Tiene como
objetivo tener algún proceso en ejecución en todo momento para así maximizar el uso
de la CPU. Al conmutar la CPU entre procesos se aumenta la performance del
computador.
Cambiar el contexto
Cambiar a modo usuario
Reanudar (o consecuentemente iniciar) el programa de usuario.
50
Sistemas Operativos, FING - UdelaR Damián Salvia
51
Sistemas Operativos, FING - UdelaR Damián Salvia
Algoritmos de Planificación
Deciden a qué proceso de la ready queue debe asignársele el procesador. A
continuación se detallan los algoritmos.
9
Por ejemplo se puede buscar minimizar el valor máximo del tiempo de respuesta, o maximizar el valor
mínimo de la tasa de transferencia.
52
Sistemas Operativos, FING - UdelaR Damián Salvia
10
Para lo cual existen estrategias, como por ejemplo predecir en base a la media exponencial. Si es la
duración de la n-ésima ráfaga de CPU y el valor predicho para la siguiente ráfaga de CPU. Entonces
para , denominado peso relativo del historial reciente, tenemos que:
, donde el parámetro controla el peso relativo del historial reciente y pasado
de nuestra predicción. Usualmente se toman y es una constante o promedio global para el sistema.
53
Sistemas Operativos, FING - UdelaR Damián Salvia
III. Priority
A cada proceso se le asigna un número entero que representa su prioridad. Al
elegir un proceso para ser ejecutado, se elige siempre al proceso con mayor prioridad
(11)
dentro de la ready queue, si existen procesos con igual prioridad se planifican en
FCFS.
11
Al representarse mediante un número, una prioridad baja puede corresponderse tanto con números
altos o bajos, de forma análoga los de prioridad alta; depende del SO y puede llegar a ser confuso.
Generalmente una prioridad es el inverso de la siguiente ráfaga de CPU. A su vez las prioridades pueden
definirse interna o externamente al SO.
54
Sistemas Operativos, FING - UdelaR Damián Salvia
Por lo general, un proceso que es I/O-bound debería tener mayor prioridad que
un proceso CPU-bound. Este algoritmo es adecuado para sistemas interactivos.
Este algoritmo es
relativamente sencillo de
implementar. Para que sea
efectivo, el tamaño del
quantum debe ser el
adecuado.
Si es muy pequeño
comparado con el tiempo
que lleva un cambio de
contexto, la mayoría del
tiempo se utiliza haciendo cambios de contexto y por lo tanto poco tiempo haciendo
tareas “útiles”. Si el quantum es muy grande, el sistema degenera en un FCFS.
Por lo general tiene un tiempo de respuesta mejor que el SJF, pero tiene un
mayor tiempo de retorno. El tiempo de retorno varía según el quantum
55
Sistemas Operativos, FING - UdelaR Damián Salvia
V. Multilevel Queue
Su denominación en español es colas de múltiples niveles. Este tipo de
planificación es útil cuando es fácil clasificar los procesos en diferentes grupos.
Cada cola tiene su algoritmo de planificación, y hay planificación entre todas las
colas, la cual es generalmente expropiativa de prioridades fijas. Además cada cola
tiene prioridad absoluta sobre las colas de más baja prioridad.
Otra posibilidad es dividir el tiempo entre las colas, donde cada una obtiene
cierta porción de tiempo de la CPU, que reparte entre sus procesos.
De esta forma, los procesos con menor uso de procesador son los primeros en
ser atendidos cuando lo necesitan. A lo largo de la historia de los procesos estos son
movidos entre las colas dependiendo de qué uso hagan del procesador.
56
Sistemas Operativos, FING - UdelaR Damián Salvia
El número de colas
El algoritmo de planificación de cada cola
El método para subir a un proceso de una cola a una cola superior
El método para bajar un proceso a una cola inferior
El método para saber a qué cola enviar a un proceso cuando cambia su
estado a pronto
Sistemas Multiprocesador
En sistemas multiprocesadores, se puede compartir la carga, pero torna más
compleja la planificación. Existen básicamente dos métodos de planificación en los
sistemas multiprocesador:
57
Sistemas Operativos, FING - UdelaR Damián Salvia
Ventaja:
- Se aprovecha al máximo la caché del procesador, ya que cuando un
proceso la pobló con sus datos, cuando vuelva algunos de esos datos
puede que todavía estén presentes en la cache, aumentando así la
cantidad de hit caché y mejorando entonces la performance del sistema.
Desventaja:
- Pueden desbalancearse las colas, dándole mucho trabajo a un mismo
procesador mientras los demás no hacen nada. Una posible solución es
implementar algoritmos para equilibrar la carga que cada tanto chequeen
que la carga esté balanceada entre los procesadores, y en caso de que no
sea así redistribuye procesos de un procesador a otro para lograr ese
objetivo. Sin embargo dado que cada CPU tiene su propia caché, al
cambiar el proceso de CPU se debe invalidar la caché del CPU origen y
rellenar la caché del CPU destino (que tiene un alto costo asociado), para
así no dar lugar a inconsistencias. Para resolverlo los sistemas de
multiprocesamiento simétrico intentan mantener la ejecución de un
programa en un mismo CPU, esto se conoce como afinidad al
procesador(12), reduciendo así el costo que tiene invalidar/rellenar las
cachés.
12
Se presenta en dos formas
Afinidad suave: intentar mantener un proceso en un mismo CPU, pero sin garantías de que
lo haga.
Afinidad dura: permite a un proceso especificar que no debe cambiar de CPU
58
Sistemas Operativos, FING - UdelaR Damián Salvia
59
Sistemas Operativos, FING - UdelaR Damián Salvia
60
Sistemas Operativos, FING - UdelaR Damián Salvia
61
Sistemas Operativos, FING - UdelaR Damián Salvia
FORK:
JOIN:
62
Sistemas Operativos, FING - UdelaR Damián Salvia
GOTO:
QUIT:
Sintaxis: QUIT
Una consideración a tener en cuenta es que la sintaxis del JOIN puede variar.
Por ejemplo, podemos encontrar casos donde el JOIN no especifique ninguna
etiqueta, solo el contador, de forma que tenemos JOIN contador, y por tanto su
semántica seguiría el siguiente esquema:
63
Sistemas Operativos, FING - UdelaR Damián Salvia
La solución alternativa en este caso resulta mejor, puesto que al declarar los
contadores a medida que se necesitan se logra una mejor performance que si se
declararan al principio del código.
64
Sistemas Operativos, FING - UdelaR Damián Salvia
65
Sistemas Operativos, FING - UdelaR Damián Salvia
66
Sistemas Operativos, FING - UdelaR Damián Salvia
Alicia y Bernardo son vecinos, cada uno vive en su casa propia y comparten
un patio en común. Además cada uno tiene un perro que necesitan sacar a
pasear, pero si los perros están juntos se pelean. El problema consiste en
encontrar una forma de que ambos puedan convivir cumpliendo las reglas
anteriormente descriptas.
67
Sistemas Operativos, FING - UdelaR Damián Salvia
Solución 1
Una posible solución se basa en determinar de quién es el turno para pasear al
perro. De esta forma resulta:
Los dos procesos comparten la variable global turno, y dependiendo del valor
de la variable pasean al perro.
Imaginemos que Alicia luego del pasear a su perro le cede el turno a Bernardo
y se va de viaje a Europa. Posteriormente, Bernardo pasea su perro y le cede el turno
a Alicia, pero ella aún no regresó de su viaje. De esta forma, hasta que Alicia no
regrese y pasee a su perro, Bernardo no podrá pasear al suyo.
Solución 2
Para resolver el problema de la alternancia, una segunda solución utiliza
banderas para determinar quién está paseando al perro en un determinado momento.
De esta forma, antes de pasear al perro se mira la bandera del otro, esperando que
éste al terminar de pasear su perro baje la bandera, y al hacerlo, levantar su propia
bandera para mostrar que paseará al perro, y luego de hacerlo, bajarla para que el
otro pueda pasear al perro. De esta forma resulta:
68
Sistemas Operativos, FING - UdelaR Damián Salvia
Los dos procesos comparten dos variables globales, dos banderas (flag_A y
flag_B). Consultando sus valores deciden si pasear al perro, modificándolas cuando lo
hacen o dejan de hacer.
69
Sistemas Operativos, FING - UdelaR Damián Salvia
Solución 2 bis
Para resolver el problema de la mutua exclusión, otra forma de hacer lo mismo
que se propone en la Solución 2 es que uno levante su propia bandera, mostrando la
intensión de pasear al perro, y luego mire la bandera del otro para ver si puede pasear
al perro.
Esto se hace intercambiando las líneas (1) y (2) del algoritmo anterior,
resultando así:
70
Sistemas Operativos, FING - UdelaR Damián Salvia
Solución 3
Si combinamos los dos primeros algoritmos, llegamos a la solución definitiva,
llamado Algoritmo de Dekker. De esta forma resulta:
Peterson soluciona igual que Dekker, pero es más general ya que esta última
solución es complicada para más de dos personas. La solución por el Algoritmo de
Peterson para el problema de Alicia y Bernardo viene dado por:
71
Sistemas Operativos, FING - UdelaR Damián Salvia
Notar que cuando se cede el turno al próximo proceso lo hace en forma circular
en función del identificador del proceso (en este caso i-ésimo), esto provoca
alternancia.
72
Sistemas Operativos, FING - UdelaR Damián Salvia
73
Sistemas Operativos, FING - UdelaR Damián Salvia
Este algoritmo presenta dos desventajas. La primera es que como las variables
numero y siguiente no están acotadas superiormente, lo que eventualmente puede
producir un overflow puesto que siempre se las incrementa.
74
Sistemas Operativos, FING - UdelaR Damián Salvia
Donde la relación:
== true IF OR ( AND )
== false OTHERWISE
75
Sistemas Operativos, FING - UdelaR Damián Salvia
76
Sistemas Operativos, FING - UdelaR Damián Salvia
77
Sistemas Operativos, FING - UdelaR Damián Salvia
6.5 Semáforos
Como ya se dijo, todos los algoritmos propuestos anteriormente
presentan el problema del busy-waiting. Con los Semáforos y otras
herramientas que veremos luego se soluciona este problema, ya que todas
ellas trabajan con lo que se denomina primitivas bloqueantes.
13
Cuando pasan de la cola de bloqueados a la cola de procesos listos
78
Sistemas Operativos, FING - UdelaR Damián Salvia
Las soluciones que usan semáforos no deben presuponer que las tareas
bloqueadas por una operación P, sean despertadas por V en algún orden particular. Lo
que si debe ocurrir es que toda operación P tiene una operación V asociada.
79
Sistemas Operativos, FING - UdelaR Damián Salvia
En una casa se realiza una fiesta, y en su techo hay una bandera con un
número entero; cuando su valor es positivo indica la cantidad de lugares libres,
cuando es cero es porque está llena, y cuando es negativo indica las personas
que están esperando a entrar. La bandera se actualiza en función del flujo de
personas dentro de la casa. Cuando una persona llega solicita permiso para
entrar y en función del valor de la bandera, si hay lugar, entra a la casa; sino se
queda esperando afuera hasta que alguno se vaya.
80
Sistemas Operativos, FING - UdelaR Damián Salvia
Los semáforos se inicializan en 0, por lo tanto todas las P bloquean y son las V
las que van destrancando ordenadamente.
Una alternativa a la solución anterior, pero esta vez usando un único semáforo
de conteo:
81
Sistemas Operativos, FING - UdelaR Damián Salvia
82
Sistemas Operativos, FING - UdelaR Damián Salvia
83
Sistemas Operativos, FING - UdelaR Damián Salvia
De esta forma, el buffer debe ser mutuo excluido de los procesos involucrados,
y a su vez se debe controlar que un proceso Productor no coloque datos en un buffer
lleno, y análogamente, un proceso Consumidor no consuma datos de un buffer vacío.
Podemos encontrarnos frente a tres situaciones, que el buffer sea infinito, finito
o de capacidad nula. Este último se utiliza para la idea de randezvous que veremos
más adelante.
Buffer infinito
84
Sistemas Operativos, FING - UdelaR Damián Salvia
Buffer finito
En este caso debemos considerar un semáforo más que evite que se
coloquen datos en un buffer lleno. De esta forma tenemos:
85
Sistemas Operativos, FING - UdelaR Damián Salvia
El problema plantea el uso de una base de datos, pero bien podría ser un
archivo compartido, una lista enlazada, una tabla, o lo que sea.
86
Sistemas Operativos, FING - UdelaR Damián Salvia
87
Sistemas Operativos, FING - UdelaR Damián Salvia
88
Sistemas Operativos, FING - UdelaR Damián Salvia
Operaciones:
89
Sistemas Operativos, FING - UdelaR Damián Salvia
6.6 Monitores
Los Monitores son módulos que proporcionan protocolos de comunicación
entre los procesos, encapsulando la representación de un objeto abstracto (recurso
compartido) y brindando un conjunto de operaciones que lo manipulan.
Los procesos pueden acceder al estado del objeto únicamente mediante las
operaciones que se proveen. La mutua exclusión está implícita asegurando que las
operaciones de un mismo monitor se ejecuten secuencialmente.
Solo los nombres de las operaciones son vistas fuera del monitor
Las declaraciones dentro del monitor no tienen accesos a las variables
declaradas por fuera de él.
Las variables del monitor son inicializadas antes de que cualquier operación
sea invocada.
90
Sistemas Operativos, FING - UdelaR Damián Salvia
X.wait: El proceso que llega a ejecutar esta acción se suspende hasta que
otro proceso invoque X.signal dentro del mismo monitor. El proceso queda
en una cola FIFO que forma parte de X y le libera el monitor para que otro
proceso pueda hacer uso de él.
91
Sistemas Operativos, FING - UdelaR Damián Salvia
92
Sistemas Operativos, FING - UdelaR Damián Salvia
Monitor → Semáforo
Mostraremos dos formas de implementación de las primitivas de un Semáforos
a partir de Monitores.
93
Sistemas Operativos, FING - UdelaR Damián Salvia
Semáforo → Monitor
Mostraremos una posible forma de implementar Monitores a partir de
Semáforos. Para ello tendremos un semáforo mutex que mutuoexcluya el acceso a las
operaciones del monitor, otro semáforo por cada variable tipo condición (mostraremos
una) y un contador de procesos que esperan por dicha variable.
94
Sistemas Operativos, FING - UdelaR Damián Salvia
95
Sistemas Operativos, FING - UdelaR Damián Salvia
96
Sistemas Operativos, FING - UdelaR Damián Salvia
97
Sistemas Operativos, FING - UdelaR Damián Salvia
98
Sistemas Operativos, FING - UdelaR Damián Salvia
99
Sistemas Operativos, FING - UdelaR Damián Salvia
6.7 Mensajería
La funcionalidad real del paso de mensajes se ofrece, normalmente, por medio
de un par de primitivas:
Comportamiento:
Nombrado:
100
Sistemas Operativos, FING - UdelaR Damián Salvia
Cardinalidad:
(n:1) : Varios procesos pueden enviar mensajes por el canal y sólo uno
puede recibirlos.
14
Para su creación se dispone de una primitiva CREATE(nombre_mailbox)
o CREATE(nombre_mailbox, tamanio_cola) en el caso que sea necesario dar la capacidad del mailbox.
101
Sistemas Operativos, FING - UdelaR Damián Salvia
- Llega una instancia del proceso P1, ejecuta el SEND y luego se le expropia
la CPU sin llegar a ejecutar el RECEIVE
- Llega otra instancia distinta de P1 y ejecuta lo mismo pero incluyendo el
RECEIVE
- Se retoma la ejecución de la primer instancia (la que fue desalojada de la
CPU)
102
Sistemas Operativos, FING - UdelaR Damián Salvia
Mensajería → Semáforos
Semáforos → Mensajería
103
Sistemas Operativos, FING - UdelaR Damián Salvia
Mensajería → Monitores
Necesitamos básicamente dos mailbox, uno tamaño unitario que mutuoexcluya
el acceso a las operaciones del monitor, y otro mailbox que mantenga los procesos
bloqueados esperando por la variable de condición, cuyo tamaño es arbitrario.
104
Sistemas Operativos, FING - UdelaR Damián Salvia
Monitores → Mensajería
105
Sistemas Operativos, FING - UdelaR Damián Salvia
106
Sistemas Operativos, FING - UdelaR Damián Salvia
107
Sistemas Operativos, FING - UdelaR Damián Salvia
108
Sistemas Operativos, FING - UdelaR Damián Salvia
En este contexto, existen tareas que solicitan encuentros, y otras tareas que
aceptan encuentros. Los pedidos de encuentro son vistos como llamadas a subrutinas
desde la tarea que los llama. El intercambio de datos entre procesos se da en estos
puntos específicos en que los procesos se encuentran.
109
Sistemas Operativos, FING - UdelaR Damián Salvia
Por ejemplo:
110
Sistemas Operativos, FING - UdelaR Damián Salvia
Dado que cada tarea es única, si necesitáramos dos tareas con exactamente el
mismo código deberíamos escribirlo dos veces con distinto nombre. Para ello, las
TASK pueden definirse como TYPE siguiendo la siguiente sintaxis:
De esta forma, podemos declarar varias TASK con el nombre que le dimos,
cada una siguiendo el mismo BODY.
ADA cuenta con otra herramienta que resulta útil con concurrencias, el
SELECT, que permite seleccionar entre varias entradas separadas por OR.
Dado que es un error que todas entradas estén cerradas, se cuenta con una
cláusula ELSE que se ejecuta si al llegar al SELECT no se puede aceptar
inmediatamente ninguna otra entrada.
111
Sistemas Operativos, FING - UdelaR Damián Salvia
Dado que la cláusula ELSE puede resultar muy rígida, y además puede
generar busy-waiting si siempre se sale por ella, tenemos como alternativa la cláusula
DELAY que sigue la siguiente sintaxis
Si hay más de una entrada abierta con al menos una tarea esperando
un encuentro por ella, se elige al azar entre esas entrada cuál se va a
atender. Dentro de una misma entrada el orden es FIFO.
112
Sistemas Operativos, FING - UdelaR Damián Salvia
113
Sistemas Operativos, FING - UdelaR Damián Salvia
114
Sistemas Operativos, FING - UdelaR Damián Salvia
115
Sistemas Operativos, FING - UdelaR Damián Salvia
116
Sistemas Operativos, FING - UdelaR Damián Salvia
117
Sistemas Operativos, FING - UdelaR Damián Salvia
7 Deadlocks
Decimos que un sistema informático está en deadlock (o en interbloqueo) si
para un conjunto de procesos cada proceso espera por un evento que es provocado
por un proceso de ese conjunto.
En una computadora puede haber distintos tipos de recursos así como también
varias unidades de un tipo particular de recurso. Para ello definimos un recurso como
una entidad que se utiliza para realizar un trabajo determinado en el sistema y que
solo la puede usar un proceso en un instante dado.
Debido a esto, es necesario incluir una estructura de datos para modelar los
distintos recursos presentes en el sistema. Toda clase de recurso R se describe
mediante su Resourse Control Block (RCB). Éste incluye:
118
Sistemas Operativos, FING - UdelaR Damián Salvia
Todo proceso puede utilizar un recurso siempre y cuando cumpla con la siguiente
secuencia de acciones:
La solicitud y liberación se realizan por medio de system call al SO. Una tabla
del sistema registra si cada recurso está libre o asignado. Si un proceso solicita un
recurso ocupado, se lo coloca en la cola de procesos que esperan ese recurso.
15
impresora, memoria, ciclos de CPU, etc.
16
archivos, semáforos, monitores, etc.
119
Sistemas Operativos, FING - UdelaR Damián Salvia
Posesión y Espera (Hold & Wait): Debe existir un proceso que haya
adquirido al menos un recurso y esté esperando para adquirir recursos
adicionales, que ya fueron otorgados a otros procesos.
120
Sistemas Operativos, FING - UdelaR Damián Salvia
Ignorarlo
Prevenirlo
Evitarlo
Detectarlo y recuperarlo
121
Sistemas Operativos, FING - UdelaR Damián Salvia
17
Dado que deben ocurrir las cuatro simultáneamente para que se produzca un deadlock.
122
Sistemas Operativos, FING - UdelaR Damián Salvia
Dado que se precisa este tipo de información, evitar los deadlocks disminuye el
rendimiento del sistema. El estado de asignación de los recursos está definido por el
número de recursos disponible y asignado, y las demandas máximas.
Ejemplo:
De esta forma, para evitar deadlocks contamos con dos algoritmos que nos
garantizan estar en un estado seguro del sistema.
123
Sistemas Operativos, FING - UdelaR Damián Salvia
Los recursos deben reservarse a priori en el sistema, o sea que antes de iniciar
la ejecución, ya deben aparecer todas las aristas de reserva.
Hay que mantener varias estructuras de datos para implementar este algoritmo.
Ellas son:
18
Cuando se pasa de una Arista de Reserva a una Arista de Asignación
124
Sistemas Operativos, FING - UdelaR Damián Salvia
Estructura:
Estructura:
Estructura:
Necesidad: Matriz que indica los recursos que todavía le hacen falta a
cada proceso. sii el proceso necesita ejemplares
del recurso .
Estructura:
125
Sistemas Operativos, FING - UdelaR Damián Salvia
Algoritmo de seguridad
Tiene como objetivo determinar si el estado del sistema es seguro o no. Sigue el
siguiente esquema:
3.
Ir a (2)
1. Si
indicar error ya que el proceso excedió su reserva máxima
Sino
ir a (2)
2. Si ,
debe esperar a que los recursos estén disponibles.
Sino
ir a (3)
126
Sistemas Operativos, FING - UdelaR Damián Salvia
Procedimiento Solicitud_Recursos(Solicitud [ i ] )
/* Averiguar si puede satisfacer la petición de recursos */
Si Solicitud [ i ] > Necesidad[ i ]
Entonces /*excedió su reserva máxima */
ERROR
FinSi
Si Solicitud [ i ] > Disponible
Entonces /* esperar a que los recursos estén disponibles */
Suspender_Proceso( i )
Sino /* simular haber asignado los recursos */
Disponible := Disponible - Solicitud [ i ]
Asignacion [ i ] := Asignacion [ i ] + Solicitud [ i ]
Necesidad[ i ] := Necesidad[ i ] - Solicitud [ i ]
Si Seguridad() /* se invoca función */
Entonces /* llevar a cabo transacción */
Dar_Recursos_A_Proceso( i )
Sino /* deshacer simulacion */
Disponible := Disponible + Solicitud [ i ]
Asignacion [ i ] := Asignacion [ i ] - Solicitud [ i ]
Necesidad [ i ] := Necesidad[ i ] + Solicitud [ i ]
Suspender_Proceso( i )
FinSi
FinSi
Fin Solicitud _Recursos
Algoritmo Banquero
/* Dadas las estructuras Disponible, Solicitud, Asignación y Necesidad */
Para todo j /* Analizar todos los recursos solicitados */
Solicitud _Recursos(Solicitud[ i , j ])
FinPara
Fin Banquero
127
Sistemas Operativos, FING - UdelaR Damián Salvia
Ejemplo:
Consideremos un sistema con cinco procesos ,.., y tres tipos de recursos
y . El recurso tiene 10 instancias, el tiene 5, y el tiene 7. Supongamos que
en el instante tenemos:
128
Sistemas Operativos, FING - UdelaR Damián Salvia
Los deadlocks sólo pueden aparecer cuando algún proceso pide un recurso y
no se le puede asignar inmediatamente. Se podría invocar el algoritmo cada vez que
esto sucede, además podemos identificar inmediatamente el proceso causante del
bloqueo. Pero invocarlo tan frecuentemente, puede causar demasiado gasto extra de
tiempo, por lo tanto se lo puede invocar luego de un tiempo determinado (Ej: 1 hora) o
cuando el uso del CPU baja del 40%. En este caso pueden existir muchos ciclos en el
grafo, y se dificulta identificar los procesos causantes del bloqueo.
Ejemplo:
129
Sistemas Operativos, FING - UdelaR Damián Salvia
Sino
3.
Ir a (2)
130
Sistemas Operativos, FING - UdelaR Damián Salvia
Escrito en pseudocódigo:
Ejemplo:
131
Sistemas Operativos, FING - UdelaR Damián Salvia
I. Terminación de un proceso
Hay dos formas:
132
Sistemas Operativos, FING - UdelaR Damián Salvia
8 Administración de Memoria
La memoria es vital para el funcionamiento del sistema. Es una gran matriz de
palabras o bytes, cada uno con su propia dirección. La unidad de memoria solo ve una
corriente de direcciones que le llegan, pero no sabe cómo se generan ni para qué son.
El SO es responsable de:
133
Sistemas Operativos, FING - UdelaR Damián Salvia
Ventajas
19
Traducción de direcciones lógicas a direcciones físicas.
135
Sistemas Operativos, FING - UdelaR Damián Salvia
Ventajas
136
Sistemas Operativos, FING - UdelaR Damián Salvia
simplemente cuanta memoria podría estar utilizando. Si tuviéramos ese dato, solo se
intercambiaría lo que estuviese utilizando realmente con el fin de liberar memoria.
Desventaja
Puede generar fragmentación externa en disco si se permite que los
programas allí alojados estén en cualquier lugar
Puede generar fragmentación interna en disco si a cada proceso le
corresponde una porción de memoria y el proceso es muy pequeño
comparada con esta.
SO residente (kernel)
Procesos de usuario
Para proteger el área del memoria del kernel de los procesos de usuario, el
registro base, es ahora el registro de reubicación, cuyo valor se suma a todas las
direcciones generadas por los procesos de usuario.
137
Sistemas Operativos, FING - UdelaR Damián Salvia
138
Sistemas Operativos, FING - UdelaR Damián Salvia
Desventajas
En caso que existan procesos que necesiten más cantidad de memoria que
la proporcionada en la partición fija no se podrá cargar nunca.
Presenta el problema de la fragmentación interna, en caso que el proceso
sea más pequeño que la partición se deja gran parte de memoria
inutilizada.
Ejemplo:
139
Sistemas Operativos, FING - UdelaR Damián Salvia
En la práctica best fit y first fit son más óptimos que worst-fit. Sin embargo entre
best fit y first fit no queda claro cuál es mejor, pero si es claro que first fit es más
sencilla de implementar.
Desventaja:
140
Sistemas Operativos, FING - UdelaR Damián Salvia
8.2.3 Paginación
La paginación es un esquema de gestión de
memoria donde se divide la memoria lógica de un
proceso en bloques de tamaño fijo llamado pages
(páginas) y a la memoria física en bloques llamados
frames (marcos), ambos de igual tamaño (page size).
Cuando hay que ejecutar un proceso, sus
páginas se cargan desde el backing store en los
marcos de memoria disponibles. Evidentemente, el
backing store debe estar dividido en bloques de tamaño
fijo que tengan el mismo tamaño que los marcos.
Para hacerlo se debe contar con soporte de hardware apropiado. Es así que
cada dirección generada por CPU se divide en dos partes:
De esta forma, el número de página (p) se utiliza como índice de una tabla de
páginas, la cual contiene la dirección base de cada página en la memoria física, que
combinada con el desplazamiento (d) nos brinda la dirección física que estábamos
buscando. De la traducción se encarga la MMU.
141
Sistemas Operativos, FING - UdelaR Damián Salvia
potencia de dos tiene que ver con el hardware, de forma que para obtener el valor de
p baste con shiftear n-lugares a derecha, y para obtener el d alcance con aplicar una
máscara, evitando así engorrosas cuentas.
20
Está compuesta por dos campos, TAG|WORD. Cuando se presenta una dirección, se comparan
simultáneamente todos los TAGs almacenados. Si ocurre un TLB hit se evita la búsqueda en la memoria
y se accede directamente al frame correspondiente, en caso contrario (TLB miss) se busca el valor en
memoria, se accede al frame deseado y se guarda el valor en el TLB para acelerar los próximos accesos
(principio de localidad).
142
Sistemas Operativos, FING - UdelaR Damián Salvia
Rendimiento de la paginación
El Tiempo Efectivo de Acceso a memoria (EAT) se puede calcular de la
siguiente manera:
Siendo:
Con esta fórmula, se puede calcular la efectividad de la TLB en función del hit
ratio obtenido en el sistema.
Protección de memoria
En un esquema de paginación, para proteger la memoria se puede incluir un
valor dentro de la tabla de página que indique si esa página es válida o no (valid-
invalid bit). Si se intenta realizar un acceso a una página no valida, se genera una trap.
143
Sistemas Operativos, FING - UdelaR Damián Salvia
I. Jerárquica
La idea es paginar la propia tabla de páginas. Más concretamente, se divide la
tabla de páginas en tablas más pequeñas, que contienen la información de un rango
de páginas.
La primer tabla indica donde se encuentra la tabla para cada rango (tabla
externa). Entonces, se crean solamente las tablas correspondientes a los rangos que
están siendo utilizados (a demanda), evitando ocupar la memoria que se necesitaría si
se guardara la tabla entera. Se puede generalizar esta idea usando cualquier cantidad
de niveles para alojar tablas externas. Agregando niveles se puede ahorrar más
memoria, pero aumenta el tiempo necesario para resolver la dirección física de una
dirección lógica, ya que se deben hacer tantos accesos a memoria como niveles
existan.
144
Sistemas Operativos, FING - UdelaR Damián Salvia
II. Diccionario/Hash
Se implementa un hash abierto (con listas para resolver las colisiones) en el
que se guardan las entradas correspondientes a las páginas válidas.
145
Sistemas Operativos, FING - UdelaR Damián Salvia
Páginas compartidas
Al utilizar frames, el compartir memoria entre procesos se simplifica. Para
hacerlo, se hace que las tablas de páginas de distintos procesos mapeen las páginas
compartidas a los mismos marcos en MP. Para ser compartible, se debe tener código
reentrante (o código puro), o sea, que no puede modificarse a sí mismo, no cambia
durante su ejecución. Cada proceso tiene sus propias páginas de datos, y comparten
las páginas del código.
8.2.4 Segmentación
El usuario suele ver la memoria como una colección de segmentos de tamaño
variable, sin ordenamiento entre ellos, como puede ser un programa principal, con
subrutinas, procedimientos, funciones, y estructuras de datos. La segmentación es
una técnica que apoya la a visión del usuario.
De esta forma, cada segmento tiene un nombre que lo identifica y una longitud
asociada (por ser de tamaño variable). Por simplicidad, los segmentos están
numerados. Así, una dirección lógica está compuesta por la
pareja:
146
Sistemas Operativos, FING - UdelaR Damián Salvia
147
Sistemas Operativos, FING - UdelaR Damián Salvia
Por ejemplo, Intel x86 tiene un esquema de memoria segmentado: CS, DS, ES,
SS son registros de segmento que indican la base, y el límite está prefijado por la
arquitectura en 64Kb, porque los registros son de 16bits.
Protección de memoria
La protección de memoria se implementa asignando permisos sobre los
segmentos. De esta forma, un segmento de código es normal que tenga permisos de
lectura y ejecución, pero no de escritura; mientras que un segmento de datos tendrá
permisos de lectura y escritura. Esto se logra guardando en la tabla de segmentos un
bit de protección para cada tipo de permiso (bit protection) que el hardware controla al
momento de acceder al segmento.
Sin embargo, incluso bajo este esquema, dado que la pila (stack) debe
mantenerse como escribible, es común encontrar ataques que permiten modificar la
dirección de retorno de una subrutina.
21
Define el número máximo de segmento utilizado por el proceso
148
Sistemas Operativos, FING - UdelaR Damián Salvia
Segmentos compartidos
En la Segmentación, compartir memoria es más simple ya que se comparte
todo un segmento como una unidad, mientras que en Paginación se debe compartir
cada página por separado. En este caso la asignación de memoria es más complicada
ya que es necesario buscar un espacio de memoria lo suficientemente grande para
almacenar el segmento pedido.
149
Sistemas Operativos, FING - UdelaR Damián Salvia
150
Sistemas Operativos, FING - UdelaR Damián Salvia
151
Sistemas Operativos, FING - UdelaR Damián Salvia
9 Memoria Virtual
La memoria virtual es una técnica que permite ejecutar procesos que podrían
no estar totalmente en la memoria, por lo tanto su gran ventaja es que los programas
pueden ser más grandes que la memoria física.
22
Intercambiador perezoso
152
Sistemas Operativos, FING - UdelaR Damián Salvia
1. Se consulta una tabla interna (usualmente en el PCB del proceso) para ver
si la referencia es un acceso legal o no a la memoria.
2. Si la referencia es ilegal, se termina el proceso por tratarse de un fallo de
direccionamiento. Si la referencia es legal pero la página no se había
cargado, es cargada.
3. Se busca un marco libre donde cargar la página.
4. Se planifica una operación de disco para leer la página deseada y colocarla
en el marco libre.
153
Sistemas Operativos, FING - UdelaR Damián Salvia
La idea de que los programas necesiten tener en memoria varias páginas para
ejecutar una instrucción (generando varios fallos de página) es improbable, gracias a
lo que se denomina localidad de referencia(23)
23
El concepto de localidad establece que un proceso, durante su ejecución, pasa de una localidad a otra.
Una localidad es un conjunto de páginas que se utilizan conjuntamente. Un programa generalmente
está compuesto por varias localidades distintas, las cuales pueden superponerse. Por ejemplo, al llamar
a una subrutina se define una nueva localidad. En ésta se efectúan referencias a memoria de las
instrucciones de la subrutina, sus variables locales y un subconjunto de las variables globales. Al salir de
la subrutina, el proceso abandona esta localidad. Así, vemos que las localidades están definidas por la
estructura del programa y sus estructuras de datos.
154
Sistemas Operativos, FING - UdelaR Damián Salvia
Siendo
procesos escribe en una de las páginas compartidas, se creará una copia de esa
página compartida.
156
Sistemas Operativos, FING - UdelaR Damián Salvia
157
Sistemas Operativos, FING - UdelaR Damián Salvia
Algoritmos de reemplazo
Existen muchos, y es probable que cada SO tenga su propio esquema de
reemplazos. Lo que queremos es el algoritmo con la frecuencia de fallos de página
más baja.
7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
I. FIFO
Los frames son puestos en una cola cuando son asignados, y en caso de no
haber más frames libres el sistema se elige como víctima al primer frame en la cola.
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
158
Sistemas Operativos, FING - UdelaR Damián Salvia
159
Sistemas Operativos, FING - UdelaR Damián Salvia
III. Optimal
La idea es reemplazar el frame que no se va a utilizar por más tiempo. Este
algoritmo es el más óptimo de todos, pero como no se sabe de antemano cuando se
va a acceder a algún frame es imposible de implementar.
160
Sistemas Operativos, FING - UdelaR Damián Salvia
24
Cada entrada en la tabla de páginas tiene un campo de tiempo de uso y la CPU cuenta con un
contador. El contador se incrementa en cada referencia a memoria y se copia el contenido del contador
en el campo tiempo. Requiere realizar una búsqueda en la tabla de páginas para localizar la página con
menos tiempo.
25
Se implementa una pila como una lista doblemente encadenada con referencia a la cabeza y a la cola,
puesto que es necesario eliminar entradas intermedias, de forma que cuando se realiza una referencia a
memoria, se extrae esta página de la pila y se la coloca en el tope. De esta forma, la menos
recientemente usada se encuentra en la base de la pila. Requiere modificar 6 punteros en el peor caso y
no necesita realizar ninguna búsqueda de la página a sustituir.
161
Sistemas Operativos, FING - UdelaR Damián Salvia
El reemplazo local, por su parte, independiza los fallos de página entre los
procesos, pero mantiene frames poco usados en memoria, razón por la cual el
reemplazo global es más utilizado.
162
Sistemas Operativos, FING - UdelaR Damián Salvia
La idea de la multiprogramación
es aumentar el uso de la CPU. Si el
proceso no tiene marcos suficientes y se
aplica un algoritmo de reemplazo global,
se empezarán a generar fallos de
página y dado que se reemplazan
páginas de cualquier otro proceso, si
éste las precisa volverá a generar fallos
de página nuevamente. Como resultado,
los procesos están a la espera del
paginador y consecuentemente la tasa
de uso de CPU disminuye, provocando que se intente incrementar el grado de
multiprogramación y se vuelva a generar así el mismo problema pero a nivel
potenciado. En este caso se está frente a un problema de hiperpaginación, y el gráfico
mostrado a izquierda vemos como el uso de CPU disminuye vertiginosamente.
Una vez que se sabe el tamaño del working set de cada proceso ( –
Working Set Size), si se suman todos podemos obtener la cantidad de frames
necesarios en el sistema para evitar el trashing ( ).
163
Sistemas Operativos, FING - UdelaR Damián Salvia
El problema de hiperpaginación
surge cuando existe una elevada tasa
de fallos de página. Cuando es
demasiado alta sabemos que un
proceso necesita más marcos, y si es
demasiado baja, puede ser que el
proceso tenga demasiados marcos.
Por lo tanto podemos establecer un
umbral acotado por:
0)
1)
2)
3)
4)
OBS: Recordar que todos los tamaños (prefijados por tam) debe estar en la misma unidad
(byte o múltiplo de byte). El “ ” indica redondeo hacía arriba.
164
Sistemas Operativos, FING - UdelaR Damián Salvia
10 Sistema de archivos
El sistema de archivos proporciona los mecanismos para el almacenamiento
en línea de los datos y programas que residen en disco, y para el acceso a esa
información. Consta de dos partes:
Algunos sistemas de archivos tienen particiones que sirven para separar física
o lógicamente grandes colecciones de directorios.
Tamaño: Tamaño actual del archivo, y tal vez el tamaño máximo permitido.
165
Sistemas Operativos, FING - UdelaR Damián Salvia
Para no tener que buscar el archivo cada vez que se realiza una operación,
algunos sistemas guardan la tabla de archivos abiertos, donde colocan una entrada
cuando el archivo se utiliza por primera vez. Cuando se deja de usar, se borra esa
entrada, cerrando el archivo. La implementación de las operaciones open() y close()
en un entorno multiusuario es más complicada, ya que varios usuarios podrían abrir un
archivo al mismo tiempo.
166
Sistemas Operativos, FING - UdelaR Damián Salvia
Para implementar esto se utilizan dos tablas, una que contiene los archivos
abiertos de cada proceso, y otra que contiene la información de su ubicación,
punteros, etc. Los elementos de información son:
Puntero al archivo (file pointer): Es exclusivo para cada proceso que está
trabajando con el archivo, por lo que debe mantenerse aparte de los
atributos del archivo en disco.
Con solo ver la extensión el sistema reconoce el tipo, y sabe que operaciones
puede realizar con él. Por ejemplo, un *.exe solo puede ser ejecutado, mientras que un
*.txt puede ser solo leído/escrito.
Otros sistemas guardan un atributo del creador del archivo, y al abrir el archivo,
el sistema por medio de ese atributo, sabe con qué programa debe abrirlo.
167
Sistemas Operativos, FING - UdelaR Damián Salvia
168
Sistemas Operativos, FING - UdelaR Damián Salvia
variable cp -current position- que defina la posición actual, sin embargo, simular un
archivo directo a partir de uno secuencial es extremadamente ineficiente y engorroso.
Cada partición tiene información acerca de los archivos que hay en ella,
manteniéndola como entradas de una tabla de contenido del volumen (conocido
como directorio). De esta forma, los directorios permiten a los usuarios del sistema
tener una organización lógica del sistema de archivos.
169
Sistemas Operativos, FING - UdelaR Damián Salvia
I. Único nivel:
Todos los archivos se guardan en un mismo directorio, resultando fácil de
mantener y comprender, pero tiene limitaciones cuando el número de archivos
aumenta, o hay más de un usuario, ya que deben tener nombres únicos.
Incluso aunque haya un solo usuario, puede que le resulte dificultoso recordar
los nombres de todos los archivos a medida que se incrementan en número.
embargo, se puede permitir acceso a los archivos de otros usuarios debiendo indicar
el nombre del usuario al que se desea acceder junto con el nombre del archivo,
definiendo así un nombre de ruta o camino (path). Por ejemplo, si quiero acceder a mi
archivo prueba simplemente lo nombro, pero si quiero acceder al del usuario B, debo
acceder mediante /usuarioB/prueba.
Este esquema puede verse como una estructura de árbol de altura dos, donde
la raíz es el MFD, sus hijos son UFD y los hijos de estos son los propios archivos, que
a su vez actúan como hojas.
III. Árbol:
Esta generalización permite a los usuarios crear sus propios subdirectorios y
organizar sus archivos de manera acorde. Cada directorio, contiene un conjunto de
archivos o subdirectorios. Un bit en cada entrada indica si esa entrada es un archivo
(0) o un directorio (1).
171
Sistemas Operativos, FING - UdelaR Damián Salvia
IV. Grafo:
Sistemas aun más avanzados permiten estructuras con forma de grafo para
representar los directorios y los archivos.
Soft links (también llamados symlinks o symbolic links) son un tipo especial
de archivo que hace referencia (apunta) al
archivo/directorio original. Podemos verlo como un
“acceso directo”, y además de ser útiles para una
estructura en grafo, también puede potenciar el uso
de la estructura de árbol. Estos enlaces se puede
hacer entre distintitos sistemas de archivos. Cuando
se borra el archivo origen y existen enlaces simbólicos a él, si se tratase de
acceder por medio de uno de estos enlaces generaría un error.
Tipo de acceso: Brinda acceso controlado por parte de los usuarios a los
archivos.
También contamos con otras estrategias, como por ejemplo proporcionar una
contraseña sobre cada archivo, pero tiene unas cuantas desventajas asociadas. En
sus casos extremos, si las contraseñas son distintas por cada archivo el usuario tendrá
173
Sistemas Operativos, FING - UdelaR Damián Salvia
A los usuarios les interesa la forma de nombrar los archivos, las operaciones
que pueden efectuarse con ellos, el aspecto que tiene el árbol de directorios y
cuestiones de interfaz. A los implementadores les interesa como están almacenados
los archivos y directorios, como se administra el espacio en disco y como puede
hacerse que todo funcione de forma eficiente y confiable.
174
Sistemas Operativos, FING - UdelaR Damián Salvia
El Boot Control Block debe estar cargada en al menos una partición, el resto de
las estructuras deben estar presentes en todas las particiones.
175
Sistemas Operativos, FING - UdelaR Damián Salvia
El SO mantiene en memoria:
La tabla de particiones de los sistemas de archivos en el disco
La estructura de directorios de los directorios accedidos recientemente
File descriptors de los archivos abiertos en el sistema
File descriptors abiertos por un proceso especifico
176
Sistemas Operativos, FING - UdelaR Damián Salvia
177
Sistemas Operativos, FING - UdelaR Damián Salvia
Para leer un archivo, basta con leer los bloques siguiendo los punteros de un
bloque al siguiente, y para escribir, se escribe en un bloque libre, y se lo enlaza al final
del archivo.
178
Sistemas Operativos, FING - UdelaR Damián Salvia
Una variación importante del método de asignación enlazada es usar una tabla
de asignación de archivos (FAT, File-Allocation Table | Utilizado en las primeras
versiones de Windows y DOS, y actualmente muy difundido en pendrives).
Se aparta una sección del disco al principio de cada partición para guardar esta
tabla, única en el sistema de archivos residente en la partición, la cual tiene una
entrada para cada bloque del disco y está indizada por número de bloque.
179
Sistemas Operativos, FING - UdelaR Damián Salvia
Cada entrada en la FAT o bien tiene el índice del siguiente bloque del archivo,
o bien el valor NIL indicando que el sector está libre (usualmente -1), o bien un valor
especial denominado EOF (End Of File) (usualmente 0) indicando el fin de archivo.
Se trata que el tamaño del menor tamaño posible, pero acarrea el problema de
que si el tamaño del bloque índice es demasiado pequeño no podrá contener
suficientes punteros para un archivo grande. Los mecanismos para resolver este
problema son:
180
Sistemas Operativos, FING - UdelaR Damián Salvia
En UNIX, los FCB (File Control Block) son conocidos como i-nodos y tienen
bloques de indexación directa de uno, dos y hasta tres niveles de indexación,
permitiendo representar archivos muy grandes. A continuación la representación de un
i-nodo:
Los bloques índice se pueden colocar en un caché, pero los bloques de datos
podrían estar dispersos por toda una partición, esto causaría problemas de
desempeño.
26
Esquema utilizado en UNIX, los i-nodo. La imagen a continuación muestra esquemáticamente un i-
nodo.
181
Sistemas Operativos, FING - UdelaR Damián Salvia
Los i-nodos son una estructura de datos propia de los sistemas de archivos
tradicionalmente empleados en UNIX, y contienen las características (permisos,
fechas, ubicación, pero NO el nombre) de un archivo regular, directorio, o cualquier
otro objeto que pueda contener el sistema de ficheros.
182
Sistemas Operativos, FING - UdelaR Damián Salvia
Cada i-nodo queda identificado por un número entero, único dentro del sistema
de archivo.
Los directorios recogen una lista de parejas formadas por un número del i-nodo
y nombre identificativo que permite acceder al archivo en cuestión: cada archivo tiene
un único i-nodo, pero puede tener más de un nombre en distintos o incluso el mismo
directorio para facilitar su localización.
183
Sistemas Operativos, FING - UdelaR Damián Salvia
Se pide:
184
Sistemas Operativos, FING - UdelaR Damián Salvia
185
Sistemas Operativos, FING - UdelaR Damián Salvia
186
Sistemas Operativos, FING - UdelaR Damián Salvia
187
Sistemas Operativos, FING - UdelaR Damián Salvia
Se pide:
188
Sistemas Operativos, FING - UdelaR Damián Salvia
Notas generales:
189
Sistemas Operativos, FING - UdelaR Damián Salvia
190
Sistemas Operativos, FING - UdelaR Damián Salvia
Se guardan los datos de los archivos en una estructura tipo FAT, la cual tiene
una cantidad limitada de sectores en disco (MAX_SECTORES_DISCO). Cada
elemento de la FAT corresponde a un sector del disco. Cuando ese sector no está
utilizado el elemento correspondiente de la FAT contiene cero. En caso de que el
sector este asignado a un archivo pero no sea el ultimo del mismo, contiene la
dirección del siguiente sector asignado a dicho archivo. Cuando es el último sector
asignado a un archivo, contiene FFFF. Un sector tiene TAM_SECTOR bytes.
Se pide:
2. Indique como será cargada esta estructura al iniciar el sistema y donde será
almacenada en el disco esta misma. Indique también si existe alguna
restricción en el lugar donde se almacena su estructura.
Aclaraciones:
Deja ruta cargado con la siguiente información: ruta = { “/”, “dir1”, “dir12”,
“dir123”, “arch.ext” } y cntcmp con el valor 5. Si existe alguna condición de
error, ruta vuelve NULL y cntcmp en -1
- Los archivos indicados por un camino absoluto siempre empiezan con “/”, y
terminan con el nombre del archivo
192
Sistemas Operativos, FING - UdelaR Damián Salvia
- Se dispone de la función:
Para los directorios lo que tenemos es una entrada para el nombre y el sector en el
disco donde se almacena esta estructura.
193
Sistemas Operativos, FING - UdelaR Damián Salvia
194
Sistemas Operativos, FING - UdelaR Damián Salvia
195
Sistemas Operativos, FING - UdelaR Damián Salvia
4. Consecuencias en cuanto a las estructuras definidas ante una caída del sistema:
196
Sistemas Operativos, FING - UdelaR Damián Salvia
Se compone de:
Los sectores son las unidades mínimas de transferencia de un disco duro. Las
caras y cilindros comienzan a numerarse desde el cero y los sectores desde el uno. En
consecuencia, el primer sector de un disco duro será el correspondiente a la cara 0,
cilindro 0 y sector 1.
Lógicamente las pistas más internas tendrán un perímetro más pequeño, por
tanto tendrán una capacidad de almacenamiento menor que las pistas más externas.
De esta forma, como la velocidad de giro de los discos es uniforme y se busca una
velocidad de transferencia uniforme, todas las pistas deberán tener la misma cantidad
de sectores, provocando que sectores en pistas externas estén más separadas.
197
Sistemas Operativos, FING - UdelaR Damián Salvia
Las solicitudes de E/S de disco son generadas por el sistema de archivos y por
el sistema de memoria virtual. Cada solicitud especifica la dirección de disco a la que
hay que referenciar, en la forma de un número lógico de bloque que luego hay que
mapear. Por este motivo, debemos planificar el disco.
198
Sistemas Operativos, FING - UdelaR Damián Salvia
199
Sistemas Operativos, FING - UdelaR Damián Salvia
200
Sistemas Operativos, FING - UdelaR Damián Salvia
Las figuras detalladas anteriormente en cada ejemplo muestran como una cola tiene
solicitudes de E/S a bloques que están en los cilindros: 98 183 37 122 14 124 65 67. El
disco contiene 200 cilindros, numerados del 0 al 199. Suponiendo que el cabezal está
en el cilindro 53 tenemos que:
27
También conocido como el Algoritmo del Ascensor
201
Sistemas Operativos, FING - UdelaR Damián Salvia
- Aplicando FCFS: primero se moverá del 53 al 98, luego al 187, 37… y así hasta al
final, con un movimiento de cabeza de 640 cilindros
- Aplicando SSFT: la solicitud más cercana de la cabeza (53) es 65, luego 67, 37,
14, 98, 122, 124 y 183, por lo que hay un movimiento total de cabeza de 236.
Se busca aquel que implique un tiempo más corto dada la posición actual
de la cabeza.
Hay que tomar alguna política adicional para evitar posposición indefinida.
Esto se da cuando se está procesando cierta solicitud y llega una solicitud
de acceso cercana a esta posición. Ésta nueva solicitud será atendida
próximamente y en consecuencia las solicitudes (que ya estaban
pendientes) más lejanas tendrán que esperar.
Mejor tiempo que FCFS, SCAN / C-SCAN, pero no es optimo.
SCAN
El brazo del disco parte de un extremo del disco, y se mueve hacia el otro,
atendiendo las solicitudes correspondientes a cada cilindro. Cuando llega al
otro extremo del disco, invierte la búsqueda
Cuando la cabeza “da la vuelta” tiene pocas solicitudes para atender,
pues sigue su recorrida en los cilindros que visito más recientemente. La
mayoría de las solicitudes pendientes estarán en los últimos cilindros a
recorrer.
Redunda en un tiempo de espera no uniforme.
C-SCAN
202
Sistemas Operativos, FING - UdelaR Damián Salvia
LOOK / C-LOOK
Este formateo llena el disco con una estructura de datos especial para cada
sector, por lo general consiste en una cabecera y un área de datos y un código de
corrección de errores (ECC). La cabecera tiene información que usa el controlador,
como un número de sector, y el ECC contiene suficiente información como para
detectar y posiblemente corregir errores.
Además, este proceso de formateo deja sectores libres en caso que un sector
se encuentre defectuoso o falle. Cuando se detecta un sector de estas características
se lo marca como inválido y no se vuelve a usar, a menos que se trate de una falla, en
cuyo caso para poder utilizarlo nuevamente se debe formatear a bajo nivel
nuevamente.
Para poder utilizar el disco para almacenamiento de archivos primero hay que
dividirlo en uno o más grupos de cilindros (particiones), tratándose a cada partición
como si fuera un disco individual. El segundo paso es el formateo de alto nivel o
formateo lógico, que se encarga de colocar un sistema de archivos en la partición o
dejarla como RAW para espacio de swap.
203
Sistemas Operativos, FING - UdelaR Damián Salvia
El MBR tiene una tabla que numera las particiones del disco, junto con un
indicador que marca desde cuál parición hay que arrancar el sistema. El procedimiento
a seguir es:
28
No aplica si ocurre un terremoto y provocase un aterrizaje de cabezales en los distintos discos, lo cual
provocaría daños en varios de los discos a causa de un “rayón” en la superficie magnética y dejando
sectores defectuosos.
204
Sistemas Operativos, FING - UdelaR Damián Salvia
Las técnicas RAID (Redundant Array of Inexpensive Disks) son utilizadas para
alcanzar estos objetivos, combinando varios discos físicos en una sola unidad lógica
de disco; el SO solo ve las unidades lógicas, no las físicas. Actualmente la letra “I” de
la sigla RAID significa Independent (“independientes”) en lugar de “inexpensive”
(barato).
Niveles RAID
Las técnicas de mirroring proporcionan fiabilidad, pero es caro; las técnicas de
striping mejoran la performance, pero no mejora la confiabilidad. En consecuencia, hay
una serie de diferentes esquemas que combinan los principios de las técnicas de
mirroring y striping de diferentes maneras, con el fin de equilibrar la
confiabilidad/rendimiento vs. costos.
205
Sistemas Operativos, FING - UdelaR Damián Salvia
I. RAID 0
La información se agrupa en bandas a nivel de bloque
(striping), pero no se provee ninguna redundancia, por lo que la falla
de un disco provoca la perdida de la información contenida en él.
Vendría a corresponderse con el ejemplo ilustrado anteriormente.
II. RAID 1
La información puede estar en varios discos, pero además
cada uno de estos discos tiene un mirror, de manera que si se pierde
la información de un disco esta puede ser accedida a través de su
“gemelo”.
III. RAID 2
En este caso, la
redundancia se efectúa
agregando discos que
guardan bits de códigos
correctores de errores.
206
Sistemas Operativos, FING - UdelaR Damián Salvia
Es la misma idea utilizada en la memoria RAM (algo del estilo de los Códigos
de Hamming). Si un disco falla, su información puede ser restaurada usando el código
corrector de errores (ECC).
IV. RAID 3
En este caso se agrega un único disco extra para
contener la paridad de los bits contenidos en los otros
discos. Se usa una distribución en banda a nivel de bit.
207
Sistemas Operativos, FING - UdelaR Damián Salvia
V. RAID 4
Es un esquema similar al RAID-3, pero la
distribución en banda en vez de ser a nivel de bit, es a
nivel de bloque, incluyendo también un disco de paridad
pero a nivel de bloque.
Este nivel permite que cada miembro del conjunto funcione independientemente
cuando se solicita un único bloque. Si la controladora de disco lo permite, se puede servir
varias peticiones de lectura simultáneamente, pero no ocurre lo mismo con la escritura, ya
que se cuenta únicamente un bloque de paridad. Por tanto una operación de lectura se
puede realizar en paralelo, mientras que la escritura en forma secuencial.
La gran desventaja que presenta este nivel es que por cada escritura en disco,
se debe escribir el disco que contiene los bloques de paridad. La consecuencia de ello
es que el disco que aloja los bloques de paridad se encuentra sobrecargado en
comparación con el resto, teniendo mayor probabilidad de fallo por su alto uso.
VI. RAID 5
Aplica la misma idea que RAID-4, solo que la
paridad no está guardada en un disco particular sino
que está distribuida rotativamente entre los discos, de
forma de distribuir la carga.
208
Sistemas Operativos, FING - UdelaR Damián Salvia
Una gran ventaja de este nivel es que permite agregar nuevos discos sin alterar
la paridad, solo basta con escribir ceros en el disco nuevo.
VII. RAID 6
En este nivel se agrega más información
redundante, en vez de mantener un solo bloque de
paridad como en RAID-5, tenemos dos bloques de
paridad P y Q, de manera de estar cubierto contra
fallas simultáneas de más de un disco. Se aplican
códigos de Reed-Solomon.
Este nivel podría ser más adecuando que contar con un RAID 5 y un disco de
reserva (esto se conoce como RAID-5E). Su desventaja es que resulta ineficiente para
una pequeña cantidad de discos.
RAID 0+1
Es una combinación de los niveles 0 y 1. Es
eficiente y confiable, pero es muy cara, porque requiere
aumentar mucho la cantidad de discos. Se tienen dos
conjuntos de discos funcionando en modo RAID-0,
espejados entre ellos.
209
Sistemas Operativos, FING - UdelaR Damián Salvia
RAID 1+0
Es otra configuración de los niveles 0 y 1. En
este caso, se tienen N-discos espejados de a pares
(RAID-1), que se incorporan (como si fueran un
único disco lógico) en una configuración RAID-0. Es
una división de espejos.
Los RAID-5 se utilizan para almacenar grandes volúmenes de datos. Los RAID-6
no está soportado actualmente, pero brinda mayor confiabilidad que RAID-5.
210
Sistemas Operativos, FING - UdelaR Damián Salvia
12 Sistema de E/S
Las computadoras interaccionan con una amplia gama de tipos de dispositivos,
por esto establecemos una clasificación en cuatro clases:
Dispositivos de almacenamiento
Dispositivos de transmisión
Dispositivos de interfaz humana
Dispositivos especializados
211
Sistemas Operativos, FING - UdelaR Damián Salvia
212
Sistemas Operativos, FING - UdelaR Damián Salvia
213
Sistemas Operativos, FING - UdelaR Damián Salvia
Dicho esto, cuando el proceso que está ejecutando realiza una solicitud de E/S,
se agrega a la cola de espera del dispositivo, y finalmente invoca al Scheduler para
que asigne la CPU a otro proceso. El controlador del dispositivo es el encargado de
avisar la completitud de la solicitud a través de una interrupción, y el manejador de
interrupción es el encargado de desbloquearlo y colocarlo en la cola de procesos
listos.
La gran ventaja es que el procesador queda disponible para otro proceso que
lo requiera, pero dificulta la programación, además se debe contar con soporte de HW
y se deben codificar los manejadores de interrupciones.
214
Sistemas Operativos, FING - UdelaR Damián Salvia
215
Sistemas Operativos, FING - UdelaR Damián Salvia
216
Sistemas Operativos, FING - UdelaR Damián Salvia
217
Sistemas Operativos, FING - UdelaR Damián Salvia
218
Sistemas Operativos, FING - UdelaR Damián Salvia
219
Sistemas Operativos, FING - UdelaR Damián Salvia
De esta forma:
13.1 Protección
13.1.1 Objetivos
Originalmente se concibió para que los usuarios compartieran recursos sin
peligro en sistemas multiprogramados. Actualmente evolucionaron para aumentar la
confiabilidad de sistemas que usan recursos compartidos.
220
Sistemas Operativos, FING - UdelaR Damián Salvia
La gestión de los usuarios con este principio implica crear cuentas separadas
para cada usuario, con sólo los privilegios que ese usuario necesite.
Un proceso debe acceder a los recursos para los cuales está autorizado y en
un momento dado solo puede acceder a aquellos que necesite para llevar a cabo su
tarea. A eso ultimo se lo conoce como el Principio Need to Know, y apunta, al igual
que el Principio de Mínimo Privilegio, a minimizar los riegos antes una violación de
seguridad.
29
En la CPU podemos únicamente ejecutar programas. Sobre la Memoria podemos tener operaciones
de lectura/escritura, etc
221
Sistemas Operativos, FING - UdelaR Damián Salvia
Tenga en cuenta que algunos dominios pueden ser disjuntos, mientras que
otros se superponen.
222
Sistemas Operativos, FING - UdelaR Damián Salvia
UNIX
Asocia un dominio a cada usuario, y cambiar de dominio implica cambiar
temporalmente la identificación de usuario.
Esto se usa para poner a disposición a los usuarios los recursos privilegiados.
Por ejemplo, el usuario puede tomar momentáneamente el UID root para usar un
recurso, pero hay que controlar que no pueda crear un archivo con UID root y el bit
setuid encendido, porque podría convertirse en root y corromper el correcto
funcionamiento en el sistema.
MULTICS
Los dominios de protección se
organizan jerárquicamente en una estructura
de anillos. Cada anillo corresponde a un
dominio. El proceso que se ejecuta en el
dominio D0 es el que más privilegios tiene.
223
Sistemas Operativos, FING - UdelaR Damián Salvia
Desventaja:
En este caso, todos los procesos que se ejecutan en el dominio , pueden leer
el archivo , y escribir el . Los que se ejecutan en , pueden leer el archivo , e
imprimir.
Notemos también que en este caso cada celda tiene una única operación, pero
pueden ser más.
Conmutación
Si incluimos también a la matriz como un objeto, podemos darle privilegios solo
a algunos dominios para modificarla. De la misma forma, podemos controlar la
conmutación de dominios. Una conmutación del dominio al dominio estará
permitida sii .
224
Sistemas Operativos, FING - UdelaR Damián Salvia
Copia
Se puede dar la capacidad de copiar derechos añadiendo un (*) al derecho de
acceso. Se puede copiar el derecho de acceso solo dentro de la misma columna (en el
mismo objeto). Por ejemplo, en la figura (a) un proceso que ejecute en podrá copiar
la operación elegida en cualquier entrada asociada con el archivo , pudiendo
obtener la figura (b).
Implementación
En un principio la mayor parte de las entradas de la matriz están vacías.
Contamos con cuatro formas para implementar la matriz de acceso que serán
detalladas a continuación.
225
Sistemas Operativos, FING - UdelaR Damián Salvia
I. Tabla global
Consiste en implementar la matriz de accesos como un conjunto de
tripletas ordenadas:
226
Sistemas Operativos, FING - UdelaR Damián Salvia
Ventajas:
227
Sistemas Operativos, FING - UdelaR Damián Salvia
Inmediata o diferida
Selectiva o general
o General: Al revocar un derecho de acceso afecto a todos los
usuarios con ese derecho.
o Selectiva: Puedo seleccionar usuarios para revocarlo.
Parcial o total
o Total: Revoco todos los derechos de acceso a un objeto.
o Parcial: Revoco un subconjunto.
Temporal o permanente
o Temporal: Se puede revocar el derecho y luego obtenerlo
nuevamente.
o Permanente: Si lo revoco, no puedo volverlo a obtener.
Con un sistema de lista de acceso la revocación es fácil, inmediata y puede ser
general, selectiva, etc. Con listas de capacidades debo hallarlas en todo el sistema
antes de revocarlas.
228
Sistemas Operativos, FING - UdelaR Damián Salvia
Esquemas de revocación:
229
Sistemas Operativos, FING - UdelaR Damián Salvia
13.2 Seguridad
Un sistema es seguro si los recursos se usan y acceden como se espera en
todas las circunstancias.
Esto no siempre es posible, por eso se debe contar con mecanismos que
garanticen que las violaciones de seguridad sean poco comunes. Para ello se
establecen tres requisitos para garantizar la seguridad de un sistema:
Confidencialidad
Integridad
Disponibilidad de la información
4. A nivel de Red: son muchos los datos que viajan a través de la red, que
deben ser interceptados.
230
Sistemas Operativos, FING - UdelaR Damián Salvia
En la actualidad hay un sinfín de términos referidos a estos temas, los más “de
moda” son:
Script Kiddies: Individuos que sin tener grandes conocimientos, pero con
una potente y estable herramienta de ataque desarrollada por los gurús, es
capaz de dejar fuera de servicio cualquier servidor de información,
simplemente siguiendo instrucciones que le proporciona la herramienta (por
ejemplo, internet).
231
Sistemas Operativos, FING - UdelaR Damián Salvia
30
Se ilustra en la película Juegos de Guerra.
232
Sistemas Operativos, FING - UdelaR Damián Salvia
I. Monitorización
Comprobar si se intenta violar la seguridad del sistema mediante la búsqueda
de patrones de actividad sospechosos. Las técnicas más comunes son:
Llevar una bitácora de auditoría que registra la hora, el usuario, los tipos
de accesos a objetos y si tuvo éxito o no (archivo log). Una vez que la
seguridad se ha violado, esta información sirve para:
233
Sistemas Operativos, FING - UdelaR Damián Salvia
II. Criptografía
Por la red se transmite gran cantidad de información que no se desea que sea
descubierta. Para lograr esto, se sigue el siguiente mecanismo:
1.
2. y se calculan de forma eficiente.
3. Se debe mantener en secreto la clave y no los algoritmos
En cuanto a los algoritmos de cifrado, contamos con dos tipos bien
diferenciados:
234
Sistemas Operativos, FING - UdelaR Damián Salvia
Algoritmo RSA:
Clave Pública :
Clave Privada :
El mensaje se representa con un entero y se divide en submensajes de largo
Función de Encriptado :
Función de Desencriptado:
Donde:
se calcula como el producto de dos primos grandes y al azar
( )
es al azar, y satisface
se calcula de forma tal que
235
Sistemas Operativos, FING - UdelaR Damián Salvia
Contraseñas personales
Cuando el usuario se identifica con su identificador, se le pide una contraseña,
y si ésta coincide con la almacenada en el sistema, se supone que el usuario está
autorizado. Se usan cuando no se cuenta con sistemas de protección más completos.
Contraseñas cifradas
Es utilizado para no tener que mantener en secreto su lista de contraseñas.
Cada usuario tiene una contraseña y el sistema contiene una función,
extremadamente difícil de invertir, pero fácil de calcular, que codifica las contraseñas y
las almacena codificadas. Cuando el usuario presenta la contraseña, se codifica y
compara con las ya codificadas. De esta forma no es necesario mantener en secreto el
archivo con contraseñas.
236
Sistemas Operativos, FING - UdelaR Damián Salvia
La diferencia, una vez descritas las dos políticas, salta a la vista. En DAC el
acceso esta descentralizado, siendo el propietario de cada objeto el encargado de
asignar los permisos de los diversos sujetos (grupos en el caso de Unix) que
accederán a ellas. En cambio con el MAC los objetos y los sujetos tan solo tienen
atributos, pero son las políticas las que se encargan de autorizar o denegar una
acción.
237
Sistemas Operativos, FING - UdelaR Damián Salvia
En este nivel, el usuario tiene un completo control sobre los objetos que
le pertenecen y los programas que ejecuta. Así mismo, el programa ejecutado
por un usuario tendrá (generalmente) los mismos permisos de ese usuario que
lo está ejecutando. Esto implica que la seguridad del sistema depende de las
aplicaciones que se están ejecutando y, por tanto, cuando se produce una
vulnerabilidad de seguridad en una aplicación, esta afecta a todos los objetos a
los que el usuario tiene acceso. Así, si la aplicación es ejecutada por root, el
atacante puede obtener los máximos privilegios en la maquina,
comprometiendo la seguridad global del sistema.
239
Sistemas Operativos, FING - UdelaR Damián Salvia
14 Virtualización
Mientras que en un sistema sin virtualización tenemos un
esquema en capas como el presentado a la izquierda, la técnica de
virtualización consiste básicamente en poder compartir un único
hardware entre varias Máquinas Virtuales (VM) funcionando en forma
totalmente independiente entre sí, cada una con su propio SO.
Una interrogante que sale a la vista es: ¿existen instrucciones sensibles que no
sean privilegiadas? La respuesta es sí. Un ejemplo de ello es la instrucción POPF de
Intel x86. Supongamos que se carga el registro de flags de la CPU desde el stack
31
Que puede no estar, y en su lugar solo está el hypervisor
240
Sistemas Operativos, FING - UdelaR Damián Salvia
Virtualización de CPU
La mayoría de los VMMs implementan una CPU virtual (VCPU) para
representar el estado de la CPU del invitado simulando ser el anfitrión. Cuando se
conmuta el contexto de la CPU del invitado al del anfitrión por parte del VMM,
información de VCPU es cargada y almacenada.
Esta dualidad de CPU implica que el invitado deba ejecutar en modo usuario.
Dado que no es seguro que el Kernel del invitado también corra en modo kernel, la VM
debe diferenciar entre dos modos: Modo Usuario Virtual y Modo Kernel Virtual, ambos
corriendo sobre modo usuario físico.
241
Sistemas Operativos, FING - UdelaR Damián Salvia
242
Sistemas Operativos, FING - UdelaR Damián Salvia
III. Paravirtualización
Los hypervisores tipo I y II funcionan con el SO-Guest sin modificar. Esta
técnica se obtiene si permitimos que el SO Guest se modifique para evitar las
instrucciones sensible, llamando (en cambio) al hypervisor para que el SO Guest sea
consciente que está siendo virtualizado y así optimizar el rendimiento.
Virtualización de aplicaciones
El objetivo de esta virtualización es conseguir que las aplicaciones puedan
funcionar con independencia de las características concretas del entorno en que se
ejecutan. De este modo se eliminan los problemas de compatibilidad entre
aplicaciones, o entre componentes de aplicaciones, y otros errores típicos de la
ejecución concurrente de aplicaciones.
243
Sistemas Operativos, FING - UdelaR Damián Salvia
Virtualización de la memoria
Se da a través del manejo de Memoria Virtual, por medio de tablas de páginas
multinivel a nivel de la VM, debiendo mapearse dichas tablas a HW real. El obstáculo
que presenta es que el VMM (hypervisor) debe mantener una tabla de páginas
oculta (shadow) porque no puede darle los mismos marcos a dos VMs.
Virtualización de E/S
Dado que cada VM piensa tener todo el HW disponible, las operaciones de E/S
deben ser sensibles (por lo que son tratadas por el hypervisor).
Otro método consiste en utilizar una MV para que refleje las E/S de todas las
demás MVs. Usualmente a esta MV se la denomina “dominio 0”.
Ventajas de la virtualización
Compatibilidad: Una VM permite ejecutar aplicaciones destinadas a un SO
particular, aunque no sea real.
244
Sistemas Operativos, FING - UdelaR Damián Salvia
Bibliografía
[1] Silberschatz, Galvin, Gagne – Operative System Concepts, 8th Edition
(Addison-Wesley, 2005) – ISBN: 9780470128725
[5] W. Stallings – Operative Systems, 2nd Edition (Prentice Hall, 2000) – ISBN:
0201180383
245
Sistemas Operativos, FING - UdelaR Damián Salvia
Fin
Indica final exitoso de la ejecución.
Abort
Indica final anormal de la ejecución.
Abrir_archivo(nombre_archivo): Entero
Cerrar_archivo(nombre_archivo): Entero
Abren y cierran un archivo dado su nombre. Devuelven –1 en caso de error.
Obtener_recurso(nombre_recurso)
Liberar_recurso(nombre_recurso)
Obtienen y liberan un recurso (que puede ser un dispositivo, memoria, etc.)
dado su nombre. Se bloquean hasta que el recurso sea obtenido o liberado.
Esperar_evento(nombre_evento)
Bloquea al proceso hasta que suceda el evento esperado. Retornan el control
inmediatamente si el evento ya ocurre en el momento de invocarlo.
246
Sistemas Operativos, FING - UdelaR Damián Salvia
247
Sistemas Operativos, FING - UdelaR Damián Salvia
Práctico 3 – Ejercicio 13
Se pide implementar un planificador/despachador de procesos para un sistema
monoprocesador multitarea que cumpla con las siguientes características:
Los procesos tienen asociada una prioridad discreta, del 0 al 10, siendo la
prioridad 0 la mayor del sistema.
248
Sistemas Operativos, FING - UdelaR Damián Salvia
Análogamente se pueden ver el resto de los casos. Siempre debemos optimizar todas
las operaciones al máximo. Nos ayudaremos de la variable global al sistema current
que indica qué proceso está siendo ejecutado en la CPU. De esta forma resulta:
249
Sistemas Operativos, FING - UdelaR Damián Salvia
Práctico 3 – Ejercicio 15
Cinco programas, A, B, C, D y E, son lanzados a ejecutar en forma simultánea.
Los tiempos de ejecución en un ambiente de monoprogramación se estiman en 10, 6,
2, 4 y 8 minutos respectivamente. Las prioridades son 3, 5, 2, 1 y 4 respectivamente,
siendo 5 la mayor prioridad.
(a) Para que el usuario piense que tiene la CPU a su entera disposición, el
quantum a elegir debe ser el adecuado. Si elegimos 1min claramente cada
usuario no logra esta meta. En cambio, un rango entre 10ms y 50ms sería
considerable.
250
Sistemas Operativos, FING - UdelaR Damián Salvia
251
Sistemas Operativos, FING - UdelaR Damián Salvia
Práctico 3 – Ejercicio 18
Sea un sistema monoprocesador que tiene dos procesos que van a comenzar
a ejecutar desde el instante t = 0.
Se pide:
a) FCFS:
RR :
Donde
b) FCFS:
RR :
252
Sistemas Operativos, FING - UdelaR Damián Salvia
Práctico 4 – Ejercicio 4
Se desea contar el número de veces que es ejecutado un determinado proceso
y para esto se definen dos contadores globales:
PROCEDURE Actividad IS
BEGIN
FOR i IN 1..12 LOOP
actividad_propia_del_proceso;
unidades := unidades + 1;
IF (unidades = 10) THEN
unidades := 0;
decenas := decenas + 1;
END IF ;
END LOOP ;
END PROCEDURE ;
253
Sistemas Operativos, FING - UdelaR Damián Salvia
254
Sistemas Operativos, FING - UdelaR Damián Salvia
Práctico 5 – Ejercicio 4
Se desea controlar el proceso de llenado y tapado de envases de la Compañía
Algarrobo Cola. Existe una sola cinta transportadora y una máquina para cada acción.
Se dispone de los siguientes procedimientos:
(a)
255
Sistemas Operativos, FING - UdelaR Damián Salvia
(*) Si dejamos esta línea puede ocurrir que llegue llenar, coloque primero en
true, libere la sección crítica y espere. Luego venga tapar, encuentra primero en false,
entonces mueve la cinta, coloca primero en false, despierta un proceso esperando en
wait y libera la sección crítica. A continuación llega otro tapar, encuentra primero en
true entonces coloca primero en false, libera la sección crítica y espera. O sea, que
puede ocurrir que un proceso “auto proclame” primero.
256
Sistemas Operativos, FING - UdelaR Damián Salvia
Práctico 5 – Ejercicio 8
Una tribu de N caníbales come de una gran marmita común con capacidad
para 6 comensales simultáneos.
Consideraciones:
• Rellenar ()
• Comer ()
• Ocio ()
Se pide:
257
Sistemas Operativos, FING - UdelaR Damián Salvia
258
Sistemas Operativos, FING - UdelaR Damián Salvia
Práctico 6 – Ejercicio 4
Se desea modelar utilizando mailboxes el siguiente problema:
El usuario debe ser atendido por el primer mecánico libre de los 5 con que
cuenta el taller. Elmecánico, una vez terminado el arreglo, le indicará a la caja el
monto a cobrar por el arreglo.
• arreglar_auto() :integer
Invocada por un mecánico para arreglar el auto. Retorna el costo del arreglo.
• pagar_arreglo(Monto)
Invocada por el usuario para pagar el monto que le fue indicado por la caja.
Notas:
• Tener cuidado de que el socio pague el importe correcto del arreglo a la caja.
Consideraciones:
- send – No Bloqueante, de nombrado explícito indirecto
- receive – Bloqueante, de nombrado implícito
- Los mailbox se supondrán de tamaño infinito
259
Sistemas Operativos, FING - UdelaR Damián Salvia
Notar que el mailbox mec_caja tiene asignados dos mensajes simultáneamente, esto o bien puede
realizarse así o por medio de un struct.
este esquema no funciona correctamente, ya que si llega una instancia del proceso P1, ejecuta el send y
luego se le expropia la CPU sin llegar a ejecutar el receive; y luego llega otra instancia distinta de P1 y
ejecuta lo mismo incluyendo el receive, y por último se retoma la ejecución de la primer instancia (la que
fue desalojada de la CPU), se recibirán los valores “al revés”. Existen dos soluciones a este problema:
- Mutuoexcluir el send y receive del proceso P1 mediante un mailbox mutex (de tamaño 1).
- Se considera un mailbox particular para ese proceso, similar mailbox “caja_cli” del problema, de
forma que sepa a quién mandarle el mensaje.
260
Sistemas Operativos, FING - UdelaR Damián Salvia
Práctico 6 – Ejercicio 7
Sea un consultorio médico, el cual posee una sala de espera en la cual pueden
haber como máximo 10 pacientes. El médico atiende a una sola persona de la sala de
espera por vez, teniendo prioridad los niños. Cuando el médico termina de atender al
paciente deja que el próximo entre. Si no hay ninguno lee durante cinco minutos y
vuelve a ver si hay alguien. Si no lo hay vuelve a leer y así sucesivamente.
• atender()
• leer_diario()
Se pide:
Nota:
261
Sistemas Operativos, FING - UdelaR Damián Salvia
Consideraciones:
- El propósito del select es hacer accepts, por eso cada guarda debe contener uno.
- Otra forma de asignar prioridades a niños sobre adultos en la task Doctor podría ser haciendo
De esta forma siempre acepto niños y en caso que nadie pida por “niños” elijo entre seleccionar
“niño” o “adulto”, el que llegue primero. Notar que esto se complicaría cuando tengo que
seleccionar entre más de dos procesos, puesto que se los selects se van a anidando conforme la
cantidad de procesos.
262
Sistemas Operativos, FING - UdelaR Damián Salvia
No estaría mal, compila, pero el “accept niño” está habilitado si había niños esperando. Si en el
momento de hacer el select la guarda estaba habilitada se acepta, sino no. Esto carece un poco
de sentido pues siempre acepto niños si es que los hay, por eso no usamos esta semántica.
En este caso, el cuerpo del select contiene unicamente una solicitud de encuentro y una cláusula
ELSE (o podría ser OR DELAY). Se utiliza para que las solicitudes mediante el operador ‘.’ no
sean bloqueantes.
- La rutina “atender()” se coloca dentro del cuerpo del accept puesto que Paciente-Doctor
comparten ese código. Si estuviera por fuera, el Paciente se va sin ser atendido, puesto que solo
Doctor ejecutaría el “atender()”.
263
Sistemas Operativos, FING - UdelaR Damián Salvia
Práctico 7 – Ejercicio 4
En un sistema de memoria virtual por paginado con largo de página 512 bytes y
16 marcos de memoria real, se carga una matriz de 64x64 de tipo double (8 bytes), por
filas. Asumiendo una política FIFO de reemplazo de página, cuantos "page fault"
ocurrirán al procesar secuencialmente toda la matriz:
Dado que cada página es de 512bytes, y tenemos que cada celda ocupa
8bytes, una fila tendría 64x8bytes = 512bytes, entonces toda una fila entraría en una
página. De esta forma, para poder abarcar toda la matriz necesitaríamos 64 páginas,
pero disponemos de 16 marcos para alojar la matriz.
FIFO:
(a) Análisis por filas: Suponiendo que las páginas son cargadas bajo demanda,
al querer acceder a la celda se generaría un fallo de página y se traería
de disco toda la página al primer marco, o sea, toda la fila. De esta forma,
cuando se desea acceder a las celdas desde hasta la página ya
está cargada en memoria por lo que no genera un fallo. Al querer acceder a
la celda ocurriría análogamente lo mismo, y análogamente hasta
acceder a la . Al querer acceder a la celda ya no tendríamos
marcos disponibles (pues consumimos los 16) y debería seleccionarse un
marco víctima. Como estamos aplicando un algoritmo de reemplazo de
página FIFO, la página víctima será la primera que cargamos, o sea, la que
contiene la fila 1. Procediendo análogamente a los casos previos, el acceso
a las celdas desde hasta no reportarían fallo. Como nuevamente
tenemos los 16 marcos ocupados, al acceder a la celda se procedería
de la misma forma que para el caso de acceso a la celda ,
264
Sistemas Operativos, FING - UdelaR Damián Salvia
LRU:
265
Sistemas Operativos, FING - UdelaR Damián Salvia
Práctico 8 – Ejercicio 9
Un sistema operativo administra sus archivos en disco utilizando el método de
asignación indexada. Para esto, se dispone de las siguientes estructuras:
(b) Implementar una función que busque un archivo (file o dir) dentro de un directorio
(no búsqueda recursiva).
Donde archivo es el nombre del archivo a buscar, inodo es el número de inodo del
directorio donde buscar el archivo, nro_inodo es para retornar el número de inodo
buscado y ok es para retornar si la operación se concretó con éxito o no. Asumir
que se dispone de una función que lee del disco el bloque pasado como
parámetro:
266
Sistemas Operativos, FING - UdelaR Damián Salvia
(b) En este caso asumiremos que un directorio tiene todas sus entradas llenas. De
esta forma, según la estructura, tenemos algo por el estilo:
267
Sistemas Operativos, FING - UdelaR Damián Salvia
268
Sistemas Operativos, FING - UdelaR Damián Salvia
Preguntas teóricas
Las preguntas marcadas en color verde son sobre la primer mitad del curso,
mientras que las naranjas corresponden a la segunda mitad.
1º Parcial
May 2012
1. ¿Cuál es la principal ventaja de la multiprogramación? ¿Qué problemas
nuevos le acarrea al sistema operativo?
Respuesta: 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.
269
Sistemas Operativos, FING - UdelaR Damián Salvia
Las tres formas posibles para pasar parámetros a un system call son:
May 2013
1. Indique tres métodos posibles para realizar una operación con una
controladora.
Respuesta: Los tres métodos para que el SO realice una operación con una
controladora de dispositivo de E/S son:
- Polling (Consulta): La CPU envía la solicitud a la controladora, y se
queda en espera activa (o busy-waiting, o en estado ocioso)
consultando si el dispositivo terminó de realizar la operación
- Interrupción: La CPU envía la solicitud a la controladora, y se libera
esperando a ser interrumpido por esta avisando que terminó de
operar.
- DMA (Direct Access Memory): La CPU envía el pedido a la
controladora, y se libera para realizar otras tareas. El dispositivo,
cuando termina de procesar la E/S solicitada, escribe directamente
en la memoria principal por medio de un recurso de hardware
denominado DMA. Este avisa por medio de una interrupción cuando
terminó la escritura de los resultados.
270
Sistemas Operativos, FING - UdelaR Damián Salvia
A su vez, las instrucciones que cargan los registros base y límite son
privilegiadas, por lo que solo el SO puede ejecutarlas.
271
Sistemas Operativos, FING - UdelaR Damián Salvia
2º Parcial
Jul 2012
1. ¿Qué componente se utiliza para realizar en forma más eficiente la
traducción de direcciones virtuales a físicas? Describa su
funcionamiento.
Respuesta: Una dirección virtual es aquella generada por la CPU por parte de
un proceso, que no tiene por qué corresponderse con la dirección física
(ubicación en MP). El componente encargado de realizar la traducción de
direcciones virtuales a físicas es la MMU (Memory Magnament Unit),
componente de HW que es colocado entre la CPU y la memoria. Cuando la
CPU genera una dirección, la MMU verifica su correctitud y ocasionalmente
aplica un desplazamiento con el fin de proteger área de memoria privilegiada.
Dependiendo del esquema de asignación de memoria que se aplique
(particiones fijas, particiones variables, paginación o segmentación), la MMU
trabajará con:
- Un par de registros, límite y reubicación, para los casos de
particiones fijas y variables
- Una tabla, dado que una dirección se presenta bidimensionalmente,
para los casos de paginación y segmentación.
Jul 2013
1. Explique el algoritmo de reemplazo de páginas de segunda chance
mejorado (NRU, Not Recently Used) e indique el soporte de hardware
necesario para una implementación eficiente.
Respuesta: El algoritmo de segunda chance mejorado (NRU), a diferencia del
algoritmo de segunda oportunidad, además de utilizar un bit de referencia (R)
utiliza un bit de modificación (M) – ambos son componentes de HW. De esta
forma, cada vez que una página es accedida para lectura/escritura se setea su
273
Sistemas Operativos, FING - UdelaR Damián Salvia
274
Sistemas Operativos, FING - UdelaR Damián Salvia
275
Sistemas Operativos, FING - UdelaR Damián Salvia
Exámenes
Feb 2010
1. ¿Qué es y cuáles son las ventajas que propone un sistema de tiempo
compartido?
Respuesta: En un sistema de tiempo compartido tenemos un conjunto de
trabajos en memoria, y se conmuta la CPU entre ellos a un ritmo tan frecuenta,
imperceptible a ritmo humano. La principal ventaja de esto es que a cada
usuario le da la apariencia que tiene la CPU exclusivamente para él en todo
momento.
2. Realice un esquema con los estados por los que debe pasar un proceso y
sus transiciones.
Respuesta:
276
Sistemas Operativos, FING - UdelaR Damián Salvia
3. Sea un sistema con paginación bajo demanda y que soporta hilos a nivel
del núcleo y sean los registros Program Counter y Page Table Base
Register
a. Cuáles de los registros anteriores son modificados al realizar un
cambio de contexto entre dos hilos de un mismo proceso.
Respuesta: Únicamente se modifica el PC, ya que el PTBR (registro
que aloja la dirección donde se encuentra la tabla de páginas para el
proceso) es compartido entre todos los threads del proceso. Sin
embargo, el PC no es compartido, ya que cada thread tiene su propio
PC
277
Sistemas Operativos, FING - UdelaR Damián Salvia
7. ¿Qué es la TLB, cuál es su función y qué sucede con ella cuando hay un
cambio de contexto entre dos procesos distintos?
Respuesta: La TLB (Translation Lookaside Buffer) es una caché asociativa, y
como tal, mantiene copias de datos, en nuestro caso, número de marcos. Por
ser una caché asociativa, una dirección se compone de un TAG|WORD, el
TAG se corresponde con el número de página, mientras que el WORD es el
número de marco asociado. De esta forma, al presentarse una dirección virtual,
se busca el número de página en TLB (comparando los TAGs al unísono) y en
caso de TLB-Hit se resuelve la búsqueda del marco por medio de esta, y en
caso de TLB-Miss se busca dentro de la tabla de página y se actualiza la TLB
para futuros accesos. Ante un cambio de contexto la TLB debe ser vaciada, ya
que los datos allí presentes corresponden al proceso que anteriormente estaba
ejecutando en CPU, si no se hiciera se puede llegar a acceder al área de
memoria de otro proceso por error y provocar un mal funcionamiento. Es claro
que vaciar la TLB implica invertir cierto tiempo, y por tanto, puede tener alto
impacto en el rendimiento del sistema. Como solución, la TLB, además de
estar indizada por el número de página, puede contener un ASID (Adress
Space ID), generalmente el PID del proceso. De esta forma, si proceso desea
acceder a cierta página y ésta se encuentra en la TLB, el TAG estaría
278
Sistemas Operativos, FING - UdelaR Damián Salvia
conformado por el par (ASID,nro_página), evitando así tener que vaciar la TLB
en cada cambio de contexto.
279
Sistemas Operativos, FING - UdelaR Damián Salvia
Mar 2010
1. ¿Qué entiende por sistema multiprogramado?
Respuesta: Un sistema multiprogramado es aquel en el que se cuenta con un
conjunto de trabajos cargados en memoria, y se multiplexa la CPU entre ellos a
fin de tener un proceso que ejecutar en todo momento. Una clara consecuencia
de esto, es que se maximiza el uso de la CPU. Dado que la CPU conmuta
entre varios procesos, se da lugar a la planificación, y además se deben
incorporar mecanismos de protección cuando existan procesos cooperativos en
el sistema.
4. Sea un sistema que cuenta con los siguientes cuatro procesos con sus
respectivos tiempos de ejecución (bust time):
Proceso Tiempo de
ejecución
P1 5
280
Sistemas Operativos, FING - UdelaR Damián Salvia
P2 4
P3 1
P4 6
SJF
T T0 T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T14 T15 T16
P3 P2 P2 P2 P2 P1 P1 P1 P1 P1 P4 P4 P4 P4 P4 P4 -
CPU
RR
T T0 T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T14 T15 T16
P1 P1 P2 P2 P3 P4 P4 P1 P1 P2 P2 P4 P4 P1 P4 P4 -
CPU
281
Sistemas Operativos, FING - UdelaR Damián Salvia
F F F F F F F F F F F
Total de fallos: 11
F F F F F F F F
Total de fallos: 8
Jul 2010
1. Responda las siguientes preguntas
a. ¿Qué tarea realiza el planificador de CPU en un sistema
operativo?
Respuesta: El planificador es el modulo del SO encargado de realizar
la elección de qué proceso será el próximo en ejecutar en la CPU. La
prioridad de quién será el proceso a ejecutar depende del algoritmo de
planificación a utilizar y de qué esquema esté utilizando (expropiativo
vs. no expropiativo). Los algoritmos son:
- FCFS (First Come First Served – no expropiativo)
- SJF (Shortest Job First – puede ser expropiativo o no expropiativo)
- por Prioridad (puede ser expropiativo o no expropiativo, de
prioridades extáticas o prioridades dinámicas)
- RR (Round Robin – expropiativo)
283
Sistemas Operativos, FING - UdelaR Damián Salvia
284
Sistemas Operativos, FING - UdelaR Damián Salvia
Dic 2010
1. Al implementar un algoritmo de planificación (scheduling) round-robin,
¿qué problema se puede presentar con el tamaño del quantum?
Respuesta: La elección del quantum en un planificador RR puede acarrear dos
problemas:
- Si el quantum es muy pequeño, próximo a lo que se demora en
realizar un cambio de contexto, la CPU pasa más tiempo realizando
cambios de contexto que trabajo útil (ejecutar).
- Si el quantum es demasiado grande, la planificación RR puede
degenerarse en una planificación FCFS.
2 1 4
3 3 1
CPU P1 P1 P2 P2 P1 P1 P3 P2 P2 P1
Tiempo_retorno (P1) = 10 – 0 = 10
Tiempo_retorno (P2) = 9 – 1 =8
Tiempo_retorno (P3) = 7 – 3 =4
Tiempo_retornoprom = (10 + 8 + 4)/3 = 22/3
285
Sistemas Operativos, FING - UdelaR Damián Salvia
Feb 2011
1. ¿Qué son las llamadas al sistema (system calls)? Realice un
dibujo/diagrama que muestre como son usados.
Respuesta: Los system calls son la interfaz provista por el kernel para que las
aplicaciones de usuario puedan consumir los distintos servicios que brinda el
SO. Su funcionamiento sigue el siguiente esquema:
288
Sistemas Operativos, FING - UdelaR Damián Salvia
289
Sistemas Operativos, FING - UdelaR Damián Salvia
Mar 2011
1. Defina y de ventajas y desventajas entre los sistemas simétricos y
asimétricos.
Respuesta: Los sistemas simétricos y asimétricos refieren un tipo de
clasificación de sistemas paralelos o multiprocesadores en función de cómo
ejecutan los procesos. En los sistemas asimétricos tenemos una jerarquía
entre los procesadores, existe un procesador maestro que planifica y asigna las
tareas a los procesadores esclavos, quienes se encargan de las tareas del SO.
Por otro lado, en los sistemas simétricos todos los procesadores realizan las
diferentes tareas concernientes al SO.
La ventaja de los que presenta un multiprocesamiento asimétrico frente a uno
simétrico, es que al tener una jerarquía de procesadores, el procesador
maestro puede equilibrar la carga de procesamiento cuando existen
procesadores trabajando mucho y otros poco. Dado que cada CPU tiene su
propia caché local, esto puede traer aparejado un problema; si un proceso se
encuentra ejecutando en un procesador, pobló sus datos en la caché, y si el
maestro decide que ese proceso cambia de CPU, se debe invalidar la caché
del procesador en el que estaba ejecutando y rellenarla en la caché del
procesador al que fue asignado para no generar inconsistencia en los datos.
Obviamente esta tarea es muy costosa, e impacta en la performance del
sistema, lo cual es una clara desventaja. Por eso se prefiere que un proceso
corra siempre sobre un mismo procesador, conocido como afinidad de
procesador, de forma de evitar este problema.
En cambio, si se mantiene el equilibrio entre los procesadores, una vez que un
proceso corrió sobre un procesador pobló con sus datos esa caché, y si es
290
Sistemas Operativos, FING - UdelaR Damián Salvia
desalojado, cuando vuelva es probable que esos datos aún estén en la caché
aumentando así la cantidad de hit caché y por tanto la performance del
sistema.
2.
a. Describa el planificador de colas multinivel con retroalimentación
(multilevel feedback queue)
Respuesta: (ver Jul 2010 – 1.c)
Jul 2011
1. ¿Qué entiende por sistemas simétricos?
Respuesta: Los sistemas simétricos refieren a un tipo de clasificación de los
sistemas paralelos o multiprocesadores en cuanto a cómo ejecutan los
procesos. En estos sistemas, todos los procesadores ejecutan las diferentes
tareas del SO.
292
Sistemas Operativos, FING - UdelaR Damián Salvia
Dic 2011
1. ¿Qué es un sistema operativo?
Respuesta: Un sistema operativo es un programa que actúa como
intermediario entre las aplicaciones de usuario y el hardware. Es el programa
que está en continúa ejecución, cargado siempre en memoria, cuya porción
residente se denomina núcleo del sistema o kernel.
6.
a. ¿Cuándo se ejecuta un algoritmo de reemplazo de página?
Respuesta: Un algoritmo de reemplazo de página se ejecuta cuando
ocurre un page fault y no existen marcos disponibles para alojar la
página solicitada, ya sea en un reemplazo global (la víctima se
selecciona entre todas las disponibles) o local (la víctima se selecciona
dentro de los marcos asignados al proceso que provocó el page fault).
294
Sistemas Operativos, FING - UdelaR Damián Salvia
Feb 2012
1. ¿Qué es un sistema multiprogramado y cuál es la principal ventaja de
desarrollar un sistema de este tipo?
Respuesta: Un sistema multiprogramado es aquel que cuenta con un conjunto
de tareas en memoria, y se multiplexa la CPU entre ellos a fin de obtener
mejores tiempos de respuesta y maximizar el uso de la CPU. De esta forma,
cuando un proceso realiza una llamada bloqueante al sistema, la CPU no
queda ociosa en espera de una respuesta, sino que se conmuta la CPU a otro
proceso.
295
Sistemas Operativos, FING - UdelaR Damián Salvia
Mar 2012
1. ¿Qué problema presenta un sistema que no sea multiprogramado?
Respuesta: Si un sistema carece de multiprogramación, cuando un proceso
está siendo ejecutado y realiza una llamada bloqueante al sistema, la CPU se
mantendrá ociosa hasta que se terminé de procesar el pedido, puesto que no
conmuta a otra tarea mientras se está realizando el pedido. La consecuencia
directa de esto, es que la ausencia de multiprogramación genera un alto
impacto en la performance del sistema.
297
Sistemas Operativos, FING - UdelaR Damián Salvia
298
Sistemas Operativos, FING - UdelaR Damián Salvia
Jul 2012
1. Describa que entiende por sistema con multiprocesamiento simétrico
(SMP – Symetic Multi-Processing)
Respuesta: (ver Jul 2011 - 1)
3. ¿Qué estado debe tener un proceso para poder ser seleccionado por el
planificador (scheduler) del sistema operativo?
Respuesta: Para que un proceso pueda ser seleccionado por el planificador
del SO, el proceso debe estar en estado pronto. (ver diagrama de estados y
transiciones en examen Feb 2010 – 2).
299
Sistemas Operativos, FING - UdelaR Damián Salvia
Dic 2012
1. ¿Cuál es el principal beneficio de la multiprogramación?
Respuesta: El principal beneficio de la multiprogramación es aprovechar al
máximo el uso de la CPU (ver Mar 2010 - 1)
300
Sistemas Operativos, FING - UdelaR Damián Salvia
que puede llegar a tener un peor desempeño que otros esquemas, puesto que
las funcionalidades del kernel implementadas “por fuera” necesitan invocar al
kernel.
301
Sistemas Operativos, FING - UdelaR Damián Salvia
Feb 2013
1. Describa los sistemas de multiprocesadores simétricos y asimétricos.
Respuesta: (ver Marzo 2011 - 1)
302
Sistemas Operativos, FING - UdelaR Damián Salvia
8. ¿Qué es la TLB, cuál es su función y qué sucede con ella cuando hay un
cambio de contexto entre dos procesos distintos?
Respuesta: (ver Feb 2010 - 7)
Mar 2013
1. ¿Qué es un sistema operativo?
Respuesta: (ver Dic 2011 - 1)
5.
a. Describa la etapa de ensamblaje (link-edición) en el proceso de
generar el archivo ejecutable (binario).
Respuesta: (ver Mar 2012 - 5)
304
Sistemas Operativos, FING - UdelaR Damián Salvia
7.
a. ¿Cuándo son ejecutados los algoritmos de reemplazo de marcos?
Respuesta: (ver Dic 2011 – 6.a)
8.
a. ¿Para qué sirven los servicios del subsistema de E/S que brinda el
SO?
Respuesta: Los servicios del subsistema de E/S expuestas por el
kernel se utilizan para abstraer los dispositivos y utilizarlos de manera
uniforme y estandarizada, teniendo en cuenta el impacto que podría
tener sobre la performance del sistema. Para ello, el SO brinda: (ver Dic
2010 - 5)
Jul 2013
1.
a. ¿Cuál es la diferencia entre un sistema multiprocesador de
memoria compartida y uno de memoria distribuida?
Respuesta: En un sistema multiprocesador de memoria compartida los
procesadores se encuentran en un único nodo, y se comunican con la
memoria a través de un bus común. En cambio, en un sistema
multiprocesador de memoria distribuida los procesadores se encuentran
en nodos distintos, cada uno con su memoria, y se comunican entre sí a
través de una red.
305
Sistemas Operativos, FING - UdelaR Damián Salvia
4. Menciona las tareas que deben realizarse para ejecutar una llamada al
sistema (system call) e indique en cada caso quién realiza dicha tarea
(programador/sistema operativo/ hardware subyacente)
Respuesta: Las tareas que deben realizarse para ejecutar un system call son:
- Colocar los parámetros necesarios – Programador
- Colocar el número de system call – Programador
- Invocar a la trap adecuada (system call handler) – Programador
- Pasar a modo monitor – SO
- Verificar que el número de system call pasado sea menor que el
mayor existente en el sistema – SO
- Invocar al system call correspondiente – SO
- Retornar el valor del system call en algún registro en particular, de la
misma forma en cómo se cargó – Hardware
- Volver a modo usuario -- SO
7.
a. Describa los registros que componen un puerto de E/S e indica
para que son utilizados estos registros
Respuesta: Los registros que componen un puerto de E/S son
básicamente cuatro:
- Estado: Registro leído por el equipo informando el estado del
dispositivo.
- Control: Registro escrito por el equipo para múltiples propósitos.
Entre ellos configurar el dispositivo ante un pedido, cambiar el modo
del dispositivo, etc.
- Datos de Entrada: Registro leído por el equipo para obtener los
datos de entrada.
- Datos de Salida: Registro escrito por el dispositivo para enviar datos
en una salida.
307
Sistemas Operativos, FING - UdelaR Damián Salvia
Dic 2013
1.
a. Indique dos métodos de acceso a los registros de un controlador
de E/S
Respuesta: Los dos métodos de acceso a los registros de un
controlador de E/S son:
- Memory Mapped IO: Se accede a estos registros a través de
direcciones de memoria especiales. Para la lectura/escritura de
estas direcciones se utilizan las mismas instrucciones que un
acceso a memoria convencional. Tiene la ventaja de no tener
instrucciones especiales, pero la desventaja de reducir el rango de
memoria para los procesos, que a su vez debe ser protegida para
que los usuarios no tengan acceso a estos registros directamente.
- Direct Instruction IO: El SO provee instrucciones para tener acceso a
estos registros, generalmente IN/OUT. La ventaja que tiene respecto
al caso anterior es que todo el rango de memoria queda destinado a
los procesos, y la desventaja es que dichas instrucciones deben ser
privilegiadas.
308
Sistemas Operativos, FING - UdelaR Damián Salvia
4.
a. Describa y compare los hipervisores tipo I y tipo II:
Respuesta: Tanto los hipervisores de tipo I como los de tipo II son dos
técnicas utilizadas para permitir virtualización. Un esquema de hipervisor
tipo I trabaja bajo las condiciones de Popek&Goldberg, que establece que
las instrucciones sensibles (aquellas que modifican el estado privilegiado o
lo exponen) deben ser un subconjunto de las instrucciones privilegiadas; y
se tiene únicamente un VMM por encima de la capa de HW, sobre el cual
se pueden correr las MVs, cada una con su propio SO (denominados
Guest). Este esquema utiliza técnicas de trap-and-emulate, donde las
instrucciones sensibles provocan una trap, que es emulada por el VMM. En
cambio, los hipervisores tipo II funcionan también sobre aquellas
arquitecturas que no cumplen la condición de Popek&Goldberg, y sobre la
capa de HW encontramos un SO (denominado Host) que corre la VMM
como aplicación de usuario (donde corren las MV, cada una con su SO-
Guest) y además otras aplicaciones sobre ese SO. Este esquema utiliza
usualmente una técnica de traducción binaria, donde el VMM analiza el flujo
de instrucciones y traduce aquellas instrucciones sensibles que son
ejecutadas por la CPU directamente.
309
Sistemas Operativos, FING - UdelaR Damián Salvia
5.
a. Describa las tareas que debe hacer un sistema operativo para
realizar el cambio de contexto de un proceso a otro
Respuesta: (ver Parcial May 2013 - 3)
310
Sistemas Operativos, FING - UdelaR Damián Salvia
Feb 2014
1. Describa dos mecanismos implementados a nivel de hardware para
proteger al sistema operativo.
Respuesta: Entre los mecanismos para proteger al SO podemos encontrar:
- Ejecución en modo dual. El SO debe reconocer al menos entre dos
modos de ejecución, modo usuario y modo monitor. En modo
usuario se tiene un conjunto reducido de instrucciones a disposición,
mientras que en modo monitor todas las instrucciones están
disponibles, inclusive las privilegiadas. Todo usuario tiene derecho a
correr en modo usuario, pero solo el SO puede correr en modo
monitor.
- La protección de memoria se logra estableciendo el área de
memoria al que los procesos pueden acceder. Esto se logra
mediante dos registros, base y límite, y por medio de la MMU se
comparan todas las direcciones generadas por los procesos en base
a esos dos registros.
311
Sistemas Operativos, FING - UdelaR Damián Salvia
7.
a. ¿Qué entiende por sistemas de archivos virtual (VFS – Virtual File
System)?
Respuesta: (ver Jul 2011 - 6)
8.
a. Describa la anomalía de Belady
Respuesta: (ver Dic 2011 – 6.b)
Mar 2014
1. Compare los métodos de E/S Programada y por Interrupciones. Indique
ventajas y desventajas de cada método.
Respuesta: (ver Feb 2010 - 9)
2.
a. Describa los algoritmos de planificación de disco SSTF y SCAN.
Respuesta: (ver Dic 2012 - 9)
4.
a. Describa la técnica de segmentación de memoria.
Respuesta: (ver Feb 2012 - 5)
313