Articulos de interes



Curso online gratuito - POO y Java - Click Aquí

Conceptos de Programación

Un proceso es la ejecución de un programa, es decir, los datos e instrucciones están cargados en la memoria principal, ejecutándose o esperando a hacerlo.

Un proceso no tiene porqué estar siempre en ejecución. Puede pasar por diferentes estados:

  • Preparado: Un proceso preparado es un proceso que está preparado para ejecutarse. Sólo le "falta" la CPU
  • En Ejecución: Un proceso en ejecución es un proceso que "tiene" CPU, se está ejecutando
Estados de un proceso

  • Bloqueado: Un proceso bloqueado está esperando que ocurra un suceso antes de poder "usar" la CPU. Dicho suceso suele ser una operación de Entrada / Salida: pulsar una tecla, leer de disco... Pero también puede ser que esté esperando a que otro proceso haga algo
  • 1. Creación del proceso. Está preparado para ejecutarse
  • 2. El proceso se ejecuta en CPU
  • 3. El proceso espera a que ocurra un suceso y se bloquea
  • 4. Ocurre el suceso por el que esperaba el proceso. Está preparado para ejecutarse
  • 5. El proceso "sale" de la CPU
  • 6. Fin de la ejecución del proceso

No es necesario que se cumplan todos los pasos, por ejemplo, podría ser que un proceso hiciera los pasos 1-2-6.

Desde el punto de vista del Hardware, dependiendo del número de CPU's, un sistema puede ser:

  • Sistema Monoprocesador
  • Sistema Multiprocesador
    • Sistema fuertemente acoplado
    • Sistema débilmente acoplado

Como su nombre indica, un sistema monoprocesador es aquel en el que sólo hay una CPU; y como todos habréis imaginado, un sistema multiprocesador es el que tiene varias CPU's. Éste último se divide en 2 tipos. Los sistemas fuertemente aclopados, en los que hay memoria común y los débilmente acoplados, en los que no hay memoria común. Un ejemplo de los fuertemente acoplados es un PC con varios procesadores, y otro de los débilmente acoplados es una red de ordenadores.

Desde el punto de vista del Software, también hay diferentes tipos de sistemas, atendiendo a cómo se ejecutan los procesos:

  • Sistema de Multiprogramación
  • Sistema de Multiprocesamiento

La Multiprogramación consiste en que todos los procesos se ejecuten en la misma CPU. Esto se consigue mediante la intercalación de la ejecución de los procesos.

En Multiprocesamiento cada proceso se ejecuta en una CPU. En este caso hay paralelismo real en la ejecución de los procesos.

Además de la programación imperativa o secuencial y la programación concurrente, hay otros paradigmas o enfoques de la programación.

La programación imperativa se centra en la transformación que hay que realizar para procesar los datos, pasando estos a un segundo plano. En cambio, la programación orientada a objetos gira en torno a un nuevo concepto: el objeto. Éste comprende tanto procesos como datos. Aunque pueda parecer más complejo, este tipo de programación se asemeja a la forma que tiene el ser humano de ver el mundo, frente a la programación imperativa que está orientada a la máquina. Para entenderlo mejor, un objeto es "una cosa con límites definidos", como por ejemplo, una pelota, que tiene características (datos como tamaño o color), asociadas a unas operaciones (procesos como botar o lanzar) aplicables sobre el objeto. Otras operaciones no son válidas. No puedes beberte una pelota... aunque el mundo es muy raro y hay de todo. Otra característica importante de la programación orientada a objetos es la herencia. Este mecanismo se utiliza para estructurar el programa en forma jerárquica.

La programación declarativa es otra visión de la programación, en la que no se describe cómo obtener los resultados, sino qué es lo que debemos obtener. Se divide en 2 tipos, la programación lógica y la programación funcional.

Hace unos años, cuando todavía no existían los entornos gráficos, ni el hardware que los soportara, todo se hacía en un entorno de consola. Al abrir una ventana de msdos en windows, o una consola de comandos en unix... entran escalofríos sólo de pensar que las cosas eran antes "tan frías". Eso si, no se colgaban de vez en cuando sin saber porqué. Primero Apple copiando de Xerox, y después Microsoft copiando de Apple, crearon los entornos visuales, con lo que vino la revolución multimedia y se disparó el negocio de la informática. Dichos entornos visuales constan de una interfaz gráfica "más amigable", además de ofrecernos un amplio abanico de posibilidades. No hay que creer que los entornos multitarea aparecieron con lo entornos visuales en los que se puede "tener abiertas muchas ventanitas". UNIX siempre ha sido multitarea, desde sus inicios en modo consola.

Ahora vamos a hacer un pequeño repaso de las arquitecturas existentes dentro del mundo de la informática. Cuando en los años 60 se empezaron a comercializar los ordenadores, disponibles sólo para empresas debido a su alto coste, se utilizaban sistemas centralizados o mainframes, que tenían diferentes consolas para dar acceso a múltiples usuarios. Todo el trabajo lo realizaba el mainframe. En los años 80 surgió el PC, con un precio más asequible. Nacieron los sistemas en red que permiten interconectar ordenadores de diferentes características compartiendo recursos. El siguiente paso fueron los sistemas distribuidos en los que hay diferentes estaciones interconectadas, aunque el usuario no necesita conocer su ubicación, como sucede en los sistemas en red. El acceso a los recursos es transparente, es decir, se accede a los recursos como si fueran locales, aunque no lo sean. También existen sistemas paralelos, que constan de varios procesadores operando conjuntamente.

Una vez aclarados ciertos conceptos, es hora de empezar con el curso de Metodología de la Programación.

 



Nombre:

Email:

Comentario: