sábado, 18 de mayo de 2013

Investigación: Sistema operativo Solaris




Historia de Solaris (1982-1990)

La historia comienza en Silicon Valley en febrero de 1982 fecha en la que nace la empresa Sun Microsystems fundada por el alemán Andy Bechtolsheim y los norteamericanos Vinod Khosla, Bill Joy, y Scott McNealy
En el mismo año de su fundación Sun comercializa su primera estación y fue bautizada como Sun-1, dicha máquina estaba gobernada por un microprocesador Motorola a 6 MHz, tenía un 1 mbyte de RAM y un disco duro de 60 mbyte. El sistema operativo al mando era el SunOS 1 basado en BSD 4.1 (1981) incorporando TCP/IP.  SunOs 1 está basado en BSD pero ¿Qué es BSD?
La empresa AT&T creadora de las primeras versiones de Unix autorizó a la Universidad de California en Berkeley a realizar cambios en el código fuente para poder adaptarlo a sus necesidades; este conjunto de cambios dio lugar a una nueva variante de Unix llamada BSD (Berkeley Software Distribution).
En el año 1984 Sun desarrolla el Sistema de archivos de red NFS (Network File System) que permite a cualquier máquina conectada a la red acceder a discos remotos como si estuvieran en la máquina local. La tecnología NFS fue licenciada gratuitamente para la industria estableciendo un nuevo estándar que incorporan en su nueva versión de sistema SunOs 2 en el año 1985.
Un año más tarde con la salida de la versión de SunOS 3 (1986) se introducen utilidades de System V y coincide en el tiempo con el lanzamiento de la estación Sun-3 que todavía continúa basándose en un micro Motorola a 25 MHz y 32 mbyte de RAM.
Ya en 1987 se produce un cambio importante en con el lanzamiento la serie Sun-4 que adopta por primera vez la arquitectura SPARC V7 RISC.
SunOS 4 (1989) es la primera versión del sistema operativo que soporta la nueva arquitectura Sparc de la serie Sun-4 que continua basada en BSD 4.3 pero con cambios hacia la arquitectura System V.
Con la versión SunOs 4.1.1 finaliza una primera etapa del sistema operativo a la que Sun Microsystem denomina Solaris 1 y utilizara este nombre para referirse al sistema SunOs desde 1982 a 1990.

A continuación podemos ver la evolución Solaris 1 SunOs de 1982 a 1989:
Fecha                            Versión de SunOs

1982 Febrero              SunOS 1.0 basada en BSD

1984 Abril                    SunOS 1.1 basada en BSD
1986 Febrero              SunOS 3.0 Introduce utilidades de System V
1986 Septiembre       SunOS 3.2 Introduce utilidades de System V
1988                             SunOS 3.5 Introduce utilidades de System V
1989                             SunOS 4.0 Soporte microprocesador Sparc/ arquitectura System V STREAMS I/O 1990 Noviembre Solaris 1.0       (SunOS 4.1.1)



Solaris 2 (1990-2006)
En Julio de 1991 se produce el lanzamiento de SunOS 5.0 que incorpora importantes cambios:

 Pasa a denominarse Solaris 2

 Se basa en System V Release 4
 Se introduce CDE (Common Desktop Environment) como escritorio estándar aunque conserva OpenWindows.
 Soporte de Multiprocesamiento Simétrico (SMP) que posibilita el uso de múltiples CPUs.
Desde 1991 se produce un rápido avance de versiones de Solaris hasta la actual Solaris 10, la siguiente lista es un breve resumen de la evolución de Solaris y las tecnologías que ha incorporado al sistema:
Versión de Solaris                     Año                         Tecnologías
Solaris 1.0 (SunOS 4.1.1)           1990
Solaris 2.3 (SunOS 5.3)              1993                      NFS V3 Y CDE
Solaris 2.4(SunOS 5.4)               1994                      x86 platform
Solaris 2.6 (SunOS 5.6)              1998                      Kerberos, PAM, TrueType 64 bits para plataforma
Solaris 7(SunOS 5.7)                  1998                     UltraSPARC
Solaris 8 beta                            1999                     IPv6 support
Solaris 9 SPARC                          2002                     Solaris Volume Manager
Solaris 10                                    2004                      Java Desktop
Solaris 10                                   2006                       Java Desktop, Solaris Containers, Service                Management Facility (SMF) NFSv4 /ZFS
Durante este tiempo Sun ha desarrollado nuevas tecnologías para mantener su sistema operativo entre los más potentes y fiables del mercado. Sun Microsystems también ha integrado en Solaris tecnologías de Software Libre y como ejemplo de esta sinergia tenemos el escritorio Gnome.
OpenSolaris
OpenSolaris nace en Junio de 2005 y es el resultado de la liberación de la mayor parte del código fuente de Solaris pasando a ser un proyecto de software libre. Desde este nuevo enfoque nacen nuevas distribuciones que aportan mejoras al sistema además de enriquecerlas con más software.
Distribuciones OpenSolaris

