Ciclo de Instrucción y Procesos en PC
Ciclo de Instrucción y Procesos en PC
CONTENIDO
Resumiendo la dinámica: ...................................................................................................... 6
Ejemplo simple de cómo interactúan: .................................................................................. 7
1. Visión general: ¿Qué es el ciclo de instrucción? ............................................................... 7
2. Ciclo de lectura (Fetch Cycle) ............................................................................................ 8
Fase 1. Lectura de la instrucción ....................................................................................... 8
Fase 2. Lectura de la fuente ................................................................................................ 8
3. Ciclo de ejecución (Execute Cycle) .................................................................................... 8
Fase 3. Ejecución de la instrucción .................................................................................... 8
Fase 4. Comprobación de interrupciones .......................................................................... 8
4. Estados del ciclo de instrucción.......................................................................................... 8
5. Resumen global del proceso ............................................................................................... 9
6. Consejos para tu repaso...................................................................................................... 9
Conclusión ............................................................................................................................ 9
1. Estructura general de un Sistema Operativo.................................................................. 10
Componentes principales: ................................................................................................ 10
2. Kernel ................................................................................................................................. 11
3. Shell y modo arranque ...................................................................................................... 11
3.1. Shell ............................................................................................................................. 11
3.2. Modo arranque (Boot) ............................................................................................... 11
4. Etapas del modo arranque ............................................................................................... 12
5. Cómo se relacionan todos estos elementos ...................................................................... 12
Conclusión .......................................................................................................................... 13
1. Tipos de Procesos .............................................................................................................. 13
2. Estados de un Proceso ....................................................................................................... 14
3. Control de Procesos........................................................................................................... 14
4. Implementación de Procesos ............................................................................................ 14
5. Niveles de Ejecución de Procesos (Prioridades) ............................................................. 15
Cómo se relacionan todos estos conceptos ...................................................................... 15
1. Características de la Planificación de Procesos .............................................................. 16
1.1. Equidad ....................................................................................................................... 16
1.2. Prioridad ..................................................................................................................... 16
1.3. Políticas de Planificación ........................................................................................... 17
1.4. Preferenciales (Preemptive)....................................................................................... 17
1.5. No preferenciales (No Preemptive) ........................................................................... 17
1.6. Tiempo Compartido (Time Sharing) ........................................................................ 18
1.7. Retroalimentación (Feedback) .................................................................................. 18
1.8. Interrupciones............................................................................................................. 18
1.9. Contexto de Cambio (Context Switch) ..................................................................... 19
2. Algoritmos de Planificación de Procesos ......................................................................... 19
2.1. Round Robin (RR) ..................................................................................................... 19
2.2. FIFO (First-In, First-Out) ......................................................................................... 20
2.3. SJF (Shortest Job First) ............................................................................................. 20
2.4. Planificación por Prioridad ....................................................................................... 20
2.5. Colas Multinivel.......................................................................................................... 20
2.6. Lottery Scheduling ..................................................................................................... 21
2.7. Algoritmo de Retroalimentación (Multi-level Feedback Queues) ......................... 21
2.8. SPN (Shortest Process Next) ...................................................................................... 21
2.9. SRT (Shortest Remaining Time) ............................................................................... 22
2.10. NPP (Non Preemptive Priority) .............................................................................. 22
3. Resumen y Conclusiones................................................................................................... 22
1. ¿Qué es un Bloqueo Mutuo (Interbloqueo)?................................................................... 23
Ejemplo rápido (vida cotidiana) ...................................................................................... 23
2. Condiciones de un Bloqueo Mutuo .................................................................................. 23
3. Situaciones de Bloqueo Mutuo ......................................................................................... 24
4. Grafo de Recursos (Grafo de Asignación de Recursos) ................................................. 24
4.1. Grafo de asignación de recursos con interbloqueo.................................................. 24
4.2. Grafo de asignación de recursos sin interbloqueo ................................................... 25
5. Principios Generales de Concurrencia ............................................................................ 25
6. ¿Cómo Evitar Bloqueos Mutuos? .................................................................................... 26
Ejemplo de Evitación ........................................................................................................ 26
Conclusión.............................................................................................................................. 27
1. Primera generación (1945 – 1955): Tubos de vacío ............................................................ 27
2. Segunda generación (1955 – 1965): Transistores y Sistemas Batch ................................... 27
3. Tercera generación (1965 – 1980): Circuitos integrados y multiprogramación ................. 28
4. Cuarta generación (1980 – actualidad): Computadoras personales................................... 28
5. Quinta generación (1990 – actualidad): Dispositivos móviles ............................................ 29
Evolución Resumida ................................................................................................................ 29
Conclusión ........................................................................................................................... 29
1. ¿Qué es el Algoritmo del Banquero? .................................................................................. 30
Idea principal: ...................................................................................................................... 30
2. Estructuras de datos principales ......................................................................................... 30
3. Estados y Secuencias Seguras ............................................................................................. 31
3.1. Estado seguro ............................................................................................................... 31
4. Paso a paso del Algoritmo del Banquero ............................................................................ 31
4.1. Algoritmo para comprobar el estado seguro (Safety Algorithm)................................. 31
4.2. Algoritmo de solicitud de recursos (Resource-Request Algorithm) ............................. 32
5. Ejemplo sencillo (con valores numéricos) ........................................................................... 32
5.1. Comprobamos estado seguro ...................................................................................... 33
5.2. Petición de un proceso ................................................................................................. 33
6. ¿Cómo “llega a cero” la asignación? ................................................................................... 33
7. Resumen Visual ................................................................................................................... 34
8. Conclusiones y Consejos ..................................................................................................... 34
Resumen Final ..................................................................................................................... 34
1. ¿Qué es la Monoprogramación? ......................................................................................... 35
Características clave ............................................................................................................ 35
2. Ejemplos de Monoprogramación en la Vida Real ............................................................... 36
3. Ejemplos de Monoprogramación en Informática ............................................................... 36
4. ¿Cómo se Gestiona la Memoria y la CPU en Monoprogramación? .................................... 36
5. Comparación con la Multiprogramación............................................................................. 37
6. Ventajas y Desventajas de la Monoprogramación.............................................................. 37
Ventajas ............................................................................................................................... 37
Desventajas ......................................................................................................................... 37
7. Ejemplo Práctico (Flujo de Monoprogramación) ................................................................ 38
8. Analogía Resumida .............................................................................................................. 38
Conclusión ............................................................................................................................... 38
1. Intercambio de procesos (Swapping) .................................................................................. 38
1.1. ¿Qué es? ....................................................................................................................... 38
1.2. Caso presentado: “No hay intercambio” ..................................................................... 39
2. Paginación de Memoria ...................................................................................................... 39
2.1. ¿Qué es la paginación? ................................................................................................. 39
2.2. Caso presentado: “No se divide la memoria en unidades pequeñas” ......................... 39
3. Multiprogramación ............................................................................................................. 39
3.1. Definición ..................................................................................................................... 39
3.2. Características principales ............................................................................................ 40
4. Relación entre los conceptos .............................................................................................. 40
5. Ejemplo Ilustrativo .............................................................................................................. 41
Conclusión ............................................................................................................................... 41
1. ¿Qué son las Particiones Fijas? ........................................................................................... 42
Características principales:.................................................................................................. 42
2. ¿Cómo funcionan las Particiones Fijas? .............................................................................. 42
3. Ventajas de las Particiones Fijas.......................................................................................... 42
4. Desventajas de las Particiones Fijas .................................................................................... 43
5. Ejemplos de Uso .................................................................................................................. 43
6. Particiones Fijas vs. Particiones Dinámicas ......................................................................... 43
7. Ejemplo Práctico.................................................................................................................. 44
Flujo de ejecución ............................................................................................................... 44
8. Resumen .............................................................................................................................. 44
1. Intercambio (Swapping) y Gestión de la Memoria Virtual .................................................. 45
1.1. ¿Qué es el intercambio?............................................................................................... 45
1.2. ¿Por qué la memoria se trata como un “todo”? .......................................................... 45
2. Paginación y Segmentación................................................................................................. 45
2.1. Paginación .................................................................................................................... 45
2.2. Segmentación ............................................................................................................... 45
3. Falta de Página (Page Fault) ................................................................................................ 46
3.1. ¿Qué es? ....................................................................................................................... 46
3.2. Consecuencias .............................................................................................................. 46
4. Política de Reemplazo ......................................................................................................... 46
4.1. ¿Qué es? ....................................................................................................................... 46
4.2. Algoritmos frecuentes .................................................................................................. 46
5. Resumen de cómo funciona todo en conjunto ................................................................... 47
6. Ejemplo Práctico (Escenario Paso a Paso) ........................................................................... 47
Conclusión ........................................................................................................................... 47
1. Dirección de Memoria ............................................................................................................. 48
1.1. Definición ..................................................................................................................... 48
1.2. Importancia .................................................................................................................. 48
1.3. Ejemplo tecnológico ..................................................................................................... 48
1.4. Ejemplo de la vida real ................................................................................................. 48
2. Tipos de Dirección de Memoria .............................................................................................. 49
3. Memoria Virtual ...................................................................................................................... 49
3.1. Definición ..................................................................................................................... 49
3.2. Objetivos ...................................................................................................................... 49
3.3. Ejemplo tecnológico ..................................................................................................... 49
3.4. Ejemplo de la vida real ................................................................................................. 49
3.5. Características clave de la Memoria Virtual ..................................................................... 50
4. Paginación ............................................................................................................................... 50
4.1. Definición ..................................................................................................................... 50
4.2. Ejemplo tecnológico ..................................................................................................... 50
4.3. Ejemplo de la vida real ................................................................................................. 50
4.4. Tipos de Paginación .......................................................................................................... 51
5. Algoritmos de Reemplazo de Páginas ..................................................................................... 51
6. Aplicaciones y Ejemplos Generales ......................................................................................... 52
7. Analogías de la Vida Real para Comprender Paginación y Memoria Virtual .......................... 52
8. Conclusión ............................................................................................................................... 53
1. FIFO (First-In, First-Out)........................................................................................................... 53
1.1. Definición ......................................................................................................................... 53
1.2. Ejemplo ilustrativo ........................................................................................................... 53
1.3. Analogía de la vida real ................................................................................................ 54
2. LRU (Least Recently Used)....................................................................................................... 54
2.1. Definición ......................................................................................................................... 54
2.2. Ejemplo ilustrativo ........................................................................................................... 54
2.3. Analogía de la vida real ................................................................................................ 55
3. LFU (Least Frequently Used) ................................................................................................... 55
3.1. Definición ......................................................................................................................... 55
3.2. Ejemplo sencillo ............................................................................................................... 55
3.3. Analogía de la vida real ................................................................................................ 56
4. NUR o NRU (Not Used Recently / Not Recently Used) ............................................................ 56
4.1. Definición ......................................................................................................................... 56
4.2. Ejemplo básico ................................................................................................................. 56
4.3. Analogía de la vida real ................................................................................................ 56
5. Algoritmo de Reloj (Clock) ....................................................................................................... 57
5.1. Definición ......................................................................................................................... 57
5.2. Funcionamiento resumido ............................................................................................... 57
5.3. Ejemplo simplificado ........................................................................................................ 57
5.4. Analogía de la vida real ................................................................................................ 57
6. MFU (Most Frequently Used) .................................................................................................. 57
6.1. Definición ......................................................................................................................... 57
6.2. Ejemplo corto ................................................................................................................... 57
6.3. Analogía de la vida real .................................................................................................... 58
7. Comparación y Consideraciones ............................................................................................. 58
8. Ejemplo Completo con Reference String ................................................................................ 58
Conclusión ............................................................................................................................... 59
1. Definición de Segmentación................................................................................................ 60
2. Ejemplo Tecnológico Básico ................................................................................................ 60
3. Ejemplo de la Vida Real ....................................................................................................... 60
4. Ventajas y Desventajas........................................................................................................ 61
Ventajas ............................................................................................................................... 61
Desventajas ......................................................................................................................... 61
5. Segmentación Paginada (Visión General) ........................................................................... 61
Resumen .............................................................................................................................. 61
1. Segmentación: Definición y Objetivo .................................................................................. 62
Ejemplo de Segmentación en Memoria .............................................................................. 62
2. Tipos de Segmentación ....................................................................................................... 63
2.1. Segmentación de Memoria .......................................................................................... 63
2.2. Segmentación de Disco ................................................................................................ 63
2.3. Segmentación de Red ................................................................................................... 64
3. Características de la Segmentación (Memoria) .................................................................. 64
4. Ventajas y Desventajas de la Segmentación ....................................................................... 64
Ventajas ............................................................................................................................... 64
Desventajas ......................................................................................................................... 65
5. Segmentación Paginada ...................................................................................................... 65
6. Ejemplo Práctico para la Memoria de un Proceso .............................................................. 65
Conclusión ............................................................................................................................... 66
¡Exactamente! Has entendido bien el proceso. Una instrucción sucede dentro del
CPU como parte de un ciclo coordinado por el Sistema Operativo (SO), que actúa
como un intermediario clave entre los diferentes componentes.
Resumiendo la dinámica:
1. El Sistema Operativo:
o Es el "intermediario" que organiza el trabajo.
o Decide qué instrucciones ejecutar, cómo usar la RAM y cuándo comunicarse
con el hardware.
2. El CPU (Procesador):
o Es el "ejecutor" que procesa las instrucciones.
o Recibe estas instrucciones del SO y las ejecuta dentro del CPU.
3. La RAM:
o Es el "almacén temporal".
o Guarda las instrucciones y datos que el CPU necesita para trabajar.
4. El Hardware (como disco duro, pantalla, teclado):
o Es el "mundo físico" con el que interactuamos.
o Se comunica con el CPU a través del SO, que interpreta y traduce las órdenes.
1. Ejecutar la instrucción:
o La CPU (normalmente la ALU, Unidad Aritmético-Lógica) realiza la
operación.
o Ejemplos: suma, resta, AND, OR, mover datos de un registro a otro,
salto a otra instrucción, etc.
2. Almacenar el resultado (operando de destino):
o Si la instrucción genera un resultado, este se guarda en un registro de la
CPU o en una posición de la memoria (según lo que indique la propia
instrucción).
o Por ejemplo, si la instrucción es ADD R1, R2, R3, el resultado de la
suma de R2 + R3 se almacena en R1.
1. LECTURA:
oComprende las Fases 1 y 2 (Leer instrucción, Descodificar, Actualizar
PC, Lectura de la fuente).
2. EJECUCIÓN:
o Comprende las Fases 3 y 4 (Ejecutar, Almacenar resultado, y
Comprobación de interrupciones).
En algunos textos, se divide aún más, pero en tu esquema queda resumido en esos dos
macro-estados.
Conclusión
Con este desglose detallado, tendrás una visión clara y estructurada de cómo ocurre la
ejecución de instrucciones dentro del CPU. ¡Éxitos en tu examen!
Componentes principales:
1. Kernel:
o Es la parte central del SO.
o Administra recursos (hardware y software).
o Gestiona procesos, memoria, dispositivos y archivos.
2. Gestor de Procesos:
o Maneja la creación, ejecución y finalización de procesos.
o Se encarga de la planificación (qué proceso usa el CPU y cuándo).
3. Gestor de Memoria:
o Asigna espacios en la RAM a los procesos.
o Implementa memoria virtual si la RAM se agota.
4. Gestor de Archivos:
o Organiza y controla el acceso a los datos en los discos (sistemas de
archivos).
5. Gestor de Dispositivos:
o Maneja la comunicación con periféricos (impresoras, teclados, discos,
etc.).
o Usa controladores (drivers) para traducir peticiones del SO al lenguaje
del hardware.
6. Interfaz de Usuario:
o Puede ser gráfica (GUI) o línea de comandos (CLI).
o Permite que el usuario interactúe con el sistema operativo.
7. Gestor de Red:
o Se encarga de la conectividad a redes, protocolos de comunicación
(TCP/IP).
o Administra la comunicación con otros dispositivos o servidores.
8. Gestor de Seguridad:
oControla los accesos, permisos y la protección de los datos.
oManeja la autenticación de usuarios y el cifrado, si es necesario.
9. API (Application Programming Interface):
o Conjunto de funciones y métodos que las aplicaciones pueden usar para
solicitar servicios al sistema operativo.
10. Utilidades del Sistema:
o Programas que vienen con el SO para tareas de mantenimiento o
administración (administrador de discos, herramientas de configuración,
etc.).
2. Kernel
• Definición: Es la parte central de un sistema operativo, responsable de
gestionar los recursos esenciales.
• Funciones principales:
1. Gestión de Procesos: Creación, planificación y finalización.
2. Gestión de Memoria: Asigna y libera espacios de la RAM.
3. Gestión de Dispositivos: Coordina controladores y comunicación con
periféricos.
4. Gestión de Archivos: Controla cómo se leen y escriben los datos en los
sistemas de archivos.
Ejemplo breve:
Conclusión
Esta estructura garantiza que cada parte del sistema operativo tenga un propósito
definido: el Kernel coordina al hardware, los gestores manejan recursos específicos, el
Shell facilita la comunicación con el usuario y el proceso de arranque pone todo en
marcha. Entender cómo se inicia el sistema y cómo se componen sus partes es
fundamental para saber cómo un dispositivo pasa de estar apagado a estar listo para
ejecutar cualquier aplicación.
1. Tipos de Procesos
1. Procesos de Usuario
o Son iniciados por el usuario (por ejemplo, un navegador o editor de
texto).
o Se ejecutan con permisos limitados.
2. Procesos del Sistema
o Propios del sistema operativo (ej: demonios en Linux, servicios en
Windows).
o Se ejecutan con permisos elevados para gestionar tareas de fondo.
3. Procesos en Primer Plano
o Requieren interacción o atención directa del usuario (ej: la ventana
activa).
4. Procesos en Segundo Plano (Background)
o Se ejecutan sin interacción directa del usuario (ej: sincronización de
archivos).
o Pueden correr mientras el usuario hace otras tareas.
5. Procesos en Lote (Batch)
o Se ejecutan secuencialmente, sin necesidad de interacción (ej: scripts de
respaldo nocturno).
o Reciben un conjunto de datos y devuelven un resultado final.
6. Procesos Interactivos
o Requieren comunicación continua con el usuario (ej: videojuegos,
aplicaciones de chat).
7. Procesos de Tarea Larga
o Tienen una duración extensa o requieren gran uso de recursos (ej:
conversión de video a gran escala).
8. Procesos de Control
o Supervisan o monitorean otros procesos o eventos del sistema (ej:
monitoreo de uso de CPU).
9. Procesos de Comunicación
o Se dedican a intercambiar información con otros procesos o equipos de
red (ej: servidor web).
2. Estados de un Proceso
1. Nuevo (New)
o El proceso está siendo creado, aún no está listo para ejecutarse.
2. Listo (Ready)
o El proceso espera a que la CPU esté disponible para ser ejecutado.
3. Ejecución (Running)
o El proceso se está ejecutando actualmente en la CPU.
4. Bloqueado (Blocked / Waiting)
o El proceso espera la ocurrencia de un evento externo (ej: entrada/salida,
respuesta de un dispositivo).
5. Terminado (Terminated)
o El proceso ha finalizado su ejecución y libera sus recursos asignados.
3. Control de Procesos
• Objetivo: Gestionar y supervisar la ejecución correcta de los procesos,
garantizando un uso eficiente de CPU y memoria.
• Responsabilidad: Del sistema operativo, específicamente de los módulos de
planificación, gestión de memoria, y de entrada/salida.
4. Implementación de Procesos
1. Planificación de CPU
o El SO decide qué proceso obtiene acceso a la CPU, en qué orden y por
cuánto tiempo (ej. algoritmos como Round Robin, SJF, etc.).
2. Asignación de Memoria
o El SO distribuye la memoria RAM entre los procesos y libera espacio
cuando finalizan.
3. Administración de Entrada/Salida (E/S)
o El SO gestiona las operaciones de dispositivos como discos, impresoras,
redes, etc.
4. Prioridades y Políticas
o Se asigna una prioridad a cada proceso; el SO puede ajustar la
planificación según políticas predefinidas (ej. prioridad alta para
procesos críticos).
5. Manejo de Interrupciones
o Cuando hay una interrupción (hardware o software), el SO detiene
momentáneamente el proceso actual para atender la interrupción y luego
retoma la ejecución.
6. Creación y Finalización de Procesos
o El SO decide cuándo crear un nuevo proceso (por ejemplo, al abrir un
programa) y cuándo finalizarlo (termina o se cierra).
7. Sincronización y Comunicación
o El SO proporciona mecanismos para que los procesos coordinen su
ejecución (semáforos, colas de mensajes) y eviten condiciones de
carrera.
• Definición: Asignar los recursos (como el CPU) de manera justa para que todos
los procesos tengan la misma oportunidad de avanzar.
• Importancia: Evita que un proceso monopolice la CPU y hace que el sistema
sea balanceado.
Ejemplo:
1.2. Prioridad
Ejemplo:
• En informática: Un sistema operativo puede usar Round Robin para que cada
proceso tenga un “turno” de CPU y evitar esperas muy largas.
Ejemplo:
Ejemplo:
Ejemplo:
Ejemplo:
• En informática: Una cola multinivel donde los procesos que pasan mucho
tiempo esperando suben de nivel para no quedarse estancados.
• En la vida diaria: Un profesor que da turnos prioritarios a los alumnos que
llevan más tiempo esperando su turno para preguntar dudas.
1.8. Interrupciones
• Definición: Eventos que detienen momentáneamente el proceso actual para
atender algo más urgente o importante (hardware o software).
• Impacto en Planificación: El SO debe decidir si reanuda el proceso
interrumpido o da paso a otro proceso con mayor prioridad tras manejar la
interrupción.
Ejemplo:
Ejemplo:
• Características:
o Asigna un “quantum” de tiempo fijo a cada proceso.
o Cuando se agota el quantum, pasa al siguiente proceso en la cola.
o Es preemptive.
• Ventaja: Ofrece buena respuesta interactiva; ningún proceso espera
demasiado.
• Ejemplo:
o Varios programas en un SO compartiendo CPU de forma equitativa.
o En la vida real, una pizzería que atiende cada pedido de manera rotativa
durante 2 minutos antes de pasar al siguiente.
2.2. FIFO (First-In, First-Out)
• Características:
o El primer proceso que entra es el primero en ejecutarse.
o Es no preemptive: se ejecuta hasta que el proceso termine.
• Ventaja: Fácil de implementar y entender.
• Desventaja: Un trabajo largo puede bloquear a los demás.
• Ejemplo:
o Varios jobs en un sistema antiguo de batch. El primero que llega a la
cola, se procesa primero.
o En la vida diaria, hacer fila en el supermercado: te atienden en orden de
llegada.
• Características:
o Prioriza el proceso con la duración de CPU más corta.
o Si es no preemptive, no interrumpe el proceso en ejecución; si es
preemptive, se conoce como SRTF (Shortest Remaining Time First).
• Ventaja: Minimiza el tiempo de espera promedio.
• Desventaja: Es difícil saber de antemano el tiempo exacto de cada proceso.
• Ejemplo:
o En informática: Seleccionar primero las tareas más cortas para agilizar
el throughput.
o En la vida real: En una tintorería, primero se atiende la prenda que tarda
menos en limpiarse.
• Características:
o Cada proceso tiene un valor de prioridad.
o Se atiende primero al proceso con prioridad más alta (puede ser
preemptive o no).
• Ventaja: Favorece procesos críticos.
• Desventaja: Puede causar inanición de procesos con prioridad baja.
• Ejemplo:
o En informática: Un proceso del sistema (prioridad alta) interrumpe
procesos de usuario (prioridad normal).
o En la vida diaria: Un hospital atiende antes a pacientes críticos.
• Características:
o Cada proceso recibe “boletos” en función de su prioridad o recursos
requeridos.
o Se hace un sorteo para ver qué proceso gana el uso de CPU en cada
turno.
• Ventaja: Es un método probabilístico que, a la larga, provee equidad y se puede
ajustar asignando más o menos boletos.
• Ejemplo:
o En informática: Un sistema que reparte boletos a cada proceso; uno
recibe 50 boletos y otro 100, aumentando la probabilidad de que el
segundo sea elegido.
• Características:
o Combina colas de prioridades con la posibilidad de que los procesos se
muevan entre colas según su comportamiento.
o Procesos que consumen mucho CPU pueden bajar de prioridad; procesos
que esperan mucho pueden subir de prioridad.
• Ventaja: Ofrece un balance entre equidad y eficiencia, evitando la inanición.
• Ejemplo:
o En informática: Un proceso que se vuelve I/O bound sube de prioridad
al no consumir mucho CPU, mientras que uno CPU-bound (consume
mucha CPU) baja de nivel.
• Características:
o El CPU elige el proceso con el menor tiempo de ejecución pendiente
(similar a SJF).
o Pretende minimizar el tiempo de espera.
• Ejemplo:
o En informática: Mismo funcionamiento que SJF; prioriza jobs cortos
primero.
• Características:
o Versión preemptive de SJF. Si llega un proceso con tiempo de ejecución
más corto que el actual, interrumpe al proceso en curso.
o Ofrece gran capacidad de respuesta.
• Ejemplo:
o En informática: Un proceso largo en ejecución es interrumpido si entra
uno muy corto que puede terminar rápido.
• Características:
o Planificación por prioridad, pero no interrumpe el proceso en marcha.
o Una vez que inicia, el proceso corre hasta finalizar.
• Ejemplo:
o En informática: Un sistema batch donde, si eligieron un proceso de
prioridad alta, se ejecuta completamente antes de atender otro.
3. Resumen y Conclusiones
• Las características de planificación (equidad, prioridad, preemptive, no
preemptive, tiempo compartido, retroalimentación, interrupciones, cambio de
contexto) influyen en cómo el sistema operativo decide el uso del CPU.
• La elección del algoritmo (Round Robin, FIFO, SJF, Prioridad, etc.) depende
de las necesidades del sistema:
o SJF/SRTF son buenos para tiempos de espera cortos pero requieren
estimaciones confiables.
o Round Robin ofrece buena respuesta a usuarios interactivos.
o Prioridad favorece tareas críticas, pero puede causar inanición.
o Colas multinivel y Feedback permiten clasificar y reubicar procesos
según su comportamiento, equilibrando necesidades variadas.
• Tráfico en una intersección: Cada vehículo bloquea la vía que el otro necesita
para avanzar y ninguno puede moverse si el otro no se retira primero.
1. Exclusión mutua
o Al menos un recurso no puede ser compartido; solo un proceso puede
usarlo en un instante dado.
o Ej.: Una impresora que no puede ser usada por dos procesos al mismo
tiempo.
2. Espera y retención (Posesión y espera)
o Un proceso mantiene asignado al menos un recurso y al mismo tiempo
espera a que se libere otro recurso que está en posesión de otro proceso.
o Ej.: Proceso A tiene la impresora y pide acceso al escáner que está
retenido por el Proceso B, mientras B espera la impresora.
3. No asignación forzosa (No preempción)
o Los recursos no se pueden forzar a liberar; es decir, solo el proceso que
posee un recurso puede liberarlo voluntariamente.
o Ej.: No se puede quitar “a la fuerza” la impresora a un proceso que está
imprimiendo, debe terminar su tarea.
4. Ausencia de liberación voluntaria / Espera circular
o Existe una cadena de procesos donde cada uno espera un recurso que el
siguiente proceso de la cadena posee.
o Ej.: A espera el recurso de B, B espera el recurso de C, C espera el de A,
formando un “ciclo” circular.
¿Qué es?
Un grafo con interbloqueo mostrará un ciclo cerrado, donde cada proceso retiene un
recurso y, a su vez, espera otro que está retenido por otro proceso.
Cómo funciona:
1. Cada proceso P está reteniendo un recurso R que no suelta.
2. Al mismo tiempo, P demanda otro recurso que está en posesión de otro proceso.
3. Se ve un ciclo en el grafo ([Link]., P1 → R2, R2 → P2, P2 → R1, R1 → P1).
Ejemplo:
¿Qué es?
Un grafo donde, aunque existan asignaciones y esperas, no se forma un ciclo
ininterrumpido de procesos y recursos.
Cómo funciona:
Ejemplo:
1. Exclusión Mutua
o Se garantiza que sólo un proceso/hilo acceda a la vez a un recurso
compartido (ej.: semáforos o monitores).
2. Consistencia de Datos
o Se asegura que las operaciones concurrentes no dejen la información en
un estado inconsistente (ej.: control de transacciones en bases de datos).
3. Coordinación
o Se planifica y regula el acceso a recursos críticos, a menudo usando
algoritmos de sincronización (semáforos, mutex, etc.).
4. Comunicación
o Mecanismos (mensajes, colas, canales) que permiten a los procesos
compartir información sin bloquearse innecesariamente.
5. Evitar bloqueos mutuos
o Usar estrategias como:
▪ Evitar: Diseñar el sistema para no cumplir al menos una de las 4
condiciones de interbloqueo.
▪ Detectar: Monitorizar con algoritmos que detecten ciclos en el
grafo de recursos.
▪ Recuperar: Si se detecta un ciclo, forzar la finalización o
liberación de recursos.
▪ Prevenir: Planificar la asignación de recursos de forma “segura”
(Banco de Recursos).
6. Evitar condiciones de carrera
o Sincronizar las operaciones para que no haya lecturas/escrituras
simultáneas sobre el mismo dato.
7. Priorización
o Establecer prioridades para que procesos críticos no esperen demasiado y
se evite la inanición.
8. Independencia de Procesos
o Diseñar módulos que no requieran demasiada interacción, minimizando
riesgos de bloqueo.
9. Descomposición
o Dividir tareas grandes en subtareas para una mejor administración y
menos conflictos.
10. Monitoreo y Depuración
Ejemplo de Evitación
Conclusión
Los bloqueos mutuos ocurren cuando varios procesos se impiden mutuamente
continuar por una mala gestión de recursos compartidos. Para que sucedan, se deben
cumplir simultáneamente las cuatro condiciones clásicas (exclusión mutua, posesión y
espera, no preempción y espera circular). El grafo de asignación de recursos ayuda a
visualizar estas situaciones y detectar ciclos de interbloqueo.
Evolución Resumida
• Primera generación: Computadoras con tubos de vacío, sin OS formal, muy grandes y
para tareas específicas.
• Segunda generación: Llegan los transistores y la programación en batch con tarjetas
perforadas.
• Tercera generación: Circuitos integrados, multiprogramación y la aparición de UNIX y
OS/360.
• Cuarta generación: Surge la computadora personal, MS-DOS, Windows, MacOS, Linux
para desktop.
• Quinta generación: Dominio de dispositivos móviles, sistemas como Android, iOS, y
énfasis en portabilidad y conectividad.
Conclusión
Los sistemas operativos han pasado de ser inexistentes (cuando los programadores
tenían acceso directo al hardware) a complejos núcleos que controlan recursos,
proporcionan interfaces amigables y permiten la movilidad en smartphones y otros
dispositivos. Cada generación representa un gran salto en la miniaturización del
hardware y la sofisticación del software, haciendo que la computación sea cada vez más
universal, potente y accesible.
Idea principal:
1. Available (Disponible)
o Vector de tamaño m.
o Indica cuántas unidades de cada recurso hay disponibles actualmente en el
sistema.
2. Max
o Matriz de n x m.
o Max[i][j] indica la demanda máxima del proceso i para el recurso j (la
mayor cantidad de ese recurso que podría llegar a pedir).
3. Allocation
o Matriz de n x m.
o Allocation[i][j] indica cuántas unidades del recurso j están asignadas
actualmente al proceso i.
4. Need
o Matriz de n x m.
o Need[i][j] = Max[i][j] - Allocation[i][j].
o Indica cuántas unidades del recurso j todavía necesita el proceso i para poder
terminar.
3. Estados y Secuencias Seguras
3.1. Estado seguro
Si el sistema no encuentra al menos una secuencia de este tipo, se dice que el estado es
inseguro, y potencialmente puede ocurrir un interbloqueo.
Objetivo: Cuando un proceso Pi hace una solicitud Request[i] (cantidad de cada tipo
de recurso que desea), determinar si es seguro satisfacer esa solicitud.
• Max:
o P0 puede requerir hasta 7 unidades.
o P1 hasta 5 unidades.
o P2 hasta 3 unidades.
• Allocations actuales:
o P0 ya tiene 0 asignadas (inició, pero no tomó nada).
o P1 tiene 1 asignada.
o P2 tiene 2 asignadas.
• Entonces:
o Available = 10 - (0+1+2) = 7 (7 unidades disponibles).
o Need[0] = 7 - 0 = 7.
o Need[1] = 5 - 1 = 4.
o Need[2] = 3 - 2 = 1.
• Chequeamos:
1. Request[0] <= Need[0], es decir, 3 <= 7 → verdadero.
2. Request[0] <= Available, 3 <= 7 → verdadero.
3. Asignación tentativa:
▪ Available = 7 - 3 = 4
▪ Allocation[0] = 0 + 3 = 3
▪ Need[0] = 7 - 3 = 4.
4. Comprobamos de nuevo estado seguro con estos valores.
▪ Si sigue siendo seguro, la asignación se confirma.
▪ Si no, se revierte y P0 debe esperar.
1. Una vez un proceso tiene todo lo que necesita (lo que indica su Need), puede
ejecutarse y terminar.
2. Al finalizar, libera todos los recursos en Allocation.
3. Esto aumenta el vector Available, haciendo que otros procesos puedan continuar.
4. Finalmente, cuando todos los procesos han terminado, la asignación total a ellos es 0
(o sea, han devuelto todos los recursos), y Available vuelve a ser igual a la capacidad
total del sistema.
Ejemplo:
7. Resumen Visual
1. Inicia con cierta distribución de recursos.
2. Cada proceso indica su Max (lo máximo que podría llegar a pedir).
3. Cuando pide algo:
1. Verificas si Request <= Need y si Request <= Available.
2. Asignas tentativamente y verificas estado seguro.
3. Si es seguro, se confirma la asignación. Si no, el proceso espera.
4. Cuando el proceso termina, libera sus recursos → Allocation se hace 0 para ese
proceso, y Available sube.
5. Se repite para todos los procesos, asegurando que siempre existe al menos un orden
que evite el interbloqueo.
8. Conclusiones y Consejos
• El Algoritmo del Banquero es esencial para evitar o detectar condiciones de
interbloqueo, garantizando que el sistema no entre en un estado inseguro.
• Paso clave: Verificación de “estado seguro” antes de conceder cada nueva solicitud.
• Llega a cero: Todos los recursos terminan liberándose cuando cada proceso finaliza y
su Allocation se suma de nuevo a Available.
• Funciona bien en sistemas en los que se conoce la demanda máxima de recursos de
cada proceso y el número total de recursos.
• Puede ser pesado computacionalmente en sistemas con muchos procesos y varios
tipos de recursos, porque se hacen múltiples comprobaciones de seguridad.
Resumen Final
1. ¿Qué es la Monoprogramación?
La monoprogramación (también llamada monoprocesamiento o ejecución única) es un
modelo de ejecución en el que solo un programa o proceso se ejecuta en la memoria
principal en un momento dado. Esto significa que:
Características clave
Desventajas
8. Analogía Resumida
• Monoprogramación → Una sola vía por la que pasa un coche a la vez. Ningún otro
coche puede usar la vía hasta que el primero haya salido.
• Multiprogramación → Varias vías o carriles. Si un coche se detiene (espera), otro
carril (u otro espacio) permite avanzar a otros vehículos.
Conclusión
La monoprogramación fue un modelo muy habitual en los primeros sistemas
informáticos y en algunos sistemas embebidos actuales, donde la simplicidad y el
control son más importantes que la eficiencia y la multitarea. Aunque ha sido
ampliamente reemplazada por la multiprogramación en la mayoría de los sistemas
generales (debido a la necesidad de aprovechar al máximo la CPU y la memoria), en
ciertas aplicaciones muy específicas aún se utiliza monoprogramación por su facilidad
de implementación y baja complejidad.
Ejemplo:
2. Paginación de Memoria
2.1. ¿Qué es la paginación?
• No hay “movimientos de página” (no se traen partes del programa por demanda).
• No hay fragmentación interna típica de la paginación, pero puede haber
fragmentación externa si hay huecos de memoria entre programas.
Ejemplo:
• Un sistema muy básico donde cada proceso debe encajar en un bloque de memoria
contigua. Se carga entero, se ejecuta y, tras terminar, libera ese bloque.
3. Multiprogramación
3.1. Definición
5. Ejemplo Ilustrativo
Escenario:
Ventajas:
Desventajas:
• Si llega un Proceso C de 1.5 GB, podría no caber en la RAM junto a los otros y no se
intentaría “sacarlos” al disco (porque no hay intercambio) ni dividirlo en páginas (sin
paginación).
• Se pierde oportunidad de tener 3 procesos en ejecución simultáneamente.
Conclusión
• Intercambio de procesos (swapping) y paginación son técnicas para aumentar la
flexibilidad y eficiencia de la memoria.
• Sin estas técnicas, los procesos se mantienen completos en la RAM hasta que finalicen,
lo cual puede funcionar con uno o pocos procesos pequeños.
• La multiprogramación permite que varios programas se compartan la CPU y la
memoria, mejorando el rendimiento del sistema y reduciendo los tiempos de
inactividad de la CPU.
• Aun sin swapping ni paginación, la multiprogramación puede darse, pero es menos
dinámica. Con un uso intensivo de intercambios o paginación, es posible cargar más
programas y administrarlos de forma más eficiente, logrando un aprovechamiento
óptimo de los recursos
Características principales:
5. Ejemplos de Uso
1. Sistemas Antiguos:
o Mainframes y minicomputadoras de los años 60 y 70 usaban particiones fijas al
arrancar.
o Las empresas configuraban, por ejemplo, 2 particiones “pequeñas” y 2
“grandes” según sus aplicaciones típicas.
2. Dispositivos Embebidos Simples:
o Algunos microcontroladores o sistemas con muy poca memoria pueden definir
una división básica para cargar un firmware principal y uno secundario
(aunque cada vez es menos frecuente por la adopción de esquemas más
dinámicos).
3. Laboratorios de enseñanza:
o A veces, en entornos académicos, se enseñan particiones fijas para ilustrar los
conceptos iniciales de administración de memoria sin complicaciones.
7. Ejemplo Práctico
Imaginemos un sistema con 1 GB (1024 MB) de RAM, donde se definen 4 particiones
fijas:
• Partición 1: 256 MB
• Partición 2: 256 MB
• Partición 3: 256 MB
• Partición 4: 256 MB
Flujo de ejecución
8. Resumen
• Las particiones fijas dividen la memoria principal en bloques inmutables, ofreciendo
simplicidad y baja sobrecarga de administración, pero sufriendo de fragmentación
interna y poca flexibilidad a la hora de acomodar procesos grandes.
• Fueron comunes en los sistemas operativos antiguos y, aunque ahora la mayoría de
los SO utilizan métodos más dinámicos (paginación, segmentación, particiones
variables), siguen siendo un excelente ejemplo didáctico para comprender la evolución
de la gestión de memoria en la historia de la computación.
A continuación, encontrarás una explicación más amplia del concepto de intercambio
(o swapping) en el contexto de la memoria virtual, así como las ideas de paginación,
segmentación, falta de página y políticas de reemplazo. Estos elementos se combinan
para que un sistema operativo pueda gestionar de manera eficiente el uso de la RAM y
el almacenamiento secundario (disco).
• La memoria virtual permite que el sistema operativo y los programas vean un espacio
de direcciones unificado (RAM + disco).
• Cuando la RAM está llena, partes menos usadas de los procesos se “intercambian” al
disco, de modo que en la memoria física solo residan las partes más activas.
Ejemplo:
1. Tienes 3 programas cargados (A, B, C), pero solo hay espacio real en la RAM para 2.
2. El sistema intercambia al disco fragmentos no usados del programa C para que B y A
quepan plenamente.
3. Si C vuelve a necesitarse con intensidad, partes de A o B podrían ser movidas a disco.
2. Paginación y Segmentación
2.1. Paginación
• Paginación divide la memoria (tanto física como virtual) en bloques de tamaño fijo
llamados páginas (por ejemplo, 4 KB).
• Cada parte de un proceso se aloja en páginas, y el sistema operativo mantiene tablas
que indican dónde se encuentran esas páginas (RAM o disco).
• Cuando un proceso requiere una página que no está en RAM, se produce un fallo de
página (page fault) y se trae la página correspondiente del disco.
2.2. Segmentación
Ejemplo:
3.2. Consecuencias
• Provoca tiempos de acceso mayores (porque leer del disco es más lento que leer de la
RAM).
• Si la memoria RAM está llena, se debe expulsar otra página (ver “política de
reemplazo”) para hacer espacio a la nueva.
Ejemplo:
• Tu proceso necesita la página 12, pero está en el disco. Se genera un page fault y el SO
trae la página 12 a la RAM.
• Si no hay marco libre, la política de reemplazo decide qué página sacar.
4. Política de Reemplazo
4.1. ¿Qué es?
• Es el criterio que determina qué página expulsar de la memoria RAM cuando está
llena y llega un fallo de página.
• Busca minimizar el número de fallos de página futuros o mantener un buen
rendimiento.
1. FIFO (First In, First Out): Se expulsa la página que lleva más tiempo cargada.
2. LRU (Least Recently Used): Expulsa la página que menos se ha usado recientemente.
3. LFU (Least Frequently Used): Expulsa la página con menos accesos acumulados.
4. Algoritmo de Reloj (Clock): Una implementación eficiente que revisa bit de referencia
para decidir.
Ejemplo:
• Si usas LRU y la página 5 no se ha usado en mucho tiempo, mientras que las páginas 6,
7 y 8 se han usado recientemente, LRU decide sacar la página 5.
• Tienes 3 procesos (A, B, C) corriendo, y la RAM solo tiene espacio para un máximo de 6
páginas.
• Cada proceso necesita 4 páginas en total (A: páginas 1-4, B: páginas 5-8, C: páginas 9-
12).
Conclusión
1. Dirección de Memoria
1.1. Definición
• Una dirección de memoria es un identificador único que se utiliza para señalar dónde
se almacena un dato o instrucción dentro de la memoria de una computadora.
• Normalmente se representan como números hexadecimales (por ejemplo,
0x7FFFD3A8) debido a que la hexadecimal facilita la lectura y el manejo de valores
binarios largos.
1.2. Importancia
• Archivero con cajones numerados: Imagina un archivero con 100 cajones, cada uno
tiene un número (dirección). Para encontrar un documento, necesitas saber en qué
cajón (dirección) está guardado. Del mismo modo, la computadora requiere la
dirección para encontrar o guardar datos.
2. Tipos de Dirección de Memoria
A grandes rasgos, se pueden mencionar:
3. Memoria Virtual
3.1. Definición
3.2. Objetivos
• Reservación de asientos en un avión: El avión (memoria física) tiene 200 asientos. Sin
embargo, la aerolínea sobrevende (memoria virtual) hasta 220 boletos, asumiendo
que no todos los pasajeros aparecerán. Mientras la demanda efectiva no supere 200
personas al mismo tiempo, todos tendrán asiento. Pero si todos vinieran, habría que
“sacar” a alguien (el sistema realiza swapping), lo que puede generar demora o
reubicaciones.
3.5. Características clave de la Memoria Virtual
1. Abstracción de la memoria física
o Oculta detalles físicos (direcciones reales en RAM) a las aplicaciones.
o Cada proceso cree tener su propio espacio de direcciones.
2. Tamaño potencialmente mayor
o El SO puede asignar direcciones virtuales que exceden la RAM real,
apoyándose en disco duro (swap) cuando sea necesario.
3. Paginación y Segmentación
o Son métodos para dividir la memoria y organizarla de forma eficiente (ver
sección de paginación más adelante).
4. Gestión de memoria bajo demanda
o Se carga en RAM solo lo necesario. El resto se mantiene en disco hasta que se
requiera.
5. Swap (intercambio)
o Mueve datos de la RAM al disco y viceversa para liberar memoria física.
6. Protección y aislamiento
o Evita que un proceso modifique la memoria de otro sin autorización.
7. Mejora del rendimiento
o Al permitir la ejecución simultánea de programas sin que la CPU quede
inactiva por falta de memoria, aumenta la eficiencia global.
4. Paginación
4.1. Definición
Beneficios
1.1. Definición
• FIFO expulsa la página que lleva más tiempo en la memoria, es decir, la que fue
cargada primera.
• Se implementa con una cola: la página que entró primero, sale primero.
2.1. Definición
• LRU expulsa la página que no se ha usado más recientemente.
• La idea es que las páginas usadas hace mucho tiempo tienen menos probabilidad de
ser necesitadas inmediatamente que las usadas recientemente.
• Tu mochila: Tienes un cupo limitado para libros (3 libros). Guardas los que usaste hace
poco. Si necesitas uno nuevo y tu mochila está llena, sacas aquel que no has
consultado por más tiempo.
3.1. Definición
• LFU expulsa la página que ha sido usada menos frecuentemente durante un periodo
(cuenta de accesos).
• La idea: si una página se usa poco, es menos probable que se necesite pronto.
• Si ahora llega otra página, la que se expulsará es la de uso menos frecuente, que
es D=1.
• Ventajas: Beneficia a las páginas muy usadas, pues se mantendrán en memoria.
• Desventajas: Una página muy usada en el pasado pero no reciente puede
quedarse con un contador alto y no ser expulsada, aunque ya no se necesite tanto
(puede provocar casos de “una estrella olvidada”).
• Restaurante: Tienes un menú con platos. Expulsas del menú (dejas de ofrecer) el plato
con menos ventas (menor frecuencia de compra). Mantienes los platos más populares
(frecuentes) por más tiempo.
4.1. Definición
• NRU clasifica las páginas según dos bits:
o R (Referenced): Indica si la página ha sido leída/usada recientemente.
o M (Modified): Indica si la página ha sido escrita.
• Periódicamente, el sistema “resetea” el bit R. Cuando se necesita reemplazar, se
expulsa preferentemente una página que no fue usada recientemente (R=0) y no fue
modificada (M=0), para minimizar costos de escritura a disco.
• Biblioteca:
o R=1: El libro ha sido consultado recientemente.
o M=1: El libro ha sido anotado o modificado (necesitas tiempo para guardarlo
cuidadosamente).
o Expulsas primero libros que no se han consultado ni modificado en mucho
tiempo.
5. Algoritmo de Reloj (Clock)
5.1. Definición
• Clock es una implementación eficiente de NRU en la práctica.
• Cada página se representa como un puntero en un anillo (reloj). Cada página tiene un
bit R (referencia). El puntero “camina” por las páginas en círculo.
• Rueda giratoria con casilleros, cada uno tiene un “indicador” de uso. Si el indicador
está encendido (1), lo apagas (0) y pasas de largo. Al segundo giro, si sigue apagado
(0), lo liberas.
6.1. Definición
• MFU elige expulsar la página con mayor número de accesos. Se basa en la suposición
de que si una página ha sido accedida mucho, es probable que se requiera menos en el
futuro y que las páginas con menos acceso todavía se necesitan.
7. Comparación y Consideraciones
Algoritmo Ventaja Desventaja Escenario Típico
Secuencia: [1, 2, 3, 2, 1, 4, 2, 3, 1]
Marcos disponibles: 3
1. FIFO:
o Marcos a cada paso, se va expulsando la página que más tiempo lleva dentro.
o Suele dar, por ejemplo, X fallos (haz un conteo preciso si deseas la cifra
exacta).
2. LRU:
o Expulsa la página menos recientemente usada.
o Tiende a generar menos fallos que FIFO en muchos casos.
3. LFU:
o Llega a expulsar la que tenga menor frecuencia total de uso.
Conclusión
Los algoritmos de reemplazo de páginas son esenciales para gestionar la memoria
virtual cuando la RAM está llena y se necesita liberar espacio. Cada algoritmo propone
una forma distinta de decidir qué página expulsar, buscando un balance entre:
1. Definición de Segmentación
La segmentación es una técnica de administración de memoria que divide el espacio
de direcciones de un proceso en bloques lógicos llamados segmentos. Cada segmento
suele representar un tipo de información o código dentro del programa (por ejemplo,
segmento de código, segmento de datos, segmento de pilas).
Cada área es un segmento con un tamaño distinto (el comedor puede ser más grande
que las oficinas, por ejemplo). Además, cada área tiene permisos de acceso distintos: el
personal autorizado entra a oficinas, pero quizá no a la cocina. En informática, la
segmentación sigue la misma lógica: cada “área” (segmento) se maneja como un bloque
independiente con límites y permisos.
4. Ventajas y Desventajas
Ventajas
Desventajas
1. Fragmentación externa: Como los segmentos tienen tamaños variables, puede haber
trozos de memoria libres dispersos que no se aprovechan.
2. Complejidad: Administrar varios segmentos y actualizar sus tablas puede ser más
complicado que la paginación pura.
Resumen
Escenario informático
Imagina un programa con tres grandes partes:
Ventajas:
Desventajas:
2. Tipos de Segmentación
Aunque normalmente se habla de segmentación en el contexto de la memoria, también
hay segmentación en discos y redes. Cada una se basa en la misma idea de dividir un
recurso grande en secciones lógicas más pequeñas.
Desventajas
5. Segmentación Paginada
Para disminuir la fragmentación externa y mantener la organización lógica de los
segmentos, surge la segmentación paginada. En este esquema:
Ventajas
Ejemplo sencillo
En segmentación paginada:
Conclusión
La segmentación es una técnica fundamental para organizar y proteger la memoria, al
dividir los procesos en regiones lógicas con distintos propósitos y tamaños. Sin
embargo, puede enfrentarse a la fragmentación externa y ser compleja de administrar.