Sistemas Operativos
Por: 29-04-2009 por jpsarmiento | Categorías asociadas: Capitulo 3 (Procesos), Paralelo "C"

<!– @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } –>

Capítulo III

Procesos: Un proceso es un programa en ejecución que consta de los siguientes estados:

Nuevo: El proceso está siendo creado

En Ejecución: Se están ejecutando las instrucciones

En Espera: El proceso está esperando a que se produzca un suceso

Preparado: El proceso está en espera de que le asignen a un procesador

Terminado: Ha terminado la ejecución del proceso

Cada proceso se representa en el sistema operativo mediante un bloque de control de procesos, el cual contiene muchos elementos de información asociados con un proceso específico, entre los que se incluyen:

estado del proceso – contador de programa – registros de la CPU – información de la planificación de la CPU – información de gestión de memoria – información contable – información del estado de E/S.

PLANIFICACIÓN DE PROCESOS

Colas de Planificación: A medida que los procesos entran al sistema se colocan en una cola de trabajos que contiene todos los procesos del sistema. Los procesos que residen en memoria principal y están preparados y en espera de ejecución se encuentran en la cola de procesos preparados (lista enlazada, contiene un puntero al primer y último PCB de la lista). Cada PCB incluye un campo de puntero que apunta al siguiente PCB de la cola de procesos preparados. El sistema también incluye otras colas como son las colas de dispositivos.

Planificadores: Durante el tiempo de vida, los procesos se mueven entre las diferentes colas de planificación. El SO como parte de la planificación debe seleccionar un proceso que se encuentran en las colas. Este proceso se lo realiza a través de un Planificador. En un sistema de procesamiento por lotes, se envía más procesos de los que se puede ejecutar de forma inmediata. Estos procesos se guardan en dispositivos de almacenamiento masivo, donde se mantiene para su posterior ejecución.

Cambios de Contexto: Cuando se produce una interrupción el sistema tiene que guardar el contexto actual del proceso que se esta ejecutado en la CPU, de modo que se pueda restaurar dicho contexto cuando su procesamiento concluya, suspendiendo el proceso y reanudándolo después.

OPERACIONES SOBRE LOS PROCESOS

Creación de Procesos: Un proceso puede crear nuevos procesos mientras se ejecuta, para ellos se realiza una llamada al sistema. El proceso creador se denomina padre y el creado hijo. A su vez los procesos hijos pueden crear otros procesos creando un árbol de procesos. Los procesos se pueden identificar mediante un PID (Process Identifier).

Terminación de Procesos: Un proceso termina cuando ejecuta su última instrucción y pide al sistema operativo que lo elimine usando la llamada al sistema exit().

COMUNICACIÓN INTERPROCESOS

Sistemas de Memoria Compartida: Requiere que los procesos que estén comunicando establezcan una región de memoria compartida. Hay que recordar el SO evita que otro proceso pueda ingresar a direcciones de memoria de otro procesos, por cual los procesos cooperativos deben eliminar esta restricción.

Sistema de Paso de Mensajes: Proporciona un mecanismo que permite a los procesos comunicarse y sincronizar sus acciones sin compartir el mismo espacio de direcciones

Sincronización: El paso de mensajes puede ser con bloque o sin bloqueo, mecanismos también conocidos como síncrono y asíncrono. Envío con bloqueo-envío sin bloqueo – recepción con bloqueo – recepción sin bloqueo.

Almacenamiento en Búfer: Sea la comunicación directa o indirecta los mensajes intercambiados por los procesos que se están comunicando residen en una cola temporal. Básicamente, tales colas se pueden implementar de tres maneras: capacidad cero, la cola tiene una longitud máxima de cero; capacidad limitada, la cola tiene una longitud finita n; capacidad ilimitada, la longitud de la cola es potencialmente infinita.

Sockets

Se define como un punto terminal de una comunicación. Una pareja de procesos que se comunica a través de una red emplea una pareja de sockets, uno para cada proceso.




Por: 22-04-2009 por bjcoronel | Categorías asociadas: Capitulo 3 (Procesos), Paralelo "C"

Proceso.

Un proceso es un concepto manejado por el sistema operativo que consiste en el conjunto formado por:

  • Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador.
  • Su estado de ejecución en un momento dado, esto es, los valores de los registros de la CPU para dicho programa.
  • Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.
  • Otra información que permite al sistema operativo su planificación.

Esta definición varía ligeramente en el caso de sistemas operativos multihilo, donde un proceso consta de uno o más hilos, la memoria de trabajo (compartida por todos los hilos) y la información de planificación. Cada hilo consta de instrucciones y estado de ejecución.

Los procesos son creados y destruidos por el sistema operativo, así como también este se debe hacer cargo de la comunicación entre procesos, pero lo hace a petición de otros procesos. El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación (fork). Los nuevos procesos son independientes y no comparten memoria (es decir, información) con el proceso que los ha creado.

En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La diferencia estriba en que un proceso solamente puede crear hilos para sí mismo y en que dichos hilos comparten toda la memoria reservada para el proceso.




Por: 16-04-2009 por plaguilar | Categorías asociadas: Capitulo 3 (Procesos)

CAPITULO III

Procesos

Para poder entender bien el concepto de Proceso deberemos diferenciarlo en el lugar donde se encuentra. Un programa será un archivo cuando se encuentre en el disco rígido y será un proceso al encontrarse en memoria; de esta forma se comprenderá mejor que es un Proceso. Pero también es cierto que un proceso es mucho mas que un programa en memoria y sobre todo en la clase de SO que nos compete, con sus funciones de multiusuario y multitarea como lo son los SO Un*x.

Cada programa cuenta con un conjunto de datos que usa para hacer su trabajo y en la mayoría de los casos estos datos no forman parte del programa. Como ejemplo tomemos un programa de edición de textos. Los datos del archivos que el programa esta editando no forma parte del programa, pero si del proceso en memoria. Si alguna otra persona utilizara al mismo tiempo el mismo procesador de texto que se encuentra en ese sistema, los dos estarían utilizando el mismo programa, pero no el mismo proceso. Ambas tendrían una copia para cada uno del proceso del editor de texto. Es así que los programas podrán ser únicos para todos los usuarios, pero los procesos pertenecerán a cada usuario.

En Un*x varios usuarios podrán estar utilizando el sistema al mismo tiempo. Esto se traduce a que el sistema tendrá múltiples procesos cargados en la memoria, y cada uno de ellos requerirá de la atención de la CPU en algún momento. El sistema llevará un control de los procesos que están funcionando en ese momento, en que terminal y a que usuario pertenece además de otros datos. Todo ello estará apuntado en una tabla de procesos, en la cual el SO asignará el tiempo que tardará la CPU para atender cada proceso.

http://www.ant.org.ar/cursos/curso_intro/imagenes/tema01_02.png

Cuando uno entra a un sistema Un*x, generalmente obtiene accesos a lo que se denomina intérprete de comandos. La gente que haya utilizado DOS sabrá que esto, ya que el C:> es el indicador de shell de su interprete de comando, el COMMAND.COM. En cambio, aquí el indicador será algo como $, # o %. Este shell es un proceso que esta corriendo y pertenece al usuario que esta corriéndolo en ese momento. En realidad es una copia del intérprete de comandos que esta corriendo en memoria.

Al cargarse un programa desde el intérprete de comando (shell), este no es reemplazado por dicho proceso, sino que queda a la espera de algún otro mandato. Mientras tanto, para correr el programa, se crea un nuevo proceso, el del programa, que será hijo del proceso del shell. Un proceso tiene un solo padre pero puede tener múltiples hijos.

http://www.ant.org.ar/cursos/curso_intro/imagenes/tema01_03.png

Al iniciar una sesión en GNU/Linux el usuario será propietario de un único proceso, por ejemplo /bin/bash que es el intérprete de comandos mas usados y el que usaremos nosotros. Luego cada proceso que ejecute a partir del bash, se acomodará en el árbol de procesos como hijo del bash.

El bash permanecerá atento a que se le de un nuevo mandato, mientras tanto se dice que esta durmiendo. Como habíamos dicho antes, múltiples procesos podrán estar ejecutándose al mismo tiempo. Por ello se tendrá que asignar un tiempo a cada proceso para recibir la atención exclusiva la CPU. Es común que cada proceso tenga por 1/100 segundos la atención total de la CPU. Esto dará la ilusión al usuario de que es el único que tiene la atención del sistema, pero que ocurriría si el proceso se colgase. En un sistema monousuario como el Windows (no el NT) esto seguramente ocasionaría el cuelgue del sistema ya que el kernel no podría recuperarse dado que el proceso tiene control absoluto de la CPU. Esto no ocurre en GNU/Linux dado que todos los procesos responden al kernel y es el kernel quien les da permiso de usar la CPU en el momento necesario.

