viernes, 6 de mayo de 2016

BLOQUEO MUTUO...


BLOQUEO MUTUO Y APLAZAMIENTO INDEFINIDO


Cuando el proceso de un sistema de multiprogramación espera en balde a que se presente un evento específico, se dice que se encuentra en un estado de bloqueado mutuo. En un bloqueo del sistema, pueden ser uno o varios los procesos que se encuentran en un bloqueo mutuo.

Los bloqueos mutuos pueden aparecer en muchas formas. Si a un proceso se le asigna la tarea de esperar a que ocurra un evento y el sistema no incluye providencias para señalar la ocurrencia de dicho evento, habrá un bloqueo mutuo con un solo proceso.
Es muy difícil detectar los bloqueos mutuos de esta naturaleza. La mayor parte de los bloqueos mutuos en los sistemas reales implican una competencia entre varios procesos por varios recursos.

BLOQUEO MUTUO SIMPLE DE RECURSOSLa mayor parte de los bloqueos mutuos de los sistemas operativos se presentan a causa de una competencia normal por los recursos dedicados, es decir, recursos que solo pueden ser utilizados por un usuario a la vez; se conocen también como recursos reutilizables en serie.
Un bloqueo muto simple. Este sistema está bloqueado porque cada proceso tiene un recurso solicitado por el otro proceso y ninguno de ellos está dispuesto a liberar el recurso que tiene.



BLOQUEO MUTUO EN SISTEMA DE SPOOL
Los sistemas de spool son procesos al bloqueo mutuo. Un sistema de spool se utiliza para mejorar la producción del sistema haciendo que un programa sea independiente de la baja velocidad de operación de dispositivos tales como las impresoras.

Una manera de reducir la posibilidad de bloqueo mutuo en los sistemas de spool es reservar un espacio mucho mayor para los archivos de spool que es considerado indispensable.

APLAZAMIENTO INDEFINIDO
Tal situación se conoce con varios nombres, entre los que se incluyen aplazamiento indefinido, bloqueo indefinido e inanición, y puede resultar tan peligrosa como un bloqueo mutuo.
El aplazamiento indefinido puede ocurrir debido a predisposiciones en las políticas de planificación de recursos del sistema.

CONCEPTOS DE RECURSOSUn sistema operativo es ante todo un administrador de recursos. Se encarga de la asignación de un amplio conjunto de recursos de varios tipos. La gran variedad de los tipos de recursos es una de las razones del interés que despiertan los sistemas operativos.

Algunos recursos son no apropiables y no pueden arrebatarse al proceso al que han sido asignados. Por ejemplo, las unidades de cinta se asignan a un proceso en particular por periodos de varios minutos u horas. Mientras la unidad de cinta permanece a un proceso y nadie puede arrebatarla a ese proceso para dársela a otro.
El código que no se puede modificar mientras se usa se le llama reentrante. El código que se puede modificar, pero que vuelve a su forma inicial cada vez que se utiliza, se llama reutilizable en serie.

CONDICIONES NECESARIAS PARA EL BLOQUEO MUTUO
Coffman, Elphick y Shoshani, establecen que deben darse las siguientes cuatro condiciones necesarias para que un bloqueo mutuo.
Los procesos exigen un control exclusivo de los recursos que necesitan (condición de exclusión mutua)
Los procesos mantienen la posesión de los recursos ya asignados a ellos mientras esperan recursos adicionales (condición de espera).
Los recursos no pueden arrebatarse a los procesos a los cuales están asignados hasta que termine su utilización (condición de no apropiación).
Existe una cadena circular de procesos en la cual cada proceso tiene uno o más recursos que son requeridos por el siguiente proceso en la cadena (condición de espera circular).

AREAS PRINCIPALES EN LA INVESTIGACION DEL BLOQUEO MUTUO
Los resultados de la investigación sobre el bloqueo mutuo han sido “satisfactorios” en cuanto a que se han encontrado métodos limpios y rápidos para manejar la mayoría de los problemas comunes. En principio existen cuatro grandes áreas de interés en la investigación sobre el bloqueo mutuo: prevención, técnicas para evitarlo, detección y recuperación.

Si a un proceso le asigna la tarea de esperar a que ocurra un evento y el sistema no incluye providencias para señalar la ocurrencia de dicho evento, habrá un bloqueo mutuo con un solo
proceso. Es muy difícil detectar los bloqueos mutuos de esta naturaleza.
La mayor parte de los bloqueos mutuos en los sistemas reales implican una
competencia entre varios procesos por varios recursos.
La mayor parte de los bloqueos mutuos de los sistemas operativos se
presentan a causa de una competencia normal por los recursos dedicados
es decir, recursos que solo pueden ser utilizados por un usuario a la vez;
se conoce también como recursos reutilizables en serie.
QUE ES UN DEMONIO
Un demonio es un tipo especial de programa que se ejecuta en segundo plano en vez de ser controlado directamente por el usuario (es un proceso no interactivo). Este tipo de programas se ejecutan de forma continua (infinita) , vale decir, que funciona sin tener relación con una terminal oconsola y, consecuentemente, sin interactuar con un humano. El origen de la palabra daemon (demonio) es una abreviación de Disks And Extensions MONitor, y proviene del primer daemon que fue un programa que automaticamente hacia copias de seguridad en cintas de datos del sistema de archivos.
Los programas demonio reciben distintas denominaciones según elsistema operativo del que se trate. Así, en MS-DOS reciben el nombre deTSRs. En Windows, en cambio, los demonios son llamados "servicios". En los sistemas operativos del tipo Unix, en particular, suelen tener las siguientes características:
No disponen de una interfaz gráfica y/o visual directa con un humano.
Proporcionan servicios específicos, como el correo electrónico, el servidor de páginas Web o la base de datos a través de conexiones víared.
No hacen uso de la entradas y salidas estándar para comunicar errores y/o registrar su funcionamiento, sino que usan archivos del sistema en zonas especiales (/var/log/ en los UNIX más modernos) o utilizan otros demonios especializados en dicho registro como el syslogd.
Un Demonio es un programa que corre continuamente y existe para el propósito de atender requerimientos periódicos de servicios que un sistema de computo espera recibir. El demonio reenvía los requerimientos a otros programas (o procesos) en la medida en que lo requiera. En el caso de los servidores de páginas Web, éstos tienen un demonio HTTP (HTTPD) cuyo oficio es esperar continuamente a que aparezcan requerimientos de páginas de clientes Web y sus usuarios.

martes, 26 de abril de 2016

EXPOSICION BLOQUEO MUTUO...

A Nosotros nos toco exponer sobre el bloqueo mutuo aqui un video sobre que es:

Bloqueo Mutuo
https://www.youtube.com/watch?v=-5S4DQqiVno

lunes, 25 de abril de 2016

COMO RESOLVER UNA ECUACION DE SEGUNDO GRADO CON DOS PROCESADORES...

Primero explicar que significan 2 procesadores:
Los procesadores Dual Core pueden ser de diferentes tipos, unos tienen sus dos núcleos dentro del mismo encapsulado de silicio, mientras otros están separados en dos encapsulados diferentes, pero siempre dentro de la misma carcasa de circuito integrado.
El nombre de Dual Core viene de la tecnología que los ha creado, la gama de procesadores Opteron de 64 bits desarrollada originalmente por AMD y que han sido mejorados con éxito con nuevas innovaciones, que pretenden hacer de este tipo de procesadores el estándar a futuro y en gran medida lo han logrado.
Un procesador Dual Core se diferencia de los llamados multiprocesadores, en que los primeros cuentan con un procesador de doble núcleo, mientras que los segundos son dos equipos trabajando de manera simultánea y en equipo, como si se tratase de un arreglo en paralelo, de manera que cada equipo cuenta con recursos propios que se juntan para realizar tareas específicas.
Los multiprocesadores son mucho más rápidos que los procesadores simples, de manera que podemos destacar que su principal diferencia, es la cantidad de recursos que disponen los núcleos para trabajar de manera más eficiente y veloz.
Conocido el funcionamiento de los procesadores Dual Core, ya podemos tomar una mejor decisión cuando nos encontremos en el dilema de seleccionar un procesador para nuestros ordenadores.
La evolución de la tecnología en los últimos años ha llevado al mercado doméstico la importancia de la paralelización de los algoritmos. Tras el ingente crecimiento de la frecuencia de los núcleos a partir de la década de los 90, los fabricantes y diseñadores se han encontrado con límites físicos que les han obligado a acudir a otras vías: la principal de ellas es la implementación de varios núcleos en un mismo chip.
Un ejemplo más práctico y semejante a la realidad, relacionado con operaciones básicas, es el siguiente:
  • Le asignamos al registro A el valor 0 (A:=0)
  • Le asignamos al registro B el valor 1 (B:=1)
  • Le asignamos al registro C el valor 2 (C:=2)
  • Incrementamos en 1 el valor del registro C (C:=C+1)
  • Le asignamos al registro D el valor 3 (D:=3)
