Buscar este blog

martes, 10 de octubre de 2017

3.1 POLITICA Y FILOSOFIA

Filosofía
La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamano. Cada localidad de almacenamiento tiene asignada una direccion que la identifica.
Una de las funciones basicas que debe implementar un SO es la Administracion de la Memoria para tener un control sobre los lugares donde estan almacenados los datos y procesos que actualmente se estan utilizando.
Sea cual sea es esquema de organizacion del almacenamiento que se adopte para un sistema especifico es necesario decidir que estrategias se deben utilizar para obtener un rendimiento optimo.

Políticas

FIFO: Los procesos se despachan de acuerdo a su tiempo de llega a la cola de procesos listos, si un proceso llega al procesador sale hasta que termine. La politica FIFO actualmente no se usa como el esquema principal de un sistema, pero si por ejemplo cuando se usa una politica de prioridades y hay procesos con la misma prioridad, a estos se les podria aplicar FIFO.




HRN: (highest response ratio next ? Prioridad de la tasa de respuesta mas alta): Politica no apropiativa que corrige el retraso excesivo de procesos grandes que produce el SJF, para asi no caer en un favoritismo excesivo por los procesos cortos, lo logra usando una formula basada en el tiempo de espera y el tiempo de servicio, con lo cual la prioridad de cada trabajo no solo esta en funcion del tiempo de servicio sino tambien del tiempo que ha esperado para ser atendido.(Ver Figura(5))

2.5 Niveles,objetivos y criterios de planificacion