OpenSolaris.org es el punto de encuentro donde se pueden ver los proyectos abiertos ya sean para crear nuevas distribuciones o grupos de trabajo que aportan nuevas funcionalidades, mejoras, software etc… 

De las diferentes aportaciones realizadas por comunidades de usuarios o desarrolladores nacen las siguientes distribuciones:
Solaris 10 y Solaris 10 Express

Es la versión oficial de Sun Microsystems disponible para arquitectura Sparc y x86. Es estable y robusta estando diseñada para entornos de producción donde se necesita estabilidad. Es gratuita y podemos descargarla del sitio web oficial de Sun.

Solaris 10 Express contiene todas las nuevas incorporaciones de funcionalidades y software que darán lugar a la próxima versión estable de Solaris por lo tanto está recomendado para entornos de desarrollo o preproducción.
Nexenta OS, Belenix y Schillix

Nexenta OS es una distribución que aprovecha las bondades de un sistema como OpenSolaris añadiéndole software libre que sea habitual en distribuciones Linux. Como Gnome, apache, PHP etc... Podemos ver las características del sistema y descargar Nexenta desde su web.  

Belenix y Schillix son dos distribuciones en Live-CD de momento ambas son muy prematuras estando en versiones alpha. Estos Live-CD son de vital importancia para caidas del sistema, recuperación de datos, etc...

Seguridad Integrada


La seguridad es mucho más que una combinación de tecnologías: es una disciplina continua. 
Dell y Sun comprenden este concepto y asumieron el compromiso de mejorar la seguridad tanto  en el hardware como en el sistema operativo. La tecnología de administración de usuarios y  derechos de procesamiento de Solaris permite reducir los riesgos al otorgar a los usuarios y las aplicaciones las capacidades mínimas necesarias para llevar a cabo sus funciones. A fin de utilizar una base segura para la implementación de servicios, los administradores pueden hacer uso de la  funcionalidad de seguridad predeterminada de Solaris para obtener una excelente minimización  y protección. Además, el software Solaris Trusted Extensions permite proteger los datos más importantes de su organización mediante el uso de etiquetas para implementar el control de acceso obligatorio. 
Combine estas excelentes funciones con la seguridad integrada de los servidores Dell PowerEdge y obtendrá un entorno de servidores sólido, confiable y seguro. En realidad, la última generación de servidores PowerEdge es la más segura que hemos fabricado hasta el momento. Las 
características estándar incluyen un puerto USB interno bloqueado, un conmutador de intrusiones del chasis, cubiertas con bloqueo y un módulo de plataforma confiable (TPM) integrado que permite la autenticación del sistema, brinda asistencia en el cifrado de datos y contribuye a evitar manipulaciones.


Solaris Trusted Extensions hacer cumplir una política de control de acceso obligatorio en todos los aspectos del sistema operativo, incluido el acceso al dispositivo, archivos, redes, servicios de impresión y gestión de ventanas. Esto se logra mediante la adición de etiquetas de sensibilidad a los objetos, estableciendo de ese modo relaciones explícitas entre estos objetos. Sólo una autorización apropiada (y explícito) permite que las aplicaciones y los usuarios leer y / o escribir el acceso a los objetos.


