U3 Flashcards

(31 cards)

1
Q

Concepto de Programa

A

Un programa es un conjunto de instrucciones escritas en un lenguaje de programación, diseñadas para realizar una tarea específica o resolver un problema determinado. Estas instrucciones están organizadas de forma lógica y secuencial para cumplir con un objetivo funcional.

  • Entidad estática:Un programa, cuando está almacenado en disco o en algún medio de almacenamiento, no cambia por sí solo. Permanece sin alteraciones hasta que es cargado en memoria y ejecutado.
  • Ejemplos:
    • Un archivo .exe en Windows.
    • Un script en Python (.py), guardado en disco.
    • Una aplicación móvil instalada pero no en uso.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Concepto de Proceso

A

Un proceso es una instancia en ejecución de un programa. Es decir, cuando un programa es cargado en la memoria RAM y empieza a ejecutarse, se convierte en un proceso. Este incluye no solo el código del programa, sino también su estado de ejecución, datos, recursos asignados, y una estructura de control que permite su gestión por parte del sistema operativo.

  • Entidad dinámica:Un proceso está en constante cambio mientras se ejecuta. Su estado puede pasar de “ejecutándose” a “esperando” o “finalizado”, su contador de programa avanza, y puede solicitar o liberar recursos del sistema (como memoria, archivos, CPU, etc.).
  • Gestionado por el Sistema Operativo (SO):El sistema operativo es responsable de la creación, ejecución, planificación, suspensión y terminación de procesos. También se encarga de asignar los recursos necesarios y garantizar que los procesos se ejecuten de forma segura y eficiente.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Concepto de Contador de Programa (Program Counter, PC)

A

El Contador de Programa es un registro especial de la CPU que contiene la dirección de memoria de la siguiente instrucción que debe ejecutarse en un proceso. Es esencial para llevar un seguimiento ordenado de la ejecución del programa.

  • En cada ciclo de instrucción, la CPU:
    1. Lee la instrucción en la dirección indicada por el PC.
    2. Ejecuta dicha instrucción.
    3. Actualiza el PC con la dirección de la próxima instrucción.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Elementos de los Procesos: PCB.

A

El PCB (Process Control Block) es una estructura de datos que mantiene el sistema operativo en memoria para controlar y gestionar cada proceso.

Cada vez que se crea un proceso, el sistema operativo genera un PCB asociado.

🧬 ¿Qué guarda el PCB?

  • Identificador. Un identificador único asociado a este proceso, para distinguirlo del resto de procesos.
  • Estado. Si el proceso está actualmente corriendo, está en el estado en ejecución.
  • Prioridad. Nivel de prioridad relativo al resto de procesos.
  • Contador de programa. La dirección de la siguiente instrucción del programa que se ejecutará.
  • Punteros a memoria. Incluye los punteros al código de programa y los datos asociados a dicho proceso, además de cualquier bloque de memoria compartido con otros procesos.
  • Datos de contexto. Estos son datos que están presentes en los registros del procesador cuando el proceso está corriendo.
  • Información de estado de E/S. Incluye las peticiones de E/S pendientes, dispositivos de E/S (por ejemplo, una unidad de cinta) asignados a dicho proceso, una lista de los ficheros en uso por el mismo, etc.
  • Información de auditoría. Puede incluir la cantidad de tiempo de procesador y de tiempo de reloj utilizados, así como los límites de tiempo, registros contables, etc.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Aspectos generales: Multiprogramación

A

Objetivo: Mantener ocupado el procesador el mayor tiempo posible.

Descripción: Consiste en cargar varios programas en memoria al mismo tiempo para que, mientras uno espera (por ejemplo, por entrada/salida), el procesador pueda ejecutar otro. Así se mejora la utilización del CPU.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Aspectos generales: Tiempo compartido

A

Objetivo: Brindar soporte a una gran cantidad de usuarios simultáneamente.

Descripción: Es una extensión de la multiprogramación que permite que múltiples usuarios interactúen con el sistema al mismo tiempo. Cada usuario recibe una pequeña porción de tiempo de CPU (time slice), lo que da la sensación de acceso simultáneo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Aspectos generales: Transacciones en tiempo real

