0% encontró este documento útil (0 votos)
12 vistas21 páginas

Ejercicios Inglis

El bloqueo mutuo, o interbloqueo, ocurre cuando procesos en un sistema operativo se bloquean entre sí al competir por recursos, y no existe una solución general para este problema. Se identifican cuatro condiciones necesarias para que se produzca un bloqueo mutuo, conocidas como condiciones de Coffman, y se pueden implementar algoritmos como el del banquero para evitarlo. Además, la gestión de memoria y almacenamiento virtual son cruciales para optimizar el uso de recursos en sistemas operativos.

Cargado por

moises sanez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
12 vistas21 páginas

Ejercicios Inglis

El bloqueo mutuo, o interbloqueo, ocurre cuando procesos en un sistema operativo se bloquean entre sí al competir por recursos, y no existe una solución general para este problema. Se identifican cuatro condiciones necesarias para que se produzca un bloqueo mutuo, conocidas como condiciones de Coffman, y se pueden implementar algoritmos como el del banquero para evitarlo. Además, la gestión de memoria y almacenamiento virtual son cruciales para optimizar el uso de recursos en sistemas operativos.

Cargado por

moises sanez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Bloqueo Mutuo

En sistemas operativos, el bloqueo mutuo (también conocido como interbloqueo, traba


mortal, deadlock, abrazo mortal) es el bloqueo permanente de un conjunto de procesos o
hilos de ejecución en un sistema concurrente que compiten por recursos del sistema o bien
se comunican entre ellos. A diferencia de otros problemas de concurrencia de procesos, no
existe una solución general para los interbloqueos.
Todos los interbloqueos surgen de necesidades que no pueden ser satisfechas, por parte de
dos o más procesos. En la vida real, un ejemplo puede ser el de dos niños que intentan
jugar al arco y flecha, uno toma el arco, el otro la flecha. Ninguno puede jugar hasta que
alguno libere lo que tomó.

En el siguiente ejemplo, dos procesos compiten por dos recursos que necesitan para
funcionar, que sólo pueden ser utilizados por un proceso a la vez. El primer proceso obtiene
el permiso de utilizar uno de los recursos (adquiere el lock sobre ese recurso). El segundo
proceso toma el lock del otro recurso, y luego intenta utilizar el recurso ya utilizado por el
primer proceso, por lo tanto queda en espera. Cuando el primer proceso a su vez intenta
utilizar el otro recurso, se produce un interbloqueo, donde los dos procesos esperan la
liberación del recurso que utiliza el otro proceso.

Condiciones necesarias

También conocidas como condiciones de Coffman por su primera descripción en 1971 en un


artículo escrito por E. G. Coffman.

Estas condiciones deben cumplirse simultáneamente y no son totalmente independientes


entre ellas.
Sean los procesos P0, P1, ..., Pn y los recursos R0, R1, ..., Rm:

Condición de exclusión mutua: existencia de al menos de un recurso compartido por los


procesos, al cual sólo puede acceder uno simultáneamente.

Condición de retención y espera: al menos un proceso Pi ha adquirido un recurso Ri, y lo


retiene mientras espera al menos un recurso Rj que ya ha sido asignado a otro proceso.

Condición de no expropiación: los recursos no


pueden ser expropiados por los procesos, es decir, los recursos sólo podrán ser liberados
voluntariamente por sus propietarios.

Condición de espera circular: dado el conjunto de procesos P0...Pm(subconjunto del total de


procesos original),P0 está esperando un recurso adquirido por P1, que está esperando un
recurso adquirido porP2,... ,que está esperando un recurso adquirido por Pm, que está
esperando un recurso adquirido por P0. Esta condición implica la condición de retención y
espera.

¡Gracias por la aclaración! Las condiciones de Coffman se refieren a un conjunto de


condiciones necesarias para que se produzca un bloqueo mutuo en un sistema informático.
El bloqueo mutuo ocurre cuando dos o más procesos o hilos de ejecución se bloquean entre
sí, impidiendo que ninguno de ellos pueda avanzar.

Las condiciones de Coffman son las siguientes:

1. Exclusión mutua: Los procesos deben competir por recursos compartidos y solo uno
puede tener acceso a un recurso compartido en un momento dado.

2. Espera circular: Un proceso debe esperar a que otro proceso libere un recurso que
necesita, creando un ciclo de espera entre los procesos.

3. No apropiación y espera: Un proceso no puede retener un recurso mientras espera otro


recurso adicional, lo que puede causar bloqueos.

Estas condiciones son importantes para comprender y prevenir situaciones de bloqueo


mutuo en sistemas informáticos. Si necesitas más información o detalles sobre este tema,
no dudes en preguntar. ¡Estoy aquí para ayudarte!

Evitando bloqueos mutuos


Los bloqueos mutuos pueden ser evitados si se sabe cierta información sobre los procesos
antes de la asignación de recursos. Para cada petición de recursos, el sistema controla si
satisfaciendo el pedido entra en un estado inseguro, donde puede producirse un bloqueo
mutuo. De esta forma, el sistema satisface los pedidos de recursos solamente si se asegura
que quedará en un estado seguro. Para que el sistema sea capaz de decidir si el siguiente
estado será seguro o inseguro, debe saber por adelantado y en cualquier momento el
número y tipo de todos los recursos en existencia, disponibles y requeridos.

Existen varios algoritmos para evitar bloqueos mutuos:


Algoritmo del banquero, introducido por Dijkstra.
Algoritmo de grafo de asignación de recursos.
Algoritmo de Seguridad.
Algoritmo de solicitud de recursos.
Los algoritmos mencionados son fundamentales en la gestión de recursos en sistemas
operativos, especialmente para evitar y manejar situaciones de bloqueo o "deadlock". Aquí
se presenta una descripción de cada uno:

### Algoritmo del Banquero (Introducido por Dijkstra)

El Algoritmo del Banquero es un algoritmo de evitación de deadlock utilizado en sistemas de


asignación de recursos. La idea principal es simular la asignación de recursos antes de
hacerla realmente para asegurar que no se llegue a un estado inseguro.

#### Pasos del Algoritmo del Banquero:


1. **Estado Seguro**: Un estado es seguro si existe una secuencia de procesos donde cada
proceso puede terminar sus requerimientos con los recursos disponibles.
2. **Solicitud de Recursos**: Cuando un proceso solicita recursos, el sistema simula la
asignación y verifica si el nuevo estado es seguro.
3. **Simulación de Asignación**:
- Se verifica si la solicitud de recursos del proceso puede ser satisfecha con los recursos
disponibles.
- Si es posible, se asignan temporalmente los recursos al proceso y se verifica el estado
resultante.
- Si el estado resultante es seguro, se asignan los recursos realmente. Si no, se rechaza
la solicitud.

### Algoritmo de Grafo de Asignación de Recursos

Este algoritmo utiliza grafos dirigidos para detectar la presencia de deadlocks. Los nodos
representan procesos y recursos, y los arcos representan las asignaciones y solicitudes de
recursos.

#### Componentes del Grafo:


- **Nodos**: Representan procesos (P1, P2, ...) y recursos (R1, R2, ...).
- **Arcos**:
- **Solicitud**: Un arco de un proceso a un recurso indica que el proceso está solicitando
ese recurso.
- **Asignación**: Un arco de un recurso a un proceso indica que el recurso está asignado a
ese proceso.

#### Detección de Deadlock:


- Se busca la presencia de ciclos en el grafo. Un ciclo indica la existencia de un deadlock,
ya que los procesos involucrados están esperando recursos en posesión de otros procesos
en el ciclo.

### Algoritmo de Seguridad

El Algoritmo de Seguridad es utilizado para verificar si un estado del sistema es seguro, es


decir, si todos los procesos pueden finalizar sin caer en un deadlock. Es una parte esencial
del Algoritmo del Banquero.

#### Pasos del Algoritmo de Seguridad:


1. **Inicialización**:
- Se definen los vectores `Work` y `Finish`. `Work` es inicialmente igual a la cantidad de
recursos disponibles, y `Finish` es inicialmente falso para todos los procesos.
2. **Búsqueda de Procesos**:
- Se busca un proceso `Pi` tal que `Finish[i]` sea falso y la solicitud máxima de recursos
del proceso sea menor o igual a `Work`.
3. **Simulación de Terminación**:
- Si se encuentra tal proceso, se asume que el proceso `Pi` termina y libera sus recursos,
actualizando `Work` y marcando `Finish[i]` como verdadero.
4. **Verificación de Estado Seguro**:
- Si todos los procesos pueden ser marcados como verdaderos en `Finish`, el estado es
seguro. De lo contrario, no lo es.

### Algoritmo de Solicitud de Recursos


Este algoritmo se utiliza en combinación con el Algoritmo del Banquero para manejar las
solicitudes de recursos de los procesos.

#### Pasos del Algoritmo de Solicitud de Recursos:


1. **Verificación Inicial**:
- Se verifica si la solicitud de recursos de un proceso es menor o igual a su necesidad
máxima declarada.
2. **Disponibilidad de Recursos**:
- Se verifica si los recursos solicitados están disponibles.
3. **Simulación de Asignación**:
- Si los recursos están disponibles, se asignan temporalmente los recursos al proceso y se
utiliza el Algoritmo de Seguridad para verificar si el nuevo estado es seguro.
4. **Asignación Real o Rechazo**:
- Si el estado resultante es seguro, se asignan realmente los recursos al proceso. Si no, la
solicitud se rechaza y el proceso debe esperar.

Estos algoritmos son fundamentales para la gestión de recursos en sistemas operativos,


permitiendo una operación segura y eficiente de los procesos sin caer en deadlocks.

Prevención

Los bloqueos mutuos pueden prevenirse asegurando que no suceda alguna de las
condiciones necesarias vistas anteriormente.

Eliminando la exclusión mutua: ningún proceso puede tener acceso exclusivo a un recurso.
Esto es imposible para procesos que no pueden ser encolados (puestos en un spool), e
incluso con colas también pueden ocurrir interbloqueos.

La condición de posesión y espera puede ser eliminada haciendo que los procesos pidan
todos los recursos que van a necesitar antes de empezar. Este conocimiento por adelantado
muchas veces es imposible nuevamente. Otra forma es requerir a los procesos liberar todos
sus recursos antes de pedir todos los recursos que necesitan. Esto también es poco
práctico en general.

La condición de no expropiación puede ser también imposible de eliminar dado que un


proceso debe poder tener un recurso por un cierto tiempo o el procesamiento puede quedar
inconsistente.

La condición de espera circular es la más fácil de atacar. Se le permite a un proceso poseer


sólo un recurso en un determinado momento, o una jerarquía puede ser impuesta de modo
tal que los ciclos de espera no sean posibles.

Organización y administración del almacenamiento


El almacenamiento principal, es un recurso relativamente caro, por lo que los diseñadores
de sistemas operativos intentan optimizar su uso. En los últimos años ha disminuido su
costo, pero sigue siendo más caro en relación con el almacenamiento secundario, y las
aplicaciones actuales requieren cantidades mayores de almacenamiento principal.

La organización del almacenamiento es la forma de considerar el almacenamiento principal,


bajo los siguientes esquemas de organización:

- sistemas de usuario único

- multiprogramación con particiones fijas, con traducción y carga con reubicación

- multiprogramación con particiones fijas, con traducción y carga absoluta

- multiprogramación con particiones variables

- sistemas de intercambio de almacenamiento

Sea cual sea el esquema de organización de la memoria que se adopte, hay que decidir
qué estrategias de deben utilizar para obtener un rendimiento óptimo de la misma.

Las estrategias de administración del almacenamiento buscan obtener el mejor


aprovechamiento y desempeño posible del caro recurso de almacenamiento principal. Se
divide en las siguientes categorías:

1) Estrategias de obtención (¿Cuándo se toma un nuevo programa para colocarlo en


memoria? ¿Se toma el programa cuando el sistema lo solicita o se anticipa?)

a) Estrategias de obtención por demanda

b) Estrategias de obtención anticipada

2) Estrategias de colocación (¿En qué lugar del almacenamiento se coloca el siguiente


programa?)

3) Estrategias de reemplazo (¿Qué programas se deben reemplazar, los más antiguos,


los menos usados?)

Jerarquía de almacenamiento
Por la década de los 50 y 60’s se contaba con una cantidad de memoria suficiente para el
sistema operativo y para cierto número de usuarios. El objetivo era comprar mayor cantidad
de almacenamiento para manejar adecuadamente cargas de usuario anticipadas dentro de
las limitaciones económicas de esa época.