Uno de los módulos más importantes de un sistema operativo es la de administrar los procesos y tareas del sistema de cómputo. En esta sección se revisarán dos temas que componen o conciernen a este módulo: la planificación del procesador y los problemas de concurrencia.
Planificación del procesador
La planificación del procesador se refiere a la manera o técnicas que se usan para decidir cuánto tiempo de ejecución y cuando se le asignan a cada proceso del sistema. Obviamente, si el sistema es monousuario y monotarea nohay mucho que decidir, pero en el resto de los sistemas esto es crucial para el buen funcionamiento del sistema.
Niveles de planificación
En los sistemas de planificación generalmente se identifican tres niveles: el alto, em medio y el bajo. El nivel alto decide que trabajos (conjunto de procesos) son candidatos a convertirse en procesos compitiendo por los recursos del sistema; el nivel intermedio decide que procesos se suspenden o reanudan para lograr ciertas metas de rendimiento mientras que el planificador de bajo nivel es el que decide que proceso, de los que ya están listos (y que en algún momento paso por los otros dos planificadores) es al que le toca ahora estar ejecutándose en la unidad central de procesamiento. En este trabajo se revisaran principalmente los planificadores de bajo nivel porque son los que finalmente eligen al proceso en ejecución.
Objetivos de la planificación
Una estrategia de planificación debe buscar que los procesos obtengan sus turnos de ejecución apropiadamente, conjuntamente con un buen rendimiento y minimización de la sobrecarga (overhead) del planificador mismo. En general, se buscan cinco objetivos principales:
·         Justicia o Imparcialidad: Todos los procesos son tratados de la misma forma, y en algún momento obtienen su turno de ejecución o intervalos de tiempo de ejecución hasta su terminación exitosa.
·         Maximizar la Producción: El sistema debe de finalizar el mayor numero de procesos en por unidad de tiempo.
·         Maximizar el Tiempo de Respuesta: Cada usuario o proceso debe observar que el sistema les responde consistentemente a sus requerimientos.
·         Evitar el aplazamiento indefinido: Los procesos deben terminar en un plazo finito de tiempo.
·         El sistema debe ser predecible: Ante cargas de trabajo ligeras el sistema debe responder rápido y con cargas pesadas debe ir degradándose paulatinamente. Otro punto de vista de esto es que si se ejecuta el mismo proceso en cargas similares de todo el sistema, la respuesta en todos los casos debe ser similar.
Características a considerar de los procesos
·         No todos los equipos de cómputo procesan el mismo tipo de trabajos, y un algoritmo de planificación que en un sistema funciona excelente puede dar un rendimiento pésimo en otro cuyos procesos tienen características diferentes. Estas características pueden ser:
·         Cantidad de Entrada/Salida: Existen procesos que realizan una gran cantidad de operaciones de entrada y salida (aplicaciones de bases de datos, por ejemplo).
·         Cantidad de Uso de CPU: Existen procesos que no realizan muchas operaciones de entrada y salida, sino que usan intensivamente la unidad central de procesamiento. Por ejemplo, operaciones con matrices.
·         Procesos de Lote o Interactivos: Un proceso de lote es más eficiente en cuanto a la lectura de datos, ya que generalmente lo hace de archivos, mientras que un programa interactivo espera mucho tiempo (no es lo mismo el tiempo de lectura de un archivo que la velocidad en que una persona teclea datos) por las respuestas de los usuarios.
·         Procesos en Tiempo Real: Si los procesos deben dar respuesta en tiempo real se requiere que tengan prioridad para los turnos de ejecución.
·         Longevidad de los Procesos: Existen procesos que tipicamente requeriran varias horas para finalizar su labor, mientras que existen otros que solonecesitan algunos segundos.
Planificación apropiativa o no apropiativa (preemptive or not preemptive)
La planificación apropiativa es aquella en la cual, una vez que a un proceso le toca su turno de ejecución ya no puede ser suspendido, ya no se le puede arrebatar la unidad central de procesamiento. Este esquema puede ser peligroso, ya que si el proceso contiene accidental o deliberadamente ciclos infinitos, el resto de los procesos pueden quedar aplazados indefinidamente. Una planificación no apropiativa es aquella en que existe un reloj que lanza interrupciones periodicas en las cuales el planificador toma el control y se decide si el mismo proceso seguirá ejecutándose o se le da su turno a otro proceso. Este mismo reloj puede servir para lanzar procesos manejados por el reloj del sistema. Por ejemplo en los sistemas UNIX existen los 'cronjobs' y 'atjobs', los cuales se programan en base a la hora, minuto, día del mes, día de la semana y día del año.
En una planificación no apropiativa, un trabajo muy grande aplaza mucho a uno pequeño, y si entra un proceso de alta prioridad esté también debe esperar a que termine el proceso actual en ejecución.
Planificación de procesos
La planificación es el proceso por el cual el sistema operativo selecciona que proceso ejecutar. La selección del proceso se basa en alguno de los algoritmos de planificación que se describen más abajo.
Expulsión
Es la característica por el cual el sistema operativo puede o no expulsar del estado de ejecución a un proceso dado. En este sentido entonces tenemos la planificación apropiativa en la cual el sistema operativo puede cortar en cualquier momento la ejecución de un proceso y la planificación no apropiativa en la cual una vez que el proceso esta en ejecución el sistema operativo no puede sacarlo de ese estado.
Objetivos de la planificación
Los objetivos de la planificación de proceso son:
·         Equidad, todos los procesos deben poder ejecutarse
·         Eficacia, mantener ocupada la CPU un 100% del tiempo
·         Tiempo de respuesta, minimizar el tiempo de respuesta al usuario
·         Tiempo de regreso, minimizar el tiempo que deben esperar los usuarios por lotes para obtener sus resultados
·         Rendimiento, maximizar el número de tareas procesadas por hora.
Algoritmos de planificación
Los algoritmos de planificación son los que definen que política se va a seguir para que un proceso pase al estado de ejecución.
Planificación Round-Robin
En este tipo de planificación cada proceso tiene asignado un quantum de tiempo para ejecutarse y en el caso de que no pueda terminar la ejecución en su quantum el proceso pasa de nuevo a la cola de procesos para ser ejecutado por otro quantum luego de recorrer la cola para asegurarse que todos los procesos reciban ese quantum de procesamiento.
Planificación por prioridad
En la planificación round-robin todos los procesos son tratados con la misma prioridad. Para el caso de este tipo de planificación a cada proceso se le asigna una prioridad y los mismos son ejecutados
Colas múltiples
Las colas múltiples están basadas en una pila que sirve como índice de una lista de procesos que se tienen que ejecutar.
Primero el trabajo más corto
Este tipo de algoritmo de planificación se usa para trabajos en batch o de procesamiento or lotes en los cuales se puede saber cual es el tiempo de duración de la ejecución de cada proceso y entonces se puede seleccionar primero el trabajo más corto. El problema que se presenta con éste algoritmo es que los grandes procesos podrían sufrir de inanición dado que cualquier proceso pequeño se "cuela" sobre uno de mayor tamaño y como resultado final se podría dar el caso que el proceso grande nunca obtenga procesamiento.
Planificación garantizada
En este modelo de planificación se tiene en cuenta la cantidad de usuarios en el sistema y se le asigna a cada uno el tiempo de ejecución de 1/n (siendo n la cantidad total de usuarios) de esa forma el planificador tiene que llevar cuenta del tiempo de ejecución de los procesos y balancear el tiempo que están utilizando el procesador para cumplir con la ecuación previa.
Conceptos de planificación.