Sistema de archivos ZFS
Solaris 10 utiliza el sistema dinámico de Archivos ZFS, fue diseñado e implementado por un equipo de Sun liderado por Jeff Bonwick.
Una de sus ventajas es su gran capacidad 128 bits cuyo diseño hace que sea tan grande que en la práctica nunca se podría exceder sus límites. Ofrece una administración sencilla que automatiza y consolida complicados conceptos de almacenamiento y por otro lado protege todo los datos con sumas de 64 bits que detectan y corrigen el daño de datos silenciosos.
Además, utiliza un modelo transaccional copy-on-write. Conteniendo todos los punteros a bloques de un sistema de ficheros un checksum de 256 bits sobre el bloque apuntado, que
se comprueba al leer el bloque. Los bloques que contienen datos activos no se sobrescriben nunca; en su lugar, se reserva un nuevo bloque, y los datos modificados se escriben en él. Incluyendo para la sobrecarga, varias actualizaciones en grupos de transacciones, y se utiliza un log de intentos cuando se necesitan escrituras síncronas.
Otra ventaja en comparación con el sistema NTFS es que la interfaz de la línea de comandos simplifica drásticamente la administración. Se orienta a las tareas, por lo que
los administradores pueden expresar las tareas que desean llevar a cabo en lugar de tener que memorizar o buscar comandos crípticos.
En los sistemas FAT o NTFS los datos se pueden dañar de diferentes modos, como por ejemplo un error de sistema o una interrupción del suministro eléctrico inesperada, pero
ZFS impide el daño a los datos ya que mantiene la coherencia de los mismos en todo momento. Todas las operaciones son transaccionales. De este modo, no sólo se mantiene la coherencia sino también se eliminan todas las restricciones sobre la orden de E/S y se permite que el conjunto de los cambios se realice correctamente o se produzca un error.
Y aunque a decir verdad tiene mucho de bueno (bastante) el soporte para otros sistemas aún no está implementado. Pero tan solo será cuestión de tiempo.
En definitiva el nuevo sistema de archivos ZFS presenta características muy favorables en cuanto a almacenamiento, prevención de daños y capacidad.

Método de actualización
Actualización de Solaris 10 con "Live Upgrade"
"Live Upgrade" es una característica de los sistemas Solaris recientes que permite actualizar un sistema operativo completo mientras está funcionando. La actualización se realiza en una partición separada, por lo que no afecta en absoluto al sistema en producción. Una vez completada la actualización, reiniciamos la máquina y podremos elegir entre la versión anterior del sistema operativo, y la versión actualizada del mismo. Si la versión actualizada nos da cualquier tipo de problema, podemos volver a la versión anterior sin más que reiniciar la máquina de nuevo y elegir el otro entorno.
Dado que ambas versiones del sistema operativo residen en particiones separadas, no existe interferencia entre ellas y podemos saltar de una a otra con un simple reinicio.
De esta forma, actualizar un sistema Solaris supone un corte de servicio de un par de minutos (lo que tarde en reiniciar la máquina) y no las dos horas necesarias para hacer una actualización tradicional. Además, tenemos la seguridad de regresar a la versión anterior si surge cualquier tipo de problema.

Interfaz Gráfica de Solaris:

Fox Toolkit 

Entre los sistemas operativos que soporta están: Linux, FreeBSD, Sun Solaris, Windows 9x, y Windows NT.
Fox toolkint es una clase grafica que fue escrita en C++, Java, C, Fortran que te permitirá crear aplicaciones con GUI milti-plataforma. Podrás usar iconos, imágenes, línea de ayuda, selección, incluso herramientas para trabajar con Open GL y poder manipular objetos 3D
Solaris también es llamado Oracle Solaris
GUI
Es una interfaz gráfica de usuario como lo mencione anteriormente, este utiliza imágenes y objetos gráficos  para la representación de la información y acciones disponibles en la interfaz
Habitualmente las acciones se realizan mediante manipulación directa, para facilitar la interacción del usuario con la computadora. Surge como evolución de las interfaces de línea de comandos que se usaban para operar los primeros sistemas operativos y es pieza fundamental en un entorno gráfico. Como ejemplos de interfaz gráfica de usuario, cabe citar los entornos de escritorio Windows, el X-Windows de GNU/Linux o el de Mac OS X, Aqua.
GNOME
El Proyecto GNOME, según sus creadores, provee un gestor de ventanas «intuitivo y atractivo» y una plataforma de desarrollo para crear aplicaciones que se integran con el escritorio. El Proyecto pone un gran énfasis en la simplicidad, usabilidad y eficiencia. Otros objetivos del proyecto son:
La libertad para crear un entorno de escritorio que siempre tendrá el código fuente disponible para reutilizarse bajo una licencia de software libre.
El aseguramiento de la accesibilidad, de modo que pueda ser utilizado por cualquiera, sin importar sus conocimientos técnicos y discapacidad física.