A

Objetivo: Realizar consultas o actualizaciones a bases de datos en el momento exacto en que se requiere.

Descripción: Se refiere a sistemas que responden inmediatamente a solicitudes de transacción, como en cajeros automáticos, sistemas bancarios o de reservas. Las operaciones deben completarse en un tiempo predecible y muy corto.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Estados de un Proceso.

A

Estados principales de un proceso:

  1. LISTO:El proceso está preparado para ejecutarse, esperando que el procesador lo seleccione.
  2. EJECUCIÓN:El proceso está siendo ejecutado por el procesador.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Transiciones entre estados:

A
  • expedir (dispatch):Cuando un proceso pasa de LISTO a EJECUCIÓN porque el procesador lo selecciona.
  • fin del tiempo (time slice expiration):Si un proceso usa todo su tiempo asignado de CPU, vuelve a LISTO para esperar otro turno.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Cola de procesos:

A
  • Los procesos que llegan (por ejemplo, D, C, B, A) se colocan en una cola de procesos, esperando su turno para ser ejecutados.
  • El sistema operativo expide uno a uno desde la cola hacia el procesador.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Procesador:

A
  • El procesador toma procesos desde la cola.
  • Ejecuta cada uno durante un cierto tiempo (o hasta que se bloquee, finalice, o exceda su tiempo).
  • Si el tiempo se agota, vuelve a mandarlo al estado LISTO (reinserta en la cola).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Estados de un Proceso y sus Transiciones.

A
  1. NUEVO:El proceso ha sido creado pero aún no está listo para ejecutarse.
  2. LISTO:El proceso está en memoria principal esperando ser ejecutado por la CPU.
  3. EJECUCIÓN:El proceso está siendo ejecutado activamente por el procesador.
  4. BLOQUEADO:El proceso no puede continuar hasta que ocurra un evento externo (por ejemplo, espera de datos de entrada/salida).
  5. TERMINADO:El proceso ha finalizado su ejecución.
  6. LISTO SUSPENDIDO:El proceso estaba listo, pero fue movido a disco (por falta de memoria u otra razón).
  7. BLOQUEADO SUSPENDIDO:El proceso estaba bloqueado, pero también fue suspendido y almacenado en disco.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Estados “NO Suspendidos” → En RAM (memoria principal):

A

Estos procesos están cargados en memoria y listos para interactuar con el procesador (CPU):

  • LISTO: esperando turno para ser ejecutado.
  • EJECUCIÓN: siendo ejecutado por la CPU.
  • BLOQUEADO: esperando un evento (como entrada/salida), pero sigue en RAM.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Estados “Suspendidos” → En Disco:

A

Estos procesos fueron sacados de RAM y puestos en almacenamiento secundario (disco). Esto se hace para liberar memoria cuando hay muchos procesos, no hay espacio suficiente o no tiene el estímulo para realizar la ejecución.

  • LISTO SUSPENDIDO: estaba listo para ejecutarse, pero fue movido a disco. Le falta volver a RAM para competir por la CPU.
  • BLOQUEADO SUSPENDIDO: estaba esperando un evento, pero también fue sacado de RAM. Le falta volver a RAM y que ocurra el evento.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Procesos Suspendidos.

A

Suspender un proceso es una acción del sistema operativo que implica interrumpir temporalmente la ejecución de un proceso y moverlo a un almacenamiento secundario (como el disco) para liberar recursos, especialmente memoria RAM.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Suspender un proceso significa:

A
  • Detener su ejecución temporalmente.
  • Guardar su estado actual (contexto, registros, memoria asignada, etc.).
  • Liberar recursos que el proceso está utilizando (principalmente la memoria RAM).
  • Transferirlo al almacenamiento secundario (generalmente al disco), lo que se conoce como swapping.

Los procesos suspendidos residen en el disco, específicamente en una parte del sistema llamada espacio de intercambio (swap). Esto permite que la memoria principal quede libre para otros procesos activos o de mayor prioridad.

17
Q

Swapping es el mecanismo que usa el sistema operativo para:

A
  • Mover procesos entre la memoria principal (RAM) y la memoria secundaria (disco).
  • Es una técnica de gestión de memoria que permite manejar más procesos de los que caben simultáneamente en la RAM.

> Cuando un proceso suspendido es necesario de nuevo, se realiza el swap-in (se carga desde el disco a la RAM), y puede reanudarse desde donde se suspendió.

18
Q

Estructuras de control del sistema operativo: Tablas de Memoria.

A

Tablas de Memoria.

Las tablas de memoria son estructuras utilizadas por el sistema operativo para gestionar y controlar el uso de la memoria en el sistema. Sus funciones principales incluyen:

  1. Control de la memoria principal (RAM) y secundaria
    • Supervisan el uso eficiente de la memoria principal y, en algunos casos, de la memoria secundaria (como el disco duro cuando se usa la memoria virtual).
  2. Asignación y liberación de memoria
    • Asignan bloques de memoria a los procesos cuando estos lo requieren.
    • Liberan dicha memoria cuando los procesos finalizan o ya no la necesitan.
  3. Registro de la ubicación de los procesos
    • Mantienen un seguimiento de qué parte de la memoria está ocupada por cada proceso.
    • Esto permite saber en qué dirección de memoria comienza y termina cada proceso.
  4. Control de acceso a regiones de memoria compartidas
    • Previenen accesos no autorizados a áreas de memoria que pueden ser compartidas entre procesos.
    • Garantizan la protección de la memoria entre procesos mediante técnicas como la segmentación o la paginación.
19
Q

Estructuras de control del sistema operativo: Tablas de Entrada/Salida.

A

Tablas de Entrada/Salida.

Las tablas de E/S son estructuras utilizadas por el sistema operativo para gestionar todos los aspectos relacionados con los dispositivos periféricos. Entre sus funciones principales están:

  1. Administración de dispositivos y canales de Entrada/Salida
    • Controlan el uso y disponibilidad de dispositivos como teclados, impresoras, discos, etc.
    • Coordinan el acceso a los canales de comunicación entre el sistema y los dispositivos.
  2. Control del estado de las operaciones de Entrada/Salida
    • Supervisan si una operación de E/S está en curso, ha sido completada o si ha ocurrido un error.
    • Garantizan que las operaciones se ejecuten correctamente y se manejen los errores apropiadamente.
  3. Registro del área de memoria para la transferencia (buffers)
    • Mantienen información sobre los buffers, que son áreas temporales de memoria usadas para almacenar datos en tránsito entre el dispositivo y la memoria principal.
    • Ayudan a optimizar la velocidad de transferencia y evitar pérdidas de datos.
    • Buffers: Los buffers (o memorias intermedias) son áreas temporales de memoria que se utilizan para almacenar datos de forma provisional mientras se transfieren entre dos dispositivos o entre un dispositivo y la memoria principal.
20
Q

Estructuras de control del sistema operativo: Tabla de Archivos. ¿Qué gestiona cada uno? ¿Ubicación?

A

Las tablas de archivos son estructuras que utiliza el sistema operativo para gestionar y controlar el acceso a los archivos almacenados en los dispositivos de almacenamiento (discos duros, SSD, etc.).

A. Tabla de Archivos Abiertos

  • Mantiene el registro de los archivos actualmente en uso por los procesos del sistema.
  • Almacena información importante como:
    • Estado del archivo (abierto, cerrado, en uso exclusivo, etc.)
    • Atributos (tamaño, permisos, fecha de creación/modificación)
    • Direcciones físicas de los bloques de disco donde está almacenado el contenido del archivo.
      ¿Qué gestiona?
      Archivos en uso, atributos y bloques
      ¿Ubicación?
      Memoria principal (RAM)

B. Tablas de Archivos en Disco

  • Contienen la información sobre la ubicación de los archivos en el disco.
  • Son gestionadas por el sistema de archivos del sistema operativo.
  • Ejemplos de estructuras de este tipo:
    • FAT (File Allocation Table) – Utilizado en sistemas como MS-DOS y versiones de Windows.
    • MFT (Master File Table) – Utilizado por el sistema de archivos NTFS en Windows.
      ¿Qué gestiona?
      Ubicación de todos los archivos del disco
      ¿Ubicación?
      Disco duro / SSD
