Вы находитесь на странице: 1из 9

Contenido

Introducción ................................................................................................................. 1

Desarrollo .................................................................................................................... 1

Modelo de procesos y Estados ................................................................................ 1

Comunicación Entre Procesos ................................................................................. 2

Condiciones de carrera ......................................................................................... 2

Regiones críticas .................................................................................................. 3

Ningún proceso tiene que esperar para siempre para entrar a su región crítica. . 4

Planificación.......................................................................................................... 4

Cuándo planificar procesos .................................................................................. 4

Categorías de los algoritmos de planificación....................................................... 4

Procesadores, Core, Multicore ................................................................................. 5

Núcleo simple ....................................................................................................... 5

Doble núcleo ......................................................................................................... 5

Otros multi-núcleos ............................................................................................... 6

Hipersubprocesamiento ........................................................................................ 6

Hipersubprocesamiento de varios núcleos ........................................................... 6

Memoria compartida ................................................................................................ 6

Memoria distribuida .................................................................................................. 7

Conclusión ............................................................................................................... 8

Bibliografía .................................................................................................................. 8
1

Introducción

Con la introducción de un nuevo paradigma de programación como lo es el cómputo


paralelo surge también la idea de cómo solucionar la programación de computadoras
paralelas, ya que la idea del cómputo paralelo sugiere la implementación de arquitecturas
paralelas, algoritmos paralelos y lenguajes de programación paralelos.

En nuestros días las arquitecturas paralelas están en su mayor auge, con la


introducción de procesadores multicore, y que no decir de los algoritmos paralelos, que
desde la propuesta de éste nuevo paradigma se han venido desarrollando, sin embargo,
en nuestros días no es muy posible hablar de lenguajes totalmente paralelizables, o un
compilador que de un programa secuencial nos dé como resultado un programa paralelo.

Desarrollo

Modelo de procesos y Estados

Un modelo de programación paralela o paradigma es un conjunto de tecnologías de


software que permiten expresar algoritmos paralelos para implantar aplicaciones en la
arquitectura adecuada.

Un modelo de programación paralela incluye distintas áreas:


 Aplicaciones
 Lenguajes de programación
 Compiladores
 Bibliotecas
 Sistemas de comunicación
 Dispositivos de I/O paralelos
2

Una primera categorización de estos modelos se realiza de acuerdo al manejo de la


memoria:
 Memoria compartida (shared memory)
 Memoria distribuida (distributed memory)
 Memoria compartida distribuida (distributed shared memory)

Comunicación Entre Procesos

Con frecuencia, los procesos necesitan comunicarse con otros procesos. Por ejemplo,
en una canalización del Shell, la salida del primer proceso se debe pasar al segundo
proceso y así sucesivamente. Por ende, existe una necesidad de comunicación entre
procesos, de preferencia en una forma bien estructurada sin utilizar interrupciones.

En resumen, hay tres cuestiones aquí. La primera se alude a lo anterior: cómo un


proceso puede pasar información a otro. La segunda está relacionada con hacer que dos
o más procesos no se interpongan entre sí. La tercera trata acerca de obtener la
secuencia apropiada cuando hay dependencias presentes.

Condiciones de carrera

En algunos sistemas operativos, los procesos que trabajan en conjunto pueden


compartir cierto espacio de almacenamiento en el que pueden leer y escribir datos. El
almacenamiento compartido puede estar en la memoria principal (posiblemente en una
estructura de datos del kernel) o puede ser un archivo compartido; la ubicación de la
memoria compartida no cambia la naturaleza de la comunicación o los problemas que
surgen. Situaciones en donde dos o más procesos están leyendo o escribiendo algunos
datos compartidos y el resultado final depende de quién se ejecuta y exactamente cuándo
lo hace, se conocen como condiciones de carrera.
3

Regiones críticas

La clave para evitar problemas aquí y en muchas otras situaciones en las que se
involucran la memoria compartida, los archivos compartidos y todo lo demás compartido
es buscar alguna manera de prohibir que más de un proceso lea y escriba los datos
compartidos al mismo tiempo. Dicho en otras palabras, lo que necesitamos es exclusión
mutua, cierta forma de asegurar que, si un proceso está utilizando una variable o archivo
compartido, los demás procesos se excluirán de hacer lo mismo.

El problema de evitar las condiciones de carrera también se puede formular de una