Hacer que esté disponible en muchos idiomas.
Un ciclo regular de liberaciones y una estructura de comunidad disciplinada.
Usa un sistema de archivos virtual llamado GVFS que permite a los usuarios acceder fácilmente a los datos remotos a través de SFTP , FTP , WebDAV , SMB y los datos locales a través de Udev integración, OBEX y otros.
Tiene bibliotecas para desarrollar interfaces graficas de usuario estas bibliotecas son llamadas GTk+.
Además que ofrece bibliotecas accesibilidad, por ejemplo personas con alguna discapacidad lo cual lo hace de una manera sencilla ya que la interfaz gráfica que maneja el sistema operativo Solaris es muy sencilla y puede ser manipulada de acuerdo a las necesidades del usuario que la está utilizando.
Java Desktop System
Es un entorno de escritorio para Solaris desarrollado por Sun Microsystems, que anteriormente también estuvo disponible para Linux.


Características básicas 


Económico: menor coste de compra frente al sistema operativo Microsoft Windows y su suite ofimática Microsoft Office.
Menor complejidad: totalmente integrado en un solo paquete para facilitar la instalación, gestión y manejo.
Seguridad: el estricto control de acceso a "root" en Linux/Unix previene virus que modifican ficheros. Java, con su infraestructura de seguridad controla el entorno del sistema ante posible ataques de virus.
Interoperabilidad: ficheros y documentos pueden ser compartidos e impresos en entornos Windows y Unix; Los sistemas existentes se mantienen sin alteración, incorpora soporte para nuevos idiomas como coreano, japonés y portugués/brasileño.



Multiusuario


La palabra multiusuario se refiere a un concepto de sistemas operativos, pero en ocasiones también puede aplicarse a programas de ordenador de otro tipo (ej. aplicaciones de base de datos). En general se le llama multiusuario a la característica de un sistema operativo o programa que permite proveer servicio y procesamiento a múltiples usuarios simultáneamente (tanto en paralelismo real como simulado).
Actualmente este tipo de sistemas se emplean especialmente en redes, pero los primeros ejemplos de sistemas multiusuario fueron sistemas centralizados que se compartían a través del uso de múltiples dispositivos de interfaz humana (e.g. una unidad central y múltiples pantallas y teclados).
Los recursos que se comparten son por lo regular una combinación de:
• Procesador. 
• Memoria. 
• Almacenamiento secundario (almacenaje en disco duro). 
• Programas. 
• Periféricos como impresoras, plotters, scanners, etc. 
De tal modo que los múltiples usuarios tienen la impresión de utilizar un ordenador y un sistema operativo unificado, que les están dedicados por completo.
Sistemas operativos multiusuario 
En los sistemas operativos antiguos, la idea de multiusuario guarda el significado original de que éste puede utilizarse por varios usuarios al mismo tiempo, permitiendo la ejecución concurrente de programas de usuario. Aunque la idea original de tiempo compartido o el uso de terminales tontas no es ya el más utilizado. Esto debido a que los ordenadores modernos pueden tener múltiples procesadores, o proveer sus interfaces de usuario a través de una red.
Desde el principio del concepto, la compartición de los recursos de procesamiento, almacenaje y periféricos facilita la reducción de tiempo ocioso en el (o los) procesador(es), e indirectamente implica reducción de los costos de energía y equipamiento para resolver las necesidades de cómputo de los usuarios. Ejemplos de sistemas operativos con característica de multiusuario son VMS y Unix, así como sus múltiples derivaciones (e.g. IRIX, Solaris, etc.) y los sistemas tipo Unix como Linux, FreeBSD y Mac OS X.
Las versiones de Windows 2000 server y Windows 2003 server ofrecen el servicio Terminal Server el cual permite la ejecución remota de diferentes sesiones de usuario.


