Quiz 0 - Procesos
Conceptos fundamentales sobre procesos en sistemas operativos: modelo de procesos, creación, terminación y estados.
Teoría
Un proceso es la abstracción fundamental que proveen los sistemas operativos para permitir la ejecución concurrente de programas. Un proceso es una instancia de un programa en ejecución, con su propio contador de programa, registros y variables. A diferencia de un programa (código almacenado), un proceso es una actividad dinámica.
En sistemas con una sola CPU, los procesos simulan múltiples CPUs virtuales mediante una técnica llamada multiprogramación o pseudoparalelismo: el CPU cambia rápidamente entre procesos cada pocos milisegundos, creando la ilusión de ejecución simultánea.
El modelo conceptual de procesos secuenciales fue desarrollado para facilitar el manejo del paralelismo. Cada proceso tiene su propio flujo de control, y aunque solo uno se ejecuta a la vez, todos avanzan con el tiempo. Es importante no programar procesos con supuestos sobre su velocidad de ejecución, ya que el cambio de contexto puede afectar el ritmo.
Los procesos pueden crearse por cuatro eventos principales: inicialización del sistema, llamada del sistema por un proceso en ejecución, solicitud del usuario o inicio de un trabajo por lotes. En UNIX, se usa la llamada fork para crear un clon del proceso padre, seguida de execve para ejecutar un nuevo programa. En Windows, CreateProcess realiza ambas funciones en un solo paso con 10 parámetros.
Los procesos pueden terminar por salida normal, salida por error, error fatal o terminación por otro proceso. En UNIX se usa exit, y en Windows ExitProcess. Un proceso puede terminar a otro mediante kill (UNIX) o TerminateProcess (Windows), siempre que tenga la autorización necesaria.
Los procesos tienen tres estados principales: running (ejecutándose), ready (listo para ejecutar) y blocked (bloqueado esperando un evento). El planificador (scheduler) es el componente del sistema operativo que decide qué proceso se ejecuta, cuándo y por cuánto tiempo, gestionando las transiciones entre estos estados.
Quiz
2.1 Procesos
¿Qué abstracción fundamental proveen los sistemas operativos para permitir operaciones concurrentes?
Los procesos.
¿Qué permiten hacer los procesos incluso con una sola CPU disponible?
Simular operación concurrente (pseudo-concurrencia).
¿Qué simulan los procesos al ejecutarse en una sola CPU?
Múltiples CPUs virtuales.
¿Por qué es importante la abstracción de procesos en la computación moderna?
Porque sin ella, la computación moderna no podría existir.
¿Qué sucede cuando un servidor web recibe múltiples solicitudes mientras espera una lectura de disco?
Se pueden iniciar otras solicitudes mientras se espera que la primera se complete.
¿Qué ayuda a modelar y controlar la concurrencia en sistemas como servidores web?
Los procesos y especialmente los hilos (threads).
¿Qué tipo de procesos se inician en una PC cuando se inicia el sistema operativo, sin que el usuario lo note?
Procesos en segundo plano, como los que esperan correos electrónicos o actualizan antivirus.
¿Qué es lo que permite ejecutar múltiples actividades como imprimir archivos o hacer backups mientras se navega por Internet?
Un sistema de multiprogramación con soporte para múltiples procesos.
¿Qué dispositivos simples, además de PCs, también pueden soportar múltiples procesos?
Smartphones y tablets.
¿Cómo se logra la ilusión de paralelismo en un sistema con un solo CPU?
Cambiando rápidamente de un proceso a otro cada pocos milisegundos.
¿Qué nombre se da a esta ilusión de ejecución simultánea de procesos en un solo CPU?
Pseudoparalelismo.
¿Cómo se diferencia el pseudoparalelismo del paralelismo real?
El paralelismo real ocurre en sistemas con múltiples CPUs físicas compartiendo memoria.
¿Por qué se desarrolló un modelo conceptual de procesos secuenciales?
Para facilitar el manejo del paralelismo por parte de los diseñadores de sistemas operativos.
2.1.1 The process model
¿Cómo se organiza todo el software ejecutable en el modelo de procesos?
En un conjunto de procesos secuenciales.
¿Qué es un proceso en el contexto del sistema operativo?
Una instancia de un programa en ejecución, con su contador de programa, registros y variables.
¿Qué tiene conceptualmente cada proceso para simular ejecución independiente?
Su propia CPU virtual.
¿Cómo se denomina la técnica en la que un CPU cambia rápidamente entre procesos?
Multiprogramación.
¿Qué representa cada proceso en la Fig. 2-1(b)?
Su propio flujo de control o contador de programa lógico. Conceptual model of four independent, sequential processes.
¿Qué sucede con el contador de programa cuando se cambia entre procesos?
Se guarda el contador lógico en memoria y se carga el del nuevo proceso.
¿Qué muestra la Fig. 2-1(c) sobre el progreso de los procesos?
Que todos avanzan con el tiempo, aunque solo uno se ejecuta en un instante dado. Only one program is active at once.
¿Cuál es la suposición en este capítulo respecto a la cantidad de CPUs?
Que solo hay una CPU.
¿Qué sucede en los sistemas con múltiples núcleos o CPUs?
Cada núcleo puede ejecutar solo un proceso a la vez.
¿Por qué el rendimiento de un proceso no es uniforme ni reproducible?
Porque el CPU cambia entre procesos y afecta el ritmo de ejecución.
¿Por qué no se deben programar procesos con supuestos sobre su velocidad?
Porque su ejecución puede variar debido al cambio de contexto del CPU.
¿Qué problema puede surgir si un proceso de audio se sincroniza con un bucle de espera?
Que el audio y el video se desincronicen si el CPU cambia a otro proceso.
¿Qué se debe hacer cuando un proceso tiene requisitos críticos de tiempo real?
Tomar medidas especiales para garantizar la sincronización.
¿Qué diferencia fundamental existe entre un proceso y un programa?
Un proceso es una actividad en ejecución, un programa es solo código almacenado.
En la analogía del pastel, ¿qué representa la receta?
El programa.
En la misma analogía, ¿qué representa el científico de computación?
El procesador (CPU).
¿Y qué representa el acto de hornear el pastel?
El proceso.
¿Qué ocurre cuando el hijo interrumpe al padre en la analogía del pastel?
El estado del proceso actual se guarda y se cambia a otro de mayor prioridad.
¿A qué equivale cambiar de receta en la analogía?
A cambiar de programa entre dos procesos diferentes.
¿Qué elementos componen un proceso según el texto?
Programa, entrada, salida y estado.
¿Qué determina cuándo detener un proceso y ejecutar otro?
Un algoritmo de planificación.
¿Qué puede hacer el sistema operativo si dos procesos ejecutan el mismo programa?
Compartir el código en memoria, aunque sigan siendo procesos distintos.
¿Contarían como uno o dos procesos si se ejecuta el mismo programa dos veces?
Dos procesos.
2.2 Process Creation
¿Qué necesitan los sistemas operativos para poder ejecutar nuevos programas durante la operación?
Un mecanismo para crear y terminar procesos.
¿Cuáles son los cuatro eventos principales que causan la creación de procesos?
Inicialización del sistema, llamada del sistema por un proceso en ejecución, solicitud del usuario, inicio de un trabajo por lotes(batch job)
¿Qué tipos de procesos se crean durante el arranque del sistema?
Procesos en primer plano y procesos en segundo plano (daemons).
¿Cómo se llama un proceso que permanece en segundo plano esperando eventos como emails o solicitudes web?
Daemon.
¿Qué comando se usa en UNIX para listar los procesos en ejecución?
ps.
¿Qué herramienta se usa en Windows para ver los procesos en ejecución?
Administrador de tareas (Task Manager).
¿Por qué un proceso puede crear otros procesos durante su ejecución?
Para dividir el trabajo en tareas independientes que pueden ejecutarse en paralelo.
¿Qué ventaja tiene crear procesos separados para la descarga y procesamiento de datos en una red?
Permitir que los procesos se ejecuten simultáneamente, incluso en diferentes CPUs.
¿Cómo se inicia un proceso en sistemas interactivos?
Escribiendo un comando o haciendo doble clic en un ícono.
¿Qué ocurre cuando el usuario hace clic en un icono o escribe un comando?
Se crea un nuevo proceso y se ejecuta el programa seleccionado.
¿En qué sistemas es común que cada ventana represente un proceso distinto?
En UNIX con X Window System y en Windows.
¿En qué tipo de sistemas se crean procesos mediante trabajos por lotes?
En sistemas batch de mainframes.
¿Cómo se ejecuta técnicamente la creación de un nuevo proceso en todos los casos?
Un proceso existente ejecuta una llamada al sistema para crear otro proceso.
¿Qué se necesita para iniciar la creación de procesos en un sistema recién arrancado?
Un proceso inicial creado manualmente durante el arranque.
¿Qué llamada del sistema (system call) se usa en UNIX para crear un nuevo proceso?
fork.
¿Qué crea la llamada fork en UNIX?
Un clon exacto del proceso que la invoca (padre e hijo con misma imagen de memoria).
¿Qué llamada se usa comúnmente después de fork en UNIX para ejecutar un nuevo programa?
execve.
¿Por qué se usa un enfoque en dos pasos (fork y luego execve) en UNIX?
Para que el hijo pueda redirigir entrada/salida antes de ejecutar el nuevo programa.
¿Qué función se usa en Windows para crear un proceso y cargar el programa al mismo tiempo?
CreateProcess.
¿Cuántos parámetros tiene la función CreateProcess en Windows?
10.
¿Qué tipo de información puede especificarse en los parámetros de CreateProcess?
Programa, parámetros, atributos de seguridad, herencia de archivos, prioridad, ventana, etc.
¿Qué ocurre con los espacios de direcciones del padre y el hijo después de crear un proceso?
Cada uno tiene su propio espacio de direcciones distinto.
¿Se comparten los cambios de memoria entre procesos padre e hijo?
No, los cambios no son visibles entre ellos.
¿Cómo maneja UNIX tradicional el espacio de direcciones del hijo?
Como una copia del espacio de direcciones del padre, pero separado.
¿Qué técnica usa UNIX para compartir memoria pero asegurar independencia en escritura?
Copy-on-write.
¿Pueden los procesos recién creados compartir archivos abiertos con su creador?
Sí, pueden compartir recursos como archivos abiertos.
2.3 Process termination
¿Cuáles son las cuatro causas principales por las que un proceso puede terminar?
Salida normal, salida por error, error fatal, o ser terminado por otro proceso.
¿Qué tipo de salida ocurre cuando el proceso ha completado su trabajo correctamente?
Salida normal (voluntaria).
¿Qué llamada del sistema se usa en UNIX para que un proceso indique que ha terminado?
exit.
¿Qué llamada equivalente se usa en Windows para terminar un proceso?
ExitProcess.
¿Qué suelen hacer los programas interactivos al terminar voluntariamente?
Eliminar archivos temporales y luego finalizar.
¿Qué ocurre si un compilador recibe un archivo que no existe?
Informa del error y termina voluntariamente.
¿Cómo suelen manejar los procesos interactivos los parámetros incorrectos?
Muestran un cuadro de diálogo solicitando al usuario que intente de nuevo.
¿Qué causa una terminación involuntaria por error fatal?
Errores del programa como instrucciones ilegales, memoria inexistente o división por cero.
¿Qué puede hacer un proceso en UNIX para manejar ciertos errores en lugar de terminar?
Solicitar al sistema operativo manejar señales en lugar de terminar.
¿Qué tipo de error hace que el sistema interrumpa (señale) al proceso en lugar de finalizarlo?
Errores que el proceso ha indicado que desea manejar.
¿Qué llamada del sistema se usa en UNIX para que un proceso termine a otro proceso?
kill.
¿Qué función equivalente se usa en Windows para terminar un proceso desde otro?
TerminateProcess.
¿Qué requisito debe cumplir un proceso para poder matar a otro?
Tener la autorización necesaria.
¿Todos los procesos creados por uno que termina son automáticamente eliminados en UNIX o Windows?
No, ni UNIX ni Windows funcionan de esa manera.
2.4 Process state
¿Por qué los procesos a veces necesitan interactuar con otros procesos?
Porque uno puede generar salida que otro necesita como entrada.
¿Qué ocurre si un proceso está listo para ejecutarse pero no hay datos disponibles para procesar?
El proceso se bloquea hasta que haya entrada disponible.
¿Qué significa que un proceso esté bloqueado?
Que no puede continuar porque espera un evento externo, como entrada.
¿Qué ocurre si un proceso puede continuar pero el CPU se asigna a otro proceso?
Es detenido temporalmente por decisión del sistema operativo.
¿Cuáles son los tres estados principales de un proceso?
En ejecución (running), listo (ready), y bloqueado (blocked).
¿Qué significa que un proceso esté en estado "running"?
Que está usando el CPU en ese instante.
¿Qué significa que un proceso esté en estado "ready"?
Que puede ejecutarse, pero el CPU está ocupado con otro proceso.
¿Qué significa que un proceso esté en estado "blocked"?
Que no puede ejecutarse hasta que ocurra un evento externo.
¿Qué transición ocurre cuando un proceso descubre que no puede continuar?
Transición 1: pasa de running a blocked.
¿Qué transición ocurre cuando el planificador decide cambiar el proceso activo?
Transición 2: de running a ready.
¿Qué transición ocurre cuando un proceso listo es elegido para ejecutarse?
Transición 3: de ready a running.
¿Qué transición ocurre cuando el evento externo esperado por un proceso bloqueado ocurre?
Transición 4: de blocked a ready.
¿Puede un proceso ejecutar una llamada al sistema para bloquearse voluntariamente?
Sí, como pause en algunos sistemas.
¿Qué ocurre en UNIX si un proceso lee de un pipe sin datos disponibles?
Es automáticamente bloqueado.
¿Quién causa las transiciones entre estados sin que el proceso lo sepa?
El planificador del sistema operativo (scheduler).
¿Cuál es la función del planificador (scheduler)?
Decidir qué proceso se ejecuta, cuándo y por cuánto tiempo.
¿Qué ocurre si el evento externo sucede y no hay otro proceso ejecutándose?
El proceso pasa directamente de blocked a running.
¿Qué ocurre si el evento externo sucede pero otro proceso ya está usando el CPU?
El proceso pasa de blocked a ready y debe esperar su turno.
¿Qué ventaja tiene el modelo de procesos para entender el sistema operativo?
Permite visualizar las tareas del sistema como procesos secuenciales en diferentes estados.
¿Qué ocurre cuando hay una interrupción de disco mientras otro proceso se ejecuta?
El sistema detiene el proceso actual y activa el proceso de disco que estaba bloqueado.
¿Qué pasa con un proceso cuando el evento que espera (como lectura de disco) ocurre?
Se desbloquea y queda listo para ejecutarse.
¿Dónde se ubica el scheduler en un sistema operativo estructurado por procesos?
En el nivel más bajo del sistema operativo.
¿Qué capa está por encima del scheduler en este modelo?
Procesos secuenciales que realizan tareas del sistema o del usuario.