Éste sería el algoritmo para un procesador mononúcleo. En caso de tener dos núcleos hay algunas de esas cinco tareas que pueden hacerse simultáneamente:
Núcleo 1Núcleo 2
1A:=0B:=1
2C:=2D:=0
3C:=C+1=3
¿A qué se debe ese hueco en blanco? A que hemos adelantado la tarea D:=0 ya que para ejecutar la anterior C:=C+1 se necesita que C exista y tenga un valor asignado, o de lo contrario no se puede sumar 1 a un hueco vacío. Este ejemplo simplemente juega con cuatro variables y una suma, con lo que es sencillo a más no poder; en la práctica las tareas son mucho más complejas y el algoritmo OOE es algo diferente: existe una cola de instrucciones pendientes de ejecutarse y un pequeño algoritmo que se encarga de gestionarlas: si pueden hacerse, se hacen; si no pueden hacerse en este preciso instante, se postponen para que el procesador no esté se mantenga a la espera y se ejecutarán posteriormente una vez se disponga de todos sus operandos.
La ejecución fuera de orden (out of orden execution, OoOE, OOE) empezó a gestarse en los años setenta y ochenta, aunque no fue hasta la década de los 90 cuando se popularizó en el mercado. El primer procesador que incluyó esta mejora fue el POWER1 de IBM, si bien a día de hoy es una técnica implementada en prácticamente cualquier microprocesador moderno x86, así como en muchos de los actuales ARM.

lunes, 14 de marzo de 2016

PAGINACIÒN Y SEGMENTACIÒN...

PAGINACIÓN:

Es una técnica de manejo de memoria, en la cual el espacio de memoria se divide en secciones físicas de igual tamaño, denominadas marcos de página. Los programas se dividen en unidades lógicas, denominadas páginas, que tienen el mismo tamaño que los marcos de páginas. De esta forma, se puede cargar una página de información en cualquier marco de página.
Las páginas sirven como unidad de almacenamiento de información y de transferencia entre memoria principal y memoria auxiliar o secundaria. Cada marco se identifica por la dirección de marco, que esta en la posición física de la primera palabra en el marco de página.
Las páginas de un programa necesitan estar contiguamente en memoria, aunque el programador lo observe de esta forma. Los mecanismos de paginación permiten la correspondencia correcta entre las direcciones virtuales (dadas por los programas) y las direcciones reales de la memoria que se reverencien.
Cada pagina consiste en z palabras contiguas; un espacio de direcciones N de un programa consiste de n paginas (0,1,2,3?n-1) (n*z direcciones virtuales) y el espacio de memoria consiste de m marcos de paginas (0,z,2z,?,(m-1)z)(m*z posiciones). Una dirección virtual a es equivalente a una dirección dada como una dupla (p, d), en la cual p es el número de la página y d el número de la palabra dentro de la página, de acuerdo con la relación:
a=p*z+d (0<=d<z)
p=(a/z) (parte entera de la division)
d=a mod z (resto de divisor a/z)
En las maquinas que usan aritmética binaria, el calculo de (p, d) es trivial, si z es potencia de 2. Por ejemplo, si el campo de direcciones de la instrucción es de m bits (m>6), los cuatro bits mas significativos indican el numero de la pagina y los m-4 bits restantes, el desplazamiento.
Para tener el control de las páginas, debe mantenerse una tabla en memoria que se denomina tabla de Mapas de Pagina (PMT) para cada uno de los procesos.
Hasta ahora, los métodos que hemos visto de la administración de la memoria principal, nos han dejado con un problema: fragmentación, (huecos en la memoria que no pueden usarse debido a lo pequeño de su espacio) lo que nos provoca un desperdicio de memoria principal.
Una posible solución para la fragmentación externa es permitir que espacio de direcciones lógicas lleve a cabo un proceso en direcciones no contiguas, así permitiendo al proceso ubicarse en cualquier espacio de memoria física que esté disponible, aunque esté dividida. Una forma de implementar esta solución es a través del uso de un esquema de paginación. La paginación evita el considerable problema de ajustar los pedazos de memoria de tamaños variables que han sufrido los esquemas de manejo de memoria anteriores. Dado a sus ventajas sobre los métodos previos, la paginación, en sus diversas formas, es usada en muchos sistemas operativos.
Al utilizar la memoria virtual, las direcciones no pasan en forma directa al bus de memoria, sino que van a una unidad administradora de la memoria (MMU ?Memory Management Unit). Estas direcciones generadas por los programas se llaman direcciones virtuales y conforman el hueco de direcciones virtuales. Este hueco se divide en unidades llamadas páginas. Las unidades correspondientes en la memoria física se llaman marcos para página o frames. Las páginas y los frames tienen siempre el mismo tamaño.
Tablas de páginas
Cada página tiene un número que se utiliza como índice en la tabla de páginas, lo que da por resultado el número del marco correspondiente a esa página virtual. Si el bit presente / ausente es 0, se provoca un señalamiento (trap) hacia el sistema operativo. Si el bit es 1, el número de marco que aparece en la tabla de páginas se copia en los bits de mayor orden del registro de salida, junto con el ajuste (offset) de 12 bits, el cual se copia sin modificaciones de la dirección virtual de entrada. Juntos forman una dirección física de 15 bits. El registro de salida se coloca entonces en el bus de la memoria como la dirección en la memoria física.
En teoría, la asociación de las direcciones virtuales con las físicas se efectúa según lo descrito. El número de página virtual se divide en un número de página virtual (los bits superiores)y un ajuste (los bits inferiores). El número de página virtual se utiliza como un índice en la tabla de páginas para encontrar la entrada de esa página virtual. El número de marco (si existe) se determina a partir de la tabla de páginas. El número de marco se asocia al extremo superior del ajuste y reemplaza al número de página virtual para formar una dirección física que se puede enviar a la memoria.
La finalidad de la tabla de páginas es asociar las páginas virtuales con los marcos. En términos matemáticos, la tabla de páginas es una función, cuyo argumento es el número de página virtual y como resultado el número del marco físico. Mediante el resultado de esta función, se puede reemplazar el campo de la página virtual de una dirección virtual por un campo de marco, lo que produce una dirección en la memoria física. Sin embargo hay que enfrentar dos aspectos fundamentales:
  1. La tabla de páginas puede ser demasiado grande.
  2. La asociación debe ser rápida.
El primer punto proviene del hecho de que las computadoras modernas utilizan direcciones virtuales de al menos 32 bits. Por ejemplo, si el tamaño de página es de 4K, un hueco de direcciones de 32 bits tiene un millón de páginas; en el caso de un hueco de direcciones de 64 bits, se tendría más información de la que uno quisiera contemplar.
El segundo punto es consecuencia del hecho de que la asociación virtual ? física debe hacerse en cada referencia a la memoria. Una instrucción común tiene una palabra de instrucción y también un operando de memoria. Entonces es necesario hacer una, dos o más referencias a la tabla de páginas por cada instrucción.
Características de la paginación:
  • El espacio de direcciones lógico de un proceso puede ser no contiguo.
  • Se divide la memoria física en bloques de tamaño fijo llamados marcos (frames).
  • Se divide la memoria en bloques de tamaño llamados paginas.
  • Se mantiene información en los marcos libres.
  • Para correr un programa de n paginas de tamaño, se necesitan encontrara n marcos y cargar el programa.
  • Se establece una tabla de paginas para trasladar las direcciones lógicas a físicas.
  • Se produce fragmentación interna.