2.4 Concurrencia y secuencial

Procesos concurrentes.

            Los procesos son concurrentes si existen simultáneamente. Los procesos concurrentes pueden funcionar en forma totalmente independiente unos de otros, o pueden ser asíncronos, lo cual significa que en ocasiones requiere cierta sincronización y cooperación.
            Las siguientes definiciones son esenciales para comprender los conceptos de concurrencia y secuencialidad.

* Actividad.
            . Procesos: Es un programa en ejecución.

            . Tarea:      Son las distintas partes de un proceso que se ejecutan simultáneamente.

* Sistemas:
. Multiprogramación: Admiten varias actividades que comparten el procesador, pero sólo
                                                       una puede estar ejecutándose en un momento dado.
. Multiproceso:          Las actividades se ejecutan en sus propios procesadores, conectados
                                                    a través de una red de comunicaciones.

* Paralelismo:
            Es la ejecución de diversas actividades simultáneamente en varios procesadores. Si sólo existe un procesador gestionando multiprogramación, se puede decir que existe pseudo-paralelismo. Se trata de un concepto físico producido por la existencia de varios procesadores.

* Concurrencia:
            Es la existencia de varias actividades ejecutándose simultáneamente, y necesitan sincronizarse para actuar conjuntamente. Se trata, en este caso, de un concepto lógico, ya que sólo hace referencia a las actividades, sin importar el número de procesadores presentes.

            Para que dos actividades, sean concurrentes, es necesario que tengan relación entre sí, como puede ser la cooperación en un trabajo determinado o el uso de información compartida.

            En un sistema monoprocesador, la existencia de multiprogramación es condición necesaria, pero no suficiente para que exista concurrencia, ya que los procesos pueden ejecutarse independientemente. Por ejemplo, un editor y un compilador pueden estar ejecutándose simultáneamente en una computadora sin que exista concurrencia entre ellos. Por otro lado si un programa se está ejecutando y se encuentra grabando datos en un archivo, y otro programa también en ejecución está leyendo datos de ese mismo archivo, sí existe concurrencia entre ellos, pues el funcionamiento de uno interfiere en el funcionamiento de otro.
            Si un sistema es multiprocesador, también pueden presentarse situaciones de concurrencia siempre y cuando las actividades necesiten actuar entre sí, bien por utilizar información común, o por cualquier otra causa.

            Los procesos del sistema pueden ejecutarse concurrentemente, puede haber múltiples tareas en el CPU con varios procesos. Existen varias razones para permitir la ejecución concurrente:

* Compartir recursos físicos.

            Ya que los recursos del hardware de la computadora son limitados, nos podemos ver obligados a compartirlos en un entorno multiusuario.

* Compartir recursos lógicos.

Puesto que varios usuarios pueden interesarse en el mismo elemento de información (por ejemplo un archivo compartido), debemos proporcionar un entorno que permita el acceso concurrente a estos tipos de recursos.


* Acelerar los cálculos.

            Si queremos que una tarea se ejecute con mayor rapidez, debemos dividirla en subtareas, cada una de las cuales se ejecutara, en paralelo con las demás.

* Modularidad.

            Podremos construir el sistema en forma modular, dividiendo las funciones del sistema en procesos separados.

