Podcast
Questions and Answers
¿Cuál de las siguientes opciones describe mejor la relación entre un programa y un proceso?
¿Cuál de las siguientes opciones describe mejor la relación entre un programa y un proceso?
- Un programa es una entidad pasiva que representa el código, mientras que un proceso es una entidad activa con un contador de programa y recursos asignados. (correct)
- Un proceso es un archivo ejecutable almacenado en el disco, mientras que un programa es una instancia activa de ese archivo en la memoria.
- Un programa y un proceso son sinónimos y se pueden usar indistintamente.
- Un programa es la unidad básica de gestión en un sistema operativo, mientras que un proceso es un conjunto de programas relacionados.
¿Cómo gestiona el kernel los recursos limitados entre los procesos en un sistema operativo?
¿Cómo gestiona el kernel los recursos limitados entre los procesos en un sistema operativo?
- El kernel permite que los procesos compitan libremente por los recursos sin ninguna supervisión.
- El kernel asigna una cantidad fija de cada recurso a cada proceso al inicio y no la modifica.
- El kernel asigna inicialmente una cantidad de recursos a cada proceso y ajusta esta asignación dinámicamente en respuesta a las necesidades del proceso y del sistema. (correct)
- El kernel ignora la demanda de recursos de los procesos y los asigna aleatoriamente.
¿Cuál de los siguientes describe mejor el estado de 'Espera' en el ciclo de vida de un proceso?
¿Cuál de los siguientes describe mejor el estado de 'Espera' en el ciclo de vida de un proceso?
- El proceso ha finalizado su ejecución y está esperando ser eliminado de la memoria.
- El proceso está ejecutando activamente instrucciones en la CPU.
- El proceso está bloqueado, esperando que ocurra un evento como la finalización de una operación de E/S. (correct)
- El proceso está esperando a ser asignado a un procesador.
¿Qué diferencia principal existe entre los estados 'Interruptible' e 'Ininterrumpible' en GNU/Linux?
¿Qué diferencia principal existe entre los estados 'Interruptible' e 'Ininterrumpible' en GNU/Linux?
¿Cuál de los siguientes elementos NO forma parte del Bloque de Control de Proceso (PCB)?
¿Cuál de los siguientes elementos NO forma parte del Bloque de Control de Proceso (PCB)?
¿En qué se diferencia un proceso con múltiples hilos (threads) de un proceso tradicional?
¿En qué se diferencia un proceso con múltiples hilos (threads) de un proceso tradicional?
¿Cuál es el objetivo principal de la multiprogramación en un sistema operativo?
¿Cuál es el objetivo principal de la multiprogramación en un sistema operativo?
¿Qué es el 'swapping' en la planificación de procesos?
¿Qué es el 'swapping' en la planificación de procesos?
¿Por qué el cambio de contexto ('context switch') se considera una sobrecarga ('overhead') para el sistema?
¿Por qué el cambio de contexto ('context switch') se considera una sobrecarga ('overhead') para el sistema?
En el contexto de operaciones en procesos, ¿qué significa que un proceso sea 'zombie'?
En el contexto de operaciones en procesos, ¿qué significa que un proceso sea 'zombie'?
¿Qué implicaciones tiene el uso de memoria compartida (shared memory) para la comunicación entre procesos (IPC)?
¿Qué implicaciones tiene el uso de memoria compartida (shared memory) para la comunicación entre procesos (IPC)?
En el modelo productor-consumidor con un buffer limitado, ¿qué deben hacer el productor y el consumidor si el buffer está lleno o vacío, respectivamente?
En el modelo productor-consumidor con un buffer limitado, ¿qué deben hacer el productor y el consumidor si el buffer está lleno o vacío, respectivamente?
En la comunicación entre procesos mediante 'paso de mensajes', ¿qué papel juegan las operaciones send()
y receive()
?
En la comunicación entre procesos mediante 'paso de mensajes', ¿qué papel juegan las operaciones send()
y receive()
?
¿Cuál es la diferencia clave entre comunicación directa e indirecta en el contexto del paso de mensajes (IPC)?
¿Cuál es la diferencia clave entre comunicación directa e indirecta en el contexto del paso de mensajes (IPC)?
En la comunicación cliente-servidor usando sockets, ¿qué identifica de manera única un socket?
En la comunicación cliente-servidor usando sockets, ¿qué identifica de manera única un socket?
Flashcards
¿Qué es un proceso?
¿Qué es un proceso?
Informalmente, un programa que se está ejecutando.
¿Qué es la unidad de trabajo de un sistema informático moderno?
¿Qué es la unidad de trabajo de un sistema informático moderno?
Un sistema operativo moderno organiza el trabajo en unidades llamadas procesos.
¿Cuáles son los estados de un proceso?
¿Cuáles son los estados de un proceso?
Nuevo, Ejecutando, Espera, Listo, Terminado.
¿Cuándo se convierte un programa en un proceso?
¿Cuándo se convierte un programa en un proceso?
Signup and view all the flashcards
¿Qué significa el proceso interruptible?
¿Qué significa el proceso interruptible?
Signup and view all the flashcards
¿Qué significa el proceso stopped?
¿Qué significa el proceso stopped?
Signup and view all the flashcards
¿Qué significa le estado Zombie?
¿Qué significa le estado Zombie?
Signup and view all the flashcards
¿Qué es el PCB?
¿Qué es el PCB?
Signup and view all the flashcards
¿Cuál es la función del planificador de CPU?
¿Cuál es la función del planificador de CPU?
Signup and view all the flashcards
¿Qué es el tiempo compartido (time sharing)?
¿Qué es el tiempo compartido (time sharing)?
Signup and view all the flashcards
¿Qué hace fork()?
¿Qué hace fork()?
Signup and view all the flashcards
¿En qué consiste el cambio de contexto?
¿En qué consiste el cambio de contexto?
Signup and view all the flashcards
¿Qué es el PID?
¿Qué es el PID?
Signup and view all the flashcards
¿Qué son los IPC?
¿Qué son los IPC?
Signup and view all the flashcards
¿Qué es la comunicación directa en IPC?
¿Qué es la comunicación directa en IPC?
Signup and view all the flashcards
Study Notes
Concepto de Proceso
- Un proceso es un programa en ejecución, representando la unidad de trabajo en sistemas informáticos modernos
- Un sistema operativo se compone de varios procesos ejecutando código de usuario o del sistema operativo (SO)
- Se puede ejecutar múltiples procesos simultáneamente, con la CPU multiplexando entre ellos
Estructura de la Memoria de un Proceso
- La memoria utilizada al invocar funciones se almacena temporalmente, conteniendo parámetros, direcciones de retorno y variables locales
- La memoria asignada dinámicamente varía en tiempo de ejecución del programa
- Las variables globales tienen un tamaño fijo y no cambian durante la ejecución
- El código ejecutable posee un tamaño fijo que no cambia durante la ejecución
Estados de los Procesos
- El estado actual de un proceso se guarda en el program counter (contador de programa) y en los registros del procesador
- Un proceso es una entidad activa con un contador de programa y recursos asociados
- Un programa es una entidad pasiva, como un archivo
- Los estados de un proceso son:
- Nuevo: El proceso está siendo creado
- Ejecutando: El proceso esta ejecutando intrucciones
- Espera: El proceso espera un evento (terminación de E/S, señal)
- Listo: El proceso espera ser asignado a un procesador
- Terminado: El proceso finalizó
Procesos en GNU/Linux
- Los estados son:
- Running: El proceso se esta ejecutando o listo para ejecutar
- Interruptible: El proceso está bloqueado, esperando un evento
- Uninterruptible: El proceso está bloqueado, esperando una condición de hardware
- Stopped: El proceso se ha detenido, sólo puede reanudarse con una acción de otro proceso
- Zombie: El proceso ha finalizado, pero su información aún se mantiene en la tabla de procesos
- Idle: El proceso está inactivo
- El estado de un proceso en GNU/Linux se visualiza con comandos como
ps
ytop
Bloque de Control del Proceso (PCB)
- Cada proceso se representa en el SO por un bloque de control de proceso (PCB)
- El PCB contiene datos necesarios para iniciar o reiniciar un proceso, y datos de conteo
- El estado del proceso puede ser nuevo, listo, en ejecución, en espera, detenido, etc...
- El program counter indica la dirección de la siguiente instrucción a ejecutar
- Registros de CPU: Varían en número y tipo según la arquitectura
- Información de planificación de la CPU: Contiene la prioridad del proceso y punteros a las colas de planificación
- Información de gestión de memoria: Registros base, límite, tablas de páginas o segmentos, según el sistema
- Información de conteo: CPU y el tiempo real utilizado, límites de tiempo, números de conteo, etc
- Información de estado de E/S: Lista de dispositivos de E/S asignados, y lista de archivos abiertos
Hilos (Threads)
- La mayoría de los SO modernos permiten que un proceso tenga múltiples hilos de ejecución, facilitando la multitarea
- Los sistemas multicore se benefician de esto porque los varios hilos pueden ejecutar en paralelo
- En sistemas que soportan hilos, el PCB se expande para incluir toda la información específica de cada hilo
Planificación de Procesos
- Multiprogramación: Maximiza el uso de la CPU al tener procesos en ejecución en todo momento
- Tiempo Compartido: Permite a los usuarios interactuar con múltiples programas concurrentemente
- El planificador de procesos elige un proceso para ejecutar en un núcleo de CPU
- Si hay más procesos que núcleos, los procesos en espera deben esperar a que un núcleo se libere para ser replanificados
- La cantidad de procesos en memoria es el grado de multiprogramación
- Objetivos requieren balancear el comportamiento de los procesos:
- Proceso limitado por E/S (I/O-bound): Dedica más tiempo a las operaciones de E/S que a los cálculos
- Proceso limitado por CPU (CPU-bound): Dedica más tiempo a los cálculos que a las operaciones de E/S
Colas de Planificación de Processos
- Los procesos se añaden a la cola de listos (ready queue) al ingresar al sistema, esperando la ejecucuón del núcleo de CPU
- Hay otras colas, con procesos esperando eventos como la finalización de operaciones de entrada/salida (E/S)(wait queue)
- La planificación habitual utiliza diagramas de colas, con colas de listos y un conjunto de colas de espera
- Los círculos representan los recursos, y las flechas indican el flujo de procesos
- Un nuevo proceso se une inicialmente a la cola de listos (ready queue)
- El núcleo asigna un proceso para ejecución o se le asigna(dispatch)
- Estando en ejecución pueden ocurrir varios eventos:
- Podría solicitar E/S y ser colocado en la cola de E/S
- Podría crear un nuevo hijo y ponerse el cola de espera mientras espera por su terminación
- Swapping significa eliminar temporalmente un proceso de la memoria
Tipos de Planificación
- El programador de la CPU (CPU scheduler) selecciona un proceso listo y se lo assigna a la CPU
- El CPU scheduler necesita seleccionar los procesos frecuentemente
- E/S-bound puede ejectutarse sólo milisegundos antes de una solicitud E/S
- CPU-bound requiere un core de CPU por major tiempo
- Idealmente el CPU scheduler debe ejecutarse al menos cada cada 100 milisegundos
- Algunos SO utilizan swapping, que permite eliminar procesos temporalmente de la memoria
- Es necesario usar swapping cuando el la memoria se ha comprometido en exceso
Cambio de Contexto (Context Switch)
- Cuando ocurre una interrupción, el sistema necesita guardar el contexto del proceso actual
- El contexto se representa en el PCB.
- Para cambiar un core requiere:
- Guardar el estado del proceso actual
- Restaurar el estado de un proceso diferente (context switch)
- El cambio de contexto es una sobrecarga ya que el sistema no realiza trabajo útil
- La velocidad del cambio del contexto depende del la velocidad de memoria, el número de registros para copiar y otras instrucciones
- Velocidad típica de microsegundos
Operaciones en Procesos
- El proceso padre (parent) crea procesos hijos (children), formando un árbol de procesos
- La mayoría de los Sistemas Operativos (UNIX, GNU/Linux y Windows) identifican procesos con un identificador único (PID)
- El PID es un valor único para cada proceso, en sistemas GNU/Linux esto se puede visualizar con "pstree"
Creación de Procesos
- Cuando el proceso crea un child, el proceso hijo necesita recursos, como tiempo de CPU, memoria, y archivos
- El proceso puede obtener los recursos directamente.
- Puede estar limitados al conjunto de recursos del proceso parent
- El parent puede dividir sus recursos entre sus hijos
- Al ejectuar:
- El parent puede continuar ejecutándose concurrentemente con sus hijos
- El parent puede esperar que los hijos finalizen
- El espacio de memoria para el proceso nuevo:
- El proceso child se hace un duplicado del padre, copiando los datos.
- El proceso child ejecuta un nuevo programa
Ejemplos de Creación
- Sistemas GNU/Linux, usan "fork" desde el compilador C
- Sistemas Windows, usan la "CreateProcess" function
Terminación de Procesos
- Un proceso finaliza cuando exits.
- El proceso se comunica con el parent mediante exit(), devuelve un valor
- El SO retorna los recursos
- El proceso parent puede acabar con la ejecucuión un proceso child con "system call*".
- Por norma general sólo el parent puede hacer esto, puesto que una app maliciosa podría eliminar otros procesos
- El parent necesita conocer el PIDs de sus hijos, sólo puede terminarlo si hay una relación entre ellos
- El parent puede finalizar la ejecución child con varias opciones.
- Que exceda el limite de recursos
- La tarea assignada no sea necesaría
- El parent termina y se cancela el child
Terminación de Procesos y procesos zombie
- Un estado "zombie" es un proceso child que ha finalizado pero el parent no ejecutó wait()
- Si el parent no invoca a wait() al terminar, deja los procesos children huérfanos
Mecanismos de Comunicación entre Procesos
- Pueden ser:
- Independientes: No comparten datos con otros procesos.
- Cooperativos: Son afectados por otros processes
- Razones para Cooperar:
- Compartir Información
- Acelerar cálculos
- Modularidad
- Requerimiento cooperativo en el mecanismo de comunicación entre procesos (IPC) que dejan interconectar datos
Modelos de Comunicación
- Memoria Compartida, y Paso de Mensajes
- Memoria Compartida: +rápido, requere system calls
- Paso de Mensajes: Datos pequeños, fácil implementación
Sistemas de Memoria Compartida IPC
- Requiere la creación de un área en la memoria para los procesos a comunicarse
- En general esos procesos deben tener áreas de direcciones vinculadas
- La ubicación de los datos es determinada por esos procesos, no por el SO
- Los procesos responsables necesitan verificar que no se escriban simultáneamente a la misma ubicación
Memoria Compartida. El Problema Productor - Consumidor
- Un producer crea información que se consume por consumer
- Una solución común es usar la memoria compartida para uso concurrente entre productor y consumidor
- El producer y el consumer deben syncronizarse mutuamente
Buffers
- Es requisito el estar syncronizado entre en el producer y el consumer evitando consumir ítems no finalizados todavía
- Buffer Unbound, no establecido en práctica con tamaño ilimitado, consumidor debe esperar que ocurran nuevos items
- Buffer Bounded, tamaño ya establecido, el consumer necesita estar listo o esperar, el producer se asegurará de estar lleno
- En memoria compartida, el **in apunta a la siguiente posición buffer, el out es primero el fin
- *"buffer está vació cuando in == out"
- El "buffer está lleno cuando (in + 1) % BUFFER SIZE) == out"
- Consumer - "buffer[out]", "[out] = (out + 1) % BUFFER SIZE "
- Producer - "buffer[in] = nextproduced", "in = (in + 1) % BUFFER SIZE"
Sistemas en Paso de Mensajes IPC
- El SO es proporcionar una metodología de pasaje de mensajes para que los procesos cooperativos se comuniquen
- Envío del mensaje que deja a los procesos la sincronización y la comunicación sin dejar acceder al espacio con la misma dirección
- Es útil cuando tienes diferentes computadoras en red, ya que el SO proporciona la comunicación mediante "send" y "receive"
- "Send" tiene la variable message, cuyo tamaño puede ser constante o no.
Comunicación
- Es necesario que existan links entre procesos P y Q
- Los links pueden ser físicamente o logícamente implementados
- Hay diferentes métodos de implementar logícamente link y operaciones send()/receive()
Métodos de Comunicación
- Directo o Indirecto, Syncrónico y Asynchrónico, y en búfer automático o explícito
- En comunicación directa, los procesos se dan nombres mutuamente, la vinculación entre links se obtiene automáticamente
- En comunicación indirecta, los mensajes se envían y reciben en "mailboxes", y se requiere la presencia de mailboxes con identificación única
Resolución del problema de Multi-Acceso en el mailbox
- Permitir un link sólo por dos procesos como máximo
- Permitir que sólo un proceso ejecute una receptción por vez
- Permitir un sistema que arbitrariamente deje seleccionar al receptor.
Mailboxes
- Los Mailboxes pueden pertenecer a un proceso o al SO, mediante sistemas Crear un mailbox, Operaciones envío y recibo, y Botrar un mailbox.
La sincronozación de las primitivas send()/receive()
- Pueden bloquearse o no, o ser sincrónicos o asynchrónicos
- Al enviarse en bloqueo el envío sucede hasta que hay un mensaje valido
- No bloqueo el envío: envía pero continua
- Recibo con bloqueo: el receptor se bloquea hasta que se envíe
- Recibo sin bloqueo: Se envia un mensaje valido o nulo
- Rendezvous: El emisor y receptor ambos se bloquean, y es una trivial solución al problema productor consumidor
Búfer. Buffering
- En el modelo del sistema de IPC de pasajeros los mensajes son interceptados por la cola:
- cero capacidad, no puede esperar los mensajes, el que envía debe bloquear
- Capacidad limitada, la memoria tiene una longitud, entonces deben recebir la memoria usada con los ítems o bloquear la función hasta que haya más espacio
- Capacidad ilimitada, la memoria tiene la longitud infinita, y con un envió por defecto que no bloqueá
Ejemplos IPC sistema POSIX
- *Portable Operating System Interface, representan el conjunto de estándares principales en unix y Windows
- General nombre que asigna 3 mecanismos IPC: Colas Mensajes, Semoforos y Memoria Compartida Posix.
- colas Mensajes, permiten la Prioridad, dando a los msj que es necesario enviar primero
- Semáfores, la llamada es sincronizada para multiples procedimientos POSIX con un valor que nunca es menor que cero
- Memoria Compartida, facilita la zona con multiples processes, mediante método rápido IPC dejando de actualizar la información desde los cambios
Sistema de Pipes
- Actua como conductores de comunicación entre procesos
- Los sistemas UNIZ, da facilidad de uso para comunicarse aún la comunicación esté limitadan
- Conexión: one way or two way commnunication, si la comunicación es semi dupléx, que deje la información viajar sólo con la dirección asignada o dupléx completo deje viajar los datos desde las dierecciones asignadas.
- Relacionado parent-child si la comunicación es de la red, the processus must rest a common machine
Los Procesos Ordinarios The Ordinaries Pipes
- Los procesos ordinarios o comunes permite que los dos procesos comuniquen por el modelo productor consumidor, con escritura, y la data se lee
- Sistema UNIX construyen con la función pipe(intfd[]), retorna y lee, el descriptor de archivo desde la escritura
Ejemplo del Sistema Ordinary Pipes
- Se trata como archivo en llamada y retorna desde los filesystem read/write
- No puede acceder al proceso exterior, el padre creando, mediante fork el pipes
- Como el child hereada lo abierto del padre, el "pipe" va para el *type especial file"
Ejemplo en *Ordinary Pipes *
- Hay code para Unix - C
Los Named Pipes - Ejemplo Linux
- Sistema mas simple para un par de procesos a comunicarse desde Sistemas UNIX y Windows, es finito el uso
- En el code tienen varios writes, y continúa una vez finalizado
- El código puede ser *two way, it doesn't requires *relacionamiento de hijo e puede ser multi proceso en write
Comunicación Cliente-Servidor, y Sockets
- El puro de comunicar viene a la end point, la comunicación por la Net usa los sockets
- Estos tienen direccionamientos tipo" Internet Protocol Address- IPaddress” concatenanda con port
- En general, usan la tecnología cliente/servidor
- Los servers escuche por el puerto específico, una vez que el " server" recibe la la llamada , hace la conección
AlgunOS servidores, y sus puertos
- *El SSH puerto es a partir del 22, *FTP es en 21, la "Web es 80
- Todos los puertos a bajo de 1024 son conocidos y para implementación de Services estándar
- Un cliente inicia hace un puerto
- La connexión se hace con un par de "Sockets" uno del host, uno del server "Envia y Recibe, en dependencia de la dirección del type_ end point que va
- La data es con conexiones únicas dentro del servidor de la conexión.
Los Sistemas se Remote Procedural Calls-RPC
- Tiene un método de call-procedimientos con conectividad entre la red
- Al diferente lo IPC los ""msj" en la comunicación RPC van estructured
- Y va al escucha por el demon", el porte del Remoto y cada vez tenga el identificador.
El *porte, al comenzar y la cantidad de mensajes tiene número incluido al principio
- Los sistemas normales tienen Port es red son muchos dirección IP diferencia
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.