Ventajas de la paginación
  1. Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el resto se cargara bajo la solicitud.
  2. No es necesario que las paginas estén contiguas en memoria, por lo que no se necesitan procesos de compactación cuando existen marcos de paginas libres dispersos en la memoria.
  3. Es fácil controlar todas las páginas, ya que tienen el mismo tamaño.
  4. El mecanismo de traducción de direcciones (DAT) permite separar los conceptos de espacio de direcciones y espacios de memoria. Todo el mecanismo es transparente al usuario.
  5. Se libera al programador de la restricción de programar para un tamaño físico de memoria, con lo que s e aumenta su productividad. Se puede programar en función de una memoria mucho más grande a la existente.
  6. Al no necesitarse cargar un programa completo en memoria para su ejecución, se puede aumentar el numero de programas multiprogramándose.
  7. Se elimina el problema de fragmentación externa.
Desventajas de la paginación
  1. El costo de hardware y software se incrementa, por la nueva información que debe manejarse y el mecanismo de traducción de direcciones necesario. Se consume mucho mas recursos de memoria, tiempo en el CPU para su implantación.
  2. Se deben reservar áreas de memoria para las PMT de los procesos. Al no ser fija el tamaño de estas, se crea un problema semejante al de los programas (como asignar un tamaño óptimo sin desperdicio de memoria, u "ovearhead" del procesador).
  3. Aparece el problema de fragmentación interna. Así, si se requieren 5K para un programa, pero las paginas son de 4K, deberán asignárseles 2 paginas (8k), con lo que quedan 3K sin utilizar. La suma de los espacios libres dejados de esta forma puede ser mayor que el de varias paginas, pero no podrá ser utilizados. Debe asignarse un tamaño promedio a las páginas, evitando que si son muy pequeñas, se necesiten TABLAS BMT y PMT muy grandes, y si son muy grandes, se incremente el grado de fragmentación interna.
Traducción de Direcciones
La dirección generada por la CPU se divide en:
  • Numero de pagina (p): utilizado como indice en la tabla de pagins que contiene la dirección base de cada pagina en la memoria fisica.
  • Offset de la pagina (d): combinado con la dirección base dfine la direccion fisica que será enviada a la unidad de memoria.

martes, 8 de marzo de 2016

APRENDIENDO A MANEJAR LENGUAJE C EN LINUX...

Si bien existen otros compiladores, lo más usual y más sencillo para compilar un programa en GNU/Linux es el compilador gcc, ya que es el que se incluye en todas las distribuciones.
De cualquier forma, es posible realizar la compilación desde línea de comandos o desde el entorno gráfico.
Para realizarla desde línea de comandos, será necesario contar con una terminal (xterm, konsole, gnome-terminal, etc). No es necesario contar con permisos de root para crear o compilar programas. En esa terminal será necesario escribir
gcc hola.c
Si no existen errores en el código, este comando nos creará un archivo ejecutable, que por omisión se llama "a.out", y que podemos ejecutar desde la línea de comandos de la siguiente forma:
./a.out
Hola mundo 
Es una buena idea especificar el nombre que el archivo ejecutable tendrá, pasando como parámetro al compilador la opción -o, de la siguiente forma:
gcc hola.c -o hola
Con lo cual, el nombre del archivo creado seráhola. Este archivo no tiene extensión ya que es la forma usual de llamar a los archivos ejecutables en los entornos UNIX y GNU/Linux, sin embargo funcionaría de la misma forma si se llamara hola.exe.
Para ejecutarlo, haremos los mismo que en el caso anterior:
./hola
Hola mundo 
Existen otros parámetros que podemos especificar al compilador en la línea de comandos, dependiendo del tipo de programa, y en función de la complejidad del mismo. Por ejemplo, podemos agregar las siguientes opciones:
gcc hola.c -o hola -Wall -pedantic
La opción -Wall nos mostrará todos los avisos que produzca el compilador, no solamente los errores. Los avisos nos indican dónde y/o porqué podría surgir algún error en nuestro programa.
La opción -pedantic nos aporta más información sobre los errores y los avisos mostrados por GCC.

viernes, 4 de marzo de 2016

