sábado, 31 de octubre de 2015

Multiprocesamiento

QUE ES EL MULTIPROCESAMIENTO ?

Es la facultad del S.O. para utilizar varios procesadores físicos en el equipo, repartiendo el tratamiento de los procesos del S.O. y las aplicaciones.

 
 
MULTIPROCESAMIENTO ASIMETRICO
Cuando se trabaja de manera asimétrica, el sistema operativo selecciona a uno de los procesadores el cual jugará el papel de procesador maestro y servirá como apoyo para distribuir la carga a los demás procesadores, que reciben el nombre de esclavos.

 
MULTIPROCESAMIENTO SIMETRICO
 
Cuando se trabaja de manera simétrica, el sistema operativo y las aplicaciones tiene sus peticiones de ejecución distribuidas en los distintos procesadores
 
CONFIGURACIONES TIPICAS
 
Maestro/Esclavo
Se define también como un proceso asimétrico.

 

 
Débilmente acoplada
Cada procesador mantiene sus tablas de comandos y administración de entrada y salida. 
 
 
 









 
 
Fuertemente acoplada
Las aplicaciones y el S.O.  Que las soportan trabajan en paralelo distribuyendo los procesos.
 

 


Semaforos

DEFINICIÓN

uUn semáforo es una variable especial (o tipo abstracto de datos) que constituye el método clásico para restringir o permitir el acceso a recursos compartidos (por ejemplo, un recurso de almacenamiento del sistema o variables del código fuente) en un entorno de multiprocesamiento (en el que se ejecutarán varios procesos concurrentemente). Fueron inventados por Edsger Dijkstra en 1965 y se usaron por primera vez en el sistema operativo THEOS

uUn semáforo básico es una estructura formada por una posición de memoria y dos instrucciones, una para reservarlo y otra para liberarlo
 
OPERACIONES

u1) WAIT – DOWN
u2) SIGNAL  - UP
uLa operación V es denominada a veces subir el semáforo (up) y la operación P se conoce también como bajar el semáforo (down), y también  son llamadas signal y wait o soltary tomar.
 
FUNCIONAMIENTO

uSe empieza por inicializar la posición de memoria a 1 (o al valor correspondiente si ese recurso concreto admite más de un acceso simultáneo). Esto se hace en el inicio del programa principal.
uA continuación, cada vez que un thread o un proceso quiera acceder a dicho recurso (por ejemplo, un fichero), hará primero una petición con la primera de las llamadas disponibles. Cuando el S.O. ejecuta esa llamada, comprueba el valor que hay en la posición de memoria del semáforo, y si es distinta de cero, se limita a restarle 1 y devolver el control al programa; sin embargo, si ya es cero, duerme al proceso que hizo la petición y lo mete en la cola de procesos, en espera de que el semáforo se ponga a un valor distinto de cero.
uPor último, cuando el proceso ha terminado el acceso al recurso, usa la segunda llamada para liberar el semáforo. Cuando el S.O. la ejecuta, comprueba si la cola del semáforo está vacia, en cuyo caso se limita a incrementar el valor del semáforo, mientras que si tiene algún proceso, lo despierta, de modo que vuelve a recibir ciclos de CPU y sigue su ejecución. Si había varios procesos en espera, se irán poniendo en marcha uno tras otro a medida que el anterior va liberando el semáforo. Cuando termina el último, el semáforo se vuelve a poner a 1. Se trata, por tanto, del mismo proceso que seguiríamos con la variable, pero con la ventaja de que es un mecanismo estandar para todos los procesos, y como es una operacion atómica (esto es, que durante su ejecución no se admiten cambios de tarea), no surje el problema de que una conmutación pueda producir errores aleatorios.
TIPOS DE SEMÁFORO

uBINARIOS
u CONTADORES

Procesadores CISC y RISC


CISC Y RISC


CISC Y RISC Son un modelo de arquitectura para procesadores con un conjunto de instrucciones basados en registros.




Bloqueos e Interbloqueos de los procesos el en Sistemas Operativos


BLOQUEO MUTUO

Que es Bloqueo mutuo ?

