[0:00]Hola, ¿qué tal? ¿Cómo estás? Estamos en el curso Fundamentos de Sistemas Operativos. Lo que vamos a ver hoy son procesos, la referencia a este tema, pues es el libro de texto Silberschatz y Galvin, capítulo 3. De procesos vamos a ver el concepto de proceso, planificación de los procesos, operaciones en los procesos, el paradigma de procesos cooperantes y comunicación entre procesos. Vamos a empezar con el concepto de proceso. Okay, pues un sistema operativo ejecuta una variedad de programas, ¿de acuerdo? Podríamos catalogar esto en lo que son los sistemas por lotes, es decir, yo tengo una secuencia de trabajos y esos trabajos se ejecutan uno después de otro. Esto ocurría, por ejemplo, en las computadoras en los años 50, 60. Y podemos hablar de los sistemas de tiempo compartido, donde voy a tener muchos usuarios, puedo tener muchos usuarios que pueden estar ejecutando procesos, tareas, etcétera, ¿de acuerdo? Donde están compartiendo procesador, memoria y muchos otros recursos del sistema. En muchos casos vamos a utilizar el término trabajo y bueno, es importante que sepan que los términos usados como trabajo y proceso se refieren a lo mismo. Okay, pues qué es un proceso? Un proceso es un programa en memoria (virtual), más adelante vamos a ver por qué toda la memoria donde yo voy a estar cargando y ejecutando los procesos en memoria virtual. Un proceso puede estar en ejecución o listo para ejecutarse. Un proceso, bueno, si vemos que esto es la memoria, un proceso consta de código, datos, stack, y un program counter o contador del programa, que es un apuntador, que contiene la dirección de la siguiente instrucción que se debe ejecutar, un registro, ¿de acuerdo?, que contiene un apuntador a la dirección de la siguiente instrucción que se debe ejecutar. Okay, un proceso, inicialmente podemos decir que puede estar en estos cinco estados: nuevo, listo, ejecución, bloqueado y salida. Okay, cuando un proceso es nuevo, cuando un proceso se está creando. Una vez que el proceso es admitido por el sistema, el proceso pasa a un estado de listo, donde estaría esperando a que se le dé el CPU. Es decir, que pase a ejecución. Cuando el proceso pasa a ejecución y está en ejecución, las instrucciones del proceso se están ejecutando en el microprocesador en ese momento, o en el CPU. Después de un tiempo que esté en ejecución, el sistema operativo decide regresarlo a la cola de listos, ¿de acuerdo? Y liberar el procesador para que otro proceso se ejecute, eso lo vamos a ver un poco más adelante. Y mientras el proceso está listo, está esperando a que se le dé tiempo del CPU. Vuelve a pasar ejecución, se le da tiempo del CPU,
[3:55]de acuerdo? Es decir, otra vez se están ejecutando instrucciones del proceso. Pero repentinamente el proceso ejecuta una llamada a entrada y salida, es decir, hace una solicitud a entrada y salida, y ahí se va a quedar bloqueado esperando a que ocurra un evento. ¿Qué evento? Pues en ese momento, a que termine la operación de entrada y salida, ¿de acuerdo? Mientras tanto el proceso está bloqueado. Y mientras está bloqueado, el CPU está libre para ejecutar otro proceso, ¿de acuerdo? Es decir, otros procesos que estén en estado de listo pueden pasar a ejecución mientras este proceso está bloqueado. Una vez que ocurre el evento de entrada y salida, es decir, termina la operación de entrada y salida, el proceso regresa a la cola de listos o al estado de listos, más bien. Bueno, más adelante vamos a ver qué es una cola, pero ahorita dejémoslo en un estado. Sí. Y cuando está en el estado de listo, pues está esperando a que se le dé el CPU. Y cuando pasa a ejecución, ahora está usando el CPU, es decir, el CPU o procesador o microprocesador, como quieran llamarlo, está ejecutando instrucciones del proceso. De repente el proceso termina y pasa al estado de salida.
[5:24]Okay.
[5:27]Para implementar los procesos, algo que tenemos que entender es lo que es un PCB o Process Control Block. ¿Qué es un Process Control Block? Pues es una estructura de datos que contiene información asociada con cada proceso, ¿de acuerdo? Si vemos la estructura de datos, pues esa estructura de datos va a tener un apuntador. Después va a tener una variable o un campo que va a contener el estado del proceso. El número del proceso en el sistema, todos los procesos tienen un identificador, un número. El contador del programa, es decir, cuál es la dirección de la siguiente instrucción que se debe ejecutar. Los registros del procesador, ¿de acuerdo? Cuáles son los valores de los registros. Esto vamos a ver en qué momento se guardan ahí los registros del procesador. Los límites de la memoria, es decir, en qué áreas de la memoria son las que tiene ese proceso. La lista de archivos abiertos y otros recursos que puede estar utilizando. Okay, y bueno, pues por lo pronto es todo de lo que son los procesos. Cualquier cosa, pues vamos a ver las dudas a continuación. Gracias.



