Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cap2 1 PDF
Cap2 1 PDF
Sistemas Operativos
Ingeniera de Sistemas
Captulo II
GESTION DE PROCESOS
El concepto fundamental en cualquier sistema operativo es el concepto de proceso que consiste en una
abstraccin de lo que es un programa en ejecucin.
En este capitulo nos vamos a ocupar de como el sistema operativo se encarga de controlar todos los procesos
cargados en memoria, de la asignacin de la CPU a coda uno de los procesos, y, cuando se trate de procesos
cooperantes, de la comunicacin y sincronizacin entre ellos (captulo posterior).
1. Concepto de Proceso
Se han odo muchas definiciones de proceso, pero, sin duda, la ms popular y acertada es la que dice que
"un proceso es un programa en ejecucin".
Ya que no es nada fcil dar una definicin autoexplicativa de lo que es un proceso, vamos a tratar de
explicarlo mediante ideas y ejemplos. Ante todo, se debe tener muy presente que un proceso asocia
programa+actividad.
Cuando decimos que un proceso es un programa en ejecucin, nos referimos al hecho de Ilevar a cabo o
realizar las instrucciones que contiene el programa en el orden establecido. Un programa es una lista de
instrucciones escritas en un papel, un fichero en disquete, disco duro, memoria RAM o cualquier otro
soporte, pero el simple hecho de que estas instrucciones estn escritas no implica que se estn Ilevando a
cabo. Pues bien, cuando se leen estas
instrucciones y se hacen ejecutar, entonces
ya tenemos programa+actividad, es decir,
un proceso.
Hacemos hincapi en actividad para
diferenciarlo bien de un mero programa, ya
que una caracterstica bsica de los
programas es que son estticos. Ya hemos
dicho que un programa es una secuencia de
rdenes que, por mucho que la miremos,
no varia nunca. Las variables no tienen
valores, las rutinas no tienen direccin,
las condiciones estn sin evaluar. Un
programa es simplemente un algoritmo a
ejecutar.
En cambio, un proceso es dinmico. Tiene
vector de estado indicando el momento y
estado de su ejecucin, las variables tienen valores, las rutinas se encuentran en alguna direccin de
memoria, y las condiciones son evaluables. El proceso es la ejecucin del algoritmo.
Un ejemplo que puede describir la
relacin programa-proceso puede ser
el manual de montaje de un
aeromodelo que viene despiezado.
Las instrucciones de montaje que
vienen en la caja son algo esttico
(por eso aunque dejemos mucho
tiempo las instrucciones en la caja, el
aeromodelo no aparece construido al
cabo de un tiempo. Sin embargo,
cuando cogemos las instrucciones y
empezamos a hacer lo que indican, es
cuando empieza la actividad, entonces
comienza el proceso de montaje.
Si en la construccin del aeromodelo,
quien Ileva a cabo las instrucciones del
manual de montaje es la persona, que lee las instrucciones y las va ejecutando; en un ordenador, el ente que
va leyendo las instrucciones del programa (que esta en memoria) y ejecutndolas, es la CPU. As, tenemos
que el tandem programa+procesador es el que hace que el estado de desarrollo de un determinado trabajo
evolucione y cambie de un estado a otro.
UNSCH/QECM
Pgina 1 de 6
Sistemas Operativos
Ingeniera de Sistemas
IS-344
Captulo II
Al igual que para la construccin del aeromodelo se necesita un rea de trabajo (una mesa o algo similar),
para la ejecucin de un programa, tambin se requiere un rea de trabajo, esto es, la pila del proceso. La
pila es la zona de memoria en la que se guardan los parmetros, variables locales, direcciones de retorno de
subprogramas y, en general, los datos temporales del proceso. Un proceso tambin se caracteriza porque en
un momento dado de su ejecucin dispone de ciertos valores en los registros del procesador, entre ellos, el
Contador de Programa, que contiene la direccin de la instruccin que va a ejecutar el proceso a
continuacin. As, el Contador de Programa es el registro que indica el punto de ejecucin del programa en
el que se encuentra el proceso.
Se debe tener en cuenta que la relacin entre un programa y su proceso no es biunvoca. Esto se debe al
hecho de que en un momento dado puede haber varios procesos correspondientes al mismo programa. Por
ejemplo, en una clase de trabajos manuales pueden estar escritas en la pizarra las instrucciones de montaje
de un aeromodelo (un programa) y todos los alumnos estn montando un aeromodelo siguiendo las mismas
instrucciones (varios procesos). Un ejemplo ms informtico puede ser el de varios alumnos que, en un
momento dado, estn utilizando el editor de texto en distintos terminales de un sistema de tiempo
compartido. Hay un nico programa editor de texto, pero puede haber varios procesos simultneos
ejecutando tal programa.
2. El modelo de procesos
En este modelo, todo el software ejecutable en el ordenador, incluyendo a veces al propio sistema operativo,
se organiza en un nmero de procesos secuenciales, o simplemente procesos para acortar. Un proceso es
justamente un programa en ejecucin, incluyendo los valores actuales del contador de programa, registros y
variables. Conceptualmente cada proceso tiene su propia CPU virtual. En realidad, por supuesto, la CPU real
conmuta sucesivamente de un proceso a otro, pero para entender el sistema, es mucho ms fcil pensar
sobre una coleccin de procesos ejecutndose en (pseudo) paralelo, que intentar seguir la pista de cmo la
CPU conmuta de un programa a otro. Esta rpida conmutacin de un proceso a otro en algn orden se
denomina multiprogramacin
En la Figura 2(a) vemos un ordenador multiprogramado con cuatro programas en memoria. En la Figura 2(b)
vemos cuatro procesos cada uno con su propio flujo de control (es decir su propio contador de programa
lgico), y cada uno ejecutndose independientemente de los otros. Por supuesto que existe un nico
contador de programa fsico, por lo que cada vez que un proceso retoma su ejecucin, su contador de
programa lgico debe cargase en el contador de programa real. Cuando el proceso agota el intervalo de
tiempo que se le ha concedido, se salva su contador de programa fsico en su contador de programa lgico en
memoria. En la Figura
2(c) vemos que desde la perspectiva de un intervalo de tiempo suficientemente largo, todos los procesos han
progresado, pero que en cualquier instante dado solamente un nico proceso est realmente ejecutndose.
UNSCH/QECM
Pgina 2 de 6
IS-344
Sistemas Operativos
Ingeniera de Sistemas
Captulo II
3. Contexto de Proceso
Como ya sabemos, en un sistema multiprogramado se pueden ejecutar simultneamente varios programas, es
decir, en un momento dado puede haber varios procesos. En un sistema con un nico procesador no se puede
decir que haya varios programas ejecutndose estrictamente de una forma simultnea. En realidad, la
posesin del procesador se va repartiendo entre los distintos procesos, dando lugar a una ejecucin
pseudoparalela. No obstante, por simplicidad, nos referiremos, en general, a ejecucin simultanea o
paralela, tanto si es estricta (sistema multiprocesador) como si no lo es (con un solo procesador).
El contexto de un proceso se define como la informacin necesaria para especificar completamente su
estado actual. Esto incluye toda la informacin que ha de salvarse cuando un proceso pierde la posesin de la
CPU, y hay que restaurar cuando se le vuelve a conceder la posesin del procesador.
El contexto de un proceso, dependiendo del lugar donde reside la informacin, esta formado por tres tipos de
informacin:
UNSCH/QECM
Pgina 3 de 6
Sistemas Operativos
Ingeniera de Sistemas
IS-344
Captulo II
Pgina 4 de 6
Sistemas Operativos
Ingeniera de Sistemas
IS-344
Captulo II
Pgina 5 de 6
Sistemas Operativos
Ingeniera de Sistemas
IS-344
Captulo II
de la ventana que hay que crear (en su caso) para el proceso, y un puntero a una estructura (un registro) en
la que se enve de retorno toda la informacin sobre el nuevo proceso creado, al proceso que hace la
llamada. Adicionalmente a CreateProcess, Win32 cuenta con unas 100 llamadas al sistema ms, para
gestionar y sincronizar los procesos, as como para operaciones relacionadas.
Tanto en UNIX como en Windows, despus de crear un proceso, tanto el padre como el hijo cuentan con sus
propios espacios de direcciones disjuntos. Si cualquiera de los procesos modifica una palabra en su espacio de
direcciones, ese cambio es invisible para cualquier otro proceso. En UNIX, el espacio de direcciones inicial
del hijo es una copia del espacio de direcciones del padre, pero hay dos espacios de direcciones distintos
involucrados; la memoria no escribible se comparte (algunas implementaciones de UNIX comparten el rea de
cdigo entre los dos, ya que el cdigo nunca se modifica). Sin embargo es posible que un nuevo proceso
creado comparta algunos de los dems recursos del padre, tales como los ficheros abiertos. En Windows, los
espacios de direccionamiento del padre y el hijo son diferentes desde el primer momento.
UNSCH/QECM
Pgina 6 de 6