Los programas y datos necesitan estar en el almacenamiento principal para ser ejecutados
o para poder hacer referencia de ellos.
Los programas o datos que no se necesitan de inmediato pueden guardarse en el
almacenamiento secundario hasta que se necesiten, y en ese momento se transfieren al
almacenamiento principal para ser ejecutados o hacer referencia a ellos.

Los sistemas con varios niveles de almacenamiento requieren destinar recursos para
administrar el movimiento de programas y datos entre niveles

Jerarquia

En la década de los 60’s se extiende un nivel más la jerarquía de almacenamiento, con una
clara mejora del rendimiento y utilización.

La memoria caché o memoria de alta velocidad es mucho más rápida que el


almacenamiento principal. La memoria caché es extremadamente cara, por lo que sólo se
utilizan memorias caché relativamente pequeñas.

La memoria caché introduce un nivel adicional de transferencia de información en el


sistema, los programas son traspasados de la memoria principal al caché antes de su
ejecución.

Los programas en la memoria caché se ejecutan mucho más rápido que en la memoria
principal.

Al utilizar memoria caché se espera que la sobrecarga que supone el traspaso de


programas de un nivel de memoria a otro sea mucho menor que la mejora en el rendimiento
obtenida por la posibilidad de una ejecución mucho más rápida en la caché.

Estrategias de Administración de Memoria

Independientemente del esquema de organización hay que decidir las estrategias que se
utilizarán para optimizar el rendimiento.

Las estrategias de administración de la memoria están dirigidas a la obtención del mejor uso
posible del recurso del almacenamiento principal.

Las “estrategias de administración” deben considerar:

¿Cuándo se consigue un nuevo programa para colocar en la memoría?:


- ¿Cuándo el sistema lo pide específicamente o se intenta anticiparse a las peticiones?

¿Dónde se colocará el programa que se ejecutará a continuación?:


- ¿Se prioriza el tiempo de carga o la optimización en el uso del almacenamiento?

¿Con qué criterio se desplazarán programas?

1. Estrategias de obtención. Determinan cuando debe obtenerse la siguiente parte del


programa o los datos que se van a transferir del almacenamiento secundario al principal.
Estrategias

a. por demanda. La siguiente parte del programa o de los datos se transfiere al


almacenamiento principal cuando un programa en ejecución hace referencia a ella. Es
decir, el usuario solicita la información, hasta ese momento el sistema operativo lo carga en
memoria.
b. por anticipado. El sistema operativo aplica funciones probabilísticas para colocar en
memoria datos de programa que el usuario podría ocupar. El sistema operativo verifica el
comportamiento del usuario, ahorrando tiempo en el acceso, pero desperdiciando espacio.
2. Estrategias de colocación. Tienen que ver con la determinación de la parte de
almacenamiento principal donde se colocará un programa entrante.

Colocacion

3. Estrategias de reemplazo. Están relacionadas con la determinación de qué parte del


programa o de los datos se debe desalojar para dejar espacio a los programas entrantes.

Objetivos del Sistema de Gestión de Memoria

En un sistema con multiprogramación, el sistema operativo debe encargarse de realizar un


reparto transparente, eficiente y seguro de los distintos recursos de la maquina entre los
diversos procesos, de forma que cada uno de ellos crea que <<tiene una máquina para el
solo>>. Esto es, el sistema operativo debe permitir que los programadores desarrollen sus
aplicaciones sin verse afectados por la posible coexistencia de su programa con otros
durante ejecución.

Ofrecer a cada proceso un espacio lógico de memoria.


Proporcionar protección entre procesos.
Permitir que los procesos se compartan la memoria.
Dar soporte a las distintas regiones del proceso.

Organización de Memoria Virtual


El almacenamiento virtual suele asociarse con la capacidad para obtener acceso a
direcciones en un espacio de almacenamiento mucho mayor que el disponible en el
almacenamiento primario.
Almacenamiento virtual significa la capacidad de direccionar un espacio de almacenamiento
mucho mayor que el disponible en el almacenamiento primario de determinado sistema de
computación.

Memoria Virtual
La necesidad de manejar memoria virtual crece dado que el tamaño de la memoria real
estaba limitado, los programas eran cada vez más grandes y los procesadores tenían mayor
potencia.

Las direcciones generadas por los programas en su ejecución no son, necesariamente,


aquellas contenidas en el almacenamiento primario (memoria real), ya que las direcciones
virtuales suelen seleccionarse dentro de un número mucho mayor de direcciones que las
disponibles dentro del almacenamiento primario.

Evolucion

La memoria virtual maneja a mayor espacio en memoria que la memoria principal,


valiéndose tanto de la memoria en el almacenamiento principal como de una cantidad
determinada de almacenamiento secundario.

En la memoria principal el sistema operativo intercambia programas o procesos enteros en


particiones de memoria. En la memoria virtual el sistema operativo maneja segmentos y
páginas, entre la memoria real y los dispositivos secundarios.

­La clave del concepto de memoria (almacenamiento) virtual está en la disociación:

De las direcciones a las que hace referencia un programa.


De las direcciones disponibles en la memoria real (almacenamiento primario).
Los principales conceptos son los siguientes:

“Direcciones virtuales”: Son las referidas por un proceso en ejecución.

“Direcciones reales”: Son las disponibles dentro del almacenamiento primario.

“Espacio de direcciones virtuales (v)” de un proceso: Es el número de direcciones virtuales a


que puede hacer referencia el proceso.

“Espacio de direcciones reales (r)” de un computador: Es el número de direcciones reales


disponibles en el ordenador.

Los procesos hacen referencia a direcciones virtuales pero éstas deben ejecutarse en el
almacenamiento real:

Las direcciones virtuales deben ser transformadas dentro de las direcciones reales,
mientras el proceso está en ejecución.
La traducción de direcciones deberá hacerse rápidamente para no degradar al sistema.

Métodos de implementación de memoria virtual


Los métodos más comunes de implementación son mediante:

La memoria virtual es una técnica que permite a los sistemas operativos utilizar tanto la
memoria física (RAM) como el almacenamiento secundario (disco duro) para proporcionar
una mayor cantidad de memoria disponible a los programas en ejecución. Aquí se describen
los principales métodos de implementación de la memoria virtual:

