UNIDAD 4: Memoria
Introducción:
- La Memoria Principal es compartida por los distintos procesos y por el SO.
- El procesador leerá de la caché o de la memoria principal, una instrucción para
ejecutarla. También los datos que necesite para depositar el resultado en la memoria
principal
Tipos de Memoria:
- ROM - Solo Lectura
- RAM – Lectura-Escritura
Memoria Principal:
Es un conjunto de circuitos donde se almacenan y recuperan temporalmente datos y
programas sobre los que trabaja el procesador. Es una división lógica de la memoria
principal y aloja una amplia tabla de palabras o bytes, cada una con su propia dirección.
Existen dos tipos de almacenamiento:
- Volátil (Ram, memoria principal)
- No volátil(Disco rígido)
A la Memoria Principal se la divide, lógicamente, en varias partes para que permita la
presencia de varios procesos. La asignación de la Memoria Principal debe realizarse
eficientemente para contener el mayor número de procesos como sea posible.
Consideraciones para Cantidad de Memoria Requerida
- Velocidad dispositivos E/S
- Cantidad de dispositivos que puedan operar
- Número esperado de programas
- Tamaño esperado de los programas
- Espacio ocupado por el sistema operativo
- Tamaño del disco rígido
Criterios en el diseño de las memorias:
- Costo/bit
- Velocidad
- Capacidad
- Consumo
- Fiabilidad
Todos estos criterios pueden tener cierta incompatibilidad, por lo que se requiere una
organización jerárquica de la memoria de la computadora
Jerarquía de Memoria
Requerimientos para el manejo de memoria
- Protección: No se deje sobreescribir espacios ocupados por otros procesos o por el
SO, por ello la asignación debe ser en espacios libres.
- Transparencia: Al programador no le interesa donde se guarda la información, si se
divide en página o en segmento etc, no le incumbe.
- Segmentos Múltiples: Guarda físicamente en el disco rígido, no necesariamente se
encuentran a continuación del otro. Lógicamente sí están uno a continuación del
otro.
- Código Compartido: No repetir información en la memoria principal,
Direcciones Lógicas y Físicas
Direcciones Lógicas:
Abstraen una dirección física, por lo que se debe realizar una traducción de lógica a física.
La dirección lógica puede ser más grande que la dirección física pero siempre hace
referencia a una localidad de memoria, independientemente de la asignación actual de los
datos en la memoria.
Direcciones Físicas:
Es la dirección absoluta en la memoria principal. Es única, no se repite.
Espacio de direcciones:
Es el espacio ocupado por el programa, se accede al mismo en modo usuario. Un proceso
puede modificar direcciones de su espacio de direcciones sin la intervención del SO. Está
limitado por los registros de Base y Límite.
- Registro Base: Es la dirección física legal más pequeña.
- Registro Límite: Especifica el tamaño del rango.
Estos valores se fijan cuando el proceso es cargado a memoria principal. Se utiliza la
dirección lógica junto con el registro base para obtener una dirección física (según la técnica
utilizada).
El resultado se compara con el valor del registro límite (según la técnica utilizada), si la
dirección generada es incorrecta, se genera una interrupción al SO
Resolución de Direcciones
● En el momento de compilación: Las direcciones absolutas del programa se
establecen en el momento de la compilación, significa que cada vez que se ejecute
el programa, debe cargarse en la misma ubicación de la memoria. Si se necesita o
se quiere cambiar una dirección, se debe recompilar.
● En el momento de carga: Cuando se conoce la dirección de inicio de carga del
proceso, se realiza la resolución de direcciones (binding), lo que significa que se
requiere que el programa se ejecute siempre en la misma ubicación de memoria una
vez que ha sido cargado. Si no se conoce la dirección, las direcciones se establecen
en ese punto y no cambian durante la ejecución.
● En el momento de ejecución: Permite cargar el proceso en cualquier ubicación luego
de un swap(cambio), la resolución de direcciones ocurre durante la ejecución. Las
direcciones lógicas se conocen como “direcciones virtuales”.
Mapeo de memoria:
Las direcciones del Espacio de direcciones físicas de la memoria están ligadas a las del
espacio de direcciones del Programa, es decir, las lógicas mediante una tabla de mapeo o
de correspondencia
El dispositivo hardware que mapea las direcciones lógicas a físicas se llama Administrador
de Memoria (MMU)
Los sistemas que tienen este dispositivo se llaman Sistemas Mapeados y anteriormente los
que no lo tenían se llamaban Sistemas No Mapeados
Monoprogramación y uso de memoria:
Administración sin intercambio:
- No se ejecuta en forma más de un proceso.
- No hay intercambio entre la memoria principal y el disco rígido, es decir no hay
memoria virtual.
- Se llama también asignación de una sola partición, es lo más sencillo, pero no se
utiliza hoy en día porque hay multiprogramación.
- El esquema que puede utilizarse es que, se divide en dos espacios a la memoria,
uno para el SO y otro para el proceso de usuario.
Multiprogramación:
En un entorno de multiprogramación la memoria se distribuye entre los ´n´ procesos en
memoria en un determinado momento. Por lo tanto la memoria necesaria sería:
𝑛
Memoria total = ∑ Memoria programa i
𝑖=1
Al no estar los procesos sincronizados en la espera de E/S, se puede analizar el uso del
Procesador desde el punto de vista probabilístico donde el:
𝑛
uso de la CPU = 1 – 𝑝
- p = tiempo de espera por E/S
- n = cantidad de procesos en memoria
𝑛
- 𝑝 = Tiempo que está inactiva la CPU
Asignación de Memoria
Algoritmos de asignación:
- Particiones Fijas que son de igual tamaño: No necesita un algoritmo.
- Particiones Fijas de diferente tamaño y Particiones Dinámicas: Hay cuatro
métodos:
- Primer Ajuste
- Siguiente Ajuste
- Mejor ajuste
- Peor ajuste
- Administración con mapa de bits:
El SO tiene una tabla al momento de prender la computadora, la cual es un mapa
que representa toda la memoria principal, marca cada uno de los espacios como
libres u ocupados de acuerdo si tiene o no información, a partir de ahí lee y va
asignando
Mientras más pequeños son los bloques la tabla será más grande y viceversa.
- Administración con listas enlazadas:
Se asigna la memoria mediante un bloque de asignación. El control de memoria libre
o memoria ocupada es mantenido mediante una lista enlazada en donde cada nodo
de la lista está compuesto por los siguientes campos:
▪ Bit que representa un proceso o un hueco.
▪ Número de bloque de inicio.
▪ Número de bloques utilizados.
▪ Puntero al siguiente nodo de la lista.
Sistemas de los Asociados:
Consiste en tener a la memoria inicialmente como un gran hueco. A medida que un proceso
lo requiere se particiona. Dicho particionamiento está regido por segmentos, múltiplos de
potencia dos.
Cómo Funciona:
- Al llegar un proceso se tiene en cuenta su tamaño y el espacio libre en memoria
principal.
- Se busca un bloque del tamaño o donde quepa el proceso. Si no se encuentra se
divide el bloque en dos bloques de memoria iguales y así sucesivamente hasta
asignar el proceso, a estos bloques se los llama socios.
- Dirección Lógica: generada por la instrucción.
- Dirección Física: pasada a la unidad de memoria.
- Dirección Virtual: dirección lógica en sistemas donde la lógica difiere de la física.
Fragmentación Interna:
Espacio libre de memoria que no se puede usar por estar asignado a un proceso.
Fragmentación Externa:
Espacio libre de memoria que no se puede asignar a ningún proceso, por ser demasiado
pequeño.
Intercambio o Swapping
- El proceso entero puede ser swapped a/desde el almacenamiento de respaldo.
- Usado para liberar grandes cantidades de memoria.
Tercer video:
Memoria paginada.
● Para el SO, es más cómodo trabajar con paginación.
● La memoria se encuentra dividida en marcos, los cuales contienen páginas.
● Ambos elementos serán del mismo tamaño (Marcos y páginas).
● En la paginación existe fragmentación interna, ya que las páginas no siempre
serán ocupadas al 100%, por ende, tendrán desperdicio.
● Cada proceso tiene su tabla de páginas (TP), donde se puede ver si se encuentran
en los marcos o no.
● Existe una tabla de marcos libres y ocupados, donde el administrador de memoria
consulta qué es lo que debe hacer para asignar páginas a esos marcos libres, una
vez que asigna una página a uno de esos marcos libres, el mismo pasa a estar
ocupado.
● Otra variante consiste en la creación de una segunda tabla, separada de la original,
donde solo se guardan marcos libres con información de los mismos.
Memoria paginada: Los procesos de un programa se dividen en páginas que se
encuentran en MV. Cuando pasan a MP y se crea el proceso en esta, va a existir una TP
que indique a qué marco va a ir cada una.
● Las páginas son contiguas lógicamente, pero físicamente separadas.
● Se guardan en cualquier marco libre que encuentren.
● Si se trabaja con TP, el SO debe tener en cuenta la velocidad de asociación entre
direcciones lógicas y físicas, ya que la CPU pide la dirección de una página (Lógica)
y si la misma se encuentra en MP, debe hacer uso de memoria física.
Dirección Lógica a Dirección Física.
El procesador solicita la dirección lógica (desplazamiento) de una determinada página,
entonces, dicha información se verifica en la TP(tabla de página) como el par [p; d]. Ahí se
obtiene el marco y la dirección física (desplazamiento) como el par [m; d]. Con esos datos,
se busca ese desplazamiento en el correspondiente marco que se encuentran en
MP(Memoria Principal), de esa forma, se encuentra donde está la dirección lógica, de
manera física, en la memoria.
Paginación Multinivel.
Tablas de páginas multinivel. Las mismas surgen porque los programas actuales son más
grandes, tienen más páginas y requieren tablas más grandes, entonces, este modelo se
encarga de fragmentarlas.
● Se crean niveles de tablas de páginas (TP)
● Un nivel queda en MP, mientras que el otro vuelve a memoria virtual (MV)
● Se evita tener en MP la TP completa.
● No se requiere del PID del proceso, ya que la TP es parte del PCB del proceso.
Como ventaja, aumenta el grado de multiprogramación del sistema, como desventaja, se
debe realizar una interrupción de E/S si se quieren buscar páginas en MV (disco rígido).
Tablas de páginas invertidas. Se asocian entradas por cada marco en MP, en lugar de
hacerlo por cada página del espacio de Direcciones virtuales.
● Tabla conformada por marcos, no por páginas.
● El PID es necesario para identificar el contenido que se encuentra dentro de los
marcos.
Fallo de página.
Si una página no tiene marco -> en la TP es marcada como ausente
Al momento de crear un proceso y buscar una página, se debe contemplar si hay espacio
en la MP, en caso de que no haya, se deben rebajar otras páginas para traer la o las que se
necesiten.
Un fallo de página se produce cuando el procesador busca una página, ya sea en caché o
dentro de un marco en MP, y al consultar en la TP, la misma informa que no se encuentra en
memoria física, sino en la MV.
En caso de que ocurra eso, la Unidad de Manejo de Memoria (MMU), encargada de la
traducción de direcciones lógicas a físicas brinda su ayuda ante estas complicaciones. El
SO solicita el apoyo de unidades de hardware, en este caso la MMU, que será la encargada
de buscar la página en MV, traerla y brindar la dir. lógica solicitada.
Entonces:
● Se genera un trap al SO y el proceso pasa a estado de espera, ya que al buscar en
MV, tenemos un proceso de E/S de datos.
● Cuando es encontrada, el SO busca un marco libre en la MP.
● Mientras tanto, el procesador ejecuta otro proceso mientras el anterior está en
espera.
● Finalmente, cuando la E/S finaliza, el proceso pasa a la cola de listos.
La tabla de páginas puede contener:
- El bit de presente/ausente: indica al SO si la página está presente o ausente en
MP. Si es 1, está presente y tiene un marco, en caso de ser 0, no tiene marco, y por
ende, está ausente.
- El bit de protección (1 o 3 bits): si es 1 -> 0 indica lectura | 1 indica escritura. Si
son 3, cada uno de estos representa privilegios de lectura, escritura y ejecución.
- Bit modificado: si un marco fue modificado, este bit es 1, en caso contrario, es 0.
Este es muy importante, por que cuando no hay espacio en MP y es necesario
rebajar páginas, el SO se encarga de buscar aquella o aquellas que no han sido
referenciadas recientemente, y a la vez, verifica si fueron modificadas o no, en base
a esto, actualiza la página en MV, y el bit vuelve a ser 0.
Memoria Segmentada.
En este caso, los procesos de un programa no se dividen en partes iguales cuando están en
la MV, sino que se toma la rutina completa y se la carga en cualquier espacio libre de la MP.
● Como desventaja respecto a la paginación, la asignación es más compleja, ya que
las rutinas que se pasan a MP como segmentos tal cual, son variables en su
tamaño.
● Como ventaja, al cargarse y ejecutarse la rutina completa en MP, cuando el
procesador haga pedidos, habrán menos fallos.
En este tipo de memorias, no hay marcos, sino huecos, cuyo tamaño varía dependiendo del
tamaño de los segmentos que ingresen, permitiendo que se ocupe la memoria justa para
cada uno. El SO tiene una lista de huecos libres y ocupados y otra solo de huecos libres, y
los procesos tendrán una tabla de segmentos (TS) la concha de las tablas lpm.
● La información que se agrega a la TS es la longitud de cada segmento.
● Se debe tener en cuenta una base límite y un tope para que los segmentos no
ocupen espacio de otros.
Fragmentación externa: Existen huecos disponibles en memoria, pero estos no son
suficientes para almacenar un segmento.
● Si se quiere ingresar una rutina de 10 kb y solo existen huecos de 4, 3, 2, y 1 kb, no
se podrá, y lo óptimo sería juntarlos a todos para que se pueda almacenar la rutina
(desfragmentación).
Cuando se está llevando a cabo la desfragmentación, ningún proceso puede funcionar, ya
que sería muy peligroso debido a la tremenda cantidad de errores que puedan presentarse
por direccionamiento erróneo.
Dirección lógica a física.
El procesador arma la dirección lógica [s; d]. Al segmento lo busca en la TS, mientras que
comprueba si el desplazamiento se encuentra dentro del límite de ese segmento, en caso
de que no, se produce una interrupción por direccionamiento erróneo, y si se encuentra
dentro, entonces se suma con la base para obtener la dirección del segmento en MP. En el
caso de que al hacerse la suma, se pase del límite, también se produce la interrupción.
Segmentación paginada
A la rutina que se trae desde la MV, se la carga dividida en páginas iguales. La misma se
encuentra, entonces, cargada en su totalidad dentro de la MP, pero dividida en páginas
iguales, cuyo tamaño es especificado por el SO. Cada segmento de la rutina tiene su propia
TP.
De la paginación se toma:
● Transparencia para el programador.
● Elimina la fragmentación externa.
De la segmentación se toma:
● Visible para el programador.
● Facilita la modularidad y un mayor soporte a la compartición y protección.
Dentro de la tabla de procesos, en cada uno de ellos, habrá una tabla de segmentos, y
dentro de cada una de estas, una tabla de páginas.
Como desventaja, se puede disminuir el grado de multiprogramación, ya que al haber tantas
tablas dentro de otras tablas, se ocupa más memoria, por ende, menos procesos presentes
en la MP. También, seguirá habiendo fragmentación interna.
● No se puede garantizar que no existan fallos de página, ya que puede seguir
ocurriendo que se busque una página, y la misma no se encuentre en MP, sino en
MV.
Paginación frente a segmentación (filmina 43 de la presentación).
Memoria Caché.
Memoria muy rápida, de pequeño tamaño y espacio limitado que se encuentra entre el
procesador y la MP. Se encarga solo de tener porciones del proceso o los procesos en
ejecución.
Dentro del procesador existen 3 niveles de caché, donde el primero y el segundo se
encuentran dentro de los núcleos (caché interna), mientras que el tercero se encuentra por
fuera (caché externa).
● Cuando el procesador hace un pedido, primero lo hace a la caché más cercana
(nivel 1) y así hasta el último, y si allí no encuentra nada, va a la MP.
● Dentro de cada núcleo, existen 2 cachés de nivel 1 y una de nivel 2.
● Existe una tasa que indica que el 90% de lo solicitado puede encontrarse en la
caché, y esto viene de hacer el cálculo:
Localidad espacial. Si el procesador solicita una instrucción, el SO se la traerá junto con
otra que se encuentre cerca, para que, cuando requiera usar esta segunda, la misma ya
esté a su alcance.
Localidad temporal. En el caso de que la rutina se trate de un bucle, la misma va y vuelve
llevando a cabo determinadas acciones, como traer instrucciones una y otra vez.
Inserción de bloques.
Por demanda. Solo la página que necesite.
Con anticipación. Puede traer solo la página que necesite, como otra que vaya a ser
usada. En este caso, puede haber una polución, es decir, sobrecarga de la caché (dentro de
esta se encuentra la espacial y temporal).
Acá leyó el mapa conceptual que está en la filmina 7 de la segunda presentación.
Terminología de la unidad filmina 9 de la segunda presentación.
Memoria virtual (disco rígido).
Ampliación de la MP, con la diferencia de que se encuentra en un dispositivo de
almacenamiento secundario, por ende, más lenta. Donde se hace la división del proceso en
páginas en caso de la paginación.
● Aumenta el grado de multiprogramación, ya que aumenta la cantidad de
almacenamiento de procesos de programas.
● Elimina muchas restricciones.
● El SO tiene que tener una política de reemplazo para llevar páginas de MP a MV.
Ventajas:
● Los procesos tienen un tamaño independiente, y se van llevando a MP según se
necesite.
● No se cargan los procesos en su totalidad, sino las páginas más importantes,
permitiendo así la multiprogramación.
● Al cargarse las partes esenciales de los procesos, se reducen las E/S, ya que no se
cargan las partes de los programas que se usan poco o directamente, que no se lo
hace.
Desventajas:
● En disco rígido.
● Al haber fallos, cada vez que el SO trabaja en modo kernel, los procesos no se
llevan a cabo.
Respuestas a las preguntas de la filmina 12 + 1 de la 2da presentación.
● Los bloques pueden ubicarse en cualquier sitio libre.
● Para encontrar un bloque en MP, se puede usar el bit de presencia o las tablas de
páginas y/o segmentos.
● El bloque que se quita cuando se produce el fallo de página, es aquel determinado
por el algoritmo de reemplazo.
Buffer de Traducción Adelantada - TLB
Se trata de otra opción, además de la MMU. Tiene trozos de la tabla de páginas de los
procesos en ejecución, y sirve para relacionar direcciones lógicas y físicas. Es un “tipo” de
caché que interactúa con el proceso en ejecución y con los demás niveles de caché, ya que
es el que conoce los datos de la página deseada y se encarga de buscarla en donde sea
necesario. Además, permite reducir los accesos a caché.
Este mecanismo requiere del PID, la página, el marco(dirección física).
Hiperpaginación = Thrashing.
● Cuando el SO dedica mucho tiempo al intercambio, es decir, que está mucho tiempo
en modo núcleo, lo que significa que los procesos no avanzan.
● Disminuye el grado de multiprogramación.
● En el caso de que un proceso cuente con todas las páginas que necesita, entonces
no se produce la hiperpaginación.
Problemas Soluciones
Memoría física muy chica Agrandar o proveer de más memoria al SO.
Ejecución de demasiados procesos Disminuir la cantidad de procesos activos.
Algoritmos de reemplazo inadecuados. Mejorar o buscar la mejor opción al
momento de elegir un algoritmo de
reemplazo.
Algoritmos de reemplazo.
Entre estos podemos encontrarnos con:
● algoritmos de reemplazo aleatorio: Aquellos que sacan una o varias páginas al azar
sin realizar ninguna consulta.
● Por orden de llegada (FIFO): el primero que llegó, es el que se puede sacar.
● Menos recientemente usado (LRU).
● No usada frecuentemente (LFU).
Asignación de memoria.
Algoritmos de espacio fijo (local). Donde cada proceso tiene un límite de marcos para
utilizar. Cuando se alcanza el límite, las páginas se sacan de ese mismo proceso.
Algoritmos de espacio variable (global). En este caso, el conjunto de páginas que un
proceso requiere, puede variar con el tiempo. Quien se encargue de sacar a una
determinada página de un proceso, puede ser otro distinto.
Localidad de los procesos.
La localidad, ya sea virtual o temporal, de un proceso se da en un momento por todo el
conjunto de páginas que tiene la memoria en ese instante. En ambos casos, se hace
referencia a aquellas páginas cercanas a la referenciada.
Esto hace que exista hiperactividad, y para resolverlo, sería necesario que los procesos
tengan en MP a sus páginas más usadas o activas. Eso disminuye la cantidad de fallos de
página.
Páginas activas de un proceso - conjunto de direcciones de trabajo (working set).
● Se examinan las referencias a memoria más recientes, pero hay más trabajo en
tiempo de núcleo. Es variable y depende del tipo de localidad. Finalmente, tiene
como objetivo, disminuir la cantidad de fallos de página.
Ventana del working set: indica la totalidad de las páginas | la cantidad de páginas que
son usadas frecuentemente entre esa totalidad.
● Si la demanda total de marcos es mayor que la cantidad de marcos disponibles,
entonces habrá hiperpaginación.
● El SO reduce el conjunto de direcciones de trabajo mediante:
○ La escritura de las páginas modificadas en MV.
○ Marcado de páginas sin modificar como libres (no se actualizan a MV porque
no han cambiado).
El working set es entonces, el conjunto de páginas activas de un proceso que son
almacenadas en memoria. Se define un número n por cada proceso. Finalmente, las “n”
páginas más activas del proceso son mantenidas en memoria.
UNIDAD 5 - (Entrada y Salida)
Introducción
- ¿Qué se busca?
- Saber que hay distintos tipos de E/S, con distintas arquitecturas. El SO debe
brindar uniformidad, ya que el usuario no debe preocuparse de la
arquitectura al usar la PC.
- Objetivos de la E/S
- Enviar al dispositivo.
- Que el dispositivo reciba y mande respuestas.
- Clasificación
- Comunicación con los usuarios.
- Comunicación con la computadora.
- Comunicación con otros dispositivos (Redes).
- Funciones del SO para las E/S
- Administrar y controlar los dispositivos: Gestión de recursos, la
asignación de acceso a dispositivos y el control de su funcionamiento.
- Manejar interrupciones y errores: Las interrupciones generan cambio de
contexto o cambio de proceso, lo que genera tiempo que los procesos de
usuario no pueden usar porque el SO está trabajando
- Independiente del dispositivo: Capa del SO que tiene ocultada las
diferencias de arquitectura.
- La administración implica:
- Supervisar el estado de cada dispositivo: Primero, el SO debe reconocer
los dispositivos E/S para poder administrarlo correctamente y optimizar el
rendimiento de los dispositivos reconocidos. Supervisar es saber el estado
del dispositivo, por ejemplo, se manda un paquete y ver si tarda o no en
enviar una respuesta, puede ser que sea problema del dispositivo E/S, PC,
enlace o destino que no esté activo (o no responde).
- Contar con políticas que permitan el uso de los dispositivos E/S a todos
los procesos: Todos los procesos tienen derecho a usar y comunicarse con
los dispositivos E/S, pero el SO va a controlar que sea posible.
- Asignar de forma eficiente y justa: Los dispositivos de E/S son finitos, por
ejemplo, una máquina con todos los procesos funcionando y solo tiene un
único disco rígido, por lo tanto el SO debe asignar de forma equitativa y
eficiente el uso del dispositivo.
- Liberar los dispositivos: Luego de que el proceso utilice el dispositivo, debe
liberarlo. El SO debe asegurarse de esto porque otro proceso debe utilizar
este dispositivo, optimizando el cambio.
- Comunicación de dispositivos:
- Es mediante puertos. Si usan un conjunto común de cables, la conexión es
denominada “bus”. Están también los controladores que son los
componentes electrónicos para manejar puertos, buses o dispositivos.
Consta de 4 registros.
- Status
- Control
- Data-in
- Data-out
- En la controladora hay 2 buffers: de entrada y salida, porque las solicitudes
quedan en el buffer de entrada que guarda el pedido. Mientras toma pedidos,
ya toma el anterior. En el de salida está la respuesta a la solicitud.
- Clasificación:
- Hardware: Componentes del PC xd. Tipo de bloque (lee el bloque completo,
es un sector o varios de 512k) y Tipo de Carácter (Lee por carácter)
- Software: Controlador/drivers. Archivo específico de un dispositivo. Lógica
del dispositivo.
- Diferencias entre dispositivos:
- Si es por carácter o por bloque.
- Modo de acceso: Secuencial (Una a una) o aleatoria(Brazo que dirige a tal
lado)
- Síncrono o asíncrono, actualmente son todos síncronos.
- Compartido (Ej: Disco duro para todos) o dedicado (EJ: Disco duro pero
reservado para un usuario).
- Lectura, Escritura y Lectura-Escritura (Lo de siempre kpe)
- Organización de las funciones:
- E/S Programada: Al principio se usaba. Llegaba el proceso y se solicitaba el
acceso al dispositivo en el procesador. La espera de la respuesta es activa,
es decir que busca adueñarse del procesador, trata de mejorar. El
procesador envía respuesta.
- E/S por interrupciones: El proceso solicita acceso al dispositivo. El
procesador envía orden, pero cuando pide la E/S, no es activa, queda en
espera a otra respuesta del dispositivo y este ya no compite por el
procesador. Básicamente, interrumpe al procesador, cambio de proceso que
se hace en modo núcleo, el trabajo se hace en MP y la respuesta también es
una interrupción.
- Acceso Directo a Memoria (DMA): permite a los dispositivos transferir datos
directamente a la memoria principal sin la intervención directa del
procesador. El driver coordina esta transferencia.
- Gestión de Errores: Durante el uso de los dispositivos pueden ocurrir errores como
fallos de escritura, por ejemplo.
Los dispositivos mandan un código de error en caso de que haya una interrupción.
El SO recibe el código del dispositivo con el error y puede entenderlo porque los
drivers están cargados, entonces, sabe cómo actuar.
- Estructura de Datos del Núcleo: El núcleo del SO guarda el estado de los
componentes, teniendo en cuenta las tablas de archivos, conexiones de red y
estados (monitoreo del dispositivo).
- Flujo de las operaciones: Un proceso quiere leer un archivo en disco. El dispositivo
recibe la petición y:
- Determina qué dispositivo almacena.
- Traducir datos lógicos a lo físico.
- Leer los datos físicos en el buffer de memoria.
- Devuelve el control al proceso.
- Rendimiento:
- Gasta procesador para ejecutar driver, software de E/S y los gestores de
interrupción.
- Cambios de contexto por las interrupciones.
- Se necesita copia de datos en MP.
- Tráficos de red.
- Los dispositivos E/S son más lentos que el procesador.
- Principios de Software de E/S (IMPORTANTE WACHOS): Se divide por capas.
- Software a nivel usuario: Aplicación usada que pide algo.
- Software independiente del dispositivo: Es lo que maneja el SO, lo que
entiende a cada driver por igual.
- Software dependiente: Drivers de cada dispositivo. Manda/Recibe los
pedidos.
- Hardware controlador: Cada dispositivo cuenta con un dispositivo
controlador físico.
- Hardware: Dispositivo en sí.
La imagen es una representación gráfica de lo anterior, no se asusten ni puteen,
Taiel no te quejes.
- Drivers: Es la interfaz entre el SO y el dispositivo. Busca uniformidad, por lo que
ofrece una interfaz en común entre cada dispositivo. Hechos a
medida/exclusivamente para cada dispositivo. Su función es ocultar las diferencias
de arquitectura.
Las unidades de E/S cuentan con un componente electrónico (Lo intermedio,
recibe/manda pedidos) y otro mecánico.
Relojes:
● Reloj del procesador: Administra el ritmo de ejecución de instrucciones (oscilador)
● Reloj temporizador: Genera interrupciones periódicas mediante un divisor de
frecuencia. Maneja el quantum, utilizado en procesadores de tiempo compartido.
● Reloj del sistema: Contador de fecha y hora. Necesario para las tareas
programadas.
La funciones que realiza el manejador de reloj depende de las interrupciones con las que
este trabaja, las funciones son:
● Control de tiempo de ejecución
● Mantención de la hora del dia
● Monitoreo del sistema
● Manejo de alarmas
Almacenamiento intermedio de E/S
Son almacenamientos temporales que tienen distintos dispositivos
● Buffer Sencillo o Único: Un solo buffer, se almacenan datos de lectura y escritura
desde el dispositivo y hacia el dispositivo (va y viene). Puede estar en la memoria
principal porque es más rápido de acceder.
○ Ventajas: Almacena temporalmente datos que pueden ser escritos o leídos
○ Desventajas: Es un solo espacio, el Sisop debe tener cuidado de no pisar
las acciones que se realizan (lectura y escritura)
● Buffer Doble: Son dos buffers, por lo que se puede leer al mismo tiempo que se
escribe, Se vacía uno mientras otro se carga.
○ Ventajas: Velocidad de lectura y escritura por hacerlo en simultáneo
○ Desventaja: El tratamiento es más complejo. El sisop debe tener en cuenta
aspectos tales como: Cuando un buffer está lleno, cuando se leyó y cuando
se escribió.
● Buffer circular: Relación productor - consumidor, la escritura en esta estructura se
realiza de forma cíclica, la parte de lectura consulta si hay algo escrito y lo saca. La
escritura cíclica provoca que los datos pueden sobreescribirse si no se leen
○ Ventajas: Ocupa una porción fija de memoria, uso más eficiente
○ Desventaja: Posibilidad de sobreescritura de datos
Almacenamiento secundario
Algoritmos de planificación de discos
● Primero entrado, primero salido (FIFO): Más justo, se atienden las peticiones en
orden de llegada. Siempre presente en TODOS los sistemas operativos.
● Primero atendido, camino más corto (SSTF): Primero se atienden las tareas que
estén más cerca de la posición actual del cabezal (la que genera menos
movimientos)
● Ascensor (Scan): Comienza desde el extremo del disco y realiza las peticiones
pendientes que encuentra, hasta la posición final y luego vuelve al inicio en sentido
contrario atendiendo a las peticiones que encuentre.
● Ascensor de un sentido (C-Scan): En este caso cuando el cabezal llega al final
vuelve al inicio pero sin atender peticiones, una vez que vuelve ahí nuevamente
hace el recorrido atendiendo peticiones.
● C-Look: Realiza el mismo recorrido que las anteriores pero en lugar de regresar al
principio, regresa a la petición más próxima al principio.
Estos algoritmos son cada uno más eficientes, pero agregan sobrecarga en el tiempo de
respuesta del sistema operativo.
Gestión del disco
Formato de bajo nivel o físico: Divide el disco en sectores que el controlador
puede leer y escribir.
El formateo se divide en grupos de cilindros (particiones) y el sistema de archivos le
da formato lógico al disco.
Gestión de espacio de Swap
La memoria virtual utiliza un espacio en disco como una extensión de la memoria
principal.
En windows: La memoria virtual es un archivo.
En linux: La memoria virtual es un partición y debe definirse como área de swapeo,
si la instalación es manual se debe especificar que ahí irá la memoria virtual.
Fiabilidad del disco (redundancia)
Se debe prever la posibilidad de no perder datos en caso de que se rompa el disco
rígido. Las técnicas de protección del disco implican trabajar con discos de forma
cooperativa.
Para ello se utilizan arreglos de disco, los RAID (Redundant Array of Independent
Disks)
Almacenamiento terciario
Baratos y extraíbles, son de gran capacidad
Rendimiento
En el almacenamiento terciario los dos aspectos importantes son la latencia y ancho
de banda.
● Ancho de banda: Tasa de transferencia, capacidad de transferencia de datos.
● Latencia: Tiempo necesario para llegar a la transferencia efectiva.
Interfaz Procesador - Periférico
● Registros: Conectan a los dispositivos con el procesador.
○ Transfiere el estado del dispositivo
○ Transferir instrucciones al dispositivo
○ Transferir datos desde el dispositivo
○ Transferir datos al dispositivo
● Controladores: Los controladores contienen el estado del dispositivo para que
pueda comunicarse con el procesador, chequea los datos transferidos.
● Canales: Conectan los controladores al procesador. Se conecta a dispositivos lentos
UNIDAD 6 - SISTEMAS DE ARCHIVOS
Archivo: Colección de datos con un nombre o conjunto de datos relacionados lógicamente
entre sí.
El Sistema Operativo se abstrae de la estructura física para crear una estructura lógica: el
archivo. Es a través del Sistema Operativo que los archivos se almacenan en dispositivos
físicos y por lo tanto un subsistema de él se encarga de la administración.
Objetivos
● Proveer almacenamiento persistente y confiable.
● Proveer un sistema de nombres lógicos.
● Dar al usuario habilidad para crear, modificar, borrar archivos, etc. (operaciones con
archivos)
● Permitir y controlar el uso de archivos compartidos.
● Controlar el acceso a los archivos.
● Contar con mecanismos de encriptación.
Capas del Sistema de Archivos
Estructura del Archivo: Bloques físicos, registros lógicos, fragmentación.
Tipos de Archivos:
● Ordinarios: texto, binarios.
● Especiales: pueden hacer referencia a un dispositivo.
● Directorios: mantienen la estructura del Sistema de Archivos.
● Vínculos: se crean rutas adicionales de acceso y permite más de un nombre para
un mismo archivo.
A partir de aquí se encuentra el 2do vídeo otorgado por el Gustavito Berón boe re
tonto
Atributos de Archivos
- Nombre y Tipo: Orientación para el usuario.
- Locación: Dispositivo que el SO reconoce, lógico y físico, por ejemplo buscar algo en
disco duro (físico) o buscar algo en el drive (lógico).
- Tamaño
- Propietario: Quien modifica o quien tenga permisos para hacerlo.
- Protección: Permisos sobre ese archivo, lectura, escritura o ambos. Importante en
archivos compartidos.
- Tiempos
Funciones del Sistema de Archivos
- Identificación y ubicación de un archivo: Búsqueda en disco duro.
- Mantener directorios para agrupar archivos: el SO no tiene carpetas literales, es una
forma lógica y lo hace a través de directorios. Lo importante es que se mantenga la
información dentro.
- El acceso de un archivo compartido, debe ser controlado
- Por permisos bloquear, si es necesario, los accesos a archivos.
- Gestionar la asignación de espacio en el almacenamiento secundario.
Operaciones
- No es tanto capos: Crear, Escribir, Eliminar, Abrir, Leer, Buscar, Truncar, Renombrar,
Cerrar.
Apertura de Archivos
Existen dos tipos de permisos en general para todos los usuarios y a nivel local
Atributos Globales
Habla en general no de un proceso determinado, pueden ser compartido los
archivos
Cuenta con:
- Locación de disco y tamaño
- Tiempo
- Buffers
- Cuenta de Aperturas: Suma 1 cada vez que abre y resta 1 cada vez que
cierra
- Lock(s)
Es la estructura general de archivo abierto
Atributos de Proceso(Nivel Local)
- Puntero archivo
- Permiso de acceso: Solamente del usuario, puede tener derecho o no para
poder modificar los datos
En el PCB tiene un puntero el cual apunta a un proceso y trabajan en conjunto
Los atributos de proceso está relacionada con la tabla de procesos
Motivos para organizar los archivos
● Corto tiempo de acceso: Al estar organizado los archivos dentro de un directorio el
acceso es más rápido
● Facilidad en la modificación
● Economía en el almacenamiento: Evita tener más de una copia de archivo
● Simplicidad del mantenimiento
● Confiabilidad
Asignación de espacios
● Asignación Adyacente o Contigua: Almacén de cada archivo en un bloque a
continuación del otro. Lo bueno es que es fácil de implementar pero puede producir
fragmentación externa.
● Asignación por Lista Ligada o Enlazada: Bloques que se encuentran lógicamente
juntos pero no físicamente. Para mejorar esto, en MP se guarda un índice que tiene
el direccionamiento físico del bloque para localizarlo más rápido.
● Asignación por I-Nodo: me re perdí en esto pero dice algo de región de
almacenamiento, lo de entrada directa e indexaciones.
Optimización de Espacios
Desfragmentación
El SO trata que los datos de los archivos estén lógica y físicamente contiguos.
acá terminó sistemas operativos, un placer. eu
confío