manera abstracta. Parte del tiempo, un proceso está ocupado realizando cálculos
internos y otras cosas que no producen condiciones de carrera. Sin embargo, algunas
veces un proceso tiene que acceder a la memoria compartida o a archivos compartidos,
o hacer otras cosas críticas que pueden producir carreras. Esa parte del programa en la
que se accede a la memoria compartida se conoce como región crítica o sección crítica.

Aunque este requerimiento evita las condiciones de carrera, no es suficiente para que
los procesos en paralelo cooperen de la manera correcta y eficiente al utilizar datos
compartidos. Necesitamos cumplir con cuatro condiciones para tener una buena solución:

 No puede haber dos procesos de manera simultánea dentro de sus regiones


críticas.
 No pueden hacerse suposiciones acerca de las velocidades o el número de
CPU.
 Ningún proceso que se ejecute fuera de su región crítica puede bloquear otros
procesos.
4

Ningún proceso tiene que esperar para siempre para entrar a su región crítica.
Planificación

Cuando una computadora se multiprograma, con frecuencia tiene varios procesos o


hilos que compiten por la CPU al mismo tiempo. Esta situación ocurre cada vez que dos
o más de estos procesos se encuentran al mismo tiempo en el estado listo. Si sólo hay
una CPU disponible, hay que decidir cuál proceso se va a ejecutar a continuación. La
parte del sistema operativo que realiza esa decisión se conoce como planificador de
procesos y el algoritmo que utiliza se conoce como algoritmo de planificación.

Cuándo planificar procesos

Una cuestión clave relacionada con la planificación es saber cuándo tomar decisiones
de planificación. Resulta ser que hay una variedad de situaciones en las que se necesita
la planificación. En primer lugar, cuando se crea un nuevo proceso se debe tomar una
decisión en cuanto a si se debe ejecutar el proceso padre o el proceso hijo. Como ambos
procesos se encuentran en el estado listo, es una decisión normal de programación y
puede ejecutar cualquiera; es decir, el programador de procesos puede elegir ejecutar de
manera legítima, ya sea el padre o el hijo.

Categorías de los algoritmos de planificación

No es sorprendente que distintos entornos requieran algoritmos de planificación


diferentes. El planificador debe optimizar no es lo mismo en todos los sistemas. Tres de
los entornos que vale la pena mencionar son:
1. Procesamiento por lotes.
2. Interactivo.
3. De tiempo real
5

Procesadores, Core, Multicore

La CPU fue un gran avance tecnológico debido a la velocidad en la que podía ejecutar
instrucciones y realizar cálculos. Pero, aunque el procesador podría realizar millones de
operaciones por segundo, sólo podían realizar una operación por vez, hasta que los
procesadores de varios núcleos y de hiper subprocesamiento llegaron. Estos
procesadores pueden realizar varios procesos a la vez.

Al principio esto puede parecer como si aumentara la velocidad de la CPU varias


veces. Pero en la práctica, los procesadores multinúcleo son más eficientes con software
diseñado específicamente para tomar ventaja de los hilos de procesamiento y de los
núcleos de los procesadores. Muchas aplicaciones diseñadas para computadoras de un
solo núcleo no irán más rápido o eficientemente en computadora con más núcleos de
procesamiento.

Núcleo simple

Este tipo de procesador más básico presenta una unidad de control y una unidad lógica
aritmética (ALU). La unidad de control realiza operaciones y ejecuta instrucciones
mientras que el ALU realiza los cálculos matemáticos. Un procesador de un solo núcleo
también contiene caché, que es una pequeña cantidad de memoria rápida incorporada
en el procesador. El caché no se considera parte del núcleo de procesamiento.

Un procesador de un núcleo puede realizar operaciones rápidamente, pero solo puede


realizar una operación a la vez.

Doble núcleo

Los procesadores de doble núcleo tienen los componentes de dos núcleos separados
ubicados en el mismo chip. Así que una CPU de dos núcleos contiene dos núcleos de
6

procesamiento completos que pueden realizar dos operaciones simultáneas. Los


procesadores de doble núcleo pueden compartir algo de memoria caché entre los dos
núcleos o pueden tener memorias caché independientes.

Otros multi-núcleos

Los avances en la tecnología de procesadores han hecho posible encajar varios


núcleos en un solo chip de procesador. Para el 2010, las CPU disponibles
comercialmente para usuarios de hogar presentan hasta seis núcleos de procesador.
Cada uno de estos núcleos puede procesar información de manera independiente a los
otros.