### 1. **Paginación (Paging)**

La paginación divide la memoria virtual y la memoria física en bloques de tamaño fijo


llamados "páginas" y "marcos de página", respectivamente.

#### Conceptos Clave:


- **Página**: Unidad de memoria virtual.
- **Marco de Página**: Unidad de memoria física que puede contener una página.
- **Tabla de Páginas**: Mapea páginas virtuales a marcos de página en la memoria física.

#### Funcionamiento:
1. **División de la Memoria**: La memoria virtual se divide en páginas de tamaño fijo, y la
memoria física se divide en marcos de página del mismo tamaño.
2. **Asignación de Marcos**: Cuando una página es requerida, se asigna a un marco de
página en la memoria física.
3. **Tabla de Páginas**: Cada proceso tiene su propia tabla de páginas que traduce las
direcciones virtuales a direcciones físicas.
4. **MMU (Memory Management Unit)**: Hardware que realiza la traducción de direcciones
utilizando la tabla de páginas.

#### Ventajas:
- Elimina la fragmentación externa.
- Facilita la protección de memoria entre procesos.

### 2. **Segmentación (Segmentation)**

La segmentación divide la memoria en segmentos de tamaño variable, de acuerdo con las


necesidades lógicas del programa.

#### Conceptos Clave:


- **Segmento**: Una unidad de memoria que puede representar una función, un módulo, un
bloque de datos, etc.
- **Tabla de Segmentos**: Contiene la base y el límite de cada segmento.

#### Funcionamiento:
1. **División Lógica**: La memoria virtual se divide en segmentos lógicos.
2. **Asignación de Segmentos**: Los segmentos se cargan en la memoria física según sea
necesario.
3. **Tabla de Segmentos**: Cada entrada en la tabla de segmentos contiene la dirección
base y el límite del segmento en la memoria física.
4. **Traducción de Direcciones**: La dirección virtual se traduce usando la tabla de
segmentos, sumando el desplazamiento dentro del segmento a la dirección base.

#### Ventajas:
- Refleja mejor la estructura lógica de los programas.
- Permite protección y compartición de segmentos entre procesos.

### 3. **Paginación con Segmentación (Segmented Paging)**

Combina los métodos de paginación y segmentación para aprovechar las ventajas de


ambos.

#### Conceptos Clave:


- **Segmento**: Se divide en páginas de tamaño fijo.
- **Tabla de Segmentos y Tabla de Páginas**: Se utiliza una tabla de segmentos para
acceder a la tabla de páginas de cada segmento.

#### Funcionamiento:
1. **División Mixta**: La memoria virtual se divide en segmentos, y cada segmento se divide
en páginas.
2. **Asignación de Segmentos y Páginas**: Los segmentos y sus páginas se asignan a
marcos de página en la memoria física.
3. **Tablas de Segmentos y Páginas**: La traducción de direcciones virtuales implica
primero buscar en la tabla de segmentos para encontrar la tabla de páginas del segmento, y
luego usar esa tabla para encontrar el marco de página.

#### Ventajas:
- Combina la flexibilidad de la segmentación con la eficiencia de la paginación.
- Permite una mejor organización y protección de la memoria.

### 4. **Memoria Caché (Caching)**

Aunque no es una técnica de memoria virtual en sí misma, las cachés de memoria son
esenciales para mejorar el rendimiento de los sistemas que utilizan memoria virtual.

#### Conceptos Clave:


- **Caché de Traducción de Direcciones (TLB)**: Una caché que almacena traducciones
recientes de direcciones virtuales a físicas.
- **Caché de Datos**: Almacena datos frecuentemente accedidos para reducir el tiempo de
acceso a la memoria.

#### Funcionamiento:
1. **Búsqueda en TLB**: Al buscar una dirección virtual, se consulta primero el TLB para ver
si la traducción ya está disponible.
2. **Acceso a Caché de Datos**: Si los datos se encuentran en la caché, se accede
directamente sin necesidad de buscar en la memoria principal.

#### Ventajas:
- Reduce significativamente los tiempos de acceso a la memoria.
- Mejora el rendimiento general del sistema.

### Desafíos en la Implementación de Memoria Virtual

1. **Fragmentación**: La paginación elimina la fragmentación externa, pero puede introducir


fragmentación interna. La segmentación puede tener fragmentación externa.
2. **Gestión de Tabla de Páginas**: En sistemas con grandes espacios de direcciones, las
tablas de páginas pueden volverse muy grandes y difíciles de gestionar.
3. **Rendimiento**: La traducción de direcciones puede introducir sobrecarga. El uso de
TLBs y cachés es esencial para mitigar este problema.

En resumen, los métodos de implementación de memoria virtual, como la paginación,


segmentación y su combinación, junto con técnicas de mejora de rendimiento como las
cachés, son fundamentales para gestionar de manera eficiente la memoria en los sistemas
operativos modernos.

Técnicas de “paginación”.
Paginación
Paginación pura
Se refiere al manejo de bloques de tamaño fijo en la memoria virtual y la conversión de
éstas páginas a memoria real.

Paginación pura

Para tal conversión, el sistema operativo requiere de dos elementos: número de página y
desplazamiento de la página.

Un proceso puede ejecutarse si su página actual está en el almacenamiento primario. Las


páginas se transfieren del almacenamiento virtual al primario en bloques llamados marcos
de página que tienen el mismo tamaño que las páginas.

Sí hay combinación de huecos dentro de las páginas. El tamaño de página en memoria


virtual no es el mismo espacio que en memoria real. Más de una localidad virtual
corresponden a una localidad real.

Tabla de Descriptores. Registro en el que el sistema operativo identifica de qué localidad a


qué localidad está ubicada cada página.

-Se tiene una organización más completa en el manejo de memoria.


- Si se llena una página, el sistema operativo puede enviar la información a otra página, no
necesariamente a la página siguiente.

- Dentro de una página se puede administrar de manera contigua o no contigua.

- Dentro de una página hay N número de programas, por lo que el grado de complejidad es
mayor.

- Se pierde tiempo al hacer las conversiones (cada L/E en memoria virtual requiere de
conversiones)
.

Técnicas de “segmentación”