SEGMENTACION DE MEMORIA...

Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su división lógica; llevándose a cabo una agrupación lógica de la información en bloques de tamaño variable denominados segmentos. Cada uno de ellos tienen información lógica del programa: subrutina, arreglo, etc. Luego, cada espacio de direcciones de programa consiste de una colección de segmentos, que generalmente reflejan la división lógica del programa. La segmentación permite alcanzar los siguientes objetivos:
   1. Modularidad de programas: cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa.
   2. Estructuras de datos de largo variable: ejm. Stack, donde cada estructura tiene su propio tamaño y este puede variar.
   3. Protección: se puede proteger los módulos del segmento contra accesos no autorizados.
   4. Comparición: dos o más procesos pueden ser un mismo segmento, bajo reglas de protección; aunque no sean propietarios de los mismos.
   5. Enlace dinámico entre segmentos: puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecu
PAGINACION POR DEMANDA
La paginación por demanda introdujo la idea de cargar más una porción delprograma en la memoria para su procesamiento.
Con la paginación pordemanda, las tareas siguen divididas en páginas de tamaño igual queinicialmente residen en almacenamiento secundarios.
Cuando se empieza aejecutar la tarea, sus páginas pasan a la memoria solo conforme se necesitan.La paginación pro demanda aprovecha el hecho que los programas seescriben de manera secuencial, de manera que mientras una sección omodulo esta en proceso, los demás están ocioso (madnick & donovan, 1974).Una de las innovaciones de mayor importancia en la paginación por demandaes que hizo posible el amplio uso de la memoria virtual, el esquema depaginación por demanda permite al usuario ejecuta tareas con menosmemoria principal de lo que se requería si el sistema operativo estuviera utilizando el esquema de asignación de memoria paginada que ya se describió.
FALLO DE PAGINA
Un fallo de página es la secuencia de eventos que ocurren cuando un programa intenta acceder a datos (o código) que está en su espacio de direcciones, pero que no está actualmente ubicado en la RAM del sistema. El sistema operativo debe manejar los fallos de página haciendo residentes en memoria los datos accedidos, permitiendo de esta manera que el programa continue la operación como que si el fallo de página nunca ocurrió.
En el caso de nuestra aplicación hipotética, el CPU primeramente presenta la dirección deseada (12374) al MMU. Sin embargo, el MMU no tiene traducción para esta dirección. Por tanto, interrumpe al CPU y causa que se ejecute un software, conocido como el manejador de fallos de página. El manejador de fallos de página determina lo que se debe hacer para resolver esta falla de página. El mismo puede:
Encontrar dónde reside la página deseada en disco y la lee (este es usualmente el caso si el fallo de página es por una página de código)
Determina que la página deseada ya está en RAM (pero no está asignada al proceso actual) y reconfigura el MMU para que apunte a el
Apunta a una página especial que solamente contiene ceros y asigna una nueva página para el proceso solamente si este intenta alguna vez escribir a la página especial (esto se llama una página de copia en escritura y es utilizada a menudo por páginas que contienen datos inicializados a cero)
Obtener la página deseada desde otro lugar (lo que se discute en detalle más adelante)
Mientras que las primeras tres acciones son relativamente sencillas, la última no lo es. Por eso necesitamos cubrir algunos tópicos adicionales.
 