Es el bloqueo permanente  de un conjunto de procesos que compiten por los recursos del sistema  o se comunican unos con otros.
 

CONDICIONES NECESARIS PARA EL BLOQUEO MUTUO

vbs








Procesos


LINUX


ALGUNOS COMANDOS
 

 




martes, 15 de septiembre de 2015

Paginacion y Segmentacion de memoria


Paginación de memoria



En sistemas operativos de computadoras, los sistemas de paginación de memoria dividen los programas en pequeñas partes o páginas. Del mismo modo, la memoria es dividida en trozos del mismo tamaño que las páginas llamados marcos de página. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su última página, lo que minimiza la fragmentación interna y evita la externa.
En un momento cualquiera, la memoria se encuentra ocupada con páginas de diferentes procesos, mientras que algunos marcos están disponibles para su uso. El sistema operativo mantiene una lista de estos últimos marcos, y una tabla por cada proceso, donde consta en qué marco se encuentra cada página del proceso. De esta forma, las páginas de un proceso pueden no estar contiguamente ubicadas en memoria, y pueden intercalarse con las páginas de otros procesos.
En la tabla de páginas de un proceso, se encuentra la ubicación del marco que contiene a cada una de sus páginas. Las direcciones lógicas ahora se forman como un número de página y de un desplazamiento dentro de esa página (conocido comúnmente como offset). El número de página es usado como un índice dentro de la tabla de páginas, y una vez obtenida la dirección del marco de memoria, se utiliza el desplazamiento para componer la dirección real o dirección física. Este proceso se realiza en una parte del computador específicamente diseñada para esta tarea, es decir, es un proceso hardware y no software.
De esta forma, cuando un proceso es cargado en memoria, se cargan todas sus páginas en marcos libres y se completa su tabla de páginas.

Paginación por demanda 

E la paginación por demanda entra a jugar la memria virtual (Pedazo de Disco Duro). La diferencia es que normalmente una tarea que no cabe en ninguna particion quedaria en cola, pero con la paginacion por demanda esta se asegura de que la tarea entre con la ayuda de la memoria virtual. 

Segmentación de memoria

La segmentación es una técnica de gestión de memoria que pretende acercarse más al punto de vista del usuario. Los programas se desarrollan, generalmente, en torno a un núcleo central (principal) desde el que se bifurca a otras partes (rutinas) o se accede a zonas de datos (tablas, pilas, etc).
Desde este punto de vista, un programa es un conjunto de componentes lógicos de tamaño variable o un conjunto de segmentos, es decir, el espacio lógico de direcciones se considera como un conjunto de segmentos, cada uno definido por un identificador, y consistente de un punto de inicio y el tamaño asignado.
La segmentación de un programa la realiza el compilador y en ella cada dirección lógica se expresará mediante dos valores: Número de segmento (s) ydesplazamiento dentro del segmento (d).
Una de las implementaciones más obvias y directas de un espacio de memoria segmentado es asignar un segmento distinto a cada una de las secciones del espacio en memoria de un proceso.

Relocalización


La relocalizacion se maneja por tiempos, o por porsentajes de disco lleno, o cantiad de tareas en cola.

Desasigacion de tareas


Debemos tener en cuanta que cuando hay particiones fijas y hay una desasignacion pues simplememte desasigna la stareas sin preguntar. 
Por otro lado cuando tenemos memoria con particiones dinamicas debemos preguntar y tenemos los siguientes casos: 
1. Saar tareas entre dos particiones ocupadas entonces pregunta si esta ocupada la particion y si lo esta entonces crea particion nueva. 
2. Entre una ocupada y otra desocupada pregunta y une la particion con la que esta vacia. 
3. Entre dos vacias une las tres particiones. 

Desasignación en terminos de tablas 

A continuacion tenemos en cuenta la tablade mejor ajuste para desasignar la T1, entonces como la tarea 1 esta entre dos particiones vacias entoneces se unen las 3 particiones y  la tabla quedaria de la siguiente manera. 


Almacenamiento


El tipo de almacenamiento que maneja el computador lo podemos ilustrar de mejor manera con tablas teniendo en cuanta las tacnicas de asignacion de memoria tenemos los siguientes ejercicios.