Segmentación pura

Se refiere al manejo de bloques de tamaño variable en memoria virtual y la conversión de


estos segmentos a memoria real.

Segmentación pura

Se utilizan dos conceptos para tal conversión: número de segmento y desplazamiento


dentro del segmento.

El tamaño de los segmentos y el tipo de información de ese segmento lo determinan las


políticas del sistema operativo, como por ejemplo:

a) que un solo segmento lo ocupe una sola aplicación.

b) que el segmento vaya creciendo según las necesidades del programa (recorriendo los
demás segmentos, particionando el segmento que va creciendo).

c) que un segmento sea compartido por varios programas.

Administración de Memoria Virtual

Es un método mediante el cual, un sistema operativo simula tener más memoria principal
que la que existe físicamente. Para implementar la memoria virtual se utiliza un medio de
almacenamiento secundario de alta velocidad de acceso, generalmente en disco duro de la
máquina. Un sistema de memoria virtual se implementa utilizando paginación como método
de administración de memoria básica y algún mecanismo de intercambio (para descargar
páginas de la memoria principal hacia el disco duro y para cargar esas páginas de nuevo a
la memoria).
La memoria virtual es una técnica para proporcionar la simulación de un espacio de
memoria mucho mayor que la memoria física de una máquina. Esta “ilusión” permite que los
programas se hagan sin tener en cuenta el tamaño exacto de la memoria física. La ilusión
de la memoria virtual esta soportada por el mecanismo de traducción de memoria, junto con
una gran cantidad de almacenamiento rápido en disco duro. Así en cualquier momento el
espacio de direcciones virtual hace un seguimiento de tal forma que una pequeña parte del,
está en memoria real y el resto almacenado en el disco, y puede ser referenciado
fácilmente.

¿Qué es el almacenamiento secundario?

El almacenamiento secundario está diseñado para almacenar datos a los que no es


necesario acceder con frecuencia. El almacenamiento secundario, generalmente, utiliza
dispositivos de almacenamiento de bajo rendimiento y de alta capacidad más asequibles
que los dispositivos de almacenamiento primario de alto rendimiento.

¿Cuáles son los tipos comunes de almacenamiento secundario?

Para el almacenamiento secundario, las empresas y las organizaciones, por lo general,


utilizan el respaldo en cinta o el respaldo en disco en forma de almacenamiento conectado
en red (NAS) o dispositivos de red de área de almacenamiento (SAN). Las organizaciones
también pueden optar por respaldar servidores a centros de datos en la nube como sitio de
almacenamiento secundario.

¿Cuáles son los beneficios del almacenamiento secundario?

El uso eficaz del almacenamiento secundario permite a las organizaciones hacer lo


siguiente:

Reducir el costo del almacenamiento primario mediante la transferencia de datos a medios


de almacenamiento de alta capacidad, de bajo rendimiento y de menor costo.
Reducir el costo de respaldo y la duración de las ventanas de respaldo al minimizar el
volumen de datos que se deben respaldar periódicamente.
Mejorar el rendimiento de los servidores y los sistemas de información mediante la
reducción de la cantidad de datos que deben procesar.
Mantener el cumplimiento de normas con una amplia variedad de sistemas normativos.

Dispositivos de almacenamiento secundario


Un dispositivo de almacenamiento secundario es un componente o medio que se utiliza
para guardar datos de manera permanente en una computadora u otros dispositivos
electrónicos.

A diferencia de la memoria RAM, que es un tipo de almacenamiento primario y volátil (se


borra cuando se apaga el dispositivo), los dispositivos de almacenamiento secundario
retienen la información incluso cuando el dispositivo está apagado.
Estos dispositivos son fundamentales para el almacenamiento a largo plazo de datos,
programas, sistemas operativos y otros archivos. Permiten que la información se conserve
incluso después de reiniciar o apagar la computadora o dispositivo. Los dispositivos de
almacenamiento secundario son esenciales para la capacidad de almacenamiento masivo y
la preservación de datos a largo plazo.

Los tipos de dispositivos de almacenamiento secundarios más utilizados son:

Disco Duro (HDD).


Unidad de estado sólido (SSD).
Unidades USB.

Disco duro (HDD — Hard Disk Drive)

Photo by Andrey Matveev on Unsplash


Un disco duro, también conocido como “disco rígido” o “unidad de disco duro”, es un
dispositivo de almacenamiento de datos de tipo no volátil utilizado en computadoras y otros
dispositivos electrónicos. Su función principal es almacenar y recuperar grandes cantidades
de información de manera permanente, incluso cuando el equipo se apaga.

Los discos duros están compuestos principalmente por discos magnéticos que giran a alta
velocidad (usualmente a 5400 o 7200 revoluciones por minuto) y cabezales de
lectura/escritura que se mueven sobre ellos. La información se almacena en estos discos en
forma de impulsos magnéticos que representan datos binarios (ceros y unos).

Las principales características y ventajas de los Discos duros son:

Mayor capacidad de almacenamiento: En general, los discos duros ofrecen una mayor
capacidad de almacenamiento en comparación con los SSD, lo que los hace ideales para
almacenar grandes cantidades de datos, como archivos multimedia, archivos de gran
tamaño y aplicaciones que requieren mucho espacio.

Precio por gigabyte: Los discos duros tradicionales suelen ser más económicos en términos
de precio por gigabyte en comparación con los SSD. Esto los hace una opción más
accesible para usuarios que necesitan gran capacidad de almacenamiento a un costo más
bajo.

Durabilidad: Aunque los SSD son más resistentes a golpes y vibraciones debido a la falta de
partes móviles, los discos duros también son bastante duraderos y pueden soportar
condiciones adversas.

Longevidad: Los discos duros tienen una vida útil prolongada, especialmente en situaciones
en las que no se realizan muchas operaciones de escritura. Esto los hace adecuados para
almacenar datos a largo plazo sin preocuparse demasiado por el desgaste de las celdas de
memoria, como ocurre con los SSD.

Compatibilidad: Los discos duros tradicionales utilizan una interfaz SATA que ha sido
ampliamente utilizada durante muchos años. Esto los hace compatibles con una amplia
gama de dispositivos y sistemas, incluidos muchos dispositivos más antiguos que no son
compatibles con SSD o requieren adaptadores.