7) Solaris: es un sistema operativo de tipo Unix desarrollado por Sun Microsystems desde 1992 como sucesor de SunOS. Es un sistema certificado oficialmente como versión de Unix. Funciona en arquitecturas SPARC y x86 para servidores y estaciones de trabajo.

Solaris tiene una reputación de ser muy adecuado para el multiprocesamiento simétrico (SMP), soportando un gran número de CPUs. También ha incluido soporte para aplicaciones de 64 bits SPARC desde Solaris 7. Históricamente Solaris ha estado firmemente integrado con la plataforma hardware de Sun, SPARC, con la cual fue diseñado y promocionado como un paquete combinado
Solaris 10, ha sido diseñada con AMD64 en mente, permitiendo a Sun capitalizar en la disponibilidad de CPUs de 64 bits commodities basadas en la arquitectura AMD64. Sun ha promocionado intensamente Solaris con sus estaciones de trabajo de nivel de entrada basadas en AMD64, así como con servidores que en 2006 varían desde modelos dual-core hasta modelos a 16 cores.
La base de OpenSolaris fue alimentada el 14 de junio de 2005 a partir de la entonces actual base de desarrollo de código de Solaris. Es posible descargar y licenciar versiones tanto binarias como en forma de código fuente sin coste alguno. Además, se ha añadido al proyecto Open Solaris código para características venideras como soporte Xen. Sun ha anunciado que las versiones futuras de Solaris se derivarán a partir de OpenSolaris.



Núcleo:  SunOS

Tipo de núcleo : Monolítico
Tipo de multitarea: Preferente

El sistema operativo es el encargado de administrar el/los procesador(es), repartiendo el tiempo de uso de este entre los procesos que estén esperando para utilizarlo. Cada proceso utiliza el procesador durante cortos períodos de tiempo, pero el resultado final es prácticamente igual que si estuviesen ejecutándose al mismo tiempo. Ejemplos de sistemas de este tipo serían Unix y sus derivados (FreeBSD, Linux), VMS y derivados, AmigaOS, Windows NT.

Diferencias entre Windows y Unix

En cuanto a los sistemas operativos van, a algunos les parece como si UNIX tiene una clara ventaja sobre Windows. UNIX ofrece mayor flexibilidad que los sistemas operativos de Windows, por otro lado, que es más estable y que no se desplome tanto como mucho como Windows. UNIX es un poco más seguro que Windows, y Se necesita menos administración y mantenimiento en el mantenimiento de un sistema UNIX. 
  • Una diferencia clave entre UNIX y Windows es la implementación de varios usuarios en un equipo. Cuando un usuario inicia sesión en un sistema UNIX, un proceso shell se inicia para dar servicio a sus órdenes. hacer un seguimiento de los usuarios y sus procesos, un sistema operativo UNIX es capaz de realizar un seguimiento de los procesos y evitar que interfieran entre sí. Esto es muy beneficioso cuando todos los procesos se ejecutan en el servidor, lo que exige un mayor uso de los recursos .
  • Otra diferencia principal entre UNIX y Windows es la jerarquía de procesos que posee UNIX. Cuando un nuevo proceso es creado por una aplicación UNIX, se convierte en un hijo del proceso que lo creó. Esta jerarquía es muy importante, por lo que son llamadas al sistema para influir en los procesos secundarios. Los procesos de Windows, por otra parte no comparten una relación jerárquica. Al recibir el identificador de proceso y el ID del proceso es creado, el proceso de creación de un sistema Windows puede mantener o simular una relación jerárquica si es necesario. El sistema operativo Windows trata normalmente todos los procesos como pertenecientes a la misma generación. UNIX utiliza demonios, Windows tiene los procesos de servicio. Los demonios son procesos que se inician cuando se inicia UNIX hasta que prestan servicios a otras aplicaciones. Demonios normalmente no interactúan con los usuarios. Un servicio de Windows es el equivalente a un demonio de UNIX.  Cuando un sistema Windows se inicia, se puede iniciar un servicio. Esta es una aplicación de larga duración que no interactúa con los usuarios, por lo que no tiene una interfaz de usuario. Servicios continuar funcionando durante una sesión de inicio de sesión y que están controladas por el Administrador de control de servicios de Windows Dado que UNIX es de código abierto, que atrae a algunos programadores muy inteligentes que desarrollan muchas aplicaciones de forma gratuita. En pocas palabras, la diferencia principal es Windows utiliza un (Graphical User Interface) GUI y UNIX no. En Windows se utiliza el clic de un ratón para ejecutar un comando mientras que en UNIX se debe escribir un comando. Hay interfaces gráficas de usuario que se puede utilizar en un entorno UNIX, aunque muy pocos usuarios de Unix caer tan bajo para usar uno.) Antes de que existiera un entorno Windows, DOS (Disk Operating System) se utiliza en los ordenadores. DOS se basa en y fue similar, pero sólo un subconjunto pobres, el sistema UNIX.
  • Las diferencias entre UNIX y WINDOWS: Unix es seguro, evitando un programa de acceso a la memoria o el espacio de almacenamiento asignado a otro, y permite la protección, lo que requiere que los usuarios tengan permiso para realizar ciertas funciones, es decir, el acceso a un directorio, archivo o unidad de disco. Además, UNIX es más seguro que Windows en una red, ya que Windows es más vulnerable que UNIX. Por ejemplo, si usted deja un puerto abierto en Windows que puede ser utilizado fácilmente por un hacker introducir un virus en su entorno.
  • Unix es mucho mejor en el manejo de múltiples tareas para un solo usuario o para varios usuarios que Windows. Para cada usuario, Unix en general, y en especial de Sun Solaris proporciona muchas más utilidades para la manipulación de archivos y datos que Windows lo hace. En un entorno corporativo, Unix (especialmente Solaris) ofrece mucho más control para el administrador de ventanas hace. Solaris, por ejemplo, permite al administrador espejo o banda de datos en varios discos para minimizar el riesgo u optimizar el rendimiento sin productos tercera parte. En general, para un programador o para un administrador, Unix proporciona más potencia y flexibilidad que las ventanas. Para los usuarios menos sofisticados, Windows puede ser más fácil ser instalado y configurado para ejecutarse en un hardware más barato para ejecutar un producto de otro fabricante tercera deseado. En pocas palabras - es mejor Unix, Windows es más fácil para los usuarios menos sofisticados.