Supongamos que queremos guardar nuestro trabajo del editor de textos. Entonces, y con la combinación de teclas correctas, le damos la orden al proceso del editor de textos para que guarde el trabajo. Esto, para nosotros, se hace instantáneamente pero es solo otra ilusión. El proceso del editor de textos emite una petición al kernel para escritura del disco, el kernel entonces escribirá el disco en bloques, dependiendo de cuan libre este, mientras tanto guardara los datos en un espacio secundario de almacenamiento denominado “cache”. Esto es beneficioso por varias razones. En caso de que los datos que estemos escribiendo en ese momento sean requeridos un momento después, estos estarían disponibles en el cache y se ahorraría un viaje al disco. También seria beneficioso por el lado de la eficiencia del sistema, ya que escribirá al disco solo cuando el procesador este ocioso, no ocasionando con el proceso de escritura que el sistema funcionara más lentamente. Suponiendo que alguna otra persona necesitara en ese momento un dato del disco, el proceso de lectura tendría que esperar su turno, entonces es puesto a dormir. El proceso tendrá que esperar a que se termine el tiempo asignado al proceso de escritura y luego se le despertara y podrá tomar su lugar para acceder al disco.

Existe también otro tipo de eventos en los que la CPU repara para poder detener a un proceso en curso, estos son las interrupciones. Se ocasionan cuándo un dispositivo, léase mouse o teclado, requiere la atención de la CPU, es asi que se genera una interrupción que la CPU atenderá, mandando a dormir al proceso en curso. Por supuesto hay mas complicaciones que las expuestas aquí, entre ellas las prioridades de los procesos que se verán cuando tomemos la parte de 6.7 de Tareas y Procesos. El tema de prioridades lo maneja el kernel de acuerdo a varios aspectos, como el dueño del proceso, si es de sistema o no, etc. Los procesos de sistemas son utilizados para la administración de memoria y la calendarización de turnos para la CPU, etc. Estos procesos se los conoce como daemon (DEMONIOS) o programas servidores. Funcionan sin la intervención del usuario y sin que este los vea y hacen su trabajo esperando su turno cuando les llega para actuar.

Los primeros sistemas informáticos solo permitían que se ejecutara un programa a la vez.

Los sistemas de procesamiento por lotes ejecutan trabajos, mientras que un sistema de tiempo compartido tiene programas de usuario o tareas. Podemos decir que un proceso es algo más que el código de un programa, incluye también actividad actual que queda representada por el valor del contador de programa y por los contenidos de los registros del procesador; el proceso puede incluir , asimismo un cúmulo de memoria que es la memoria que se asigna dinámicamente al proceso en tiempo de ejecución.

A medida que se ejecutan proceso el proceso va cambiando de estado, cada proceso puede estar en uno de los siguientes:

Nuevo: el proceso está siendo creado

En ejecución: se están ejecutando las instrucciones.

En espera: el proceso está esperando que se produzca un suceso.

Preparado: el proceso está a la espera de que le asigne a un procesador.

Terminado: a terminar ejecución de proceso.

Un bloque de control de proceso contiene muchos elementos de información asociados con proceso específico entre los que se incluyen: estado de proceso, contador de programa, registros de la CPU, información de planificación de la CPU, información de gestión de memoria, información contable, información del estado de E/S.

el planificador de procesos selecciona un proceso disponible para ejecutar el programa en la CPU.

A medida que los procesos entre en el sistema se colocan una cola de trabajos, los procesos que residen en memoria principal y están preparados y en espera de ejecutarse se mantienen en una lista denominada cola de procesos preparados generalmente está cola se almacena en forma del lista enlazada.

Cada proceso nuevo se coloca inicialmente en la cola de procesos preparados, donde espera hasta que es seleccionado para ejecución, es decir hasta que es despachado.

Durante el tiempo de vida los procesos se mueven entre las diversas colas de planificación, el proceso de selección se realiza mediante un planificador apropiado, el planificador a largo plazo o de trabajos selecciona procesos de esta cola y los carga en memoria para su ejecución.

Cuando se produce una interrupción el sistema tiene que guardar el contexto actual del proceso que existe ejecutando en la CPU, de modo que se puede restaurar el presente contexto cuando su procesamiento concluye.

Operaciones sobre los procesos:

Creación de procesos, terminación de procesos.

Creación de procesos: un proceso puede crear otros varios procesos nuevos mientras se ejecuta, para esto se utiliza una llamada sistema específica para la creación de procesos. El proceso creador se denomina proceso padre y los nuevos procesos son los hijos de dicho proceso.

Terminación de los procesos: un proceso termina cuando ejecuta su última instrucción y pidió sistema operativo que lo elimine usando la llamada sistema exit(). En éste momento proceso puede volver un valor de estado a su proceso padre a través de la llamada al sistema wait().

