Un proceso es una secuencia de pasos dispuesta con algn tipo de lgica que se enfoca en lograr algn resultado especfico. Los procesos son mecanismos de comportamiento que disean los hombres para mejorar la productividad de algo, para establecer un orden o eliminar algn tipo de problema. Los procesos son gestionados por el sistema operativo y estn formados por: instrucciones, estado, memoria, otra informacin que permita al sistema operativo su planificacin. Un programa no puede hacer nada si la CPU no ejecuta sus instrucciones.
Que es un proceso?
Es una actividad especfica que tiene un programa para realizar tareas u objetivos que se caracteriza por la ejecucin de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados.
El proceso es el que realiza la funcin para cumplir la tarea que le fue asignada a un software, esto se da cuando el sistema operativo interacta con sus recursos y son ejecutados por el microprocesador.
Diferencias entre un programa y un proceso
Programa Proceso
Es esttico Es dinmico
No tiene contador de programa Tiene un contador de programa
Existe desde que se edita hasta que se borra Su ciclo de vida comprende desde que se lo dispara hasta que termina
-Procesos cooperantes. Es cuando el proceso es seleccionado para afectar a otros procesos o que este proceso sea afectado por otros. Estos procesos cooperantes comparten datos e informacin por conveniencia.
-Procesos independientes. Estos procesos son lo contrario a los cooperantes ya que no afecta a los dems procesos, ni es afectado por estos en el sistema, y no comparten ningn tipo de datos. Los procesos independientes ejecutan su funcin, sin ayuda de otros procesos.
Estados de un proceso
En su ciclo de vida el proceso pasa por diferentes estados. Bsicamente:
Nuevo (new). El proceso se acaba de crear, pero aun no ha sido admitido en el grupo de procesos ejecutables por el sistema operativo.
Listo para ejecutar (ready). El proceso esta esperando ser asignado al procesador para su ejecucin.
Ejecutndose (running). El proceso tiene la cpu y sta ejecuta sus instrucciones. En espera (waiting). El proceso esta esperando a que ocurra algn suceso, como por ejemplo la terminacin de una operacin de E/S.
Terminado (terminated). El proceso ha sido sacado del grupo de procesos ejecutables por el sistema operativo. Despus de que un proceso es marcado como terminado se liberan los recursos utilizados por ese proceso, por ejemplo, la memoria.
Bloque de control de procesos Cada proceso se representa en el sistema operativo con un bloque de control de proceso (PCB, process control block) tambin llamado bloque de control de tarea. Estructura tpica de un bloque de control de procesos El PCB se organiza en un conjunto de campos en los que se almacena informacin de diversos tipos. Estos campos son: Informacin de identificacin. Esta informacin esta integrada bsicamente por el identificador del proceso (PID).
Informacin de estado de la CPU. Se trata de un conjunto de campos que almacenan el estado de los registros de la CPU cuando el proceso es suspendido.
Informacin de control del proceso. Se trata de un conjunto de informacin que es utilizada por el sistema operativo para controlar diversos aspectos de funcionamiento del proceso. Pertenecen a esta categora: - Estado del proceso: listo, en ejecucin, terminado, en espera, etc. - Informacin de manejo de memoria: como por ejemplo, la direccin fsica de memoria en la que se ubica la tabla de pginas del proceso. - Informacin de E/S: lista de ficheros abiertos, ventanas utilizadas, entre otros. Informacin de uso de recursos. Se trata de un conjunto de informacin relativa a la utilizacin realizada por el proceso de los recursos del sistema, como por ejemplo, el porcentaje de utilizacin de la CPU, la cantidad memoria usada o los bytes de E/S escritos y ledos por el proceso.
Contador de programa Cada proceso tiene su contador de programa (program counter), y avanza cuando el proceso tiene asignado el recurso procesador. A su vez, a cada proceso se le asigna un nmero que lo identifica entre los dems: identificador de proceso (process id)
Jerarqua de procesos La secuencia de creacin de procesos genera un rbol de procesos. Para referirse a las relaciones entre los procesos de la jerarqua se emplean los trminos de padre, hermano o abuelo. Cuando el proceso A solicita al sistema operativo que cree el proceso B, se dice que A es padre de B y que B es hijo de A. Bajo esta ptica, la jerarqua de procesos puede considerarse como un rbol genealgico. Algunos sistemas operativos, como Unix, mantienen de forma explcita esta estructura jerrquica de procesos - un proceso sabe quin es su padre -, mientras que otros sistemas operativos como el Windows NT no la mantienen. Planificador y activador El planificador (scheduler) forma parte del ncleo del sistema operativo. Entra en ejecucin cada vez que se activa el sistema operativo y su misin es seleccionar el proceso que se ha de ejecutar a continuacin. El activador (dispatcher) tambin forma parte del sistema operativo y su funcin es poner en ejecucin el proceso seleccionado por el planificador.
Cambio de contexto La activacin del sistema operativo se realiza mediante el mecanismo de las interrupciones. Cuando se produce una interrupcin se realizan las dos operaciones siguientes: I. Se salva el estado del procesador en el correspondiente PCB. II. Se pasa a ejecutar la rutina de tratamiento de interrupcin del sistema operativo. Llamaremos cambio de contexto (context switch)al conjunto de estas operaciones. El tiempo de conmutacin de contexto es exclusivamente gasto extra (overhead), porque el sistema no realiza trabajo til durante la conmutacin. Procesos ligeros, hilos o threads Un proceso ligero es un programa en ejecucin (flujo de ejecucin) que comparte la imagen de memoria y otras informaciones con otros procesos ligeros. Un proceso puede contener un solo flujo de ejecucin, como ocurre en los procesos clsicos, o ms de un flujo de ejecucin (procesos ligeros). Desde el punto de vista de la programacin, un proceso ligero se define como una funcin cuya ejecucin se puede lanzar en paralelo con otras.
El hilo de ejecucin primario, o proceso ligero primario, corresponde a la funcin main. Todos los procesos ligeros de un mismo proceso comparten el mismo espacio de direcciones de memoria, que incluye el cdigo, los datos y las pilas de los diferentes procesos ligeros. Operaciones sobre procesos -Creacin de procesos. Todo sistema operativo debe proporcionar un servicio Create- Process, que ser utilizado por un proceso para crear otro. -Terminacin de procesos. Un proceso puede terminar por si mismo, o bien puede ser terminado por otro proceso, que generalmente solo puede ser su proceso padre. Un proceso termina por si mismo llamando a un servicio del sistema, denominado normalmente Exit o Exit-Process.
Planificacin de procesos La planificacin es el proceso por el cual el sistema operativo selecciona que proceso ejecutar.
Sincronizacin y comunicacin entre procesos Los mecanismos de comunicacin y sincronizacin son dinmicos. Es decir, cuando se necesita un mecanismo de este estilo, se crea, usa y destruye, de forma que no se establezca de forma definitiva ningn mecanismo de comunicacin, ya que ellos podran producir efectos indeseados. Es decir, la comunicacin es algo puntual. Los mecanismos bsicos de comunicacin: * Memoria compartida Se basa en que los procesos que desean comunicarse compartan una misma regin de memoria fsica. Para llevar a cabo la comunicacin, uno escribe y otro lee de la regin de memoria compartida. Los procesos utilizan servicios del sistema operativo para compartir la regin. * Paso de mensajes Los procesos utilizan una pareja de servicios del sistema operativo para comunicarse. Estos servicios son conocidos habitualmente como Send y Receive. Para llevar a cabo la comunicacin un proceso ejecuta la funcin Send y el otro Receive, intercambiando de esta forma un bloque de informacin que recibe el nombre de mensaje. La comunicacin puede ser sncrona y asncrona: a) sncrona: los dos procesos han de ejecutar servicios de forma simultnea. El emisor ha de ejecutar el servicio enviar mientras el receptor ejecuta recibir. b) asncrona: el emisor hace el envo y prosigue su ejecucin. El SO ofrece un almacenamiento intermedio para guardar la informacin enviada, hasta que el receptor la solicite. Exclusin mutua Dos procesos no pueden tener los mismos recursos, un solo proceso puede excluir temporalmente a los dems procesos para usar un recurso de forma que este garantice la ejecucin que se le a asignado al proceso y mantenga la integridad del sistema.
Semforo Un semforo binario es un indicador (S) de condicin que registra si un recurso est disponible o no. Un semforo binario slo puede tomar dos valores: 0 y 1. Si, para un semforo binario, S = 1 entonces el recurso est disponible y la tarea lo puede utilizar; si S = 0 el recurso no est disponible y el proceso debe esperar.
Los semforos se implementan con una cola de tareas o de condicin a la cual se aaden los procesos que estn en espera del recurso. Slo se permiten tres operaciones sobre un semforo -Inicializar. -Espera (wait). - Seal (signal). Interbloqueo Es el bloqueo permanente de uno o ms procesos, estos esperan un evento o una ejecucin del sistema operativo, ya sea cancelar la ejecucin de uno o ms procesos o hacer que estos retrasen su ejecucin. En el interbloqueo hay dos recursos, el reutilizable que puede ser usado con seguridad por un proceso y no se agota con el uso; y el consumible es el que se destruye al ser adquirido por un proceso. -Condiciones para el interbloqueo. Dos procesos no pueden tener el mismo recurso en este instante, solo puede tener recursos un proceso, esto es exclusin mutua.
Un proceso cuando tiene un recurso asignado puede esperar a otro recurso. El proceso no puede expropiar o quitar un recurso a otro proceso que esta signado. Gestin de memoria La tarea central de cualquier sistema de gestin de memoria es traer los programas a memoria principal para su ejecucin en el procesador. En casi todos los sistemas multiprogramados modernos, esta tarea supone un esquema sofisticado conocido como memoria virtual. Gestin de la memoria principal La memoria principal es crucial para el funcionamiento de un sistema de computacin moderno. La memoria principal es una matriz grande de palabras o bytes, cuyo tamao va desde cientos de miles hasta cientos de millones. Cada palabra o byte tiene su propia direccin. La memoria principal es un depsito de datos a los que se puede acceder rpidamente y que son compartidos por la CPU y los dispositivos de E/S. El procesador central lee instrucciones de la memoria principal durante el ciclo de obtencin de instrucciones, y lee y escribe datos de la memoria principal durante el ciclo de obtencin de datos.
Paginacin El uso de la paginacin en la memoria virtual fue presentado por primera vez en el computador Atlas [KILB62] y pronto alcanz un uso comercial muy extendido. En el estudio de la paginacin simple se indic que cada proceso tiene su propia tabla de pginas y que, cuando carga todas sus pginas en memoria principal, se crea y carga en memoria principal una tabla de pginas. Cada entrada de la tabla de pginas contiene el nmero de marco de la pgina correspondiente en memoria principal. Cuando se considera un esquema de memoria virtual basado en la paginacin se necesita la misma estructura, una tabla de pginas. Nuevamente, es normal asociar una nica tabla de pginas con cada proceso. Segmentacin Otro modo de subdividir el programa es la segmentacin. En este caso, el programa y sus datos asociados se dividen en un conjunto de segmentos. No es necesario que todos los segmentos de todos los programas tengan la misma longitud, aunque existe una longitud mxima de segmento. Como en la paginacin, una direccin lgica segmentada consta de dos partes, en este caso un nmero de segmento y un desplazamiento. Mientras que la paginacin es transparente al programador, la segmentacin es generalmente visible y se proporciona como una comodidad para la organizacin de los programas y datos. Normalmente, el programador o el compilador asignan los programas y los datos a diferentes segmentos Memoria virtual La memoria virtual es una tcnica de gestin de la memoria que permite que el sistema operativo disponga, tanto para el software de usuario como para s mismo, de mayor cantidad de memoria que est disponible fsicamente. La memoria virtual permite una multiprogramacin muy efectiva y releva al usuario de las rgidas e innecesarias restricciones de la memoria principal. Beneficios: Aumenta el grado de multiprogramacin. Permite ejecucin de programas que no caben en memoria principal.
COCLUSION
Se puede pensar en un proceso como una porcin de un programa en ejecucin o todo el programa .Un proceso necesita ciertos recursos, incluidos tiempo de CPU, memoria, archivos y dispositivos de E/S, para llevar a cabo su tarea. Estos recursos se otorgan al proceso en el momento en que se crea, o bien se le asignan durante su ejecucin. Un programa no puede hacer nada si la CPU no ejecuta sus instrucciones. Es decir, la ejecucin de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados son las caractersticas que definen a un proceso. Para que se lleve a cabo un proceso el equipo debe ejecutar una serie de servicios como es el caso de administracin de recursos. Dentro de esta administracin de recursos se encuentra la gestin de memoria.