Comparación Solaris con FreBSD y Linux 

Planificando y Planificadores

·         La unidad básica de planificación en Solaris es kthread_t; en FreeBSD thread; y en Linux task_struct. Solaris representa cada proceso como un proc_t, y cada hebra dentro de un proceso tiene una kthread_t. Linux representa procesos (y hebras) con estructuras task_struct. Un proceso con una sola hebra en Linux tiene una sola task_struct. Un proceso con una sola hebra en Solaris tiene proc_t, una sola kthread_t, y una klwp_t. La estructura klwp_t proporciona un área de almacenamiento para el intercambio de hebras entre los modos de usuario y núcleo. Un proceso con una sola hebra en FreeBSD tiene una estructura proc, una estructura thread, y una estructura ksegrp. El ksegrp es un "grupo de entidades planificables por el núcleo" (kernel scheduling entity group). Realmente, los tres SOs planifican hebras, y una hebra es una kthread_t en Solaris, una estructura thread en FreeBSD, y una task_struct en Linux.

·         Una gran diferencia entre Solaris y los otros dos SOs es la capacidad para soportar "clases de planificación" de forma simultánea en el sistema. Los tres SOs soportan Posix SCHED_FIFO, SCHED_RR, y SCHED_OTHER (o SCHED_NORMAL). SCHED_FIFO y SCHED_RR normalmente se utilizan en las hebras "tiempo real". (Tanto Solaris como Linux soportan apropiación en el núcleo3 para asistir a las hebras de tiempo real.) Solaris tiene soporte para una clase "prioridad fija", "clase de sistema" para las hebras de sistema (como las hebras de paginación), una clase "interactiva" utilizada por hebras que se ejecutan en un entorno de ventanas bajo el control del servidor X, y el planificador de reparto limpio (Fair Share Scheduler) para asistir en la gestión de recursos. Consulte priocntl(1) para obtener información sobre el uso de estas clases y una visión general de las características de cada clase. Consulte FSS(7) para obtener información específica del Fair Share Scheduler. El planificador de FreeBSD se escoge en tiempo de compilación, y en Linux el planificador depende de la versión de Linux.