Un proceso es independiente sino puede afectar o verse afectado por los restantes procesos que se ejecutan en el sistema, cualquier proceso que no comparte datos con ninguno otro proceso es conocido como un proceso independiente.

Existen diferentes razones para proporcionar un entorno que permita la cooperación entre procesos:

Compartir información: si algunos usuarios están interesados en la información de este, debemos proporcionar un entorno que permita el acceso a dicha información.

Acelerar los cálculos: si queremos que una tareas ejecute rápidamente debemos de dividirla en subtareas.

Modularidad: podemos querer construir el sistema deforma modular, dividiendo las funciones del sistema en diferentes procesos.

Conveniencia: un solo usuario pueda querer trabajar en muchas tareas al mismo tiempo.

La comunicación entre procesos en la memoria compartida requiere que los procesos que se estén comunicando establezcan una región de memoria compartida, una región de memoria compartida reside en el espacio de direcciones del proceso que crea el segmento de memoria compartida.

El paso de mensajes proporcionar un mecanismo que permite a los procesos comunicarse y sincronizar sus acciones sin compartir el mismo espacio de direcciones, y es especialmente útil en un entorno distribuido.

En el caso de la comunicación directa cada proceso que desea establecer una comunicación deben nombrar deforma explícita al receptor o transmisor de la comunicación. En este esquema las primitivas send() y receive() se define:

send (P, mensaje)– envía un mensaje al proceso P

receive(Q, mensaje)– recibe un mensaje del proceso Q

El paso de mensajes puede ser con bloqueo sin bloqueo, mecanismos también conocidos como síncrono y asíncrono.

Envió con bloqueo: el proceso envía se bloquean hasta que proceso receptor recibe los mensajes.

Envió sin bloqueo: el proceso transmisor envía el mensaje y continúa operando.

Recepción con bloqueo: el receptor se bloquea hasta que hay un mensaje disponible.

Recepción sin bloqueo: el receptor extremo mensaje válido o un mensaje ninguno.

En el almacenamiento en búfer los cola se pueden implementar de tres maneras: capacidades 0, capacidad ilimitada y capacidad ilimitada.

Para los sistemas POSIX hay disponibles varios mecanismos IPC, incluyendo los memoria compartida y de paso de mensajes los procesos que deseen acceder a un segmento de memoria compartida deben asociarlo a su espacio de direcciones usando la llamada al sistema shmat().

Un socket se define como un punto terminal de una comunicación, una pareja de procesos que se comunican a través de una vez emplea una pareja de sockets para cada proceso, cada socket se identifica mediante la dirección y te concatenada con un número de puerto.

Los sockets TCP orientadas a colección se incrementan con la clase Socket, mientras que los sockets UDP sin colección usan la clase DatagramSocket.

Las RPC se diseñaron como un método para atraer los mecanismos de llamada a procedimientos, con el fin de utilizarlos entre sistemas conectados entre.

La invocación de métodos remotos es una funcionalidad Java similar a las llamadas o procedimiento remotos, permite a una hebra invocar un método sobre un objeto remoto.




Por: 16-04-2009 por jgcalero | Categorías asociadas: Capitulo 3 (Procesos), Paralelo "C"

Capítulo III

Procesos

  • Proceso: es un programa en ejecución, es algo más que el código de un programa. Además de código un proceso incluye la actividad actual, que queda representada en el valor actual del PC y por los contenidos de los registros del procesador.
  • Estados del Proceso:

o Nuevo

o En ejecución

o En espera

o Preparado

o Terminado

  • Blcoque de control de proceso:

o Estado del proceso, puede ser nuevo, preparado, en ejecución, en espera, detenido.

o Contador de programa, indica la dirección de la siguiente instrucción que va ejecutar.

o Registro de la CPU, estos varían en cuanto a número y tipo, esta información debe guardarse junto con el contador de programa cuando se produce una interrupción.

o Información de planificación de la CPU, incluye la prioridad del proceso, los punteros a las colas de planificación y otros parámetros.

o Información de gestión de memoria, información acerca del valor de los registros base y limite, las tablas de páginas o las tablas de segmentos.

o Información contable, información de la cantidad de CPU y de tiempo real empleados, límites de tiempo asignado.

o Información del estado de E/S, información de la lista de dispositivos de E/S asignados.

  • Cuando se ejecuta un procesador de textos se ejecuta una sola hebra de instrucciones, es decir el usuario no puede escribir simultáneamente caracteres y pasar el corrector ortográfico dentro del mismo proceso.
  • Planificación de Procesos