SEGMENTACION PAGINADA
Paginación y segmentación son técnicas diferentes, cada una de las cuales busca brindar las ventajas enunciadas anteriormente.
Para la segmentación se necesita que estén cargadas en memoria, áreas de tamaños variables. Si se requiere cargar un segmento en memoria; que antes estuvo en ella y fue removido a memoria secundaria; se necesita encontrar una región de la memoria lo suficientemente grande para contenerlo, lo cual no es siempre factible; encambio "recargar" una pagina implica solo encontrar un merco de pagina disponible.
A nivel de paginación, si quiere referenciar en forma cíclicas n paginas, estas deberán ser cargadas una a una generándose varias interrupciones por fallas de paginas; bajo segmentación, esta pagina podría conformar un solo segmento, ocurriendo una sola interrupción, por falla de segmento. No obstante, si bajo segmentación, se desea acceder un área muy pequeña dentro de un segmento muy grande, este deberá cargarse completamente en memoria, desperdiciándose memoria; bajo paginación solo se cargara la página que contiene los ítems referenciados.
Puede hacerse una combinación de segmentación y paginación para obtener las ventajas de ambas. En lugar de tratar un segmento como una unidad contigua, este puede dividirse en páginas. Cada segmento puede ser descrito por su propia tabla de páginas.
Los segmentos son usualmente múltiplos de páginas en tamaño, y no es necesario que todas las páginas se encuentren en memoria principal a la vez; además las páginas de un mismo segmento, aunque se encuentren contiguas en memoria virtual; no necesitan estarlo en memoria real.
Las direcciones tienen tres componentes: (s, p,d), donde la primera indica el numero del segmento, la segunda el numero de la pagina dentro del segmento y la tercera el desplazamiento dentro de la pagina. Se deberán usar varias tablas:
SMT (tabla de mapas de segmentos): una para cada proceso. En cada entrada de la SMT se almacena la información descrita bajo segmentación pura, pero en el campo de dirección se indicara la dirección de la PMT (tabla de mapas de páginas) que describe a las diferentes páginas de cada segmento.
PMT (tabla de mapas de páginas): una por segmento; cada entrada de la PMT describe una página de un segmento; en la forma que se presento la pagina pura.
TBM (tabla de bloques de memoria): para controlar asignación de páginas por parte del sistema operativo.
JT (tabla de Jobs): que contiene las direcciones de comienzo de cada una de las SMT de los procesos que se ejecutan en memoria.
En el caso, de que un segmento sea de tamaño inferior o igual al de una pagina, no se necesita tener la correspondiente PMT, actuándose en igual forma que bajo segmentación pura; puede arreglarse un bit adicional (S) a cada entrada de la SMT, que indicara si el segmento esta paginado o no.
Ventajas de la segmentación paginada

El esquema de segmentación paginada tiene todas las ventajas de la segmentación y la paginación:
Debido a que los espacios de memorias son segmentados, se garantiza la facilidad de implantar la comparticion y enlace.
Como los espacios de memoria son paginados, se simplifican las estrategias de almacenamiento.
Se elimina el problema de la fragmentación externa y la necesidad de compactación.

UBUNTU Y LINUX! QUE BUENA IDEA...

Ubuntu es un sistema operativo basado enGNU/Linux y que se distribuye como software libre, el cual incluye su propio entorno de escritorio denominado Unity. Su nombre proviene de la ética homónima, en la que se habla de la existencia de uno mismo como cooperación de los demás.
Está orientado al usuario promedio, con un fuerte enfoque en la facilidad de uso y en mejorar la experiencia del usuario. Está compuesto de múltiple softwarenormalmente distribuido bajo una licencialibre o de código abierto. Estadísticas web sugieren que la cuota de mercado de Ubuntu dentro de las distribuciones Linux es, aproximadamente, del 49 %,[3] [4] y con una tendencia a aumentar como servidor web.[5] Y un importante incremento activo de 20 millones de usuarios para fines del 2011.[6]
Su patrocinador, Canonical, es una compañía británica propiedad del empresariosudafricano Mark Shuttleworth. Ofrece el sistema de manera gratuita, y se financia por medio de servicios vinculados al sistema operativo[7] [8] y vendiendo soporte técnico.[9]Además, al mantenerlo libre y gratuito, la empresa es capaz de aprovechar los desarrolladores de la comunidad para mejorar los componentes de su sistema operativo. Extraoficialmente, la comunidad de desarrolladores proporciona soporte para otras derivaciones de Ubuntu, con otros entornos gráficos, como KubuntuXubuntu,Ubuntu MATEEdubuntuUbuntu Studio,MythbuntuUbuntu GNOME y Lubuntu.[10]
Canonical, además de mantener Ubuntu, también provee de una versión orientada aservidoresUbuntu Server, una versión para empresas, Ubuntu Business Desktop Remix, una para televisores, Ubuntu TV, otra versión para tabletas Ubuntu Tablet,[11] tambiénUbuntu Phone[12] y una para usar el escritorio desde teléfonos inteligentes, Ubuntu for Android.[13] [14] [15]
Cada seis meses se publica una nueva versión de Ubuntu. Esta recibe soporte por parte de Canonical durante nueve meses por medio de actualizaciones de seguridad, parches para bugs críticos y actualizaciones menores de programas. Las versiones LTS (Long Term Support), que se liberan cada dos años,[16] reciben soporte durante cinco años en los sistemas de escritorio y de servidor.[17]

Inicio de Ubuntu