Unidad de estado sólido (SSD)

Photo by TheRegisti on Unsplash


Un SSD (Solid State Drive) es un tipo de unidad de almacenamiento de datos que utiliza
memoria flash para almacenar información de manera no volátil. A diferencia de los discos
duros tradicionales, que emplean partes mecánicas para leer y escribir datos en discos
magnéticos giratorios, los SSD no tienen partes móviles, lo que los convierte en dispositivos
de almacenamiento más rápidos, eficientes y duraderos.

Los SSD utilizan chips de memoria flash NAND para almacenar datos de forma
permanente. Estos chips funcionan mediante el almacenamiento de cargas eléctricas para
representar bits de información (ceros y unos). Cuando se accede a los datos en un SSD, la
información se lee o escribe directamente en las celdas de memoria flash sin la necesidad
de movimientos mecánicos, lo que resulta en tiempos de acceso mucho más rápidos en
comparación con los discos duros tradicionales.

Las principales características y ventajas de los SSD son:

Velocidad: Los SSD son considerablemente más rápidos en términos de velocidad de


lectura y escritura en comparación con los discos duros mecánicos, lo que se traduce en un
mejor rendimiento general del sistema, tiempos de arranque más cortos y una mayor
capacidad de respuesta de las aplicaciones.

Durabilidad: Al no tener partes móviles, los SSD son más resistentes a golpes y vibraciones,
lo que los hace ideales para su uso en dispositivos portátiles como laptops, tabletas y
teléfonos móviles.

Eficiencia energética: Los SSD utilizan menos energía que los discos duros tradicionales, lo
que puede resultar en una mayor duración de la batería en dispositivos portátiles y en un
menor consumo de energía en general.

Silencio: Debido a la ausencia de partes mecánicas, los SSD son prácticamente silenciosos
y no generan ruidos mecánicos durante su funcionamiento.

Tamaño compacto: Los SSD suelen ser más pequeños y livianos que los discos duros
tradicionales, lo que facilita su integración en dispositivos delgados y portátiles.

Unidades USB

Photo by Brina Blum on Unsplash


Una unidad USB, también conocida como memoria USB, pendrive, memory stick, USB flash
drive o simplemente USB, es un dispositivo de almacenamiento portátil que utiliza memoria
flash para guardar datos. Estas unidades son pequeñas, compactas y fáciles de transportar,
lo que las convierte en una opción popular para transferir y almacenar información de forma
rápida y sencilla.
Una unidad USB generalmente tiene un diseño similar a una pequeña barra o llave con una
conexión USB en un extremo. Esta conexión USB permite conectar la unidad directamente
a un puerto USB en una computadora o dispositivo compatible. La mayoría de las unidades
USB son compatibles con múltiples sistemas operativos y no requieren la instalación de
controladores adicionales, lo que las hace muy fáciles de usar.

Las unidades USB pueden tener diferentes capacidades de almacenamiento, que pueden
variar desde unos pocos megabytes hasta varios terabytes, dependiendo del modelo y la
tecnología utilizada. Con el tiempo, la capacidad de almacenamiento de las unidades USB
ha aumentado considerablemente, mientras que el tamaño físico ha disminuido.

Las principales características y ventajas de las memorias USB son:

Portabilidad: Las unidades USB son pequeñas y ligeras, lo que las hace altamente
portátiles. Pueden llevarse en un bolsillo, bolso o llavero, lo que facilita enormemente su
transporte y uso en cualquier lugar.

Facilidad de uso: Conectar una unidad USB es sumamente sencillo, ya que se conecta
directamente a un puerto USB de la computadora o dispositivo compatible. No se requiere
de instalación de controladores o configuraciones complicadas.

Capacidad de almacenamiento: Las unidades USB vienen en una amplia gama de


capacidades de almacenamiento, desde unos pocos gigabytes hasta varios terabytes. Esto
permite almacenar gran cantidad de datos y archivos, desde documentos y fotos hasta
videos y aplicaciones.

Velocidad de transferencia: Las unidades USB ofrecen velocidades de transferencia de


datos rápidas, lo que permite copiar o mover archivos de manera eficiente y rápida entre
dispositivos.

Compatibilidad: Las unidades USB son compatibles con una gran variedad de dispositivos,
como computadoras (PC y Mac), laptops, tabletas, televisores, reproductores de música,
consolas de juegos y otros dispositivos que cuenten con puertos USB.

Regrabable: Las unidades USB son regrabables, lo que significa que se pueden borrar y
volver a utilizar varias veces sin perder su capacidad de almacenamiento.

Creación de medios de arranque: Las unidades USB pueden utilizarse para crear medios de
arranque, lo que permite iniciar una computadora desde ellas para fines de instalación,
recuperación de sistemas y diagnóstico.

Un sistema de archivos (a veces también un sistema de archivos escrito) es un método para


estructurar datos que un sistema operativo utiliza para controlar cómo se almacenan y
recuperan los datos. organiza archivos y directorios para garantizar una asignación
adecuada de espacio en el dispositivo.
Un sistema de archivos organiza los datos en una estructura jerárquica y permite la
creación, movimiento, modificación y eliminación de archivos y directorios. Los sistemas de
archivos son esenciales para optimizar el rendimiento, garantizar integridad de los datosy
facilitar la gestión de datos y backups.

¿Cómo funcionan los sistemas de archivos?


Un sistema de archivos gestiona el almacenamiento y la recuperación de datos en un
dispositivo de almacenamiento, como un disco duro, SSDo almacenamiento en red. Así es
como funciona un sistema de archivos:

Asignación de almacenamiento. El sistema de archivos divide el espacio de