* Comodidad.

            Un usuario puede tener que ejecutar varias tareas a la vez, por ejemplo puede editar, imprimir y compilar en paralelo.

            La ejecución concurrente que requiere la cooperación entre procesos necesita un mecanismo para la sincronización y comunicación de procesos, exclusión mutua y sincronización.

Problemas de ConcurrenciaEn los sistemas de tiempo compartido (aquellos con varios usuarios, procesos, tareas, trabajos que reparten el uso de CPU entre estos) se presentan muchos problemas debido a que los procesos compiten por los recursos del sistema. Imagine que un proceso está escribiendo en la unidad de cinta y se le termina su turno de ejecución e inmediatamente después el proceso elegido para ejecutarse comienza a escribir sobre la misma cinta. El resultado es una cinta cuyo contenido es un desastre de datos mezclados. Así como la cinta, existen una multitud de recursos cuyo acceso debe der controlado para evitar los problemas de la concurrencia.
El sistema operativo debe ofrecer mecanismos para sincronizar la ejecución de procesos: semáforos, envío de mensajes, 'pipes', etc. Los semáforos son rutinas de software (que en su nivel más interno se auxilian del hardware) para lograr exclusión mutua en el uso de recursos. Para entender este y otros mecanismos es importante entender los problemas generales de concurrencia, los cuales se describen enseguida.
·         Condiciones de Carrera o Competencia: La condición de carrera (race condition) ocurre cuando dos o más procesos accesan un recurso compartido sin control, de manera que el resultado combinado de este acceso depende del orden de llegada. Suponga, por ejemplo, que dos clientes de un banco realizan cada uno una operación en cajeros diferentes al mismo tiempo.

2.3 Procesos ligeros .Hilos o hebras

Procesos ligeros
Los procesos ligeros son programas en ejecución son básicamente procesos pero a diferencia de éstos últimos que solo tienen un hilo de ejecución los primeros tienen el hilo principal más hilos secundarios o hijos, en éste caso todos los procesos hijos comparten la información del hilo principal pero además puede cada hilo tener su información privada.
Dentro de la información propia tenemos:
·                     Contador de programa
·                     Pila
·                     Registros.
·                     Estado del proceso ligero.
·                     Dentro de la información compartida tenemos:
·                     Variables globales.
·                     Archivos abiertos
·                     Señales
·                     Semáforos.
·                     Contabilidad.
Los hilos o procesos ligeros son una parte de código o miniprograma que puede ser ejecutada independientemente, de forma que una aplicación o un applet puede tener varios hilos ejecutándose simultáneamente y efectuando distintas tareas; estos hilos se encuentran dentro de un programa y son parte de él.
Los hilos, a veces también llamados contextos de ejecución, pueden ser utilizados para la implementación de algoritmos paralelos o procesos concurrentes, sin ser necesario disponer de equipos con estructura de multiprocesador. En el caso de un solo procesador, los procesos ligeros incorporan mecanismos para compartirlo, estableciéndose prioridades
entre ellos y también facilidades de sincronización, cuando es necesario.
Multiproceso se refiere a dos programas que se ejecutan "aparentemente" a la vez, bajo el control del sistema operativo.
Multihilo se refiere a que dos o mas tareas se ejecutan "aparentemente" a la vez, dentro de un mismo programa.

2.2 Estados y transiciones de los procesos

2.2 Estados y transiciones de los procesos.