o Colas de planificación, a medida que los procesos entran en el sistema, se colocan en una cola de trabajos que contiene todos los procesos del sistema, los procesos que residen en memoria principal y están preparados y en espera de ejecutarse se mantienen en la cola de procesos preparados.

o Planificadores, los procesos están en una cola de planificación. La selección de se realiza mediante un planificador apropiado. Hay planificadores a largo plazo o planificador de trabajos, a corto plazo o planificador de la CPU.

o Cambio de contexto, cuando se produce una interrupción, el sistema tiene que guardar el contexto actual del proceso que se ejecuta en la CPU, de modo que pueda restaurar dicho contexto cuando su procesamiento concluya., suspendiendo el proceso y reanudándolo después.

  • Operaciones sobre los procesos:

o Creación de procesos, un proceso puede crear otros nuevos procesos mientras se ejecuta, para ello se utiliza una llamada al sistema para la creación de procesos; el proceso creador se lo denomina proceso padre y los nuevos procesos hijos, y estos a su vez pueden crear otros procesos.

o Terminación de procesos, termina cuando ejecuta su ultima instrucción y pide al SO que lo elimine usando la llamada al sistema exit(). El SO libera la asignación de todos los recursos del proceso tales como memoria física y virtual, archivos abiertos y los buffer de E/S.

  • Un proceso es independiente si no puede afectar o verse afectado por el resto de procesos que se ejecutan en el sistema.
  • Un proceso es cooperativo (interprocesos) si puede afectar o verse afectado por los demás procesos que se ejecutan en el sistema, estos tienen sus ventajas como:

o Compartir información, varios usuarios están interesados en la misma información, se debe proporcionar el acceso concurrente.

o Acelerar los cálculos, si deseamos que una tarea se ejecute rápidamente debemos dividirla en subtareas, ejecutando cada una de ellas en paralelo con las demás.

o Modularidad, construir el sistema de forma modular, dividiendo las funciones del sistema en diferentes procesos o hebras.

o Conveniencia, un solo usuario puede querer trabajar en muchas tareas al mismo tiempo.

  • En la comunicación interprocesos se emplea memoria compartida, para esto se requiere que los procesos que se estén comunicando establezcan una región de memoria compartida, esta región reside en el espacio de direcciones del proceso que crea el segmento de memoria compartida.



Por: 13-04-2009 por xeastudillo | Categorías asociadas: Capitulo 3 (Procesos), Paralelo "C"

GESTIÓN DE PROCESOS

Un proceso es un programa en ejecución caracterizado por su contador de programa, su palabra de estado, sus registros del procesador, su segmento de texto, pila y datos,etc,además es la unidad de trabajo del sistema.

ESTADOS DE UN PROCESO

Usualmente, se definen cinco estados para un proceso:

  1. Nuevo: El proceso está siendo creado
  2. En Ejecución: Se están ejecutando las instrucciones.
  3. En espera: El proceso está esperando a que se produzca un suceso.
  4. Preparado: El proceso está preparado para ejecutarse y se encuentra esperando acceso al procesador.
  5. Terminado: Ha finalizado su ejecución.


BLOQUE DE CONTROL DE PROCESOS

Para cada proceso del sistema, el sistema operativo debe mantener información de su estado indicando la situación en que se encuentre el proceso y cualquier información adicional para la ejecución del mismo. Para eso, cada proceso se representa en el sistema operativo mediante un bloque de control de proceso, que usualmente está constituido por:

  1. Estado del proceso
  2. Contador de programa
  3. Registros de la CPU
  4. Información de planificación de la CPU
  5. Información de gestión de memoria
  6. Información contable
  7. Información del estado de E/S


PLANIFICADORES

Durante el tiempo de vida, los procesos se mueven entre las diferentes colas de planificación. El sistema operativo como parte de la planificación debe seleccionar un proceso que se encuentran en las colas. Este proceso se lo realiza a través de un Planificador, entre ellos tenemos:

  1. Planificadores a largo plazo (Planificador de trabajos).
  2. Planificador a medio plazo.
  3. Planificadores a corto plazo (Planificador del CPU)  

CAMBIO DE CONTEXTO

Es salvar el contexto (PC, registros del procesador, información de la pila) del programa en ejecución, de modo que se pueda restaurar dicho contexto cuando su procesamiento concluya, suspendiendo el proceso y reanudándolo después.

OPERACIONES SOBRE PROCESOS

Un proceso puede crear un nuevo proceso. Si lo hace, el proceso creador se denomina proceso padre, y el proceso creado, proceso hijo. Sólo se necesita un padre para crear un hijo. Tal creación origina una estructura jerárquica de procesos, en la cual cada hijo tiene sólo un padre, pero un padre puede tener muchos hijos.

 




