1er Parcial Resumen Sistemas Operativos
1er Parcial Resumen Sistemas Operativos
1er Parcial Resumen Sistemas Operativos
-Dispositivos E/S
Funcionamiento de la PC:
El CPU se conecta con la memoria y recibe un input de algún lado y me devuelve un resultado.
El bus que lleva datos se conecta con los dispositivos E/S, para entrar y llevar información. Los
datos son enviados a la CPU para ser procesados, y los resultados se almacenan o se toman
desde la memoria.
El bus de control se le da la indicación de cuál es la operación, qué quiero hacer con los datos
que están almacenados en la memoria y fueron provistos por la entrada.
Registros
Están adentro del CPU. Almacenan información temporal para hacer los cálculos en el CPU. Si
el CPU no obtiene la información en los registros, la busca en la memoria.
Tipos de registros:
Uso específico:
-Stack Pointer: apunta a la parte superior de la pila (stack) actual en la memoria. La pila
contiene un conjunto de valores por cada procedimiento al que se ha entrado, pero del que
todavía no se ha salido. El conjunto de valores en la pila por procedimiento contiene los
parámetros de entrada, las variables locales y las variables temporales que no se mantienen en
los registros.
-Program Status Word: Da información sobre cuál es el modo actual de ejecución (usuario o
privilegiado).
Interrupciones
-Internas: Están adentro del CPU, y el CPU solo puede procesar software. Es interna <=> es de
software.
-Sincrónica: Está sincronizada con el ciclo que el reloj trae. Suelen ser internas.
Procesamiento de interrupciones:
Si es por hardware, el controlador (driver) le traduce al Sistema Operativo lo que pasa. Genera
una interrupción. El procesador toma esa interrupción, pero primero completa la ejecución de
la instrucción en curso. Identifica quien envía la interrupción, coloca el PC y el PSW en la pila
del sistema, y después carga el nuevo PC.
La base de un sistema operativo es el Kernel. Entre el núcleo y el hardware están los drivers.
Sobre el kernel están las system calls (el que trata las traps). Sobre eso están las bibliotecas
donde se guardan las traps. Arriba de eso están las aplicaciones.
Mientras más “arriba” estoy, más trato con software, y mientras más “abajo”, más trato con
hardware. El que está en el medio, es el Kernel.
Las interrupciones de hardware SOLO se pueden tratar si soy administrador, ya que el único
que se comunica con el hardware es el kernel a través de los drivers.
Llamadas al sistema:
-System calls: Solicitud de un programa en modo usuario para realizar una operación que
requiere permisos de administrador.
-Wrappers: Función que ejecuta cierta System Call para un lenguaje particular.
Tipos de núcleos
Seguridad
Procesos
-A través del PCB: conjunto de registros creados cuando un nuevo proceso ingresa al sistema.
Desaparece cuando el proceso finaliza. Es visible para el sistema operativo.
+Información del estado del procesador: valores de los diferentes registros (PC, PWS , etc) que
tiene el procesador en un instante, conocido como CONTEXTO.
+Control del proceso: estructuras asociadas al proceso (estado del CPU, etc) y recursos
asignados. Por ejemplo, la pantalla o el mouse.
-A través de la imagen del proceso: estructura que contiene al PBC y referencia todos los
recursos que el proceso utiliza (usuario y kernel). Solo es visible para el sistema operativo
cuando su referencia está en el PBC.
Registros de la imagen:
+PBC
+Pila del núcleo: para hacer acciones administrativas (llamada al sistema, cambio de modo,
etc)
+Espacio de direcciones compartido (Heap): datos para uso del programa o para compartir con
otros programas.
Tabla de procesos
Los procesos se controlan a través de una tabla (administrador de tareas). Allí se encuentran
todas las PBC de los procesos.
Modelo 2 estados:
Planificación a Corto Plazo: Algoritmo utilizado para determinar el orden en el que se realizará
la activación de cada proceso.
Modelo de 5 estados:
Las interrupciones le avisan al sistema operativo cuando ocurre un evento que implica un
bloqueo de proceso.
Este modelo se queda corto, porque no me deja ver la imagen de los procesos.
Diagrama de 6 estados:
Si el proceso está bloqueado por mucho tiempo, pasa al estado de suspendido, y la imagen es
enviada a la Memoria Virtual. Este proceso es conocido como SWAP.
Creación: Asigna un ID, reserva espacio para la imagen, inicia la PCB, establece enlaces y ajusta
las estructuras de datos y de control del sistema operativo.
Process Switch: salida de un proceso que está utilizando el procesador para provocar la
entrada de otro proceso que estaba esperando en la cola de listos y el dispatcher decide que
es el próximo a ejecutar.
Interrumpe el proceso actual, actualiza los estados y contexto y activa el proceso entrante.
Context Switch: guarda el valor de los registros del proceso que deja de ejecutarse en la
memoria virtual y deja la referencia a esos valores en la memoria RAM. Borra todo y deja los
registros libres para que se llenen con información de otro proceso.
Definiciones importantes:
Multiprogramación: técnica en la que los procesos pueden alojarse en la memoria RAM para
ser ejecutados a la par por un CPU.
Orientados al Usuario:
▪ Tiempo de Respuesta (Response Time): Para un proceso inactivo, es el tiempo que transcurre
desde que se lanza una petición hasta que comienza a recibir la respuesta.
▪ Fecha tope: El sistema operativo tiene que hacer las cosas en el tiempo que le dije que las
tiene que hacer, en el momento exacto. Ejemplo: BackUp a la noche.
Orientados al Sistema:
▪ Equidad: Se espera que el sistema operativo planifique los procesos en forma justa sin
provocar inanición.
▪ Equilibrado de Recursos: Ocupar los recursos lo máximo posible, favoreciendo su uso por
procesos que los requieran poco cuando tengan mayor ocupación (Implica planificación de
mediano y largo plazo también)
Todos los criterios orientados al usuario tienen que tender a minimizarse. Los orientados al
sistema tienen que tender a maximizarse.
▪ Planificador a Mediano Plazo: Trabaja con la memoria. Decide qué imágenes de procesos
traerá o quitará de la memoria principal. Utiliza el intercambio (Swapping) para ejecutar su rol.
Tendrá en cuenta cuál es la carga del sistema operativo basado en el Planificador de Largo
Plazo. Modifica el grado de multiprogramación.
▪ Planificador de Largo Plazo: Decide qué procesos serán Admitidos en el sistema. Controla el
Grado de Multiprogramación del sistema. Se ejecuta cuando un nuevo proceso es creado.
Decide cuándo se puede cargar un nuevo proceso y qué trabajo será aceptado y convertido en
proceso. Busca balancear el uso del CPU y los dispositivos de entrada y salida.
1. FCFS/FIFO: Sin desalojo. El primero que entra es el primero que se va. Poca equidad, poco
overhead, poca inanición.
2. ROUND ROBIN/RR: Con desalojo. Cuando ocurre una interrupción, el proceso en ejecución
es colocado en la cola de listos y el siguiente proceso es seleccionado. Alta equidad, el
overhead depende del quantum y no genera inanición.
3. VIRTUAL ROUND ROBIN/VRR: Planifica similar a Round Robin, pero la cola de bloqueados
tiene prioridad sobre la cola de listos.
4. SJF sin desalojo/SPN: Proceso con tiempo esperado más corto es seleccionado. Equidad y
overhead medio. Genera inanición.
5. SJF con desalojo/SRT: Elige proceso que le queda menos tiempo esperado de ejecución.
Equidad media-alta, overhead medio. Genera inanición.
6. HRRN: Adaptación del SPN. Se prioriza a los procesos con mayor tasa de respuesta
(Response Ratio): R.R. = (S + W) / S. Sin desalojo. Equidad alta, overhead medio. No genera
inanición.
7. FEEDBACK: Combina tres RR y un FIFO. Puede tener otros algoritmos. Overhead medio.
8. PRIORITIES (CD/SD): Con cada proceso se asocia una prioridad (número entero), y la CPU se
asigna al proceso con prioridad más alta. Poca equidad. Genera inanición. Si es con desalojo, el
overhead es medio. Caso contrario el overhead es bajo.
HILOS
Si un proceso tiene más de un hilo, puede ejecutar múltiples tareas al mismo tiempo.
Un proceso comparte con sus hilos su sección de código, su sección de datos, y los recursos
asignados al proceso por el SO, es decir, comparte su TAREA. Los registros (contexto) y las pilas
son individuales a cada hilo.
Padre: generador de un hilo. Le da a sus hijos el código, el espacio de memoria, las referencias
a los archivos.
▪ Compartición de Recursos: Los hilos comparten la memoria y los recursos de los procesos a
los que pertenecen.
▪ Economía: Dado que los hilos en un proceso comparten los recursos, es más económico crear
y cambiar contextos de hilos.
Tipos de hilos
Hilos de usuario (ULT): son visibles para el programador, pero no para el sistema operativo.
▪ En general, los ULTs son creados con mayor velocidad que los KLTs (y por consecuencia, que
los procesos), porque no se requiere intervención del Kernel.
Cuando tenemos un solo hilo conductor (sin ULTs), se trata como si fuera un solo proceso.
Modelos Multihilo
– Hay mayor nivel de competitividad por recursos que en el modelo Muchos a Uno.
– Permite ejecutar otros hilos de Kernel cuando alguno de ellos está bloqueado.
– Crear un nuevo hilo de usuario requiere crear un nuevo hilo de kernel (más overhead!)
– Crear demasiados hilos de Kernel para el mismo proceso, puede ser ineficiente.
– La administración de los hilos es realizada por la Biblioteca de Hilos (hacen lo mismo que las
syscalls).
– Aunque se tengan múltiples procesadores, los hilos de estas combinaciones sólo utilizarán
uno.
-Para crear o modificar hilos de usuario, el sistema operativo no ejecuta ninguna tarea
administrativa.
- Una buena práctica es crear programas que tengan muchos ULTs cuando en realidad lo que
voy a usar es mucho procesador, porque puedo repartir el tiempo del procesador entre los
distintos ULTs.
Muchos a muchos: permite muchos hilos de usuario mapeados a menos hilos de kernel
– El número de hilos de Kernel podrá ser específico a una aplicación o un tipo de máquina.
Debe existir no solo un balance desde el sistema operativo (para manejar el planificador de
largo plazo), sino también del lado del programador, que tiene que tener una idea de para qué
hardware está programando. Mientras más conocimiento, más eficiente puede ser la
programación.
Biblioteca de hilos
Una Biblioteca de Hilos provee al programador una API para crear y manejar los hilos.
La biblioteca de hilos no es única. Existe por cada lenguaje de programación, ya que los
programas son creados en distintos lenguajes.
Estructura intermedia colocada en algunos sistemas con modelo Muchos a Muchos entre los
KLT y los ULT.
– Para la Biblioteca de Hilos (ULTs), el LWP se comporta como un CPU “virtual” en el que la
aplicación puede planificar la ejecución de los ULTs.
– En general el cambio de contexto entre ULTs implica tomar el contexto del ULT que está
utilizando el LWP y reemplazarlo por el de otro ULT.
– Bloqueado (Blocked): Un ULT solicita un recurso y debe esperar a que le sea asignado a su
correspondiente KLT.
– Ejecutando (Running)
– Finalizado: Se liberan los recursos ocupados por contexto y pila del hilo (en el LWP).
Planificación de hilos
El dispatcher solo maneja KLTs, ya que estamos trabajando con el sistema operativo. Pueden
existir ULTs, pero van a estar limitado por la planificación del sistema operativo.
Prioridades:
1- Sistema Operativo
2- Procesos
3- Hilos (usuario)
Los KLT siguen la planificación del sistema operativo. Los ULT se rigen por el planificador de
hilos de usuario (biblioteca).
A partir de ahora, múltiples hilos de kernel se pueden mandar a múltiples cores de forma
simultánea aunque correspondan al mismo proceso.
Los ULTs sólo pueden aprovechar un único Core o CPU, independientemente de que haya más
disponibles.
▪ No generan Overhead al SO
▪ No hay límite en la cantidad de ULTs que pueden crearse asociados al mismo LWP y su
correspondiente KLT.
Desventajas ULT: ▪ No son vistos por el SO por lo que su planificación queda atada a la
experiencia del programador.
▪ Una Llamada al sistema bloqueante bloquea el LWP y su KLT asociado, por lo que ningún otro
hilo dependiente de este KLT podrá ejecutar, a menos que use Jacketing (técnica para poder
ejecutar hilos de usuario sin bloquear otros hilos de usuario).
Ventajas KLT: ▪ El proceso de usuario no se tiene que encargar de la planificación de los hilos.
▪ Si tenemos un procesador con más de un núcleo, el Sistema operativo puede planificar los
hilos en diferentes núcleos.
▪El bloqueo de un hilo no bloquea la ejecución del resto (ya que los ve el SO como procesos
ligeros separados).
Desventajas KLT: ▪Causan mayor Overhead en determinados modelos (Ej. Uno a Uno).
▪Limitados por la disponibilidad del manejo de hilos del SO. Muchos KLTs pueden causar
excesiva “sobrecarga” (Overhead).
CONCURRENCIA
Sección crítica: Sección de código dentro de un Proceso que requiere acceso a recursos
compartidos (datos y dirección de archivos) y que no debe ser ejecutada mientras otro proceso
se encuentre dentro de ésta misma sección de su código y en uso del recurso mencionado.
Cada proceso tiene una o más secciones críticas.
Condición de carrera: Situación en la cual múltiples KLTs o procesos leen y escriben un dato
compartido y el resultado final depende de la coordinación relativa de sus ejecuciones. Como
se vio en unidades anteriores, los Procesos “compiten” por los recursos. La condición de
carrera es la expresión de esta competencia y debe ser administrada para que los resultados
obtenidos no sean diferentes de los esperados.
Causas de la competencia
– Variables globales, regiones de Memoria Principal, Archivos, etc. Pueden ser accedidos por
diferentes procesos en un determinado momento.
– Los dispositivos de E/S son recursos compartidos cuyo uso también debe ser controlado y
sincronizado.
Exclusión Mutua: Requisito de que cuando un proceso esté en una sección crítica que accede a
recursos compartidos, ningún otro proceso pueda estar en una sección crítica que acceda a
ninguno de estos recursos compartidos. Si un proceso no puede avanzar por la exclusión
mutua, debe bloquearse.
Atomicidad: Garantiza que una o más operaciones pueden ejecutarse en forma sucesiva sin ser
interrumpidas o temporizadas hasta haber finalizado (se apropian del procesador).
▪ Sólo un proceso/hilo puede encontrarse dentro de la sección crítica de su código que utiliza
un recurso compartido.
▪ Un proceso/hilo que se pare en su sección no crítica no debe interferir en ninguna forma con
otros procesos/hilos.
▪ No debe ser posible que un proceso/hilo que solicita acceso a su sección crítica sea
pospuesto indefinidamente.
▪ Cuando ningún proceso/hilo esté en la sección crítica, cualquiera de ellos (el primero en
solicitarlo) deberá poder acceder a la misma sin restricciones.
Semáforos
-Tienen asociada una cola de procesos que esperan en el semáforo para acceder a una sección
crítica de su código. El semáforo sincroniza el uso de un recurso compartido.
Si todos los procesos se llegan a ejecutar, el valor del semáforo al finalizar tiene que ser el
mismo que al comienzo.
Ejercicios de seguimiento: los más fáciles. Se parecen a los de planificación. Se nos da una
planificación y una sucesión de solicitudes de uso de primitivas de semáforos para manejar
procesos. Hay que seguir la tabla y decir en qué situación terminan los procesos.
INTERBLOQUEO
Bloqueo permanente de dos o más procesos que poseen una serie de recursos asignados y
que, para continuar (y/o finalizar) con su ejecución, requieren recursos que actualmente están
asignados a otros procesos, cuando al mismo tiempo, éstos últimos requieren los recursos que
tienen asignados y en uso los primeros. No depende de la planificación. Depende de la
dinámica de la ejecución.
Recursos reutilizables: aquel que sólo un proceso puede utilizar en forma segura en un
determinado momento y que no se destruye después de su uso. Son limitados. Ejemplo:
memoria, disco, CPU, E/S.
Recursos consumibles: aquel que puede crearse (producirse) y destruirse (consumirse). No hay
límites para la creación de recursos consumibles. Ejemplo: interrupciones, señales, mensajes.
-Exclusión mutua: Sólo un proceso puede utilizar un recurso en cada momento y no se permite
que otro recurso lo utilice.
-Retención y espera: Un proceso puede mantener los recursos que le son asignados mientras
espera la asignación de otros recursos.
Hay 3 estrategias:
Prevención (indirecto/directo)
– Negar el sin desalojo: ▪ Sólo para recursos que pueden recuperar su estado fácilmente (Ej.
memoria o CPU). Un proceso que tiene que esperar pierde los recursos que le fueron
asignados, y pasa a esperar también por ellos.
▪ Alternativamente, se demora la expropiación hasta que algún otro proceso necesite dichos
recursos. Riesgo de inanición
– Negar la retención y espera: ▪ Obligar a solicitar todos los recursos que vaya a necesitar cada
proceso al inicio de su ejecución. Problema: un proceso puede no conocer por adelantado
todos los recursos que va a necesitar (Ej. trabajos interactivos). Hay riesgo de inanición.
Recursos asignados que no se utilizan.
▪ Como alternativa, sólo permitir solicitudes si los procesos no tienen ningún recurso asignado.
– Negar la espera circular: ▪ Ordenar los recursos y exigir que se soliciten en orden creciente. ▪
Alternativamente, siendo i≤j, exigir que un proceso libere los ejemplares que tenga asignados
de Rj antes de solicitar ejemplares de Ri . Problema: recursos asignados que no se utilizan.
Es puro overhead. “Piensa todo antes.” Se da una idea de cómo van a ocurrir las cosas y
plantea diferentes escenarios de ejecución, y elegir el que llegue a un resultado feliz.
–Impedir que se llegue a interbloqueo, explotando información a priori sobre las necesidades
de los procesos.
–Denegar solicitudes que se podrían conceder, para no depender de la dinámica de ejecución
de los procesos.
– Análisis del peor caso: un estado es seguro si es posible encontrar un orden para satisfacer
las necesidades máximas de todos los procesos.
– Para un estado dado, una secuencia de procesos (p1, p2,..., pn) es una secuencia segura si las
necesidades máximas de Pj en ese momento pueden satisfacerse con los recursos libres más
los que tienen asignados los procesos Pi con i<j.
–Un estado es seguro si existe para él una secuencia segura (que todos los procesos se van a
ejecutar sin interbloqueos).
Estado seguro: No hay interbloqueo y se puede encontrar un orden para satisfacer las
necesidades máximas de todos los procesos.
Estado inseguro: Puede haber interbloqueo o no. De no haberlo ya, el que se llegue o no a
interbloqueo depende de cómo se sucedan las solicitudes de recursos.
El SO concederá a los procesos el uso de los recursos siempre que éste sea posible.
Periódicamente el SO verificará la existencia de una espera circular.
– Expropiar sucesivamente los recursos para permitir la finalización de procesos, liberando los
que éstos tengan en uso, permitiendo así, el avance de los procesos bloqueados que los
requieren.
Algoritmo del banquero
– Conocer el número Máximo de recursos que cada proceso requerirá para su ejecución.