almacenamiento disponible en un dispositivo en las unidades manejables más pequeñas,
llamadas bloques o sectores.
Almacenamiento de archivos. Cuando se guarda un archivo, el sistema de archivos asigna
estas unidades para almacenar los datos del archivo. Los archivos más grandes se dividen
en segmentos más pequeños, que se distribuyen en varias unidades no contiguas.
Gestión de metadatos. El sistema de archivos mantiene metadatos sobre cada archivo y
directorio, incluido su nombre, tamaño, fechas de creación y modificación, permisos, etc.
Estructura de directorios. El sistema de archivos organiza los archivos en una estructura de
directorios jerárquica, lo que permite a los usuarios y aplicaciones para navegar y localizar
fácilmente los archivos.
Control de acceso. Los sistemas de archivos administran el acceso y los permisos de
archivos y directorios para controlar qué usuarios pueden leer, escribir y ejecutar los
archivos.
Operaciones de archivo. El sistema de archivos proporciona mecanismos para realizar
operaciones en archivos y directorios. Estas operaciones implican actualizar los metadatos
según sea necesario.
Coherencia e integridad. Los sistemas de archivos avanzados implementan medidas para
garantizar la coherencia e integridad de los datos y la detección y corrección de errores en
caso de falla del sistema.
Mejoramiento. Los sistemas de archivos utilizan varios mecanismos para mejorar el
rendimiento. Por ejemplo, pueden realizar almacenamiento en caché para acelerar el
acceso a los datos utilizados con frecuencia u organizar los datos de manera que minimice
los tiempos de búsqueda en el disco.
Cada tipo de sistema de archivos implementa de manera única estos principios, asegurando
que los requisitos de rendimiento y confiabilidad coincidan con diversos tipos de
almacenamiento y hardware configuraciones

Tipos de sistemas de archivos


Los sistemas de archivos están diseñados teniendo en cuenta necesidades de
almacenamiento y entornos informáticos específicos. Aquí hay una lista de diferentes tipos
de sistemas de archivos:

Sistemas de archivos de disco


Los sistemas de archivos de disco están diseñados para su uso en unidades de disco
físicas, como unidades de disco duro (HDD) or unidades de estado sólido (SSD). Gestionan
la asignación de espacio en disco, mantienen archivos metadatosy garantizar la integridad y
seguridad de los datos. Los sistemas de archivos en disco son esenciales para el
rendimiento y la confiabilidad de los sistemas informáticos, ya que influyen directamente en
la velocidad de acceso a los datos, la utilización de la capacidad de almacenamiento y los
mecanismos de recuperación en caso de errores o fallas del sistema.

Los sistemas de archivos en disco satisfacen diversos requisitos de almacenamiento,


incluida la necesidad de archivos de gran tamaño, altas capacidades de almacenamiento y
funciones sólidas de recuperación de datos. Estos sistemas de archivos incluyen
características para administrar el espacio en disco de manera eficiente, como soporte para
bloques de gran tamaño, lo que reduce la sobrecarga y compresión, lo que aprovecha mejor
el espacio disponible.

Algunos ejemplos de sistemas de archivos de disco son:

NTFS (Sistema de archivos de nueva tecnología) para Windows.


Ext4 (cuarto sistema de archivos extendido) para Linux.
HFS + (Sistema de archivos jerárquico Plus) para macOS.
exFAT (Tabla de asignación de archivos extendida) para compatibilidad multiplataforma.
Sistemas de archivos flash
Los sistemas de archivos flash están diseñados para dispositivos de almacenamiento de
memoria flash, como unidades de estado sólido (SSD), USB unidades flash y tarjetas de
memoria. Están diseñados para complementar las características y limitaciones específicas
de memoria flash, como la ausencia de piezas móviles, tiempos de acceso más rápidos y un
número finito de ciclos de escritura antes de que las celdas de memoria se desgasten.

Los sistemas de archivos flash están diseñados para mantener el rendimiento y la eficiencia
durante las operaciones de lectura/escritura minimizando la amplificación de escritura, es
decir, la escritura y el borrado innecesarios de celdas flash. Estos sistemas de archivos
también incorporan frecuentemente códigos de corrección de errores (ECC) integrados, que
detectan y corrigen corrupción de datos.

Ejemplos de sistemas de archivos flash incluyen:

F2FS (sistema de archivos compatible con Flash)


JFFS (sistema de archivos Flash de registro)
Sistemas de archivos de cinta
Los sistemas de archivos en cinta están diseñados para gestionar datos almacenados en
cinta magnética. Esta tecnología se utiliza principalmente para backup, archivado y
recuperación de datos debido a su rentabilidad. Los sistemas de archivos de cinta están
optimizados para transferencias de datos secuenciales de gran tamaño e incorporan
mecanismos sólidos de corrección de errores para garantizar la integridad de los datos a lo
largo del tiempo.

Los sistemas de archivos de cinta modernos, como el Linear Tape File System (LTFS),
permiten a los usuarios interactuar con el almacenamiento en cinta de manera similar a
otros medios extraíbles, como las unidades USB, al permitir arrastrar y soltar archivos. Esta
característica mejora significativamente la usabilidad del almacenamiento en cinta,
haciéndolo adecuado para una amplia gama de aplicaciones y usuarios.
Los protocolos comunes para sistemas de archivos de red incluyen:

Sistema de archivos de red (NFS) para Unix y Linux.


Server Bloque de mensajes (SMB) para Windows.
Protocolo de llenado de Apple (AFP) para macOS.
Los sistemas de archivos de red se basan en sólidas medidas de seguridad, como
autenticación y cifrado. Estos protocolos protegen los datos confidenciales durante la
transmisión y garantizan que solo las personas autorizadas puedan acceder a ellos. Mejorar
Latencia de conexion y ancho de banda, los sistemas de archivos de red aplican técnicas
como el almacenamiento en caché y la compresión de archivos, que mejoran la capacidad
de respuesta y reducen los tiempos de transferencia de datos. Además, mecanismos como
el bloqueo de archivos y el control de versiones ayudan a prevenir la corrupción de datos
debido a que varios usuarios acceden y modifican archivos.

mejor rendimiento y admite archivos y volúmenes más grandes.


Formato de disco universal (UDF). UDF es un estándar de sistema de archivos para medios
ópticos, como CD, DVD y discos Blu-ray. Admite archivos y volúmenes más grandes que su
predecesor, ISO9660.
Sistema de archivos de nueva tecnología (NTFS). NTFS es un sistema de archivos
desarrollado por Microsoft para el sistema operativo Windows. A partir de Windows NT,
NTFS ofrece soporte para archivos y volúmenes grandes, capacidades avanzadas de
protección y recuperación de datos y seguridad a nivel de archivos.
Sistema de archivos de Apple (APFS). APFS es un sistema de archivos desarrollado por
Apple como reemplazo de HFS+. Mejora la eficiencia, la confiabilidad y la seguridad del
almacenamiento flash/SSD. También cuenta con cifrado sólido, uso compartido de espacio y
cambio rápido de tamaño de directorio.