Un proceso puede estar en cualquiera de los siguientes tres estados: Listo, En ejecución y Bloqueado.
Los procesos en el estado listo son los que pueden pasar a estado de ejecución si el planificador los selecciona. Los procesos en el estado ejecución son los que se están ejecutando en el procesador en ese momento dado. Los procesos que se encuentran en estado bloqueado están esperando la respuesta de algún otro proceso para poder continuar con su ejecución. Por ejemplo operación de E/S.
Un proceso puede variar entre 5 distintos estados:
New: cuando el proceso esta siendo creado.
Running: cuando el proceso se esta ejecutando.
Waiting: cuando el proceso esta esperando que se cumpla algún otro evento.
Ready: cuando el proceso esta pronto para ejecutar, esperando por la CPU.
Terminated: cuando el proceso esta terminado.
Estado de los Procesos.Los bloques de control de los procesos se almacenan en colas, cada una de las cuales representa un estado particular de los procesos, existiendo en cada bloque, entre otras informaciones. Los estados de los procesos son internos del sistema operativo y transparentes al usuario.
Los estados de los procesos se pueden dividir en dos tipos: activos e inactivos.
1.- Estados activos: Son aquellos que compiten con el procesador o están en condiciones de hacerlo. Se dividen en:
Ejecución. Estado en el que se encuentra un proceso cuando tiene el control del procesador. En un sistema monoprocesador este estado sólo lo puede tener un proceso.
Preparado. Aquellos procesos que están dispuestos para ser ejecutados, pero no están en ejecución por alguna causa (Interrupción, haber entrado en cola estando otro proceso en ejecución, etc.).
Bloqueado. Son los procesos que no pueden ejecutarse de momento por necesitar algún recurso no disponible (generalmente recursos de entrada/salida).
2.- Estados inactivos: Son aquellos que no pueden competir por el procesador, pero que pueden volver a hacerlo por medio de ciertas operaciones. En estos estados se mantiene el bloque de control de proceso aparcado hasta que vuelva a ser activado. Se trata de procesos que no han terminado su trabajo que lo han impedido y que pueden volver a activarse desde el punto en que se quedaron sin que tengan que volver a ejecutarse desde el principio.
Son de dos tipos:
·         Suspendido bloqueado. Es el proceso que fue suspendido en espera de un evento, sin que hayan desaparecido las causas de su bloqueo.
·         Suspendido programado. Es el proceso que han sido suspendido, pero no tiene causa parta estar bloqueado.
Estados de los procesos
•Nuevo: El proceso es creado.
•Ejecución: Se ejecutan instrucciónes.
•Espera: El proceso esta en espera por la ocurrencia de algún evento.
•Listo: El proceso esta esperando a que le asignen el procesador.
•Terminado: El proceso finaliza su ejecución.
•Diagrama de estados de los procesos.
Información asociada con cada proceso:
•Estado del proceso
•Program counter
•Registros del CPU
•Información de planificación del CPU
•Memoria
•Información para administración
•Información de estatus de E/S
Creación de Procesos.
En UNIX el lanzamiento de procesos se realiza a través de la llamada al sistema fork().

Para utilizar esta llamada al sistema se emplea el header  <unistd.h>.

Su sintaxis es:
                        Pid=fork();

Una llamada exitosa a fork() crea un proceso que es una copia del proceso que lo invoco. Duplica las variables del proceso original con una excepción, el nuevo proceso creado recibe le nombre de proceso hijo. El proceso que lo creo se denomina proceso padre, y el sistema devuelve un 0 al proceso hijo y un valor positivo distinto de 0 (pid del hijo) al proceso  padre.

Después de la llamada exitosa a fork(), tanto el proceso padre como el hijo corren en forma simultanea a partir del punto siguiente a la invocación del fork.

La figura siguiente muestra esta situación:


…..
Printf(“Antes del fork \n”);
Pid=fork();
Printf(“Después del fork\n”);
…….

AC
A








Antes
------------------------------------------ fork   ------------------------------------------------------------
Después
…..
Printf(“Antes del fork \n”); Pid=fork();

Printf(“Después del fork\n”);
…….

AC
…..
Printf(“Antes del fork \n”); Pid=fork();

Printf(“Después del fork\n”);
…….

AC
B
A









En la figura se muestran 3 líneas de código de un proceso; un printf, un fork y otro printf.
Hay 2 secciones en la figura: antes y después. La sección antes muestra la situación antes de la invocación al fork. Sólo existe el proceso A. El Apuntador AC (apuntador de código) señala a la instrucción que se está ejecutando. Como se está indicando el primer printf  Imprime el texto “Antes del fork”.
La sección después muestra la situación inmediatamente después de la llamada a fork. Existen ahora 2 procesos: Ay B. A es el proceso original, es decir, el proceso padre. B es una copia de A, es decir el proceso hijo. Ambos corren en forma simultánea. Dado que el apuntador AC, señala al último printf, se imprime el texto “Después del fork”. Se imprime 2 veces, una por parte del padre y la otra por parte del hijo.
h
Descriptor  de procesos y recursos.
            Es una estructura de datos asociada a una entidad informática ya sea un (Recurso o Proceso), en la cual se indica y actualiza todas las informaciones relativas a dicha entidad.