Tecnicas de Asignacion de Memoria


Tenemos una lista de tareas 

Primer ajuste

Consiste en asignar el primer hueco disponible que tenga un espacio suficiente para almacenar el programa. La principal desventaja es el reiterado uso de las primeras posiciones de memoria. Este último inconveniente repercute negativamente en la circuitería, debido a que se produce un mayor desgaste en dichas posiciones.

Siguiente ajuste

Se continúa a partir de la posición de la última asignación realizada.Es muy probable que haya un hueco a partir de esa posición, reduciendo la longitud de la búsqueda. De esta forma se resuelve el inconveniente de usar en exceso las primeras posiciones de la memoria. Cuando se alcanza el final de la memoria se vuelve a comenzar la búsqueda desde el principio (por ello este criterio es también conocido como primer ajuste circular).
                                                  

Mejor ajuste

Consiste en asignarle al proceso el hueco con menor desperdicio interno, i.e, el hueco el cual al serle asignado el proceso deja menos espacio sin utilizar. Su mayor inconveniente es su orden de complejidad (orden lineal, O(n)) debido a que hay que recorrer todo el mapa de bits o toda la lista de control (una posible solución seria usar una lista de control encadenada que mantenga los huecos ordenados por tamaño creciente). Otro problema es la fragmentación externa, debido a que se asigna el menor hueco posible, el espacio sobrante sera del menor tamaño posible lo que da lugar a huecos de tamaño normalmente insuficiente para contener programas.
                                            

Peor ajuste

Al contrario que el criterio anterior, se busca el hueco con mayor desperdicio interno, i.e, el hueco el cual al serle asignado el proceso deja más espacio sin utilizar, y se corta de él el trozo necesario (así la porción sobrante será del mayor tamaño posible y será más aprovechable). Tiene el mismo inconveniente en cuanto a orden de complejidad que el mejor ajuste (debido a la longitud de las búsquedas) y la fragmentación no resulta demasiado eficiente.

                                                  

Memoria








Podríamos decir que la memoria de la computadora es uno de los elementos más importantes para que todo funcione correctamente, es más, sin ella la PC ni siquiera podrá arrancar, tal es la importancia que este componente electrónico tiene en la estructura de nuestra computadora. La palabra Memoria es un término genérico usado para designar las partes de la computadora o de los dispositivos periféricos donde todos los datos y programas son almacenados. 


Cuando hablamos de la memoria del computador hablamos del un dispositivo que retiene, memoriza o almacena datos informaticos durante algun intevalo de tiempo, y esto lo decimos ya que la memoria RAM es una memoria de almacenamiento temporal, Sin la memoria del computador el computador no arrancaria. Interactua con la CPU y los dispositivos de entrada y salida.
Sabemos que el software es la parte logica del computador es decir la parate "Interna", y el hardaware es la parte tangible de un objeto, cuando hablamos del computador decimos que el hardware es la parte fisica que se puede tocar.
Pero cuando hablamos de la Memoria del Computador, podrias decir que ¿La memoria es software o hardware? Pues podriamos decir que es un firmware es decir es el conjunto conformado e integrado de manera de software y hardware al mismo tiempo. asi como lo es la memoria que es fisica pero al ponerla en funcionamiento es un software. 






Hablando exclusivamente de la computadora, dentro del gabinete, y acopladas a la placa madre, podemos encontrar dos tipos de memorias.



Memoria RAM - Random Access Memory (Memoria de Acceso Aleatorio)

La memoria RAM es la memoria de almacenamiento temporal que almacena los programas y los datos que están siendo procesados, solamente durante el procesamiento. Es una memoria volátil, los datos sólo permanecen en ella almacenados mientras la computadora este prendida. En el momento que la PC se apaga, todos esos datos se pierden.



Memoria ROM - Read Only Memory (Memoria sólo de Lectura)
Es usada para almacenar aplicaciones y /o datos permanentes o raramente alterados. La información generalmente es colocada en el chip de almacenamiento cuando es fabricado y el contenido de la ROM no puede ser alterado por un programa de usuario. Por ese motivo es una memoria sólo de lectura.