Hipersubprocesamiento

Los procesadores de hipersubprocesamiento pueden procesar dos juegos de


información simultánea mientras comparten los demás recursos de la CPU. Un
procesador de hipersubprocesamiento de un núcleo consiste en un núcleo de
procesamiento físico que está dividido en dos procesadores virtuales. Los procesadores
de hipersubprocesamiento sólo pueden funcionar debidamente con sistemas operativos
diseñados para utilizar este tipo de tecnología.

Hipersubprocesamiento de varios núcleos

El hipersubprocesamiento no está limitado a procesadores de un núcleo. Hay


procesadores de varios núcleos disponibles que pueden procesar 12 o más hilos de
información simultánea.

Memoria compartida

Es un sistema de cómputo en el que dos o más CPU comparten todo el acceso a una
RAM común. Un programa que se ejecuta en cualquiera de las CPU ve un espacio normal
de direcciones virtuales (por lo general paginadas). La única propiedad inusual que tiene
7

este sistema es que la CPU puede escribir cierto valor en una palabra de memoria y
después puede volver a leer esa palabra y obtener un valor distinto (tal vez porque otra
CPU lo cambió). Si se organiza en forma correcta, esta propiedad forma la base de la
comunicación entre procesadores: una CPU escribe ciertos datos en la memoria y otra
lee esos datos.

En su mayor parte, los sistemas operativos multiprocesadores son sólo sistemas


operativos regulares. Manejan las llamadas al sistema, administran la memoria, proveen
un sistema de archivos y administran los dispositivos de E/S. Sin embargo, hay ciertas
áreas en las que tienen características únicas. Estas áreas son la sincronización de
procesos, la administración de recursos y la programación de tareas.

Memoria distribuida

Los sistemas de memoria distribuida o multicomputadores pueden ser de dos tipos


básicos. El primer de ellos consta de un único computador con múltiples CPU
comunicadas por un bus de datos mientras que en el segundo se utilizan múltiples
computadores, cada uno con su propio procesador, enlazados por una red de
interconexión más o menos rápida.

Sobre los sistemas de multicomputadores de memoria distribuida, se simula memorias


compartidas. Se usan los mecanismos de comunicación y sincronización de sistemas
multiprocesadores.

Un clúster es un tipo de arquitectura paralela distribuida que consiste en un conjunto


de computadores independientes interconectados operando de forma conjunta como
único recurso computacional, sin embargo, cada computador puede utilizarse de forma
independiente o separada.
8

En esta arquitectura, el computador paralelo es esencialmente una colección de


procesadores secuenciales, cada uno con su propia memoria local, que pueden trabajar
conjuntamente.

Cada nodo tiene rápido acceso a su propia memoria y acceso a la memoria de otros
nodos mediante una red de comunicaciones, habitualmente una red de comunicaciones
de alta velocidad.

Los datos son intercambiados entre los nodos como mensajes a través de la red. Una
red de ordenadores, especialmente si disponen de una interconexión de alta velocidad,
puede ser vista como un multicomputador de memoria distribuida y como tal ser utilizada
para resolver problemas mediante computación paralela.

Conclusión
Como logramos notar estos enfoques se están desarrollando de una forma
maravillosa, pues la arquitectura paralela ya es una realidad en nuestros días, ahora el
reto se presenta a los programadores que deseen enfocarse al paradigma del cómputo
paralelo pues ahora la necesidad recae en tener unos buenos programadores de
computadoras paralelas y como logramos ver ya es posible, pues contamos con algunos
cuantos lenguajes paralelos, así como con sus compiladores, las herramientas están
frente a nosotros, sólo hace falta echar mano de ellas para realizar más cosas.

Bibliografía
Francisco Almeida, Domingo Giménez, José Miguel Mantas, and Antonio M. Vidal.
Introducción a la programación paralela. Paraninfo Cengage Learning, 2008.
https://www.ecured.cu/Proceso_inform%C3%A1tico

https://norbertomn.files.wordpress.com/2013/09/sistemas-operativos-modernos.pdf

https://techlandia.com/tipos-nucleos-procesador-lista_316143/
http://itcv-arquitectura-de-computadoras.blogspot.mx/2014/11/44-sistemas-de-
memoria-distribuida.htm

Вам также может понравиться