Por: 13-04-2009 por cmchamba | Categorías asociadas: Capitulo 3 (Procesos), Paralelo "C"

Proceso.

Dentro de las operaciones más básicas y la vez más complejas de nuestra PC encontramos los procesos. Siempre que le pidamos a nuestra computadora que haga algo, los procesos asumirán el trabajo y de esta manera el microprocesador dará ejecución al plan que realice el sistema operativo a través de los procesos.

Un proceso es un concepto manejado por el sistema operativo que consiste en el conjunto formado por:

  • Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador.
  • Su estado de ejecución en un momento dado, esto es, los valores de los registros de la CPU para dicho programa.
  • Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.
  • Otra información que permite al sistema operativo su planificación.

Esta definición varía ligeramente en el caso de sistemas operativos multihilo, donde un proceso consta de uno o más hilos, la memoria de trabajo (compartida por todos los hilos) y la información de planificación. Cada hilo consta de instrucciones y estado de ejecución.

Los procesos son creados y destruidos por el sistema operativo, así como también este se debe hacer cargo de la comunicación entre procesos, pero lo hace a petición de otros procesos. Los nuevos procesos son independientes y no comparten memoria (es decir, información) con el proceso que los ha creado.

En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La diferencia estriba en que un proceso solamente puede crear hilos para sí mismo y en que dichos hilos comparten toda la memoria reservada para el proceso.

Estados de un proceso.

El principal trabajo del procesador es ejecutar las instrucciones de máquina que se encuentran en memoria principal. Estas instrucciones se encuentran en forma de programas. Para que un programa pueda ser ejecutado, el sistema operativo crea un nuevo proceso, y el procesador ejecuta una tras otra las instrucciones del mismo.

En un entorno de multiprogramación, el procesador intercalará la ejecución de instrucciones de varios programas que se encuentran en memoria. El sistema operativo es el responsable de determinar las pautas de intercalado y asignación de recursos a cada proceso.

LOS PIRATAS DE SILICON VALLEY

Esta es una película que nos muestra los inicios de Apple y Microsoft y como surguieron nuevas tecnologias en un principio ya sea con Steve Jobs y Bill Gates el cual defendieron sus intereses de aquellos tiempos.

Es bastante interesante ya que es la historia real, tal y como sucedío y por ello te das cuenta que Steve Jobs tuvo en sus manos, en cierta medida, a Microsoft, y que si se hubiera dado cuenta, ahora las cosas serían muy distintas. Por si no conocéis la historia, Bill se aprovechó de la buena fe de Steve Jobs y le copió su sistema operativo, creando el tan conocido Windows.

Sin duda esta pelicula resulta muy interesante ver a el hombre más rico del mundo, en sus inicios como un joven emprendedor, capaz manejar una empresa  gigante como IBM, conformada por personas muy interesantes que subvaloraron el talento de un joven emprendedor y visionario, que pese a las dificultades y ploblemas a las que se enfreta él y sus amigos continua con su decisión de crear, emprender, dos características de los hombres de negocios, pero también alguien que entendía y mejor aún visualizaba el cambio de paradigmas que se venía en la computación.

En esos tiempos los computadores personales eran jugueteseran como un hobbie. Nadie visualizaba que serían elementos indispensables del hombre moderno.




Por: 12-04-2009 por bfcorralesx | Categorías asociadas: Capitulo 3 (Procesos), Paralelo "C"

CAPÍTULO III

 Procesos

 Un proceso es un programa en ejecución que consta de los siguientes estados:

 Nuevo: El proceso está siendo creado

En Ejecución: Se están ejecutando las instrucciones

En Espera: El proceso está esperando a que se produzca un suceso

Preparado: El proceso está en espera de que le asignen a un procesador

Terminado: Ha terminado la ejecución del proceso

 Cada proceso se representa en el sistema operativo mediante un bloque de control de procesos, el cual contiene muchos elementos de información asociados con un proceso específico, entre los que se incluyen:

 estado del proceso – contador de programa – registros de la CPU – información de la planificación de la CPU – información de gestión de memoria – información contable – información del estado de E/S.

 PLANIFICACIÓN DE PROCESOS

 Colas de Planificación: A medida que los procesos entran al sistema se colocan en una cola de trabajos que contiene todos los procesos del sistema.

Los procesos que residen en memoria principal y están preparados y en espera de ejecución se encuentran  en la cola de procesos preparados (lista enlazada, contiene un puntero al primer y último PCB de la lista).

Cada PCB incluye un campo de puntero que apunta al siguiente PCB de la cola de procesos preparados.

El sistema también incluye otras colas como son las colas de dispositivos.

 Planificadores: Durante el tiempo de vida, los procesos se mueven entre las diferentes colas de planificación. El SO como parte de la planificación debe seleccionar un proceso que se encuentran en las colas.  Este proceso se lo realiza a través de un Planificador.

En un sistema de procesamiento por lotes, se envía más procesos de los que se puede ejecutar de forma inmediata. Estos procesos se guardan en dispositivos de  almacenamiento masivo, donde se mantiene para su posterior ejecución.

 Cambios de Contexto: Cuando se produce una interrupción el sistema tiene que guardar el contexto actual del proceso que se esta ejecutado en la CPU, de modo que se pueda restaurar dicho contexto cuando su procesamiento concluya, suspendiendo el proceso y reanudándolo después.

 OPERACIONES SOBRE LOS PROCESOS

 Creación de Procesos: Un proceso puede crear nuevos procesos mientras se ejecuta, para ellos se realiza una llamada al sistema. El proceso creador se denomina padre y el creado hijo. A su vez los procesos hijos pueden crear otros procesos creando un árbol de procesos. Los procesos se pueden identificar mediante un PID (Process Identifier).

 Terminación de Procesos: Un proceso termina cuando ejecuta su última instrucción y pide al sistema operativo que lo elimine usando la llamada al sistema exit().

 COMUNICACIÓN  INTERPROCESOS

 Sistemas de Memoria Compartida: Requiere que los procesos que estén comunicando establezcan una región de memoria compartida. Hay que recordar el SO evita que otro proceso pueda ingresar a direcciones de memoria de otros procesos, por cual los procesos cooperativos deben eliminar esta restricción.

 Sistema de Paso de Mensajes: Proporciona un mecanismo que permite a los procesos comunicarse y sincronizar sus acciones sin compartir el mismo espacio de direcciones

 Sincronización: El paso de mensajes puede ser con bloque o sin bloqueo, mecanismos también conocidos como síncrono y asíncrono. Envío con bloqueo-envío sin bloqueo – recepción con bloqueo – recepción sin bloqueo.

 Almacenamiento en Búfer: Sea la comunicación directa o indirecta los mensajes intercambiados por los procesos que se están comunicando residen en una cola temporal. Básicamente, tales colas se pueden implementar de tres maneras: capacidad cero, la cola tiene una longitud máxima de cero; capacidad limitada, la cola tiene una longitud finita n; capacidad ilimitada, la longitud de la cola es potencialmente infinita.

 Sockets

Se define como un punto terminal de una comunicación. Una pareja de procesos que se comunica a través de una red emplea una pareja de sockets, uno para cada proceso.




Por: 09-04-2009 por capesantez | Categorías asociadas: Capitulo 3 (Procesos), Paralelo "C", Planificación de procesos

Un definición simple de proceso es que es un programa en ejecución ose que el proceso se en cuentra en la CPU, ademas un proceso que no se encuentre en la CPU, no es un proceso sino una unidad pasiva. Los procesos cumplen ciertos  estados como son: nuevo, en ejecucion, en espera, preparado y terminada estos pueden tener diferente orden.

Los procesos en los sistemas operativos se representan mediante un bloque de control de procesos que contienen muchos elementos de información asociadas con los procesos ademas cada bloque de control de procesos tiene un apuntado que señala a otro bloque de control de procesos el cual va ha ser el siguiente en ejecutarse.

Los procesos pueden contener una o muchas hebras. Los procesos que contienen muchas hebras pueden realizar varias tareas a la vez dependien claramente de su sistema, ya sea monoprocesador o multipleprocesador.

Para administrarla CPU entre los diferentes procesos de los usuarios se utiliza un mecanismo llamado planificacion de procesos, los cuales se encarga de otorgar la cpu a los procesos de los usuarios de tal manera tan frecuente  que el usuarios pueden interactuar con cada programa mientras se ejecuta, de tal manera q el usurario creo que tiene el computador para el solo.

Tambien se utiliza las colas de planificacion las cuales contiene los procesos que estan listos para ejecutarse. Ademas se utliliza planificadores los cuales realizan un proceso de seleccion de los procesos que se encuentran en las colas. Estos planificadores pueden ser: planificador a largo plazo o planificador a corto plazo.

Los procesos se pueden identificar mediante un identificador de procesos  como es su PID. Ademas estos procesos los procesos pueden crear diferentes procesos y a su ves estos pueden crear otros, formando un arbol de procesos, cualquier estado de procesos puede hacer una llamada al sistemas.