Gestión de la memoria y Paginación

En Solaris cada proceso tiene un "espacio de direcciones" formado por secciones lógicas llamadas "segmentos". Los segmentos del espacio de direcciones de un proceso se pueden ver a través de  pmap(1). Solaris divide el código de gestión de memoria y las estructuras de datos en la parte independiente y dependiente de la plataforma. La porción específica de la plataforma de la gestión de memoria se encuentra en la capa HAT (hardware address translation) o traducción de direcciones físicas. FreeBSD describe el espacio de direcciones de un proceso mediante un vmspace, dividido en secciones lógicas llamadas regiones. Las porciones dependientes del hardware están en el módulo "pmap" (physical map) mapa físico y las rutinas "vmap" manejan las porciones y estructuras de datos independientes del hardware. Linux utiliza un descriptor de memoria para dividir el espacio de direcciones de un proceso en secciones lógicas llamadas "áreas de memoria" que describen el espacio de direcciones del proceso. Linux también tiene un comando pmap para examinar el espacio de direcciones de un proceso.

Linux divide capas dependientes de la máquina a partir de capas independientes de la máquina a un nivel mucho más alto en el software. En Solaris y FreeBSD, gran parte del código de tratar con, por ejemplo, página de gestión de fallos es independiente de la máquina. En Linux, el código para controlar los errores de página es más o menos depende de la máquina desde el principio de la gestión de fallos. Una consecuencia de esto es que Linux puede manejar gran parte del código de paginación más rápido porque hay menos abstracción de datos (capas) en el código. Sin embargo, el costo es que un cambio en el hardware o el modelo subyacente requiere más cambios en el código. Solaris y FreeBSD aíslan esos cambios al HAT y capas pmap respectivamente.
FreeBSD tiene varias listas de páginas para realizar un seguimiento de las páginas usadas recientemente. Estos pista "activo", "inactivo" páginas "libres" "caché", y. Páginas mueven entre estas listas enlazadas en función de sus usos. Páginas visitadas con frecuencia tienden a permanecer en la lista activa. Las páginas de datos de un proceso que sale se puede colocar inmediatamente en la lista libre. FreeBSD puede cambiar los procesos enteros si vm_pageout_scan no puede seguir el ritmo de carga (por ejemplo, si el sistema tiene poca memoria). Si la falta de memoria es lo suficientemente grave, vm_pageout_scan matará el proceso más grande en el sistema.

Linux también utiliza diferentes listas enlazadas de páginas para facilitar un algoritmo de estilo LRU. Linux divide la memoria física en (posiblemente varios conjuntos de) tres zonas ":" uno para páginas DMA, uno para las páginas normales, y uno para la memoria asignada dinámicamente. Estas zonas parecen ser mucho más que un detalle de implementación debidas a la limitación de arquitectura x86. Páginas mueven entre listas de "" caliente "," frío "y". El movimiento entre las listas es muy similar al mecanismo en FreeBSD. Páginas visitadas con frecuencia estarán en la lista "caliente". Páginas libres estarán en la lista o "cold", "libre".

Solaris utiliza una lista disponible, lista de hash, y la lista de la página vnode mantener su variación de un algoritmo de reemplazo LRU. En lugar de escanear el vnode o listas de páginas hash (más o menos el equivalente a las listas "calientes" en las implementaciones de FreeBSD / Linux "activa" /), Solaris escanea todas las páginas utiliza un algoritmo de "reloj de dos manos", como se describe en Solaris Internos y otros lugares. Las dos manos quedan a una distancia fija. Las edades de mano delanteros la página en la limpieza de bit de referencia (s) para la página. Si ningún proceso ha hecho referencia a la página desde la parte frontal visitado la página, la mano de nuevo va a liberar la página (primera forma asíncrona escribir la página en el disco si se modifica).

Todos los tres sistemas operativos toman localidad NUMA en cuenta durante la búsqueda. La caché de búfer de E / S y el caché de páginas de memoria virtual se fusionaron en una sola página del sistema de caché en los tres sistemas operativos. La página de caché del sistema se utiliza para lecturas / escrituras de archivos, así como archivos y texto y los datos de aplicaciones mmapped.
Sistemas de archivos.

No hay comentarios.:

Publicar un comentario