En el caso de un proceso la información general  que contiene es:
1).-      Identificador: Que puede ser interno y externo.
                                   - Interno:       Sistemas.
                                   - Externo:      Usuario.
2).-      Descripción de la máquina virtual asociada: como espacio virtual asignado, tipo de mapeo, tipo de acceso.
3).-      Descripción de los recursos de la máquina que usa como: Lista de recursos que el proceso tiene  derecho a solicitar, dirección real en la memoria principal, estado de las         variables internas  del CPU, prioridad, etc.
4).-      Estados funcionales del proceso:    Los  estados  de  los  procesos  son  internos  del sistema operativo  y  transparente  al   usuario.  Para  éste,  su proceso  estará  siempre en ejecución independientemente  del   estado  en que se encuentre internamente el sistema.

Los  procesos  se  pueden  encontrar  en  tres estados.

             Estados de los procesos.

            Un proceso puede encontrarse en estado de ejecución, bloqueado o listo (que también se llama ejecutable).
            De estos estados de los procesos se derivan las siguientes transiciones y estados:

Transición: El paso de un estado a otro.

Transiciones:

            1. El proceso se bloquea en la entrada.
            2. El planificador elige otro proceso.
            3. El planificador elige este proceso.
            4. La entrada se vuelve disponible.

            Estados:

            1. Ejecución (que en realidad hace uso del CPU en ese instante).
            2. Bloqueado (incapaz de correr hasta que suceda algún evento externo.
3. Listo (ejecutable; se detiene temporalmente para permitir que se ejecute otro
     proceso).

En estos tres estados son posibles cuatro transiciones:

1.         Ocurre cuando un proceso descubre que no puede continuar. En algún sistema el proceso debe ejecutar una llamada al sistema, BLOCK, para entrar en estado bloqueado.
2 y 3.   Son ocasionadas por el planificador del proceso, que es parte del sistema operativo sin que el proceso llegue a saber de ella.
2.         Ocurre cuando el planificador decide que el proceso en ejecución ya ha corrido el tiempo suficiente y es tiempo de permitir que otro proceso tome tiempo de CPU.
3.         Ocurre cuando todos los procesos han utilizado su parte del tiempo y es hora de que el primer proceso vuelva a correr.
4.         Ocurre cuando aparece el evento externo que estaba esperando un proceso (como el arribo de alguna entrada). Si ningún otro proceso corre en ese instante, la transición  3 se  activará de inmediato y el proceso iniciara su ejecución, de lo contrario tendrá que esperar, en estado listo.

            Los estados de los procesos se pueden dividir en dos tipos:  activos  e  inactivos.

2.1 Conceptos de proceso

2.1 Concepto de proceso.

Un proceso es un programa en ejecución. Un proceso simple tiene un hilo de ejecución, por el momento dejemos esta última definición como un concepto, luego se verá en más detalle el concepto de hilo. Una vez definido que es un proceso nos podríamos preguntar cuál es la diferencia entre un programa y un proceso, y básicamente la diferencia es que un proceso es una actividad de cierto tipo que contiene un programa, entradas salidas y estados.
Los procesos pueden ser cooperantes o independientes, en el primer caso se entiende que los procesos interactúan entre sí y pertenecen a una misma aplicación. En el caso de procesos independientes en general se debe a que no interactúan y un proceso no requiere información de otros o bien porque son procesos que pertenecen a distintos usuarios.
•          Proceso - un programa en ejecución; la ejecucución del proceso debe progresar de manera secuencial.
•          Un proceso incluye:
–         program counter
–         stack
–         data section
Estados de los procesos
•          Nuevo: El proceso es creado.
•          Ejecución: Se ejecutan instrucciónes.
•          Espera: El proceso esta en espera por la ocurrencia de algún evento.
•          Listo: El proceso esta esperando a que le asignen el procesador.
•          Terminado: El proceso finaliza su ejecución.
•          Diagrama de estados de los procesos.
Información asociada con cada proceso:
•          Estado del proceso
•          Program counter
•          Registros del CPU
•          Información de planificación del CPU
•          Memoria
•          Información para administración
•          Información de estatus de E/S
Proceso:
programa o comando en ejecución.
Características:
·         Un proceso consta de código, datos y pila.
·         Los procesos existen en una jerarquía de árbol (varios Hijos, un sólo padre).
·         El sistema asigna un identificador de proceso (PID) único al iniciar el proceso.
·         El planificador de tareas asigna un tiempo compartido para el proceso según su prioridad (sólo root puede cambiar prioridades).
Ejecución en 1er plano:
proceso iniciado por el usuario o interactivo.
Ejecución en 2o plano:
proceso no interactivo que no necesita ser iniciado por el usuario.
Demonio:
proceso en 2o plano siempre disponible, que da servicio a varias tareas (debe ser propiedad del usuario root).
Proceso zombi:
proceso parado que queda en la tabla de procesos hasta que termine su padre. Este hecho se produce cuando el proceso padre no recoge el código de salida del proceso hijo.
Proceso huérfano:
proceso en ejecución cuyo padre ha finalizado. El nuevo identificador de proceso padre (PPID) coincide con el identificador del proceso init (1).
Concepto  de  proceso.
            Un proceso es  básicamente como un programa en ejecución. Consta del programa ejecutable, los datos y la pila del programa, su contador de programa, apuntador de pila y otros registros, y la  otra información que se necesita para ejecutar el programa.
            La manera sencilla de tener una noción intuitiva de lo que es un proceso consiste en pensar en los sistemas con tiempo compartido. En forma periódica el sistema operativo decide suspender la ejecución de un proceso y dar inicio a la ejecución de otro,  por ejemplo, porque el primero haya tomado ya más de su parte del tiempo del CPU, en terrenos del segundo.

            Cuando un proceso se suspende temporalmente como éste, debe reiniciarse después exactamente en el mismo estado en que se encontraba cuando se detuvo. Esto significa que toda la información relativa al proceso debe guardarse en forma explícita en algún lugar durante la suspensión.
            En muchos sistemas operativos, toda la información referente a cada proceso, diferente del contenido de su espacio de direcciones, se almacena en una tabla de sistema operativo, llamada tabla de procesos, la cual es un arreglo o lista enlazada de estructuras, una para cada proceso en existencia corriente.
            Si un proceso puede crear uno o más procesos diferentes (conocidos como proceso hijo) y estos procesos a la vez originan procesos hijos, se llega rápidamente a la estructura del árbol de procesos.

 Estructura de árbol. Proceso Padre - Hijo.
El proceso A creó dos procesos derivados, B y C.  El proceso B creó tres derivados, D, E y F.
            Se dispone de otras llamadas al sistema para solicitar más memoria ( o para liberar memoria no utilizada), esperar a que termine un proceso hijo y cubrir su programa con uno diferente.

            En un sistema de multiprogramación, el (CPU) también cambia de un programa a otro, ejecutando cada uno en decenas o cientos de milisegundos. En tanto que, en rigor, en cualquier instante de tiempo, el CPU está ejecutando sólo un programa, en el curso de un segundo puede trabajar en varios programas, con la ilusión de paralelismo.

Proceso: Informalmente se define como la actividad que resulta cuando un proceso ejercita un programa, y formalmente consiste en un vector formado por lo siguiente, figura # 15:


            P = < C, Co, E, S, A >
                                                           Algoritmo
                                                           Datos de salida
                                                           Conjunto de datos de entrada {E1, E2, ... En}
                                                           Contexto inicial
                                                           Conjunto de contexto inicial {C0, C1, C2, ... Cn}

6.6 VALIDACIÓN Y AMENAZA

Amenazas a la seguridad en el acceso al sistema: ·   Intrusos. ·   programas malignos. Intrusos: ·   Piratas o hackers:  individuos...