21
Q

Estructuras de control del sistema operativo: Tablas de Procesos. ¿Qué contienen? Función principal.

A

Las tablas de procesos son estructuras fundamentales del sistema operativo que se utilizan para gestionar todos los procesos en ejecución o en espera dentro del sistema.

¿Qué contienen?

Estas tablas mantienen el control de la ubicación, estado y atributos de cada proceso. Cada entrada representa un proceso y contiene datos como:

  • ID del proceso (PID): Número único que identifica a cada proceso.
  • ID del usuario (UID): Identificador del usuario que ejecuta el proceso.
  • Estado del proceso: Por ejemplo, listo, ejecutándose, en espera o terminado.
  • Ubicación en memoria: Dirección o segmento donde está cargado el proceso.
  • Prioridad: Nivel de prioridad del proceso para acceder a recursos del sistema.
  • Contador de programa: Dirección de la siguiente instrucción a ejecutar.
  • Registros del CPU: Estado de los registros cuando el proceso es suspendido.
  • Información de E/S: Dispositivos asignados o archivos abiertos por el proceso.

Función principal.

Permiten al sistema operativo:

  • Controlar y coordinar la ejecución de los procesos.
  • Saber qué recursos usa cada proceso.
  • Administrar correctamente los cambios de contexto (cuando el CPU cambia de un proceso a otro).
22
Q

Estructuras de Control de Procesos.

A

Objetivo: Determinar dónde se encuentra cada proceso en memoria y cuáles son sus atributos (información importante del proceso) para poder gestionarlo adecuadamente durante su ciclo de vida (creación, ejecución, suspensión, finalización, etc.).

23
Q

Tabla Principal de Procesos

A

También conocida como Tabla de Procesos o Process Table.

Características:

  • Es una estructura de datos que mantiene el sistema operativo.
  • Tiene una entrada por cada proceso activo en el sistema.
  • Cada entrada es comúnmente llamada PCB (Process Control Block) o Bloque de Control de Proceso.
24
Q

Imagen del proceso

A

Cuando un programa se carga para ejecutarse, se convierte en un proceso, y su imagen es todo lo que ocupa en la memoria principal (RAM) durante su vida útil.