Qué es un sistema distribuido?


Un sistema distribuido es un conjunto de programas informáticos que utilizan recursos
computacionales en varios nodos de cálculo distintos para lograr un objetivo compartido
común. Este tipo de sistemas, también denominados "computación distribuida" o "bases de
datos distribuidas", usan nodos distintos para comunicarse y sincronizarse a través de una
red común. Estos nodos suelen representar dispositivos de hardware físicos diferentes, pero
también pueden representar procesos de software diferentes u otros sistemas encapsulados
recursivos. La finalidad de los sistemas distribuidos es eliminar los cuellos de botella o los
puntos de error centrales de un sistema.

Los sistemas de computación distribuida tienen las características siguientes:

Recursos compartidos: los sistemas distribuidos pueden compartir hardware, software o


datos

Procesamiento simultáneo: varias máquinas pueden procesar la misma función a la vez

Escalabilidad: la capacidad computacional y de procesamiento puede escalarse hacia arriba


según sea necesario cuando se añaden máquinas adicionales
Detección de errores: los errores se pueden detectar más fácilmente

Transparencia: un nodo puede acceder a otros nodos del sistema y comunicarse con ellos

¿Cuál es la diferencia entre un sistema centralizado y un sistema distribuido?


Imagen de la comparación entre un sistema centralizado y un sistema distribuido
Un sistema de computación centralizado es aquel en el que todos los cálculos los realiza un
solo ordenador en una ubicación. La principal diferencia entre un sistema centralizado y un
sistema distribuido es el patrón de comunicación entre los nodos del sistema. El estado de
un sistema centralizado se encuentra dentro de un nodo central al que los clientes acceden
a través de un método personalizado. Todos los nodos de un sistema centralizado acceden
al nodo central, lo que puede sobrecargar y ralentizar la red. Los sistemas centralizados
tienen un punto de error único. Este no es el caso de los sistemas distribuidos.

Ventajas, inconvenientes y riesgos de los sistemas distribuidos


Los sistemas distribuidos suelen contribuir a mejorar la fiabilidad y el rendimiento del
sistema. La fiabilidad se mejora eliminando los puntos de error centrales y los cuellos de
botella. Los nodos de un sistema distribuido ofrecen redundancia, de modo que, si un nodo
falla, hay otros que pueden sustituirlos y reparar el error. El rendimiento se mejora porque
los nodos pueden escalarse fácilmente en sentido horizontal y vertical. Si un sistema se
somete a una carga extensiva, pueden añadirse nodos adicionales para ayudar a absorber
dicha carga. También es posible aumentar la capacidad de un nodo concreto para gestionar
una carga extensiva.

Sin embargo, uno de los inconvenientes que presentan estos sistemas puede ser la
"expansión del desarrollo", que implica que los sistemas acaban siendo excesivamente
complejos y difíciles de mantener. Esta mayor complejidad puede complicar a los equipos
las tareas de organización, gestión y mejora de estos sistemas. Parte de la dificultad puede
ser entender la relación que hay entre los distintos componentes o quién posee un
componente de software concreto. Esto hace que sea difícil saber cómo modificar los
componentes para maximizar su rendimiento y evitar que ello tenga un impacto negativo no
solo en los componentes dependientes, sino también en los clientes.

Arquitecturas de sistemas distribuidos


Hay muchos tipos de sistemas distribuidos. Estos son los más habituales:

Cliente-servidor
Una arquitectura cliente-servidor se divide en dos responsabilidades principales. El cliente
se encarga de la presentación de la interfaz de usuario, que luego se conecta al servidor a
través de la red. El servidor se encarga de gestionar la lógica empresarial y el estado. Una
arquitectura cliente-servidor puede degradarse fácilmente a una arquitectura centralizada si
el servidor no es redundante. Una configuración cliente-servidor perfectamente distribuida
tendrá varios nodos de servidor para distribuir las conexiones de los clientes. Las
arquitecturas cliente-servidor más modernas son clientes que se conectan a un sistema de
distribución encapsulado en el servidor.

Por capas
Una arquitectura por capas amplía la arquitectura cliente-servidor. En ella, el servidor se
descompone en otros nodos granulares, que desacoplan responsabilidades adicionales del
servidor backend, como el procesamiento y la gestión de los datos. Estos nodos adicionales
se usan para procesar de forma asíncrona las tareas de larga duración y liberar al resto de
los nodos del backend para que puedan centrarse en responder a las solicitudes del cliente
e interactuar con el almacén de datos.

Punto a punto
En un sistema distribuido punto a punto, cada nodo contiene la instancia completa de una
aplicación. No hay separación de nodos entre la presentación y el procesamiento de datos.
Un nodo contiene la capa de presentación y las capas de gestión de datos. Los otros nodos
pueden contener todos los datos de estado del sistema.

Los sistemas punto a punto tienen la ventaja de ser extremadamente redundantes. Cuando
un nodo punto a punto se inicializa y se lleva online, descubre otros nodos, se conecta a
ellos y sincroniza su estado local con el estado de todo el sistema. Por ello, si en un sistema
punto a punto un nodo falla, los demás nodos no se verán afectados. Además, el sistema
punto a punto persistirá.

Arquitectura orientada a servicios


La arquitectura orientada a servicios (SOA) es anterior a los microservicios. La principal
diferencia entre la SOA y los microservicios es el alcance de los nodos: el alcance de los
nodos de los microservicios está a nivel de la función. En los microservicios, un nodo
encapsula la lógica empresarial para gestionar un conjunto específico de funciones, como el
procesamiento de los pagos. Los microservicios contienen varios nodos de lógica
empresarial dispares que interactúan con nodos de bases de datos independientes.
Comparativamente, los nodos SOA encapsulan toda una aplicación o toda una división
empresarial. El límite de servicio de los nodos SOA suele ser un sistema de base de datos
completo dentro del nodo.

Los microservicios son una alternativa más popular a la arquitectura SOA debido a las
ventajas que ofrecen. Son más modulares, ya que permiten a los equipos reutilizar
funcionalidades que proporcionan los nodos de servicio pequeños. También son más
sólidos y permiten realizar un escalado vertical y horizontal más dinámico.

También podría gustarte