Ubuntu es una bifurcación del código base del proyecto Debian.[18] El objetivo inicial era hacer de Debian una distribución más fácil de usar y entender para los usuarios finales, corrigiendo varios errores de este y haciendo más sencillas algunas tareas como la gestión de programas. Su primer lanzamiento fue el 20 de octubre de 2004.[19]
Ubuntu usa primariamente software libre, haciendo excepciones en el caso de varioscontroladores privativos (además de firmwarey software). Antes de cada lanzamiento, se lleva a cabo una importación de paquetes, desde Debian, aplicando las modificaciones específicas de Ubuntu. Un mes antes del lanzamiento, comienza un proceso decongelación de importaciones, ayudando a que los desarrolladores puedan asegurar que el software sea suficientemente estable.
Desde el inicio del proyecto, Shuttleworth proporcionó el soporte económico gracias a los beneficios obtenidos después de vender su empresa Thawte a VeriSign, por unos 575 millones de dólares estadounidenses.[20]
El 8 de julio de 2005, Shuttleworth anunció la creación de la Fundación Ubuntu y aportaron 10 millones de dólares como presupuesto inicial. El propósito de la fundación es el de asegurar soporte y desarrollo para todas las futuras versiones de Ubuntu.[21]
El 12 de marzo de 2009, Ubuntu anunció soporte para plataformas externas de administración de computación en nube, como Amazon EC2.[22]

Fotografía de un CD de Ubuntu 7.10

Enfoque en el software

A principios de 2009 los ingenieros ydiseñadores de Canonical se dan cuenta de que la gestión de paquetes e instalación de aplicaciones es demasiado fragmentada y hasta compleja, por ende se planifica la creación de una aplicación central para el manejo e instalación de aplicaciones. En octubre de 2009 Canonical lanza oficialmente el Centro de software de Ubuntu (Ubuntu Software Center), permite buscar, instalar, desinstalar aplicaciones, y además permite agregar repositorios de terceros.[23] En octubre de 2010 se introduce la venta de aplicaciones por medio de pagos en línea en el Centro de software de Ubuntu.[24]
El 3 de junio de 2010, Mark Shuttleworth anuncia el trabajo en conjunto con el proyecto Linaro y su desarrollo de código abierto para Linux en procesadores con tecnología ARM.[25] A fines de septiembre se da a conocer antes del lanzamiento de Ubuntu 10.10, que esta versión incluiría un mejor y más estable soporte para procesadores ARM.[26]
En octubre y noviembre de 2010, se anuncian drásticos e importantes cambios en el escritorio de Ubuntu, la inclusión de la interfaz de usuario Unity (creada por Canonical), la cual será utilizada en la versión de escritorio de Ubuntu.[27] También Mark Shuttleworth anuncia que en futuras versiones de Ubuntu, Unity se implementará en el servidor gráficoWayland, y no en el servidor gráfico X (como se hacía habitualmente).[28] Sin embargo, en 2013 se decide que no será Wayland el servidor gráfico elegido, sino que uno nuevo creado por Canonical, llamado Mir.
El 18 de enero de 2011, Mark Shuttleworth anuncia la inclusión de aplicaciones creadas en Qt para ser lanzadas a partir de «Natty+1» (después del lanzamiento de Ubuntu 11.04) y en futuras versiones de Ubuntu. Una de las metas de esta decisión es facilitar la integración al sistema de aplicaciones Qt, en comparación con las típicas aplicaciones desarrolladas en GTK que lucen nativas en lainterfaz de usuario de Ubuntu. Para terminar con las dificultades técnicas de configuración y preferencias del sistema entre Qt y GTK, se crearán enlaces dconf para las aplicaciones Qt, con lo que se pretende centralizar la configuración del sistema, ya sea GTK o Qt, en un solo lugar.[29]
El 9 de marzo de 2011, Canonical anuncia la discontinuidad de 'Ubuntu Netbook Edition', debido a la integración de la interfaz Unity en su versión de escritorio a partir de Ubuntu 11.04, y así eliminar la redundancia de sus versiones con un mismo escritorio. Canonical también anuncia que los nombres 'Ubuntu Desktop Edition' y 'Ubuntu Server Edition' se eliminan, dejando solamente el nombre 'Ubuntu' para uso en todo tipo de computadoras, y 'Ubuntu Server' para su uso en servidores.