25
Pila de sistema.
**Concepto:** conjunto ordenado de elementos a los que se accede en forma LIFO (last in, first out) **Objetivo:** almacenar los parámetros y direcciones de retorno de los procedimientos y llamadas al sistema.
26
Bloque de control de proceso.
Es la **estructura de datos más importante** del sistema operativo para administrar los procesos. Cada vez que se crea un proceso, el sistema operativo genera su **propio BCP**. El **BCP almacena toda la información que el sistema operativo necesita** para gestionar y controlar un proceso. Sus campos típicos incluyen: 1. **Identificación del proceso.** - PID (Process ID) - ID del proceso padre (PPID) - ID de grupo o usuario 2. **Estado del proceso.** - Listo (ready), ejecutando (running), bloqueado (blocked), etc. 3. **Contador de programa (PC).** - Dirección de la siguiente instrucción a ejecutar 4. **Registros de CPU.** - Se guardan cuando el proceso se interrumpe 5. **Información de planificación.** - Prioridad del proceso - Tiempo de CPU usado - Punteros a estructuras de planificación (colas, listas) 6. **Información de gestión de memoria.** - Puntero a la **imagen del proceso** - Tabla de páginas o segmentos - Tamaño del proceso 7. **Información de recursos.** - Archivos abiertos - Dispositivos asignados - Semáforos, tuberías, etc. 8. **Contabilidad del proceso.** - Tiempo de CPU usado - Tiempo de espera - Estadísticas para el sistema
27
Funciones de Soporte.
Estas funciones permiten que el sistema operativo **responda, controle y registre** lo que ocurre en el entorno del sistema. **¿Qué hace el sistema operativo?** - **Detecta y atiende** la interrupción mediante una rutina especial (ISR – *Interrupt Service Routine*) - Guarda el estado del proceso actual (contexto) - Ejecuta el código correspondiente - Luego **retoma la ejecución donde se interrumpió** --- **Auditoría.** La auditoría es el proceso mediante el cual el sistema operativo **registra eventos importantes**, especialmente relacionados con la **seguridad** y el uso de recursos. **¿Para qué sirve?** - Detectar **accesos no autorizados** - Supervisar la **actividad de usuarios** - Garantizar el **cumplimiento de políticas** - Analizar fallos o ataques --- **Monitorización.** Es la función que permite **observar en tiempo real** el estado del sistema y sus recursos. **¿Para qué sirve?** - **Optimizar el rendimiento** - **Detectar cuellos de botella** - **Tomar decisiones de planificación** - **Prevenir fallos antes de que ocurran**
28
Control de Procesos: Modos de Ejecución
Modos de Ejecución El sistema operativo utiliza distintos **modos de ejecución** para **proteger el sistema** y **controlar el acceso a los recursos**. Esto se logra mediante una **distinción clara entre el código del sistema operativo y el de los programas de usuario.** **Modo usuario (User Mode)** - Es el **modo menos privilegiado**. - Aquí se ejecutan los programas del **usuario común** (aplicaciones, juegos, navegadores…). - El acceso está **restringido**: - No se puede acceder directamente al hardware. - No se pueden ejecutar instrucciones sensibles (como manipular registros del sistema). - Cualquier intento de violar estas restricciones genera una **interrupción o excepción**. **Objetivo:** proteger el núcleo del sistema operativo y garantizar estabilidad. --- **Modo núcleo (Kernel Mode)** - Es el **modo privilegiado**. - Se ejecuta el **código del sistema operativo** (núcleo, controladores, servicios de bajo nivel). - Tiene **acceso total al hardware y a todas las instrucciones** de la CPU: - Puede manipular registros - Administrar memoria - Controlar dispositivos Solo el sistema operativo puede cambiar del modo usuario al modo núcleo, generalmente mediante una **llamada al sistema** (*system call*). --- **PSW – *Program Status Word*** El **PSW (Palabra de Estado del Programa)** es un **registro especial de la CPU** que **controla y refleja el estado actual de ejecución de un proceso**. Contiene información como: - **Modo de ejecución actual** (usuario o núcleo) - **Bits de interrupción** (habilitadas o deshabilitadas) - **Código de condición** (resultado de operaciones anteriores) - **Contador de programa** (dirección de la próxima instrucción) - **Prioridad del proceso** - **Otros flags de control del sistema** Cuando ocurre un cambio de contexto (por interrupción o cambio de proceso), **el PSW se guarda y se restaura** para que el proceso pueda continuar donde se quedó.
29
Control de Procesos: Creación de Procesos
Creación de Procesos Cuando un nuevo proceso debe comenzar (por ejemplo, al abrir una app), el sistema operativo realiza una serie de pasos para **prepararlo y ponerlo en cola para su ejecución**. 1. **Asignar un PID único al proceso.** - Cada proceso recibe un **PID (Process Identifier)** exclusivo. - Permite identificarlo y gestionarlo de forma individual. Ejemplo: PID 1001, 1002, etc. 2. **Reservar espacio de memoria para el proceso.** - Se reserva memoria para **la imagen del proceso**, que incluye: - **Código ejecutable** - **Datos estáticos y dinámicos** - **Pila (stack)** - **Montículo (heap)** Esta memoria puede estar en RAM física o gestionada virtualmente. 3. **Inicialización del Bloque de Control del Proceso (PCB).** - Se crea e inicializa el **PCB (Process Control Block)**, que contiene: - PID - Estado inicial (generalmente “nuevo” o “listo”) - Prioridad - Punteros a memoria - Contadores y registros iniciales - Información de E/S, etc. 4. **Enlazar el proceso en la cola de procesos listos.** - El proceso se **agrega a la cola de listos (ready queue)** para esperar su turno de ejecución. - Lo gestionará el **planificador (scheduler)** según el algoritmo de planificación.
30
Control de Procesos: Cambio de Proceso (Cambio de Contexto)
Cambio de Proceso (Cambio de Contexto) **¿Cuándo debe el sistema operativo cambiar de proceso?** El sistema operativo debe hacer un cambio de contexto en situaciones como: 1. **Interrupción de reloj (Timer Interrupt)** - Ocurre cuando **se agota el “quantum” de CPU asignado** al proceso. - El proceso en ejecución pasa a **estado de listo** (`ready`). - Se selecciona otro proceso para continuar. 2. **Interrupción de Entrada/Salida** - Se activa cuando **finaliza una operación de E/S** (por ejemplo, lectura de disco). - Un proceso bloqueado por E/S puede volver al estado de **listo**, y quizás sea elegido para ejecutar. 3. **Llamada al sistema** - Cuando un proceso solicita servicios del sistema (como abrir un archivo o crear otro proceso). 4. **Excepciones / Errores** - Como **fallos de página**, división por cero, violaciones de acceso, etc. --- **Fallo de memoria (Fallo de página)** > Ocurre cuando un proceso intenta acceder a una página de memoria que no está cargada en la RAM. > - El sistema debe buscar esa página en el disco (swap) y cargarla en RAM. - Mientras tanto, el proceso es enviado al estado de **bloqueado** (`waiting`) o **suspendido**. - Este evento también genera un cambio de contexto para ejecutar otro proceso mientras se resuelve el fallo. --- **¿Qué estructuras del sistema operativo se actualizan en un cambio de contexto?** Cuando el sistema operativo realiza un **cambio de contexto**, debe actualizar varias estructuras internas: 1. **PCB (Bloque de Control del Proceso)** - Guarda el estado del proceso saliente (registros, contador, PSW…) - Carga el estado del proceso entrante 2. **Tablas de planificación** - Actualizan la posición del proceso en las colas (listo, bloqueado, etc.) 3. **Tablas de memoria** - Se actualizan los marcos/páginas según la imagen del nuevo proceso 4. **Tablas de archivos abiertos y dispositivos** - Pueden modificarse si el nuevo proceso tiene acceso a recursos diferentes 5. **Registros del CPU** - Se guardan los del proceso saliente y se restauran los del proceso entrante
31
Control de Procesos: Cambio de Estado del Proceso
Cambio de Estado del Proceso El cambio de estado ocurre cuando un proceso: - Pasa de ejecutarse a esperar - Es interrumpido por el sistema operativo - Es sustituido por otro proceso que entra en ejecución Este proceso lo gestiona el **planificador (scheduler)** y consta de varios pasos ordenados: **Pasos del cambio de estado de un proceso:** 1. **Guardar los registros del procesador** > Se almacenan los registros del CPU (contadores, registros de uso general, PSW, etc.) para que el proceso pueda continuar más adelante desde el mismo punto. > 2. **Actualizar el BCP (PCB) con el nuevo estado** > El Bloque de Control del Proceso (PCB) se actualiza para reflejar: > - El nuevo estado (ej: de “ejecutando” a “esperando”) - El contenido de los registros guardados 3. **Mover el proceso a la cola correspondiente** > Dependiendo del nuevo estado, el proceso se coloca en: > - Cola de listos (ready queue) - Cola de espera por E/S (I/O wait) - Cola de terminados, etc. 4. **Seleccionar un nuevo proceso a ejecutar** > El planificador elige el siguiente proceso de la cola de listos, según el algoritmo de planificación (FIFO, Round Robin, prioridades, etc.). > 5. **Actualizar el BCP del proceso seleccionado** > El BCP del nuevo proceso se marca como "en ejecución", y se cargan sus datos relevantes (estado, prioridad, etc.) > 6. **Actualizar las tablas de memoria** > Se configuran las estructuras de memoria para reflejar la imagen del nuevo proceso (paginación, segmentos, etc.) > 7. **Restaurar el estado del procesador** > Se cargan los registros del nuevo proceso, incluyendo el contador de programa, para que la CPU continúe su ejecución correctamente.