Los procesos se pueden comunicar si son procesos cooperativos estos pueden comunicarse ya se por compartiendo información, acelerandolos los calculos, por modularidad, y por conveniencia. La comunicacion tambien se hace mediante paso de mensajes.

Para comunicar procesos mediante una red se utilizan los sockets los cuales emplean una direccion IP con un numero de puerto.

Por: Cesar Pesantez






Por: 09-04-2009 por avcuencax | Categorías asociadas: Capitulo 3 (Procesos)

Proceso

Un proceso es un concepto manejado por el sistema operativo que consiste en el conjunto formado por:

Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador.

Su estado de ejecución en un momento dado, esto es, los valores de los registros de la CPU para dicho programa.

Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.

Otra información que permite al sistema operativo su planificación.

Esta definición varía ligeramente en el caso de sistemas operativos multihilo, donde un proceso consta de uno o más hilos, la memoria de trabajo (compartida por todos los hilos) y la información de planificación. Cada hilo consta de instrucciones y estado de ejecución.

Los procesos son creados y destruidos por el sistema operativo, así como también este se debe hacer cargo de la comunicación entre procesos, pero lo hace a petición de otros procesos. El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación (fork). Los nuevos procesos pueden ser independientes y no compartir el espacio de memoria con el proceso que los ha creado o ser creados en el mismo espacio de memoria.

En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La diferencia estriba en que un proceso solamente puede crear hilos para sí mismo y en que dichos hilos comparten toda la memoria reservada para el proceso.

Estados de un proceso

El principal trabajo del procesador es ejecutar las instrucciones de máquina que se encuentran en memoria principal. Estas instrucciones se encuentran en forma de programas. Para que un programa pueda ser ejecutado, el sistema operativo crea un nuevo proceso, y el procesador ejecuta una tras otra las instrucciones del mismo. En un entorno de multiprogramación, el procesador intercalará la ejecución de instrucciones de varios programas que se encuentran en memoria. El sistema operativo es el responsable de determinar las pautas de intercalado y asignación de recursos a cada proceso.

Diagrama de formación de un proceso

Se trata de la utilización de dos archivos, un objeto ejecutable y una biblioteca del sistema, que después se colocan en la imagen del proceso dentro de la memoria RAM y posteriormente también se dan de alta dentro de la tabla de procesos, Bloque de control del proceso.

Modelo de dos estados

180px-procesos-2estados

El modelo de estados más simple es el de dos estados. En este modelo, un proceso puede estar ejecutándose o no. Cuando se crea un nuevo proceso, se pone en estado de No ejecución. En algún momento el proceso que se está ejecutando pasará al estado No ejecución y otro proceso se elegirá de la lista de procesos listos para ejecutar para ponerlo en estado Ejecución. De esta explicación se desprende que es necesario que el sistema operativo pueda seguirle la pista a los procesos, conociendo su estado y el lugar que ocupa en memoria. Además los procesos que no se están ejecutando deben guardarse en algún tipo de cola mientras esperan su turno para ejecutar.

Modelo de cinco estados

300px-diagrama_de_estados5

Los cinco estados de este diagrama son los siguientes según Osëliyo:

Ejecución: el proceso está actualmente en ejecución.

Listo: el proceso está listo para ser ejecutado, sólo está esperando que el planificador de corto plazo así lo disponga.

Espera: el proceso no puede ejecutar hasta que no se produzca cierto suceso, como la finalización de una operación de Entrada/Salida solicitada por una llamada al sistema operativo.

Nuevo: El proceso recién fue creado y todavía no fue admitido por el sistema operativo. En general los procesos que se encuentran en este estado todavía no fueron cargados en la memoria principal.

Terminado: El proceso fue expulsado del grupo de procesos ejecutables, ya sea porque terminó o por algún fallo, como un error de protección, aritmético, etc.

Los nuevos estados Nuevo y Terminado son útiles para la gestión de procesos. En este modelo los estados Espera y Listo tienen ambos colas de espera. Cuando un nuevo proceso es admitido por el sistema operativo, se sitúa en la cola de listos. A falta de un esquema de prioridades ésta puede ser una cola FIFO. Cuando se da un suceso se pasan a la cola de listos los procesos que esperaban por ese suceso.

Si existe un esquema con diferentes niveles de prioridad de procesos es conveniente mantener varias colas de procesos listos, una para cada nivel de prioridad, lo que ayuda a determinar cuál es el proceso que más conviene ejecutar a continuación.

Asimismo, existen varias colas en estado de espera, como mínimo una por cada periférico.