COMPILACIÓN BIBLIOGRÁFICA Sistemas Operativos Linux y las diferentes distribuciones (Detallar Red Hat, Fedora, Ubuntu, etc) y Chrome OS. Presentado Por: Daniel Montes Agudelo – Cód.: 0911519 John Elkin Rendón Romero – Cód.: 0911037 Juan Pablo Osorio Arango – Cód.: 0911030 Presentado a: Carlos Hernán Gómez Gómez Sistemas Operativos UNIVERSIDAD NACIONAL DE COLOMBIA SEDE MANIZALES ADMINISTRACIÓN DE SISTEMAS INFORMÁTICOS JUNIO 2, 2014 TABLA DE CONTENIDO Página INTRODUCCIÓN HISTORIA DE LINUX EMPRESAS QUE PATROCINAN EL USO DE LINUX CARACTERÍSTICAS DE LINUX Multitarea Multiusuario Multiplataforma Multiprocesador Carga de ejecutables por demanda Política de copia en escritura para la compartición de páginas entre ejecutables Memoria virtual usando paginación (sin intercambio de procesos completos) a disco Control de tareas POSIX. Consolas virtuales múltiples HISTORIA DE GOOGLE Lanzamiento del Código Abierto Chrome Notebook (Cr-48) Chromebook CARACTERÍSTICAS FUNDAMENTALES DE CHROME OS Interfaz de usuario Velocidad Sincronización Siempre conectado Aplicaciones Web Seguridad Características Avanzadas Chrome OS Multitáctil Reproductor multimedia Impresión PRESENTACIÓN GOOGLE CHROME OS ESTRUCTURA Y COMPONENTES DEL SISTEMA Firmware El sistema en sí y los servicios El navegador y el administrador de ventanas PLATAFORMAS SOBRE LAS QUE TRABAJA CHROME OS INSTALACIÓN DE CHROME OS SISTEMA DE ARCHIVOS EN CHROME OS Sistema de archivos raíz Diagrama del proceso de booteo 6 7 8 9 9 9 9 9 9 10 10 11 12 14 14 14 14 15 15 15 16 16 17 17 17 18 19 19 20 21 21 21 25 25 25 pág. 2 DESCRIPCIÓN DE LOS DISPOSITIVOS DE ENTRADA Y SALIDA QUE SOPORTA (CHROME OS) GESTIÓN DE COMUNICACIONES Y SEGURIDAD (CHROME OS) Google Cloud Printing Chromoting ANÁLISIS COMPARATIVO ENTRE PLATAFORMA TRADICIONAL Y EL SMARTPHONE (CHROME OS) Vs. Android Vs. Windows Vs. Linux ESTADÍSTICAS DE UTILIZACIÓN A NIVEL MUNDIAL DE CHROME OS SOPORTE PARA LA NUBE E INTEGRACIÓN A ELLA (CLOUD COMPUTING) DE GOOGLE CHROME OS GESTIÓN DE PROCESOS Y PROCESADOR LINUX Estados de un Proceso GESTIÓN DE MEMORIA LINUX Direccionamiento Largo de espacios en Memoria Protección Mapeo en Memoria Alojamiento Equitativo de Memoria Física Memoria Virtual Compartida Un modelo Abstracto de Memoria Virtual El concepto de Page HIT y FAULT Traducción de una página virtual a una página física SOPORTE A TIEMPO REAL EN LINUX UBUNTU ESTRUCTURA Y COMPONENTES DEL SISTEMA – UBUNTU main restricted universe multiverse PLATAFORMAS SOBRE LAS QUE TRABAJA UBUNTU PROCESO DE INSTALACIÓN DE UBUNTU Requisitos Imágenes Oficiales Otras instalaciones Wubi LiveUSB LiveDVD personalizado CD de instalación mediante red GESTIÓN DE PROCESOS Y DEL PROCESADOR - UBUNTU Procesos y Subprocesos Procesadores 26 28 28 30 31 32 32 33 34 35 36 38 38 38 38 39 39 39 41 42 43 46 47 47 47 47 47 47 48 48 49 49 49 49 50 50 51 pág. 3 Programación Sincronización Kernel Multiprocessing (Multiprocesamiento) GESTIÓN DE MEMORIA - UBUNTU GESTIÓN DE MEMORIA AUXILIAR (SECUNDARIA Y TERCIARÍA) Y SISTEMA DE ARCHIVOS - UBUNTU Sistema de Archivos Estructura de Directorios GESTIÓN DE ENTRADA Y SALIDA DESCRIPCIÓN DE LOS DISPOSITIVOS DE ENTRADA Y SALIDA QUE SOPORTA (LINUX) GESTIÓN DE COMUNICACIONES Y SEGURIDAD - UBUNTU Seguridad Usuarios y claves Permisos y grupos Repositorios seguros El Cortafuegos SeLinux / AppArmor SOPORTE A TIEMPO REAL - UBUNTU ESTADÍSTICAS DE UTILIZACIÓN MUNDIAL - UBUNTU. SOPORTE PARA LA NUBE E INTEGRACIÓN A ELLA (CLOUD COMPUTING) - UBUNTU ANÁLISIS COMPARATIVO ENTRE PLATAFORMA TRADICIONAL Y EL SMARTPHONE (UBUNTU). RED HAT ESTRUCTURA Y COMPONENTES DEL SISTEMA – RET HAT Estructura de Directorios FHS en Red HAT Enterprise 6 SISTEMA DE ARCHIVOS – RET HAT PROCESO DE INSTALACIÓN INSTALACIÓN BASE INSTALACIÓN DEL SERVIDOR GESTIÓN DE PROCESOS Y DEL PROCESADOR – RET HAT GESTIÓN DE MEMORIA – RET HAT GESTIÓN DE ENTRADA Y SALIDA – RET HAT SOPORTE A TIEMPO REAL SCHED_FIFO SCHED_RR SOPORTE PARA LA NUBE E INTEGRACIÓN A ELLA (CLOUD COMPUTING) – RET HAT FEDORA ¿QUÉ HACE A FEDORA DIFERENTE? ESTRUCTURA Y COMPONENTES DEL SISTEMA - FEDORA PROCESO DE INSTALACIÓN - FEDORA 52 52 53 53 54 54 55 57 59 60 62 62 63 64 64 64 65 65 66 67 68 69 69 71 72 72 72 73 74 76 77 77 77 78 79 79 80 80 pág. 4 GESTIÓN DE MEMORIA - FEDORA Direccionamiento de Memoria GESTIÓN DE PROCESOS - FEDORA Paginación Sistemas de archivos virtuales /proc y /sys GESTIÓN Y SISTEMA DE ARCHIVOS - FEDORA GESTIÓN DE COMUNICACIONES Y SEGURIDAD - FEDORA SOPORTE PARA LA NUBE E INTEGRACIÓN A ELLA (CLOUD COMPUTING) - FEDORA ESTADÍSTICAS - FEDORA RESUMEN CONCLUSIONES Y OBSERVACIONES BIBLIOGRAFÍA 81 82 84 84 84 85 86 87 87 89 98 100 pág. 5 INTRODUCCIÓN En la actualidad existen múltiples y diversos sistemas operativos destinados para diferentes usos y plataformas, los hay para equipos personales usados en el hogar, de tipo empresarial y también para dispositivos móviles como los smartphones. El objetivo de este trabajo es mostrar las características fundamentales de diferentes sistemas operativos construidos en dos diferentes plataformas: la tradicional y la plataforma móvil. Para este trabajo se hará un análisis al sistema operativo más representativo del campo del software libre, Linux. En dicho análisis se tocarán temas de la arquitectura de este sistema tales como componentes, estructura, administración de procesos, de memoria, de memoria auxiliar y de los dispositivos de entrada y salida soportados por este sistema. También se hablará de soporte a tiempo real y de computación en la nube. El otro análisis que se mostrará en este documento es sobre un sistema de plataforma móvil llamado Google Chrome OS; el análisis tendrá los mismos puntos que tiene el análisis del sistema Linux. Por último se citarán algunas conclusiones de acuerdo al análisis hecho a los dos sistemas operativos que se trabajarán en el presente trabajo. pág. 6 HISTORIA DE LINUX Linux, es un sistema operativo. Es una implementación de libre distribución UNIX para computadoras personales (PC), servidores y estaciones de trabajo. Es uno de los paradigmas más prominentes del software libre y del desarrollo del código abierto, cuyo código fuente está disponible públicamente, para que cualquier persona puede libremente usarlo, estudiarlo, redistribuirlo y, con los conocimientos informáticos adecuados, modificarlo. Linux es usado como sistema operativo en una amplia variedad de plataformas de hardware y computadores, incluyendo los computadores de escritorio (PCs x86 y x86-64, y Macintosh y PowerPC), servidores, supercomputadores, mainframes, y dispositivos empotrados así como teléfonos celulares. En 1983 Richard Stallman fundó el proyecto GNU, con el fin de crear sistemas operativos parecidos a UNIX y compatibles con POSIX. Dos años más tarde creó la "Fundación del Software Libre" y escribió la GNU General Public License para posibilitar el software libre en el sistema de copyright. El software GNU se extendía muy de prisa y dentro de poco una multitud de programas fueron escritos, de manera que ya a principios de 1990 había bastantes software GNU como para hacer un sistema operativo propio, pero faltaba el Kernel. A principios de los años 1990, no había un sistema operativo libre completo. A pesar de que el proyecto GNU era desarrollado constantemente, no disponía sin embargo de ningún buen Kernel basado en UNIX, por el contrario era un número de proyectos de software libres que podían ser traducidos en las variantes UNIX mediante el compilador de GNU. En 1988 Linus Torvalds entró a la Universidad. Ese mismo año fue cuando el sistema operativo didáctico, basado en UNIX y creado por Andy Tannenbaum, empezó a cobrar importancia. Dicho sistema era el Minix. Linus entró a formar parte de la comunidad de usuarios Minix. Andy Tannenbaum cometió un error en su sistema operativo. Era demasiado limitado, tanto técnicamente como políticamente, en ningún momento tuvo en cuenta la posibilidad de incluir Minix al proyecto GNU. La creación de Andy Tannenbaum estaba pensando para ser distribuida. La historia de Linux está fuertemente vinculada a la del proyecto GNU. pág. 7 Hacia 1991, cuando la primera versión del núcleo Linux fue liberada, el proyecto GNU había producido varios de los componentes del sistema operativo, incluyendo un intérprete de comandos, una biblioteca C y un compilador, pero aún no contaba con el núcleo que permitiera complementar el sistema operativo. Entonces, el núcleo creado por Linus Torvalds, llenó el hueco final que el sistema operativo GNU exigía. Linus nunca anunció la versión 0.01 de Linux (agosto 1991), esta versión no era ejecutable, solamente incluía los principios del núcleo del sistema, estaba escrita en lenguaje ensamblador y asumía que uno tenía acceso a un sistema Minix para su compilación. El 5 de octubre de 1991, Linus anuncio la primera versión "Oficial" de Linux, - versión 0.02. Con esta versión Linus pudo ejecutar Bash (GNU Bourne Again Shell) y gcc (Compilador GNU de C) pero no mucho más funcionaba. En este estado de desarrollo ni se pensaba en los términos soporte, documentación, distribución. Después de la versión 0.03, Linus salto en la numeración hasta la 0.10, más programadores a lo largo y ancho del internet empezaron a trabajar en el proyecto y después de revisiones, Linus incremento el número de versión hasta la 0.95 (marzo 1992). En Diciembre de 1993 el núcleo del sistema estaba en la versión 0.99 y la versión 1.0, llego el 14 de marzo de 1994. EMPRESAS QUE PATROCINAN EL USO DE LINUX Con la adopción por numerosas empresas fabricantes, un buen número de computadoras se venden con distribuciones pre-instaladas, y GNU/Linux ha comenzado a tomar su lugar en el vasto mercado de las computadoras de escritorio. Algunas de las empresas que colaboran en la difusión de este sistema operativo ya sea trabajando en el núcleo Linux, proporcionando soluciones de software o preinstalando el sistema operativo, son: Intel, Google, IBM, AMD, Sun Microsystems, Dell, Lenovo, Asus, Hewlett-Packard (HP), Silicon Graphics International (SGI), Renesas Technology, Fujitsu, Analog Devices, Freescale, VIA Technologies, Oracle, Novell y Red Hat, entre otras. pág. 8 El respaldo de compañías de software también está presente, ya que, entre otras aplicaciones, Nero, Java, Google Earth, Google Desktop, Adobe Reader, Adobe Flash, RealPlayer y Yahoo! Messenger están disponibles para GNU/Linux. Al haber software equivalente, es innecesario instalar los precisamente mencionados con anterioridad. CARACTERÍSTICAS DE LINUX Multitarea: La palabra multitarea describe la habilidad de ejecutar varios programas al mismo tiempo. LINUX utiliza la llamada multitarea preventiva, la cual asegura que todos los programas que se están utilizando en un momento dado serán ejecutados, siendo el sistema operativo el encargado de ceder tiempo de microprocesador a cada programa. Multiusuario: Muchos usuarios usando la misma maquinan al mismo tiempo. Multiplataforma: Las plataformas en las que en un principio se puede utilizar Linux son 386-, 486-. Pentium, Pentium Pro, Pentium II, Amiga y Atari, también existen versiones para su utilización en otras plataformas, como Alpha, ARM, MIPS, PowerPC y SPARC. Multiprocesador: Soporte para sistemas con más de un procesador está disponible para Intel y SPARC. Funciona en modo protegido 386. Protección de la memoria entre procesos, de manera que uno de ellos no pueda colgar el sistema. Carga de ejecutables por demanda: Linux sólo lee del disco aquellas partes de un programa que están siendo usadas actualmente. Política de copia en escritura para la compartición de páginas entre ejecutables: esto significa que varios procesos pueden usar la misma zona de memoria para ejecutarse. Cuando alguno intenta escribir en esa memoria, la página (4Kb de memoria) se copia a otro lugar. Esta política de copia en escritura tiene dos beneficios: aumenta la velocidad y reduce el uso de memoria. pág. 9 Memoria virtual usando paginación (sin intercambio de procesos completos) a disco: A una partición o un archivo en el sistema de archivos, o ambos, con la posibilidad de añadir más áreas de intercambio sobre la marcha Un total de 16 zonas de intercambio de 128Mb de tamaño máximo pueden ser usadas en un momento dado con un límite teórico de 2Gb para intercambio. Este límite se puede aumentar fácilmente con el cambio de unas cuantas líneas en el código fuente. La memoria se gestiona como un recurso unificado para los programas de usuario y para el caché de disco, de tal forma que toda la memoria libre puede ser usada para caché y ésta puede a su vez ser reducida cuando se ejecuten grandes programas. Librerías compartidas de carga dinámica (DLL's) y librerías estáticas. Se realizan volcados de estado (core dumps) para posibilitar los análisis postmortem, permitiendo el uso de depuradores sobre los programas no sólo en ejecución sino también tras abortar éstos por cualquier motivo. Compatible con POSIX, System V y BSD a nivel fuente. Emulación de iBCS2, casi completamente compatible con SCO, SVR3 y SVR4 a nivel binario. Todo el código fuente está disponible, incluyendo el núcleo completo y todos los drivers, las herramientas de desarrollo y todos los programas de usuario; además todo ello se puede distribuir libremente. Hay algunos programas comerciales que están siendo ofrecidos para Linux actualmente sin código fuente, pero todo lo que ha sido gratuito sigue siendo gratuito. Control de tareas POSIX. Pseudo-terminales (pty's). Emulación de 387 en el núcleo, de tal forma que los programas no tengan que hacer su propia emulación matemática. Cualquier máquina que ejecute Linux parecerá dotada de coprocesador matemático. Por supuesto, si el ordenador ya tiene una FPU (unidad de coma flotante), esta será usada en lugar de la emulación, pudiendo incluso compilar tu propio kernel sin la emulación matemática y conseguir un pequeño ahorro de memoria. pág. 10 Soporte para muchos teclados nacionales o adaptados y es bastante fácil añadir nuevos dinámicamente. Consolas virtuales múltiples: varias sesiones de login a través de la consola entre las que se puede cambiar con las combinaciones adecuadas de teclas (totalmente independiente del hardware de video). Se crean dinámicamente y puedes tener hasta 64. Soporte para varios sistemas de archivo comunes, incluyendo minix-1, Xenix y todos los sistemas de archivo típicos de System V, y tiene un avanzado sistema de archivos propio con una capacidad de hasta 4 Tb y nombres de archivos de hasta 255 caracteres de longitud. Acceso transparente a particiones MS-DOS (o a particiones OS/2 FAT) mediante un sistema de archivos especial: no es necesario ningún comando especial para usar la partición MS-DOS, esta parece un sistema de archivos normal de Unix (excepto por algunas restricciones en los nombres de archivo, permisos, y esas cosas). Las particiones comprimidas de MS-DOS 6 no son accesibles en este momento, y no se espera que lo sean en el futuro. El soporte para VFAT (WNT, Windows 95) ha sido añadido al núcleo de desarrollo y estará en la próxima versión estable. Un sistema de archivos especial llamado UMSDOS que permite que Linux sea instalado en un sistema de archivos DOS. Soporte en sólo lectura de HPFS-2 del OS/2 2.1 Sistema de archivos de CD-ROM que lee todos los formatos estándar de CD-ROM. TCP/IP, incluyendo ftp, telnet, NFS, etc. Appletalk. Software cliente y servidor Netware. Lan Manager / Windows Native (SMB), software cliente y servidor. Diversos protocolos de red incluidos en el kernel: TCP, IPv4, IPv6, AX.25, X.25, IPX, DDP, Netrom, etc. pág. 11 HISTORIA DE GOOGLE Larry Page y Serguéi Brin comienzan Google como un proyecto universitario en enero de 1996 cuando ambos era estudiantes de la Universidad de Stanford. Page y Brin fundan, el 4 de septiembre de 1998, la compañía Google Inc., que estrena en Internet su motor de búsqueda el 27 de septiembre siguiente. En el 2000 Google presentó AdWords, su sistema de publicidad online y la llamada Barra Google. En febrero de 2001 Google compra el servicio de debate Usenet de Google y lo transforma en Google Grupos. En julio de 2001 lanza su servicio de búsqueda de imágenes. En febrero de 2002 lanza Google Search Apliance. En mayo lanza Google Labs que cerrará 9 años más tarde. En septiembre se lanza Google Noticias. En diciembre del mismo año se lanza el servicio de búsqueda de productos llamado Froogle, ahora denominado Google Products. En febrero de 2003 Google adquiere Pyra Labs y con ello el servicio de creación de blogs Blogger. En abril se presenta Google Grants, un servicio de publicidad gratuito para organizaciones sin ánimo de lucro. En diciembre de ese año se lanza Google Print, posteriormente Google Libros. En enero de 2004 lanza la red social orkut. En marzo se lanza Google Local que más tarde se integraría con Google Maps. En abril Google presentó GMail, su servicio de correo electrónico con 1 Gb de almacenamiento. En octubre de ese año lanzan Google Desktop, que será descontinuado. También lanzó el llamado Google Académico. En 2004 compró la empresa Keyhole. Un año después, en 2005, sacaron a la luz Google Maps y Google Earth. Ese mismo año Google compró Android Inc. También lanzó Google Code y se desarrolla el primer Summer of Code. En agosto presenta Google Talk. En octubre Google lanza su lector de feeds RSS Google Reader. En noviembre se presenta Google Analytics y en diciembre Google Transit. En 2006 lanza Picasa. En marzo adquiere Writely para más tarde lanzar Google Docs y presenta ese mismo mes Google Finance. En abril se presenta Google Calendar y en agosto Google Apps, servicio orientado a empresas. En octubre de 2006, Google adquirió por 1650 millones de dólares la página de vídeos YouTube.8 Ese mismo mes adquiere JotSpot que más tarde se convertirá en Google Sites. pág. 12 Un año después, en 2007, Google lanzó el sistema operativo abierto para móviles Android y creó la Open Handset Alliance. En abril de 2007, Google compró DoubleClick, una empresa especializada en publicidad en Internet, por 3100 millones de dólares. En junio lanza Google Gears que más tarde será abandonado debido a que lo que ofrecía más tarde fue incorporado en HTML5. En julio de 2007, Google compró Panoramio, un sitio web dedicado a exhibir las fotografías que los propios usuarios crean y geoposicionan, siendo algunas de ellas subidas al sitio para que puedan ser vistas a través del software Google Earth, en noviembre presenta OpenSocial. En febrero de 2008 se lanza Google Sites. El 2 de septiembre de 2008, Google presenta su propio navegador web Google Chrome y el proyecto de código abierto Chromium. En diciembre se lanza Google Friend Connect. En febrero se lanza Google Latitude. En marzo se presenta Google Voice. En septiembre de 2009 adquiere reCAPTCHA. En noviembre presenta el proyecto de sistema operativo de código abierto Chromium OS. En diciembre presenta Google Public DNS. En enero de 2010 Google presenta su primer teléfono móvil, el Nexus One, que funciona con Android. Ese mismo mes adquiere Aardvark. En marzo adquiere Picnik. En mayo lanza Google TV. En octubre presenta su proyecto de vehículos autónomos. En diciembre presenta su segundo teléfono, el Nexus S, fabricado por Samsung. En enero de 2011, Larry Page es nombrado CEO. En mayo se presentan los Chromebooks. En junio se presenta la nueva red social de Google llamada Google+.En agosto de 2011, Google adquiere Motorola Mobility por 8800 millones de euros. Google presenta su tercer teléfono inteligente, el Galaxy Nexus, fabricado por Samsung y que funciona con la cuarta versión de Android. En abril de 2012, Google presenta el Project Glass, un proyecto para crear unas gafas de realidad aumentada. En febrero del 2014 Google compra SlickLogin, una compañía compuesta por grandes desarrolladores, expertos en seguridad, que han creado un innovador sistema de identificación a través del sonido para los teléfonos inteligentes. pág. 13 Lanzamiento del Código Abierto El 19 de noviembre de 2009 se lanzó el proyecto abierto Chromium OS, proyecto que permite la colaboración abierta del desarrollo del sistema operativo de Google. El núcleo del sistema es Linux, y cuenta con herramientas del entorno Linux. Chrome Notebook (Cr-48) El 7 de diciembre de 2010, Google anunció un programa piloto que consiste en enviar una computadora portátil (notebook) sin costo alguno, a aquellas personas residentes en Estados Unidos que quieran empezar a probar, en una etapa previa, el sistema operativo Chrome OS. El computador cuenta con una conexión 3G, gracias al proveedor de telefonía móvil Verizon, conexión Wi-Fi, una pantallaLCD de 12,1 pulgadas, cámara integrada, tapete táctil multitáctil, y un teclado modificado especialmente para Chrome OS. Chromebook El 11 de mayo de 2011, en el evento Google I/O son presentados dos Chromebooks potenciados con Chrome OS, fabricados por Samsung y Acer. Ambos Chromebooks cuentan con discos SSD, sin unidad óptica, tapete multitáctil, pantallas de 12,1 y 11,6 pulgadas, conexión Wi-Fi o 3G, y con baterías de larga duración de hasta 8,5 horas continuas. El 15 de junio de 2011 los Chromebooks se lanzan a la venta para el público, con precios desde los $349 hasta los $499 USD. CARACTERÍSTICAS FUNDAMENTALES DE CHROME OS Interfaz de usuario Chrome OS está diseñado de una forma minimalista, debido a que su principal herramienta es el navegador web Google Chrome. De esta forma, la compañía planea mover gran parte de la interfaz de usuario desde un entorno de escritorio hacia Internet. De hecho, Google se refiere a su proyecto Chrome OS como una extensión natural del navegador Chrome. En otras declaraciones para una audiencia de desarrolladores, Google enfatiza que la web es la plataforma, destacando que las aplicaciones basadas en web funcionarán en Chrome y viceversa. pág. 14 Las principales características de la interfaz de usuario son: ● Paneles: Los paneles son pequeñas ventanas inferiores que se utilizan para diferentes tareas, tales como la descarga de archivos, navegador de archivos, mensajería instantánea en Hangouts, tomar notas, o notificadores de eventos como Google Calendar, Gmail, y actualizaciones del sistema. Los paneles también permiten ser minimizados para ocultarse, y también se pueden utilizar mientras se navega en diferentes sitios al permanecer estáticos. ● Indicadores: Los indicadores se encuentran en la parte superior derecha, e indican procesos como la hora, batería, conexión y selector Wi-fi, y conexión 3G. ● Pestañas: Las pestañas son lo más utilizado en el sistema, se utilizan para abrir las aplicaciones y sitios, y permiten abrir opciones del sistema. Las pestañas también se pueden "fijar" y disminuir su tamaño para quedar ancladas en la parte superior izquierda. ● Lanzadores: Los lanzadores aparecen en la página principal, y son iconos grandes que se utilizan para abrir aplicaciones web, también ver los sitios más visitados, y ver los marcadores en una barra superior. Velocidad Uno de los puntos que más destaca Google es la velocidad del sistema, con un tiempo de arranque de 8 segundos y un tiempo de apagado bastante corto, además de la rapidez con que abre sus aplicaciones web. Sincronización Todos los documentos, aplicaciones, extensiones, y configuraciones, son respaldados en línea bajo el concepto de computación en nube. Así que si el usuario pierde su máquina, puede obtener otra o acceder desde otra máquina, y obtener exactamente los mismos datos que mantenía anteriormente. Siempre conectado Chrome OS solamente se puede obtener por medio de la compra directa de un Chromebook, contando con conexión 3G o Wi-Fi para poder estar siempre en línea. La promesa de Google es que Chrome OS siempre esté conectado, no importa dónde. Además, en las versiones de desarrollo de Chromium OS, ya se están probando las conexiones 4G(LTE) con otros dispositivos. pág. 15 Aplicaciones Web Chrome OS no utiliza el típico sistema de aplicaciones, las aplicaciones se utilizan dentro del navegador web Google Chrome, y pueden ser utilizadas en línea o ser instaladas para poder utilizarse sin la necesidad de una conexión a Internet. El principal medio para obtener estas aplicaciones web es la tienda en línea Chrome Web Store, la cual permite adquirir aplicaciones, extensiones y temas para el navegador Google Chrome en un solo lugar. La tienda también permite comprar aplicaciones, y que los desarrolladores publiquen sus aplicaciones basadas en lenguaje web actual. Seguridad También contará con una arquitectura de seguridad actualizada. Google enfatiza el hecho de que sus Chromebooks no sufrirán de virus o programas maliciosos. Debido a que muchos sistemas operativos actuales fueron diseñados en épocas en las que internet no era predominante, Chrome se diseña teniendo muy en cuenta esto, por ende eliminando riesgos de seguridad comunes arraigados. Los puntos más importantes con respecto a la seguridad de Chrome OS son: ● ● ● ● ● Actualizaciones automáticas: Las aplicaciones webs instaladas, extensiones, temas, el navegador, y el sistema operativo se mantendrá al día con actualizaciones automáticas. Aislamiento de procesos: Aislar procesos que puedan comprometer la seguridad del sistema, tales como Flash Player, extensiones o aplicaciones instaladas. Verificación de arranque: Monitorea si el sistema ha sido manipulado por entes externos antes de que el sistema parta, y vuelve a una versión de respaldo si esto ha sucedido. Cifrado de datos: Todos los datos descargados en el disco son cifrados. Modo visita: Parecido a la «cuenta de invitado» presente en sistemas operativos Windows, GNU/Linux, y Mac OS X. En este modo el usuario puede pasar la máquina a conocidos para que utilicen una cuenta de visita sin que sus datos se vean comprometidos. pág. 16 Características Avanzadas Chrome OS Multitáctil Los primeros gestos multitáctiles se vieron en el Chrome Notebook (Cr-48), pero con funcionamientos básicos, como scroll de página con dos dedos... Pero Google dará soporte multitáctil completo de hasta cuatro dedos en versiones estables. Reproductor multimedia Todo el contenido multimedia descargado, como música o videos, se podrán reproducir gracias al reproductor multimedia integrado de Chrome OS. Impresión Para solucionar el problema de compatibilidad de controladores de hardware de las diferentes impresoras disponibles en el mercado, Google lanza Google Cloud Print (aún en Beta). La cual permite imprimir documentos desde cualquier dispositivo y aplicación, solamente es necesario conectar la impresora a Google Cloud Print y también conectarse mediante Chrome OS para mandar la orden de impresión. pág. 17 PRESENTACIÓN GOOGLE CHROME OS Anuncio El 7 de julio de 2009, Google anuncia uno de sus más grandes proyectos, su propio sistema operativo basado en código abierto (Núcleo Linux) diseñado para trabajar exclusivamente con aplicaciones web, el cual es nombrado «Google Chrome OS» (o simplemente abreviado Chrome OS), justo 9 meses después de haber lanzado su navegador Google Chrome. Google explica que Chrome OS es un sistema operativo diferente a lo que se conoce comúnmente como sistema operativo de escritorio, siendo el navegador Google Chrome su principal herramienta de uso. Las primeras características que destaca Google es, que su sistema operativo es un proyecto de código abierto y sin costo alguno. Al igual que el navegador Google Chrome que cuenta con el proyecto Chromium como el proyecto abierto para su desarrollo, Google Chrome OS cuenta con Chromium OS como proyecto de código abierto para su desarrollo. Google también destaca que su interfaz de usuario es simple, rápida, y segura, debido a que su principal herramienta de uso es el navegador Google Chrome. El sistema operativo está diseñado de tal forma que el usuario pueda conectarse a Internet en cuestión de segundos. Contará con soporte para procesadores x86 y ARM, y con el soporte de una gran lista de fabricantes de hardware y software. pág. 18 ESTRUCTURA Y COMPONENTES DEL SISTEMA El Chrome OS se divide en 3 partes importantes: ● El navegador basado en el Chrome y el manejador de ventanas. ● El sistema en sí y los servicios: el kernel, los drivers, etc. ● Firmware Firmware El firmware tiene un papel clave para que el arranque del sistema sea más rápido y más seguro. Para lograr esto se eliminaron elementos innecesarios y se añadieron soporte para la verificación de cada paso en el proceso de arranque. También se añadió soporte para la recuperación del sistema en el propio firmware. Se evitó la complejidad en la mayoría de los firmwares de las PC´s tradicionales porque el Chrome OS no tiene soporte para una buena cantidad de hardware. Por ejemplo no se prueba si existe el floppy drives. El firmware implementa las siguientes funcionalidades: ● La recuperación del sistema: El firmware de recuperación puede volver a instalar Chrome OS en el caso de que el sistema se ha convertido dañada o en peligro. ● Verificado el arranque: Cada vez que el sistema arranca, Chrome OS verifica que el firmware, el kernel y la imagen del sistema no han sido manipulados o corrompidos. El proceso se inicia en el firmware. ● Inicio rápido: Hemos mejorado el rendimiento de arranque mediante la eliminación de una gran cantidad de componentes que se encuentra normalmente en el firmware PC. pág. 19 El sistema en sí y los servicios Aquí es en donde se utiliza el kernel de Linux, los drivers y los demonios. He aquí una lista de las cosas de cual el sistema depende: ● D-Bus: El navegador utiliza el D-Bus para interactuar con el resto del sistema. Un ejemplo de esto es el medidor de la batería, y el indicador de señal de la red. ● Administrador de conexiones: provee una API para interactuar con los dispositivos de red, provee DNS proxy y maneja los servicios para los sistema 3G, wireless, y ethernet. ● Autoupdate: el demonio de actualización instala "silenciosamente" nuevas imágenes del sistema. ● Administrador de energía: se ocupa de los eventos relacionados con la energía como por ejemplo, cuando la tapa de la PC se cierra o cuando se presiona el botón de encendido. ● Xscreensaver: administra el bloqueo de la pantalla cuando el sistema queda ocioso. ● Servicios estándares de Linux: NTP, syslog y cron. pág. 20 El navegador y el administrador de ventanas El administrador de ventanas es el responsable de manejar la interacción del usuario con las múltiples ventanas. Lo hace de manera similar que otros X manejadores de ventanas, controlando la posición de la ventana, asignando el "input focus", etc. PLATAFORMAS SOBRE LAS QUE TRABAJA CHROME OS El sistema operativo es un sistema realizado con base en código abierto construido sobre un kernel Linux distribución Debian construido sobre un núcleo monolítico y orientado inicialmente para miniportátiles, que funciona en procesadores con la tecnología x86 y ARM. Aunque el sistema se basa en un kernel Linux, tendrá un gestor de ventanas propio de Google. INSTALACIÓN DE CHROME OS Ejecución desde una máquina virtual Con este tipo de ejecución podemos emular mejor el hardware en el que corre nuestro ChromeOS con lo que tendremos una experiencia más cercana a una máquina oficial Chrome, además la podemos ejecutar sobre una ventana en nuestro sistema. - Necesitamos es tener instalado un cliente VirtualBox de máquina virtual como - Descargamos y descomprimimos la versión de ChromeOS para la máquina virtual que usemos de la web de Hexxeh - Ejecutamos Virtualbox y creamos una nueva máquina. Nombre = ChromeOS; Tipo = Linux; Versión = Other pág. 21 En el paso siguiente asignamos la memoria para la máquina virtual, entre 512 Mb y 1GB es suficiente. En este paso seleccionaremos la opción de usar un archivo de disco duro virtual y añadiremos el fichero *.vdi descargado. pág. 22 Pulsamos con el botón derecho sobre la nueva máquina virtual ChromeOS y vamos a Configuración. En la categoría Sistema, Placa Base seleccionamos Dispositivo apuntador = Ratón PS/2. En esta misma categoría, pestaña Procesador habilitamos PAE/NX. pág. 23 En la categoría Red pulsamos en Opciones Avanzadas y seleccionamos una tarjeta de red Intel PRO/1000MT. Ya podemos iniciar Chrome Os y configurarlo: pág. 24 Si tenemos problemas con el ratón desactivar en la esquina inferior la integración automática del ratón, pulsando la tecla Control derecha podemos cambiar el ratón entre la ventana emulada y la de nuestro sistema. SISTEMA DE ARCHIVOS EN CHROME OS Una unidad contiene hasta cuatro particiones: ● Una partición llamada “stateful partition” que es en donde se almacenan los archivos de los usuarios, log, etc. ● Una partición opcional de intercambio. ● Dos particiones que contienen el sistema de ficheros en sí. Sistema de archivos raíz Sólo una de las dos particiones designadas para el sistema de ficheros estará en uso en un momento dado. El otro se utilizará para autoupdating y para una alternativa en caso de la partición actual no puede arrancar. Diagrama del proceso de booteo. pág. 25 DESCRIPCIÓN DE LOS DISPOSITIVOS DE ENTRADA Y SALIDA QUE SOPORTA (CHROME OS) Inicialmente el sistema operativo Google Chrome OS estará instalado en máquinas de tipo laptop o miniportátil fabricados por ciertas compañías las cuales soportarán los siguientes dispositivos: ● ● ● ● ● ● ● ● ● ● ● Pantalla de 12,1 pulg (1280 x 800) Procesador Intel® Celeron® 4 GB RAM Unidad SSD de 16 GB Intel HD Graphics 3000 Módem para conexión Wi-Fi de doble banda 802.11 a/b/g/n, Gigabit Ethernet y 3G integrado (opcional) Cámara de alta definición 2 puertos USB 2.0 Ranura para tarjetas 4 en 1 Salida de DisplayPort++ (compatible con HDMI, DVI y VGA) Ranura de seguridad Kensington Conversaciones cara a cara con amigos y familiares con la cámara de alta definición integrada Cómodo teclado de Chrome personalizado de tamaño estándar pág. 26 Conexión con varias pantallas con el puerto DisplayPort integrado Panel multitáctil de gran tamaño con reposamuñecas de aluminio Reinicia y vuelve a la Web en 7 segundos. pág. 27 GESTIÓN DE COMUNICACIONES Y SEGURIDAD (CHROME OS) Google Cloud Printing Google transita paso a paso el largo camino que separa la idea de diseñar un sistema operativo de la puesta a punto del mismo. Uno de los problemas que enfrentaban sus desarrolladores era la utilización de periféricos locales, como las impresoras. Recordemos que este sistema operativo fue sido diseñado desde el principio para ser utilizado “en la nube”, por lo que sólo manejará aplicaciones que estén alojadas en un anfitrión de la Web. A la hora de imprimir documentos, Chrome OS utilizará una tecnología llamada Google Cloud Print, que prescindiría de la necesidad de instalar controladores y que tiene la capacidad de dirigir los trabajos de impresión desde la Web, las aplicaciones de escritorio y móviles. Google acaba de revelar el código del software y la documentación de este proyecto cuya meta es cumplir el ambicioso objetivo de “permitir a los usuarios del sistema operativo Chrome imprimir documentos a cualquier impresora desde cualquier aplicación. En vez de confiarle los trabajos de impresión al sistema operativo local o a los controladores, las aplicaciones podrán usar Google Cloud Print para enviar y manejar trabajos de impresión. Google Cloud Print será el responsable de enviar el trabajo a la impresora apropiada con las opciones particulares que el usuario haya seleccionado, y devolverá el estado en que se encuentra el trabajo a la aplicación correspondiente.” Google Cloud Print todavía se encuentra en la primera etapa de su desarrollo, y todavía es muy pronto para decir si será o no una solución adecuada. Pero si funciona, será unos de los motivos que hagan de Google Chrome OS un producto exitoso. Chromoting Se trata de una tecnología que permitirá ejecutar aplicaciones de PC remotamente y que aportará un método muy interesante para no tener que renunciar del todo a pág. 28 aplicaciones de escritorio en este sistema operativo totalmente orientado a los servicios web y a la nube de computación. Eso podría solventar una de las mayores carencias de este desarrollo. Con esta funcionalidad (llamada de forma no oficial ‘Chromoting’) Chrome OS no solo será una gran plataforma para ejecutar modernas aplicaciones web, sino que también te permitirá acceder a aplicaciones tradicionales del PC directamente dentro del navegador de modo que por lo que parece en Chrome OS se permitirá el acceso a aplicaciones de Windows, Mac OS X o Linux, pero se manejarán de forma remota: No se podrá ejecutar aplicaciones directamente, simplemente se usará algo parecido a una conexión remota de escritorio que conectará a la máquina con Windows / Mac OS X o Linux y que permitirá utilizarla remotamente. Los datos permanecerán en el ordenador remoto, no en el ordenador con Chrome OS. El modelo de seguridad se ha diseñado de la siguiente manera: se utiliza sandboxing (o cajas de arena), que restringe los privilegios de las principales partes del navegador de modo que es más difícil de contar con ellas para el montaje de un ataque, y multi-proceso de la arquitectura, que almacena los sitios web y aplicaciones de las distintas áreas de áreas de memoria del navegador y aislados del resto de la computadora. Esta es un arma clave para combatir la explotación, así como técnicas para la reducción de superficies de ataque. El objetivo final es una recuperación exitosa mediante la simple aplicación de una actualización y reiniciando el equipo infectado. El sistema operativo toma gran parte de su postura de seguridad del navegador Chrome, y a primera vista se parece al modelo de seguridad utilizado por Apple para asegurar su dispositivo iPhone. A continuación se muestra cómo Google planea reforzar la seguridad del sistema operativo para reducir la probabilidad de un ataque exitoso, y disminuir las posibilidades de explotaciones a nivel usuario. ● Proceso Sandboxing ○ Obligatoria la aplicación de control de acceso que limita recursos, procesos e interacciones del núcleo. ○ Control del grupo de dispositivos filtrado y restricción de uso indebido de los recursos. ○ Procesos de chrooting y namespacing para la reducción de recursos y las superficies de ataque en los cruzamientos de procesos. pág. 29 ○ ● ● ● ● Interposición de los dispositivos de medios para reducir el acceso directo a la interfaz del núcleo desde el navegador de Chrome y los procesos de complementos. Endurecimiento de la cadena de herramientas para limitar explotaciones fiables y exitosas o NX, ASLR, pila de cookies, etc Endurecimiento del núcleo y configuración de mondadura. Restricciones adicionales del sistema de archivos ○ Partición raíz de solo lectura ○ tmpfs basado en / tmp ○ Directorios de usuarios que no pueden tener ejecutables, archivos ejecutables privilegiados, o nodos de dispositivos. A largo plazo, mejoras adicionales del sistema se llevarán a cabo, como sandboxing para controladores. ANÁLISIS COMPARATIVO ENTRE PLATAFORMA TRADICIONAL Y EL SMARTPHONE (CHROME OS) pág. 30 Vs. Android Android fue diseñado para los teléfonos móviles y puede llegar a funcionar en netbooks, sin embargo los fabricantes lo consideren insuficiente para ellos, aunque cada vez más los fabricantes lo están adoptando. pág. 31 Android es basado en Java mientras que Chrome OS es basado en Linux con una sencilla interfaz gráfica de usuario. Vs. Windows Chrome OS parece una buena idea para ofrecer una alternativa a Windows. Chrome está en constante desarrollo y una nueva dirección que los diseñadores quieren tomar es la de separar la interfaz gráfica que incluye ventanas, y el backend. Este último puede entonces ser XLib, OpenGL o DirectX y Win32, es decir, Linux o Windows. Vs. Linux Chrome OS es realmente sólo un navegador en la parte superior de Linux y no se necesita un sistema operativo especial para eso. Se puede utilizar alternativas como KDE Plasma o Firefox OS que tiene la ventaja de promover la API estándar para programar el hardware. pág. 32 ESTADÍSTICAS DE UTILIZACIÓN A NIVEL MUNDIAL DE CHROME OS pág. 33 SOPORTE PARA LA NUBE E INTEGRACIÓN A ELLA (CLOUD COMPUTING) DE GOOGLE CHROME OS Se ha desarrollado una librería que implementa el lado del cliente de nuestro protocolo de sincronización así como el lado del servidor de Google proporciona la infraestructura para servir a los usuarios y sincronizar los datos con su cuenta de Google. La sincronización del framework del Chrome inicialmente manejara bookmarks, pero está diseñado para manejar otros tipos de datos del browser en el futuro. Usa un modelo de propagación de mensaje para propagar la notificación de modificaciones, lo que significa es que la actividad en una instancia del browser se verá reflejada inmediatamente en otra instancia. Google también planea proveer una interfaz web con el cual el usuario podrá acceder a sus bookmarks desde cualquier lugar usando cualquier browser logueandose a su cuenta de Google. La sincronización del framework usará conexión XMPP persistente para la notificación de cambios. El servidor de Google Talk proveerá la infraestructura backend para esa parte del proceso de sincronización. Los datos actuales del bookmark serán transmitidos en el formato Google Protocol Buffer. pág. 34 GESTIÓN DE PROCESOS Y PROCESADOR LINUX Ya que las distintas distribuciones de Linux que se tratan en el documento (Ubuntu, Red Hat y Fedora) y el sistema operativo Google Chrome OS están construidos sobre el kernel de Linux, al hablar de la administración de la memoria y gestión de procesos, se tratarán de la misma manera en general. Un proceso comienza su ciclo de vida cuando se invoca el método fork(), el cual crea un nuevo proceso duplicando uno existente. El proceso que llama fork() es el padre, mientras que el nuevo proceso generado es el hijo. Un proceso termina invocando exit(), liberando todos los recursos utilizados. Un proceso padre puede preguntar acerca del estado de un proceso hijo terminado mediante el método wait4(), el cual habilita la espera de la finalización de un proceso específico. Cuando un proceso termina, cambia su estado actual a uno especial llamado Zombie, el cual representa un proceso terminado hasta que el padre invoque el método wait() o waitpid(). El kernel de Linux almacena la lista de procesos en una lista doblemente enlazada llamada la lista de tareas o Task List. Cada elemento en la tasks list es un descriptor de procesos o Process Descriptor, el cual tiene toda la información que describe el programa en ejecución, por ejemplo archivos en uso, espacio de dirección del proceso, estado, prioridad, entre otros datos. Ilustración 1: El descriptor de procesos y la task list. Cada estructura taks_struct (es decir cada Process Descriptor, ver imagen anterior) es asignada en memoria mediante el Slab Allocator, esto implica la creación de una nueva estructura llamada el thread_info. pág. 35 El sistema identifica los procesos con un identificador único llamado PID o Process IDentification, el cual es un valor numérico, típicamente un entero. Su valor máximo es 32,768 (aunque puede ser incrementado al rango máximo de acuerdo al tipo de dato); este valor indica el número de procesos que pueden ser ejecutados concurrentemente en el sistema. El kernel almacena este valor en el atributo pid de cada Process Descriptor. Las tareas son típicamente referenciadas mediante un apuntador a su Process Descriptor respectivo. De hecho la mayor parte del código kernel que trabaja con procesos trabaja directamente con la estructura task_struct (es decir, con el Process Descriptor). La mayoría de arquitecturas almacenan en un registro un apuntador al Process Descriptor del proceso en ejecución actual, permitiendo un acceso más eficiente. Otras arquitecturas, tales como la x86 (la cual tiene pocos registros) aprovechan el almacenamiento del thread_info en la pila de procesos para conocer la ubicación en memoria principal del task_struct (El Process Descriptor). Estados de un Proceso: El estado consiste en la condición actual del proceso. Este atributo se almacena en la variable state del Process Descriptor. Cada uno de ellos está en uno de los cinco estados descritos a continuación: pág. 36 TASK_RUNNING: El proceso se está ejecutando o está en una cola de procesos en ejecución. TASK_INTERRUPTIBLE: El proceso está bloqueado, esperando alguna para reanudar, en tal caso el kernel cambia el estado a TASK_RUNNING. El proceso despierta y se vuelve ejecutable si recibe dicha señal1. TASK_UNINTERRUPTIBLE: Similar al TASK_INTERRUPTIBLE, solo que cuando recibe la señal para reanudar, el proceso no reanuda y se vuelve ejecutable (es decir, cambia su estado a TASK_RUNNING) TASK_ZOMBIE: El proceso ha terminado, como se había dicho anteriormente, este estado representa un proceso hijo terminado, pero a la espera de ser invocado por el padre mediante wait(), wait4() o waitpid(). En caso tal de que el padre invoque alguno de los tres métodos, el Process Descriptor esvaciado de la Task List. TASK STOPPED: La ejecución del proceso ha parado. Se debe a que el proceso no está corriendo y no es deseable que corra. Esto ocurre si el proceso recibe las señales de parada de proceso o si recibe cualquier tipo de señal mientras está siendo corregido. 1 Algunas de las señales mencionadas son las siguientes: Señales de continuación del proceso: SIGCONT. Señales de parada del proceso: SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU. Señales de Terminación del proceso: SIGKILL, SIGTERM, SIGHUP, SIGINT, SIGQUIT. pág. 37 GESTIÓN DE MEMORIA LINUX. En un sistema Linux, la memoria se utiliza para los datos de "caché" que es utilizado por la CPU. La idea detrás de almacenamiento en caché es que se necesita más tiempo para la CPU acceder a los datos en el disco duro que lo hace para acceder a los datos que está presente en la memoria principal. Así que el almacenamiento en caché utilizando la memoria principal acelera eficazmente el sistema. En un sistema de ventanas, no hay tal optimización, memoria de manera gratuita se desperdicia, ya que no se acostumbra. Ahora, cuando una aplicación realmente necesita toda la memoria que se utiliza para el almacenamiento en caché, Linux salta los datos en caché y hace la memoria requerida disponible. Como última opción, si la totalidad de la memoria principal se agota, entonces la memoria de intercambio swap se utiliza. El Subsistema de administración de memoria es uno de las más importantes partes del OS Linux. Desde aquellos días en que computación ha requerido más memoria de la que existe físicamente en un sistema. Las estrategias fueron desarrolladas para vencer esta limitación y la más exitosa de ellas se conoce hoy en día como “memoria virtual”. La Memoria Virtual hace parecer a un sistema más abundante en memoria de lo que realmente es. A continuación se explica que provee el subsistema de memoria virtual en Linux: Direccionamiento Largo de espacios en Memoria El OS hace que el sistema aparente tener un volumen de memoria alto al que realmente posee. La memoria virtual puede ser N veces más grande que la memoria física de un sistema. Protección Cada proceso en el sistema posee su propio espacio de direcciones virtuales de memoria. Estos espacios están completamente separados uno del otro y así los procesos corren sin afectar a otros. Mapeo en Memoria El mapeo en memoria es acostumbrado para mapear imágenes y archivos de datos dentro de un espacio de direcciones de un proceso. pág. 38 Alojamiento Equitativo de Memoria Física El Subsistema de administración de memoria permite a cada proceso que se encuentra en ejecución dentro del sistema, un equitativa distribución de la memoria del sistema. Memoria Virtual Compartida En ocasiones necesitaremos compartir la memoria entre procesos. Por citar un ejemplo, pudieran existir varios procesos corriendo en el sistema , procesos del tipo comando de la shell de bash, más que múltiples copias de bach, cada una con su propio espacio de direcciones virtuales de memoria, sin duda sería mucho mejor “tener una sola copia en memoria física y que todos los procesos que corran bash la compartieran”. Un modelo Abstracto de Memoria Virtual Cuando el procesador ejecuta un programa, este leerá una instrucción de memoria y decodificará la misma. Dentro del proceso de decodificar la instrucción, se podría requerir obtener o almacenar contenidos de una localidad de memoria. El procesador entonces ejecuta la instrucción y este se mueve hacia la siguiente instrucción a leer y decodificar (repitiendo lo anterior). De esta forma el procesador se mantiene siempre accediendo a memoria leyendo y almacenando datos sobre ella. pág. 39 Sobre un sistema de memoria virtual, absolutamente todas las direcciones son virtuales y no son direcciones físicas. Esas direcciones virtuales serán convertidas en direcciones físicas por el procesador, tomando como base la información obtenida sobre un conjunto de tablas mantenidas por el Sistema operativo Linux. La memoria virtual y física son divididas en pedacitos llamados páginas. Esas páginas son todas del mismo tamaño, para que el sistema las pueda administrar de una manera sencilla. Linux sobre arquitecturas Alpha AXP suele usar 8 Kbyte por página y sobre sistema Intel x86 la página es de 4 Kbyte. Cada una de esas páginas tiene un identificador único conocido como el “Page Frame Number (PFN)” o número de cuadro de Página. En este modelo de paginación, una dirección virtual está compuesta de 2 partes; un offset (desplazamiento) y un virtual PFN. Si la página de memoria es de 4 Kbytes, los bits 11:0 de la dirección virtual contiene el offset y los bits 12 en adelante contendrán el PFN virtual. Entonces, sobre una Arquitectura intel x86 a 32 bits tendríamos 1,048,576 (posibles direcciones) páginas de memoria virtual de 4 kb cada una. Cada vez que el procesador encuentre una dirección virtual, este extraerá su offset y su PFN virtual para traducir esta página a una página física y accederla. Esto el procesador lo hace posible mediante la magia de las “Tablas de Paginas (conjunto de tablas mantenidas por el Sistema operativo Linux)”. pág. 40 Cada entrada de una Tabla de Páginas contiene teóricamente la siguiente información: a) Una bandera que indica si es una entrada válida. b) El PFN físico que esta entrada está describiendo. c) Información de Control de Acceso. Esto describe cómo la página podría ser usada. Si esta podría ser escrita? o si esta contiene código ejecutable? El concepto de Page HIT y FAULT Supongamos que un programa genera una dirección virtual. De esta se extraerán los bits 31-12 para obtener el número de página virtual. Entonces esto se usará como un índice dentro de la tabla de páginas, este índice es conocido como page table entry (PTE). Cada PTE consiste de un bit validador (flag que indica si es una entrada válida) y 20 bits para la página física. Si el bit validador es 1, entonces la página virtual esta en RAM, y podremos obtener la página física mediante su PTE. A este suceso se le llama un page hit. Si el bit validador es 0, entonces la página virtual no está en RAM, y los 20 bits para la página física ahora nos son inútiles. Entonces la página virtual esta en disco duro pág. 41 (en la partición swap) y debemos traerla de ahí, para colocarla posteriormente en RAM. A este suceso se le llama un page fault. A razón de que el disco es lento, deberemos buscar que el kernel que usamos mantenga al mínimo el número de page faults. Traducción de una página virtual a una página física Suponiendo que tenemos un page hit, el procesador toma el número de marco de página físico y lo multiplica por el tamaño de página para obtener la dirección base de la página física en memoria. Finalmente, el procesador le suma el desplazamiento a la instrucción o dato que necesita, y esta es la dirección física con la que accede a memoria. pág. 42 SOPORTE A TIEMPO REAL EN LINUX Gracias a la reciente llegada del conjunto de parches de PREEMPT_RT, la comunidad Linux unificó su método para lograr el rendimiento en tiempo real con Linux. Lo que es particularmente relevante acerca de esta solución es que un solo sistema operativo en tiempo real basado Linux permite a los desarrolladores obtener las ventajas del rendimiento en tiempo real con la accesibilidad, usabilidad y soporte de una comunidad que están disponibles en sistemas operativos de propósito general. Un RTOS de Linux creado con el conjunto de parches de PREEMPT_ RT incluye jitter al mismo nivel que otros RTOS dedicados, como el VxWorks de WindRiver o el Interval de Zero. Del mismo modo, con respecto a la utilización de la CPU como una función de la velocidad del bucle, un PREEMPT_RT RTOS basado en Linux ofrece un rendimiento equivalente o mejorado sobre otros RTOS dedicados. En gran parte, esta mejora del rendimiento a nivel de aplicación, medido por una ganancia inferior en el uso de la CPU a velocidades más altas del bucle, es un resultado de la disponibilidad de la programación de un sistema RTOS basado en Linux. A diferencia de la mayoría de los RTOS dedicados, un RTOS basado en Linux puede ofrecer tanto un programador en tiempo real para las tareas críticas, como un programador mucho más eficiente y completo para todas las tareas que no son en tiempo real. El consenso creciente es que PREEMPT_RT permite un RTOS basado en Linux que ofrece un rendimiento similar al de otros RTOS existentes. Lograr este nivel de rendimiento es excelente, tanto para los usuarios de Linux que buscan hacer frente a aplicaciones de prestaciones más elevadas y en tiempo real, como para aquellos que actualmente dependen de RTOS dedicados que buscan beneficiarse de la estabilidad, facilidad de uso y soporte de la comunidad que ofrece Linux. La gran comunidad de IP y herramientas junto con la importante base de usuarios con experiencia permite a los diseñadores una mayor autonomía para incrementar la funcionalidad de su solución a un coste menor de desarrollo. Muchas de las mejoras en todo el sistema operativo pueden ser rápidamente aprovechadas, por ejemplo, el stack de red maduro y estable proporcionado por Linux soporta verdaderos NICs (Network Interface Cards) de doble DHCP y ofrece soporte para protocolos de comunicación como IPv6 y SNMP. El conjunto de parches PREEMPT_RT ofrece unos vectores clave de diferenciación fundamentales para los diseñadores de sistemas embebidos. Extiende la flexibilidad pág. 43 que Linux proporciona para diversas arquitecturas de hardware y el diseño de un solo sistema operativo hace que la asignación de recursos sea mucho más simple. Como resultado, los usuarios se benefician de una mayor facilidad de uso, una capacidad de programación más intuitiva y una mejor capacidad de configuración y gestión del sistema. Más allá de flexibilidad del hardware, un RTOS de Linux permite a los equipos de diseño embebido añadir y formar a los desarrolladores de software más fácilmente dada la ubicuidad de Linux y el relativamente amplio suministro de usuarios y recursos de Linux. Gracias al acceso a un RTOS basado en Linux más accesible y familiar, los equipos de diseño embebido pueden hacer frente de manera más eficiente a los desafíos del diseño embebido con un conjunto consolidado de cadenas de herramientas de software. Como PREEMPT_RT continúa creciendo como lo hace el método estándar para obtener la funcionalidad en tiempo real con Linux, el mercado está empezando a reconocer un número cada vez mayor de soluciones basadas en COTS (Custom Off-The-Shelf), que ofrecen RTOS basado en Linux. Un ejemplo es el nuevo controlador cRIO-9068 de National Instruments, que cuenta con un RTOS basado en Linux abierto y con buen mantenimiento con un factor de forma compacto y robusto. El controlador cRIO-9068 soporta el desarrollo de aplicaciones mediante el software de diseño de sistemas LabVIEW de NI y las herramientas C/C++ que permiten a los usuarios reutilizar eficazmente el código C/C++ y aprovechar la comunidad de Linux al mismo tiempo que se benefician de la interfaz de desarrollo intuitivo proporcionada por LabVIEW. El diseño embebido es ahora más accesible para los equipos de diseño de software con experiencia limitada en hardware debido a las soluciones COTS basadas en RTOS de Linux. Para los equipos de diseño más maduros, estas soluciones ofrecen un camino mucho más eficiente hacia el mercado; ya que, los recursos del equipo se pueden ser invertir en las tareas específicas de la aplicación en lugar de hacerlo en tareas rutinarias, tales como el diseño y la disposición de los conectores de los periféricos de un procesador o escribir middleware para integrar los componentes de los periféricos. Además, para los equipos deseosos de contar con componentes de software de código abierto, un RTOS de Linux empaquetado en una solución COTS por un vendedor dispuesto a mantener y actualizar el sistema operativo proporciona la pág. 44 suficiente confianza y responsabilidad para garantizar la inversión. Los primeros usuarios ya son testigos de estas ventajas. En tanto que la oferta de RTOS de Linux llegue a ser más común en las soluciones basadas en COTS, los usuarios deberían buscar arquitecturas de hardware subyacentes que ofrezcan la mayor flexibilidad. A modo de ejemplo, el controlador cRIO-9068 cuenta con la arquitectura RIO (Reconfigurable I/O) de NI LabVIEW, que permite a los usuarios hacer frente a un conjunto muy diverso de necesidades. La versatilidad que ofrece la arquitectura LabVIEW RIO se debe a un procesador que trabaja en conjunto con una FPGA con acceso a E/S. Los usuarios pueden llevar rápidamente soluciones altamente diferenciadas al mercado con hardware flexible COTS que ofrece un RTOS basado en Linux. Esta nueva tecnología comercial permite a los usuarios reutilizar el código y se benefician del incremento de prestaciones, como muestra. A medida que la línea principal del kernel de Linux continúa mejorando las características, tales como el aislamiento de los núcleos y la gestión de memoria, PREEMPT_RT servirá como una solución cada vez más atractiva para los diseñadores de sistemas embebidos. Apelando a los desarrolladores tradicionales de Linux y de RTOS, un RTOS basado en Linux ofrece una oportunidad significativa - sobre todo cuando se hace disponible en una plataforma COTS resistente, robusta y flexible. Gracias a este enfoque, los diseñadores pueden centrarse en atender a cuestiones tales como la integración o la seguridad de los sistemas, mientras que el mantenimiento y las actualizaciones del sistema operativo dependen de los proveedores, lo cual permite optimizar aún más su diseño. Las soluciones COTS que ofrecen los RTOS de Linux harán posible que los diseñadores puedan mantenerse por delante de las presiones del mercado, lanzando diseños innovadores al mercado más rápido que nunca, marcando una nueva era del diseño embebido. pág. 45 UBUNTU Presentación: Ubuntu es un sistema operativo basado en 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. Ubuntu está compuesto por diversos paquetes de software que, en su mayoría, son distribuidos bajo código abierto y licencia libre. Este sistema operativo no tiene fines lucrativos (se consigue de manera gratuita) y aprovecha las capacidades de los desarrolladores de la comunidad para mejorar sus prestaciones. Su facilidad de uso es una de las razones que han llevado a que Ubuntu cada vez se haya convertido en una presencia más constante dentro del mercado tecnológico. No obstante, tampoco hay que olvidar que otro de estos motivos es el conjunto de aplicaciones que lleva incorporadas para satisfacción de sus usuarios. Su patrocinador, Canonical, es una compañía británica propiedad del empresario sudafricano Mark Shuttleworth. Ofrece el sistema de manera gratuita, y se financia por medio de servicios vinculados al sistema operativo y vendiendo soporte técnico. 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 Kubuntu, Xubuntu, Edubuntu, Ubuntu Studio, Mythbuntu, Ubuntu Gnome y Lubuntu. Canonical, además de mantener Ubuntu, también provee de una versión orientada a servidores, Ubuntu Server, una versión para empresas, Ubuntu Business Desktop Remix, una para televisores, Ubuntu TV, y una para usar el escritorio desde teléfonos inteligentes, Ubuntu for Android. 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, reciben soporte durante cinco años en los sistemas de escritorio y de servidor. pág. 46 ESTRUCTURA Y COMPONENTES DEL SISTEMA - UBUNTU Ubuntu internamente divide todo el software en cuatro secciones, llamadas componentes, para mostrar diferencias en licencias y la prioridad con la que se atienden los problemas que informen los usuarios. Estos componentes son: main, restricted, universe y multiverse. Por defecto se instalan paquetes de los componentes main y restricted. Los paquetes del componente universe de Ubuntu generalmente se basan en los paquetes de la rama inestable (Sid) y en el repositorio experimental de Debian. ● main: contiene solamente los paquetes que cumplen los requisitos de la licencia de Ubuntu, y para los que hay soporte disponible por parte de su equipo. Éste está pensado para que incluya todo lo necesario para la mayoría de los sistemas Linux de uso general. Los paquetes de este componente poseen ayuda técnica garantizada y mejoras de seguridad oportunas. ● restricted: contiene paquetes soportados por los desarrolladores de Ubuntu debido a su importancia, pero que no está disponible bajo ningún tipo de licencia libre para incluir en main. En este lugar se incluyen los paquetes tales como los controladores propietarios de algunas tarjetas gráficas, como por ejemplo, los de ATI y NVIDIA. El nivel de la ayuda es más limitado que para main, puesto que los desarrolladores pueden no tener acceso al código fuente. ● universe: contiene una amplia gama de programas, que pueden o no tener una licencia restringida, pero que no recibe apoyo por parte del equipo de Ubuntu sino por parte de la comunidad. Esto permite que los usuarios instalen toda clase de programas en el sistema guardándolos en un lugar aparte de los paquetes soportados: main y restricted ● multiverse: contiene los paquetes sin soporte debido a que no cumplen los requisitos de software libre. PLATAFORMAS SOBRE LAS QUE TRABAJA UBUNTU En su última versión, Ubuntu soporta oficialmente dos arquitecturas de hardware en computadoras personales y servidores: 32-bit (x86) y 64-bit (x86_64) Sin embargo, extraoficialmente, Ubuntu ha sido portado a más arquitecturas: ARM, PowerPC, SPARC e IA-64. El 12 de marzo de 2009, Ubuntu anunció soporte para plataformas externas de administración de computación en nube, como Amazon EC2. pág. 47 PROCESO DE INSTALACIÓN DE UBUNTU Requisitos: Los requisitos mínimos –recomendados-, teniendo en cuenta los efectos de escritorio, deberían permitir ejecutar una instalación de Ubuntu Server 12.04 LTS. Procesador x86 a 700 MHz. Memoria RAM de 512 Mb. Disco Duro de 5 GB (swap incluida). Tarjeta gráfica y monitor capaz de soportar una resolución de 1024x768. Lector de DVD o puerto USB. Conexión a Internet puede ser útil. Para la instalación de Linux, ya sea de la distribución que sea, se necesita como mínimo dos particiones: la principal, donde se instalará el sistema operativo, formateada con el sistema de archivos que permita la distribución que vayamos a instalar (ext2, ext3, ext4) y otra partición llamada swap (intercambio de memoria virtual), esta partición es utilizada como memoria RAM virtual cuando tenemos muchas aplicaciones abiertas y la memoria RAM de nuestro ordenador es insuficiente, de tamaño del swap se suele poner el doble de la memoria RAM. Los efectos de escritorio, proporcionados por Compiz, se activan por defecto en las siguientes tarjetas gráficas: Intel (i915 o superior, excepto GMA 500) NVidia (con su controlador propietario o el controlar abierto incorporado Nouveau) ATI (a partir del modelo Radeon HD 2000 puede ser necesario el controlador propietario fglrx) Para una instalación óptima, y sobre todo si se dispone de más de 3 GiB de RAM, existe también una versión de Ubuntu para sistemas de 64 bits. Imágenes Oficiales: Las imágenes ISO de Ubuntu se pueden descargar desde el sitio oficial (http://www.ubuntu.com/), para elegir la versión Desktop o Server. También mediante la compra directa en el sitio Ubuntu Shop con discos y pendrives con pág. 48 Ubuntu instalado, o mediante los equipo de distribución LoCoTeam de cada país que distribuye solo las versiones LTS. Además de la descarga de imágenes ISO por descarga directa, también se puede descargar a través de redes P2P como BitTorrent, reduciendo así la carga en los servidores. Para ser grabados en DVD o unidades portátiles USB. Otras instalaciones: Wubi: Un instalador libre y oficial de Ubuntu para sistemas operativos Windows, cuyo objetivo es permitir que los usuarios puedan instalar Ubuntu dentro de Windows sin formatear o perder información. A partir de Ubuntu 13.04, se abandonó el soporte para Wubi y no sería compatible desde esa versión en adelante, esto también se suma a que en la versión anterior se había perdido compatibilidad con Windows 8. LiveUSB: Una herramienta que viene de serie y que permite la creación de un LiveUSB de la distribución, de modo que se pueda cargar el sistema desde una memoria USB permitiendo guardar datos y configuraciones en el mismo, pero con la limitación de que sólo funciona en una computadora cuya placa base soporte el arranque desde un medio USB. LiveDVD personalizado: Existen herramientas como Reconstructor, UCK o remastersys que permiten a cualquiera crear fácilmente un LiveDVD personalizado de una instalación existente de Ubuntu. CD de instalación mediante red: Se trata de una imagen ISO de apenas unos 10 MB que contiene los paquetes necesarios para descargar el sistema base desde los repositorios oficiales de Ubuntu y posteriormente elegir el escritorio deseado. pág. 49 GESTIÓN DE PROCESOS Y DEL PROCESADOR - UBUNTU En lo que se refiere a la gestión de procesos, Ubuntu tiene kernel preventivo y soporta multiprocesamiento simétrico (SMP). Hay dos espacios que identificamos en el círculo del proceso. El espacio del kernel y el espacio de usuario. La gestión de procesos tiene lugar en el espacio del núcleo o kernel. Es importante tener en cuenta los siguientes aspectos: ● Kernel: es el corazón del sistema operativo. “Es responsable de mantener todas las abstracciones importantes del sistema operativo, incluyendo la memoria y los procesos virtuales” (Conceptos de Sistemas Operativos, p. 807). ● Librerías del sistema: Incluyen un conjunto de funciones que no necesitan privilegios de kernel en aplicaciones para interactuar con el kernel. ● Utilidades del Sistema: Estos incluyen programas que llevan a cabo tareas de administración individuales, por ejemplo, inicializar, configurar aspectos del sistema. Además, existen los llamados “deamons”, que "pueden ejecutarse en forma permanente, para el manejo de tareas como responder a las conexiones de red entrantes, aceptar solicitudes de inicio de sesión de terminal y la actualización de los archivos de registro" (Conceptos de Sistemas Operativos, p. 815). Procesos y Subprocesos Los procesos e hilos no son tan diferentes en Linux. Tanto fork() y exec() son usados para crear procesos. Los hilos son creados por el llamado al sistema clone(). Clone() crea procesos hijos que permite utilizar la información compartida con el proceso padre que a través de un conjunto de indicadores que se pasan. Exec() es el llamado al sistema utilizado para crear un nuevo proceso. Cada proceso que se inicia es referenciado con un número de identificación único conocido como Process ID PID, que es siempre un entero positivo. Prácticamente todo lo que se está ejecutando en el sistema en cualquier momento es un proceso, incluyendo el shell, el ambiente gráfico que puede tener múltiples procesos, etc. La excepción a lo anterior es el kernel en sí, el cual es un conjunto de rutinas que residen en memoria y a los cuales los procesos a través de llamadas al sistema pueden tener acceso. pág. 50 Procesadores La arquitectura de Linux en los procesadores amd e intel para la plataforma Ubuntu y sus variantes son provistos por el kernel, los mismos están diseñados para utilizarse independientemente que sea un procesador amd o intel. Estas arquitecturas de los procesadores Intel x86 64 bits y AMD64 utilizan el mismo set de instrucciones. Su diferencia prevalece en la instalación correcta del software de Ubuntu haciendo eficiente su capacidad de procesamiento, su edición de texto, película, juegos de computadora, entre otros. pág. 51 Programación UBUNTU Linux tiene dos algoritmos de proceso de programación separados. "Uno es de tiempo compartido, un programa preferente justo entre varios procesos; el otro está diseñado para tareas en tiempo real. Los algoritmos de tiempo compartido son tres. ● SCHED_OTHER SCHED_ BATCH ● SCHED_IDLE Para los algoritmos de tiempo compartido, se utiliza el método estándar RoundRobin. Los algoritmos en tiempo real son la FCFS y el Round-Robin, que fue descrito anteriormente, con la adición de una prioridad a la de su clase de planificación. Cuando dos procesos tienen la misma clase, la espera en la cola más larga tiene una prioridad más alta. Para los proceso de diferente clase el uno con la clase del hight tiene la mayor prioridad. Sincronización Kernel Las tareas pueden tratar de acceder a las mismas estructuras de datos internas. Desde Ubuntu Linux son preventivas, si otra tarea con mayor prioridad está lista para usar el tiempo de CPU, la tarea en ejecución se adelanta incluso si se ejecuta en el kernel. Con el fin de bloquear el kernel, Ubuntu proporciona spinlocks y semáforos. Para las máquinas de multiprocesamiento simétrico, spinslocks son el mecanismo fundamental. Esto no puede suceder en las máquinas de un solo procesador, ya que sólo hay un tiempo de CPU y de bloqueo por períodos cortos, que es lo que spinslocks hacen, tendrían gran impacto para el rendimiento del sistema. En lugar de spinlocks, en las máquinas de un solo procesador, la capacidad preventiva está activado y desactivado en su lugar. El aspecto más importante en el mecanismo preventivo es lo que sucede con interrups. En Ubuntu las interrupciones están priorizados y separados en dos partes. La mitad superior de una y la mitad inferior de otra. Una forma de interrupción de la primera clase puede interrumpir de una forma de la segunda clase, pero no puede interrumpir a otro de la misma clase. pág. 52 Multiprocessing (Multiprocesamiento) Ubuntu incluye dentro de su sistema operativo el Linux kernel que se utiliza en varios procesadores (desde la versión de Ubuntu 5, los cuales proveen a Ubuntu con un avanzado entorno computacional donde el CPU demanda más poder tanto de RAM como de tarjeta gráfica. El Linux kernel puede utilizar múltiples procesadores, los cuales permiten que Ubuntu pueda ser utilizando ventajosamente en entornos donde la demanda de CPU es mayor. Este kernel puede manejar hasta 16CPU o un servidor de poco tamaño. Multiprocessor support (“symmetric multiprocessing” or SMP) está disponible para esta arquitectura. Ubuntu 12.04 tiene una imagen del núcleo que ha sido compilado con SMP-alternatives. Esto significa que el núcleo detectará el número de procesadores (o núcleos de procesador) y desactivará automáticamente SMP en los sistemas mono-procesador. GESTIÓN DE MEMORIA - UBUNTU Gestión de la memoria es la eficiencia con la que se puede acceder a los datos. Ubuntu mueve activamente los datos en un espacio rápidamente recuperable de llamada de memoria de acceso aleatorio (RAM), incluso cuando los datos no están en llamada. Un equipo que utiliza Ubuntu no necesita un programa de desfragmentación. Linux, que es la base de Ubuntu, organiza automáticamente los datos mediante el almacenamiento de archivos en espacios que son lo suficientemente grandes para contener, en lugar de dividirlos, o fragmentarlos. pág. 53 GESTIÓN DE MEMORIA AUXILIAR (SECUNDARIA Y TERCIARÍA) Y SISTEMA DE ARCHIVOS - UBUNTU. El sistema operativo Linux Ubuntu, utiliza la memoria swap que está en una partición aparte esta memoria puede ser utilizada por el CPU. Esta puede utilizar tres tipos de memoria llevando una secuencia lineal a través de la misma en la cual la memoria se utiliza la memoria RAM y al verse esta utilizada a capacidad pasaría a utilizar la memoria swap. En el sistema Windows no existe dicha optimación así que la memoria no se utiliza y se pierde. En el caso en el cual toda la memoria sea utilizada por la memoria que esté en cache como última opción la memoria que está destinada en el swap partition será utilizada. Sistema de Archivos El sistema de archivos de Ubuntu está basado en el Filesystem Hierarchy Standard. Este es un estándar que con mayor o menor rigor siguen la mayoría de las distribuciones GNU/Linux y algunos otros sistemas operativos basados en UNIX. Algunas de sus principales características son: ● Todo está organizado en una única estructura de directorios. Todo está dentro del directorio raíz, representado por el signo '/'. ● Todo es un archivo. Dentro de / está representado todo el sistema, los directorios y archivos presentes en los discos duros y demás dispositivos de almacenamiento montados, todo el hardware de la computadora, todos los procesos en ejecución, etc... pág. 54 ● Cada cosa en su sitio y un sitio para cada cosa. Todos los directorios tienen una finalidad concreta, todos los contenidos tienen una ubicación predeterminada según su naturaleza y función. Aunque todo aparente formar parte de un único sistema de archivos en realidad hay varios. Además de los sistemas de archivo de disco que contienen los archivos normales, incluye diversos sistemas de archivos virtuales que cumplen diversas funciones. Estructura de Directorios Si listamos el contenido del directorio raíz desde la consola obtendremos algo parecido a esto: /bin → Aquí tenemos los programas básicos que pueden lanzar todos los usuarios del sistema. /boot → Aquí tenemos los archivos de configuración del arranque del sistema (como por ejemplo GRUB), el Kernel y un disco RAM para el arranque (initrd). cdrom → Antiguamente aquí se montaban los CD-ROM's. Actualmente es un enlace a /media/cdrom, está ahí por compatibilidad con programas antiguos. /dev → Aquí encontramos todos los dispositivos físicos del sistema (todo nuestro hardware). La mayoría de su contenido es generado durante el arranque. o /dev/disk → contiene los archivos que representan los discos y sus particiones. o /dev/psaux → Representa al ratón. o /dev/ram* → Representa la memoria RAM. /etc → Aquí encontramos los archivos de configuración generales del sistema y los programas. /home → Es un directorio donde tenemos los directorios personales de los usuarios. o /home/ (usuario) → Es nuestro directorio personal. Aquí es donde guardaremos nuestros documentos, música, películas, fotos y los archivos de configuración personalizados de los programas que usamos. También podemos referirnos a este directorio por su abreviatura '~' pág. 55 o ~/Desktop → Aquí tenemos nuestro escritorio. initrd.img → Es un enlace a /boot/initrd-img-xxx, está ahí por compatibilidad con programas antiguos. /lib → Contiene las bibliotecas necesarias para que se ejecuten los programas que tenemos en /bin y /sbin. Si usas un sistema de 64bits tendrás un enlace lib64 que apunte a /lib. /lost+found → Este directorio es usado por el programa fsck, cuando fsck no puede reparar completamente un sistema de archivos, guarda aquí todo lo que no sepa dónde ubicar. /media → Aquí encontramos todas las unidades físicas que tenemos montadas. Discos duros, unidades de dvd, pendrive, /mnt → Este ha sido el lugar tradicional para montar unidades, ha perdido gran parte de su función en favor de /media pero sigue siendo útil para el montaje puntual de algunas cosas. /opt → Es el lugar apropiado para la instalación de programas que no forman parte de la distribución y que pueden no encajar bien en la estructura de /usr /proc → Su contenido representa a los procesos en ejecución. Aquí se encuentran archivos que reciben o envían información al núcleo. Es un sistema de archivos virtual, en realidad en el disco duro ese directorio está vacío. /root → Es el directorio personal del usuario root. /sbin → Aquí se encuentran los ejecutables de los demonios (servicios) instalados en el sistema. /selinux → selinux es un sistema que extiende el sistema de permisos típico de Unix. /srv → Pensado para contener los archivos compartidos por los servidores. No es muy usado. /sys → Contiene información sobre el sistema y el kernel. Es un sistema de archivos virtual, en realidad en el disco duro ese directorio está vacío. /tmp → Este directorio contiene información temporal de los programas. No se conserva su contenido, suele borrarse al arrancar el sistema. /usr → Este directorio contiene los archivos de los programas no esenciales. Es el directorio más grande del sistema. o /usr/X11R6 → Aquí tenemos los programas de X-Window, el servidor gráfico. o /usr/bin → Aquí tenemos programas de uso general para los usuarios. o /usr/doc → Aquí tenemos documentación de los programas. o /usr/etc → Aquí tenemos archivos de configuración de uso global. pág. 56 o /usr/include → Aquí tenemos las cabeceras de C y C++. Son archivos con extensión .h. Los programadores comprenderán su significado. o /usr/lib → Aquí tenemos las bibliotecas de nuestros programas. o /usr/man → En este directorio encontramos los manuales (man). o /usr/sbin → Este directorio contiene los ejecutables de los demonios correspondientes a los programas de usuario. o /usr/src → Aquí se almacenan los códigos fuentes de nuestros programas. /var → Este directorio contiene información variable, como registros, datos de los servidores, etc. vmlinuz → Suele ser un enlace a /boot/vmlinuz-xxx, está ahí por compatibilidad con programas antiguos. GESTIÓN DE ENTRADA Y SALIDA. La biblioteca de E/S estándar proporciona una interfaz de flujo (stream) utilizando un sistema de buffers (memoria intermedia) simple y eficiente. La entrada y la salida se mapean en flujos lógicos de datos y las características físicas de E/S permanecen ocultas para el programador. Las funciones y las macros se muestran más adelante; para más información se puede recurrir a las páginas del manual individuales para cada una de ellas. Un flujo se asocia con un archivo externo (el cual debe estar en un dispositivo físico) abriendo un archivo, el cual se supone que debe ser creado. Crear un archivo existente hará que dicho archivo quede vacío. Si un archivo soporta posicionamiento (como un archivo en disco, y en contraposición a lo que ocurre con un archivo de terminal) entonces un marcador de posición asociado al flujo se situará al principio del archivo (byte cero), a no ser que el archivo sea abierto en modo añadir (append). Si se utiliza esta última modalidad de apertura, el marcador de posición será situado al final del archivo. El indicador de posición se mantiene en sucesivas lecturas, escrituras y reposicionamientos. Todas las entradas se hacen como si los caracteres hubieran sido leídos mediante sucesivas llamadas a la función fgetc(3) todas las salidas se producen como si todos los caracteres fueran leídos mediante llamadas sucesivas a la función fputc(3) Un archivo se desentiende de un flujo cerrando dicho archivo. Los flujos de salida son descargados (toda el contenido de la memoria intermedia que no fue escrita al pág. 57 archivo, se transmite en ese momento) antes de que el flujo se desentienda del fichero. El valor de un puntero que apunta a un objeto FILE es indeterminado tras el cierre del archivo. Un archivo será reabierto repetidamente, por la misma u otras ejecuciones de un programa, y sus contenidos serán leídos o modificados (si se puede reposicionar al principio). Si la función main() retorna a quien llamo al programa, o se utiliza la función exit(3) todos los archivos abiertos serán cerrados (consecuentemente todos los flujos de salida serán descargados sobre sus respectivos ficheros) antes de que se produzca el cierre efectivo del programa. Otras formas de terminar un programa como abort(3) no se preocupan de cerrarlos apropiadamente. Cuando el programa comienza, tres flujos de texto se inician por defecto y no necesitan ser abiertas explícitamente — entrada estándar (para la lectura de la entrada convencional), — salida estándar (para la escritura de la salida convencional) — salida de error estándar (para la salida de diagnósticos). Estos flujos se abrevian, respectivamente, como stdin, stdout y stderr. Una vez abierta, el flujo de errores estándar no utiliza memoria intermedia totalmente; los flujos estándar de entrada y salida lo harán solamente en el caso de que dichos flujos no hagan referencia a un dispositivo interactivo. Los flujos de salida que hacen referencia a dispositivos de tipo terminal, siempre utilizan memorias intermedias lineales por defecto; durante la salida hacia cada flujo se escribe automáticamente un flujo de entrada que hace referencia al dispositivo terminal que lee. En los casos donde se requieren una enorme cantidad de cálculos, después de imprimir parte de una línea en un terminal de salida, es necesario efectuar una descarga de la memoria intermedia en el flujo de salida estándar mediante fflush(3) antes de dejarlo y comenzar los cálculos para que la salida aparezca. La biblioteca stdio es parte de la biblioteca libc y las rutinas se cargan automáticamente según son necesitadas por los compiladores cc(1) y pc(1). Las secciones SINOPSIS de las siguientes páginas del manual indican que archivos de cabecera (include) deben ser utilizados, en forma de la declaración de la función y mostrando que variables externas resultan de interés. pág. 58 Las siguientes están definidas como macros; estos nombres no deben ser reutilizados sin eliminar primero sus definiciones actuales mediante #undef: BUFSIZ, EOF, FILENAME_MAX, FOPEN_MAX, L_cuserid, L_ctermid, L_tmpnam, NULL, SEEK_END, SEEK_SET, SEE_CUR, TMP_MAX, clearerr, feof, ferror, fileno, fropen, fwopen, getc, getchar, putc, putchar, stderr, stdin, stdout.Existenn versiones como función de las macros feof, ferror, clearerr, fileno, getc, getchar, putc, y putchar y serán utilizadas si las definiciones de las macros han sido eliminadas explícitamente. DESCRIPCIÓN DE LOS DISPOSITIVOS DE ENTRADA Y SALIDA QUE SOPORTA (LINUX) En un sistema Linux la interacción final con dispositivos la realizan los controladores o el kernel (núcleo). Dicho de otra forma, un dispositivo sólo podrá ser usado si el kernel lo soporta o si existe un controlador capaz de controlarlo y si se configura apropiadamente para hacerlo. Por esto, los dispositivos que se produzcan hoy, no pueden ser operados con controladores ya existentes (a menos que los dispositivos hayan sido diseñados para ser operados con éstos, caso que para algunos dispositivos como tarjetas de sonido, tarjetas de vídeo o modems es poco común), por esto mismo, eventualmente, si actualiza el hardware de su computador o si desea usar un cierto servicio del kernel, también deberá actualizar algún módulo o eventualmente el kernel completo. Aunque algunos controladores autodetectan la configuración del dispositivo, esto no siempre ocurre y en algunos casos tendrá que probar, hasta hacer funcionar el módulo que maneja el dispositivo (en estas pruebas la documentación del dispositivo y la del módulo serán de utilidad. Si desea experimentar rápidamente emplee modconf). Las fuentes en C de cada versión del kernel cuentan con controladores para diversos dispositivos. Cuando se compila una versión, algunos de esos controladores pueden unirse con el kernel mismo (estáticamente), otros pueden dejarse como módulos para cargarse/descargarse cuando la parte estática del kernel esté operando, otros pueden ser excluidos del proceso de compilación (y por lo tanto no podrán ser usados ni cuando el kernel esté operando). El núcleo Linux ha sido criticado con frecuencia por falta de controladores para cierto hardware de computadoras de escritorio. Sin embargo, el progresivo incremento en la adopción de Linux en el escritorio ha mejorado el soporte de hardware por parte de terceros o de los propios fabricantes, provocando que, en los últimos años, los problemas de compatibilidad se reduzcan. pág. 59 Empresas como IBM, Intel Corporation, Hewlett-Packard, Dell o MIPS Technologies tienen programadores en el equipo de desarrolladores del núcleo Linux que se encargan de mantener los controladores para el hardware que fabrican. Este grupo de programadores también se le suman los que provee grandes distribuidores de soluciones Linux como Novell o Red Hat. Actualmente Linux es un núcleo monolítico híbrido. Los controladores de dispositivos y las extensiones del núcleo normalmente se ejecutan en un espacio privilegiado conocido como anillo 0 (ring 0), con acceso irrestricto al hardware, aunque algunos se ejecutan en espacio de usuario. A diferencia de los núcleos monolíticos tradicionales, los controladores de dispositivos y las extensiones al núcleo se pueden cargar y descargar fácilmente como módulos, mientras el sistema continúa funcionando sin interrupciones. También, a diferencia de los núcleos monolíticos tradicionales, los controladores pueden ser prevolcados (detenidos momentáneamente por actividades más importantes) bajo ciertas condiciones. Esta habilidad fue agregada para gestionar correctamente interrupciones de hardware, y para mejorar el soporte de multiprocesamiento simétrico. GESTIÓN DE COMUNICACIONES Y SEGURIDAD - UBUNTU En Ubuntu el manejo de comunicaciones se promueve a través del manejo de los controladores y el kernel, el kernel es el componente más importante del sistema operativo el cual permite que haya manejo o comunicación de memoria, procesos, archivos, entradas y salidas, es el encargado de que el software y el hardware trabajen juntos. En el kernel hay varios controladores o módulos que individualmente comprenden una función dentro de los sistemas operativos, estos pág. 60 son asignados según la tarea que conlleve el sistema operativo actual mente. Cada versión del kernel en Ubuntu controla diversos dispositivos cuando una versión es compilada algunos de estos controladores pueden unirse al kernel mismo estáticamente, otros pueden permanecer como módulos para cargarse o descargarse y otros pueden ser excluidos del proceso de compilación de alguna función del sistema operativo debido a que no conllevan utilidad alguna en el proceso que se está llevando acabo y por lo tanto no serán utilizados ni cuando el kernel esté operando. Las funciones de los módulos en el sistema operativo en cuanto la comunicación entre el software y hardware a través son: 1. Asegurar que no haya conflictos entre dispositivos y conocer la configuración que usa cada componente. Algunos controladores tienen la capacidad de detectar automáticamente la configuración del dispositivo y otros no. 2. Encontrar un módulo que pueda manejar el dispositivo. 3. Brindar opciones al módulo de acuerdo a las necesidades del dispositivo. En fin Ubuntu promueve unas capacidades extraordinarias en cuanto el manejo y comunicación de los dispositivos de hardware y software trayendo un ambiente eficiente al usuario cuando lo utiliza y lleva a cabo las tareas en el mismo. pág. 61 Seguridad El sistema incluye funciones avanzadas de seguridad y entre sus políticas se encuentra el no activar, de forma predeterminada, procesos latentes al momento de instalarse. Por eso mismo, no hay un cortafuegos predeterminado, ya que supuestamente no existen servicios que puedan atentar a la seguridad del sistema. Para labores o tareas administrativas en la línea de comandos incluye una herramienta llamada sudo (de las siglas en inglés de SwitchUser do), con la que se evita el uso del usuario administrador. Posee accesibilidad e internacionalización, de modo que el sistema esté disponible para tanta gente como sea posible. Desde la versión 5.04, se utiliza UTF-8 como codificación de caracteres predeterminado. No sólo se relaciona con Debian por el uso del mismo formato de paquetes .deb. También tiene uniones con esa comunidad, aunque raramente contribuyendo con cualquier cambio directa e inmediatamente, o sólo anunciándolos. Esto sucede en los tiempos de lanzamiento. La maryoría de los empaquetadores de Debian son los que realizan también la mayoría de los paquetes importantes de Ubuntu. Usuarios y claves Uno de los pilares básicos de la solidez de los sistemas GNU/Linux es su potente gestión de usuarios y de permisos. Las cuentas de usuario aseguran la privacidad de la información, el correcto reparto de privilegios en el sistema y minimizan los efectos en caso de un fallo de la seguridad. Un buen sistema de usuarios claves es la base de una firme seguridad. Existen varios tipos de cuentas de usuario que dan diferentes niveles de acceso para el uso y administración del sistema. Una cuenta con más permisos de los necesarios también implica más riesgos de los necesarios. 1. Usuario con permisos administrativos Este es el usuario que se crea durante la instalación del sistema, tiene permiso para usar todas las aplicaciones instaladas, guardar o modificar contenidos en su carpeta personal y puede asumir temporalmente las funciones de administrador mediante la orden sudo. Este es el usuario indicado para el trabajo diario y la administración de sistemas de escritorio habituales. pág. 62 2. Usuario sin permisos administrativos Este es el tipo de usuarios que se crean desde el menú Sistema - Administración Usuarios y grupos, tiene permiso para usar todas las aplicaciones y guardar o modificar informaciones en su carpeta personal. No podrá ejercer tareas administrativas ni usar el comando sudo. 3. Usuario invitado Esta cuenta, presente en Ubuntu y en algunas otras distribuciones permite el acceso al sistema con un usuario sin privilegios, carece de contraseña y permite el uso de la mayoría de aplicaciones, pero no guardar o modificar datos ni por supuesto asumir tareas administrativas. (Podrá guardar datos pero éstos se perderán al cerrar la sesión). Este tipo de cuenta es muy útil en ordenadores de acceso público, demostraciones, o cualquier situación en la que quieras que alguien pueda usar el sistema sin alterar nada. 4. Usuario root Este es el usuario administrativo tradicionalmente usado en todas las distribuciones GNU/Linux, sin embargo en Ubuntu se ha desactivado esta cuenta y en su lugar se usa el comando sudo. Las ventajas del uso de sudo frente a root son: minimizar la posibilidad de desastres por descuido al estar la cuenta administrativa activa durante menos tiempo, hacer más consciente al usuario de qué acciones entrañan peligro y cuales no o acostumbrarse a usar permisos administrativos sólo cuando son estrictamente necesarios, entre muchas otras razones. Algunos usuarios no acostumbrados al modo de trabajar de Ubuntu insisten en la activación de esta cuenta (poniendo en peligro la seguridad del sistema). Permisos y grupos Todos de los sistemas de ficheros comunes en GNU/Linux soportan un completo sistema de permisos, que asigna a cada archivo/directorio: un propietario, un grupo y permisos de lectura (r) / escritura (w) / ejecución (x) independientes para el propietario, el grupo y el resto de usuarios. pág. 63 Repositorios seguros Los repositorios son las fuentes de las que distribuciones como Ubuntu obtienen el software, usar repositorios inseguros o no autentificados podría resultar en la entrada de software malicioso en nuestro sistema. El Cortafuegos Entre las muchas funciones de un cortafuegos está la de aumentar la seguridad de nuestras conexiones de red aplicando filtros que analizan la procedencia, destino, puerto y otros datos relacionados con dichas conexiones. SeLinux / AppArmor Es una capa extra de seguridad, capaz de confinar procesos, aplicaciones y/o usuarios, siguiendo unas políticas de seguridad preestablecidas, impidiendo de esta manera que se excedan en sus funciones o que se use software malintencionado para explotar sus potenciales vulnerabilidades. pág. 64 SOPORTE A TIEMPO REAL - UBUNTU Ubuntu proporciona versiones pre-compiladas del kernel para 32 y los procesadores de 64 bit. Para cada arquitectura, ellos pueden compilar un kernel genérico, que funciona bien para la mayoría de los usos, un server kernel que está optimizado para el uso del servidor, un núcleo pre-empt, osea núcleo en tiempo real, diseñado para su uso en low latency servers y un kernel rt para los tiempos cuando la respuesta instantánea es más importante que el uso equilibrado (como en el profesional de audio / visual de grabación y edición). También hay un kernel especial, llamado virtual, disponible para su uso en máquinas virtuales. Estas están disponibles en el repositorio de Ubuntu. Generic kernel - este es el núcleo de serie que se proporciona en Ubuntu. Low Latency kernel (preempt kernel) - basado en el genérico-árbol de fuentes del núcleo, pero utiliza una configuración más agresiva para reducir aún más la latencia. También conocida como un suave núcleo en tiempo real. Real Time kernel (rt kernel ) - se basa en el árbol de fuentes del kernel de Ubuntu con Ingo Molnar mantenido PREEMPT_RT parche aplicado. También conocido como un duro núcleo en tiempo real. Este es utilizado en Ubuntu Studio el cual es utilizado para uso científico, producción de autio y uso industrial. Por el momento sólo los tres primeros núcleos están disponibles a través de archivos oficiales de Ubuntu. ESTADÍSTICAS DE UTILIZACIÓN MUNDIAL - UBUNTU. Como se puede ver en el gráfico a continuación, un examen minucioso de los datos de DistroWatch, un sitio que publica a diario el ranking de distribuciones de Linux en base a los accesos a cada página web, revela que la más popular de todas, Ubuntu, no pasa por buenos momentos. pág. 65 Ha habido mucha controversia alrededor de Unity (aunque también la ha habido con Gnome Shell), la interfaz desarrollada por Canonical y que Ubuntu ha incluido como parte integral de su sistema operativo. La medición "cuota de mercado" puede resultar inservible ya que es un concepto basado en ventas comerciales (unidades materiales vendidas). Por otro lado Linux es utilizado frecuentemente en servidores con acceso público desde Internet por lo que la cuota de mercado es extremadamente inferior a la cuota de uso. Baste notar, p.ej, que Facebook, Gmail, LinkedIn o Yahoo funcionan sobre servidores GNU/Linux, de forma que aun cuando estemos accediendo desde un navegador ejecutándose en Windows/Mac, la aplicación real se está ejecutando en servidores Linux y los datos están almacenándose igualmente en dichos servidores. SOPORTE PARA LA NUBE E INTEGRACIÓN A ELLA (CLOUD COMPUTING) UBUNTU Ubuntu One es un servicio de alojamiento de archivos, integrado con el entorno de escritorio del sistema operativo Ubuntu, enfocado a la copia de seguridad y a la sincronización de archivos e información entre computadores conectados a Internet. Canonical ha anunciado que a partir del 1 de Junio del 2014 el servicio será dado pág. 66 de baja, ya que los costos de competir en la nube son muy altos comparados con la oferta gratuita de la competencia. ANÁLISIS COMPARATIVO ENTRE PLATAFORMA TRADICIONAL Y EL SMARTPHONE (UBUNTU). Si comparamos la compatibilidad de hardware, en este caso Windows 8 si supera a Ubuntu 13.10. La mayoría de los fabricantes ya tienen controladores compatibles con Windows 8 y además, la mayoría de controladores creados para Windows 7 también funcionan en Windows 8. En cambio en Ubuntu seguimos teniendo algunos problemas de controladores. Aun así, cada vez se dan menos problemas. Una de los puntos a favor que tenemos en Ubuntu en el tema de los controladores, es que no necesitamos instalar ningún controlador. La mayoría de los controladores los tenemos dentro del propio kernel de Linux por lo que es plug and play. En cambio en Windows 8 sí que necesitaremos estar descargando los controladores de la web del fabricante. Si para vosotros es importante la velocidad de encendido y apagado, Ubuntu 13.10 arranca a una velocidad bastante mayor a la de Windows 8. Si comparamos el apagado, aquí no hay color. En Windows 8 tarda una barbaridad, y si encima se están instalando actualizaciones, podemos esperar hasta 5 minutos para que se apague el ordenador. En Ubuntu 13.10 esto no pasa. Las actualizaciones se instalan y descargan mientras tenemos el ordenador encendido y nunca mientras estamos encendiendo o apagando. En general, Ubuntu 13.10 Saucy Salamander es bastante superior a Windows 8 en la mayoría de los aspectos. Rápido, sencillo y dinámico. Windows 8 es un sistema operativo muy bonito, con grandes efectos pero que resulta muy tosco de manejar. pág. 67 RED HAT Presentación Red Hat Software Inc. fue fundada en 1994 por Bob Young y MarcEwing. Su principal objetivo era compilar y comercializar una distribución GNU/Linux, que vino a llamarse Red Hat Linux. Básicamente, se trataba de una versión empaquetada de lo que existía en aquellos tiempos, incluyendo documentación y soporte. Durante el verano de 1995, la versión 1.0 de esta distribución vio fue lanzada. Unos meses más tarde, se publicó la versión 2.0, que incluía la tecnología RPM (RPM Package Manager, gestor de paquetes RPM). El sistema de paquetes RPM se ha convertido en un estándar para los paquetes de sistemas GNU/Linux. 1998 fue el año en el que Red Hat llegó al gran público con la versión 5.2. Red Hat Inc. no sólo es conocida por su distribución de software basada en Linux. En agosto de 1999, Red Hat salió a bolsa y sus acciones obtuvieron la octava ganancia de primer día más grande en toda la historia de Wall Street. Aun así, sus comienzos exitosos en el mercado de valores sirvieron para que Red Hat fuera portada en periódicos y revistas no directamente relacionadas con temas informáticos. En cualquier caso, parece ser que Red Hat ha sabido superar los problemas de otras compañías del mundo de los negocios en torno al software libre y anunció números negros por primera vez en su historia en el último cuarto del año 2002. Otro de los hechos históricos más importantes de Red Hat fue la adquisición en noviembre de 1999 de Cygnus Solutions, una empresa fundada una década antes y que ya había demostrado cómo con una estrategia integral basada en software libre se puede ganar dinero. En septiembre de 2003, Red Hat decidió concentrar sus esfuerzos de desarrollo en la versión corporativa de su distribución y delegó la versión común a Fedora Core, un proyecto abierto independiente de Red Hat. En junio de 2006 Red Hat adquirió la compañía JBoss Inc, siendo así responsable del desarrollo del servidor más importante de aplicaciones J2EE de código abierto. pág. 68 ESTRUCTURA Y COMPONENTES DEL SISTEMA – RET HAT Red Hat Enterprise Linux utiliza la estructura del sistema de archivos Estándar de Jerarquía de Sistemas de archivos (FHS del inglés Filesystem Hierarchy Standard), un documento que define los nombres, la ubicación y los permisos de muchos tipos de archivos y directorios. Estructura de Directorios FHS en Red HAT Enterprise 6 El directorio / boot / Contiene archivos estáticos requeridos para arrancar el sistema, tales como el kernel de Linux. Estos archivos son esenciales para que el sistema arranque correctamente. El directorio / dev / Contiene los nodos de dispositivos que, o bien representan a los dispositivos que están conectados al sistema o los dispositivos virtuales que son proporcionados por el núcleo. Estos nodos de dispositivo son esenciales para que el sistema funcione correctamente. El directorio / etc / Aqui residen los archivos de configuración del sistema, son usados por el administrador y/o otros programas para almacenar y leer datos que alteran de una u otra forma su funcionamiento. El directorio /lib/ Contiene las bibliotecas (libraries) necesarias para ejecutar los binarios en /bin/ y en /sbin/. Estas imágenes de bibliotecas compartidas son particularmente importantes para arrancar el sistema y ejecutar comandos en el sistema de archivos raíz. El directorio /media/ Contiene los subdirectorios utilizados como puntos de montaje para los medios removibles tales como usbs, DVDs, CD-ROMs y discos Zip. El directorio /mnt/ Está reservado para sistemas de archivos montados temporalmente tales como montajes de sistemas de archivos NFS. Para toda los medios removibles utilice el directorio /media/. Los medios removibles detectados automáticamente serán montados en el directorio /media. El directorio /opt/ pág. 69 Proporciona un área para almacenar paquetes de software de una aplicación. Un paquete que coloca archivos en el directorio /opt/ crea un directorio con el mismo nombre del paquete. Este directorio a su vez, guarda archivos que de otra forma estarían esparcidos por el sistema de archivos, dándole así al administrador del sistema una forma fácil de determinar el papel de cada archivo dentro de un paquete particular. El directorio /proc/ Contiene archivos especiales que o bien extraen información del kernel o bien la envían a éste. Algunos ejemplos son la memoria del sistema, información sobre la cpu, configuración del hardware, etc. El directorio / sbin / Almacena los ejecutables usados por el usuario root. Los ejecutables en / sbin / se utilizan en el arranque de la administración del sistema y para realizar las operaciones del sistema de recuperación. El directorio /srv/ Contiene datos específicos al sitio proporcionados por su sistema ejecutando Red Hat Enterprise Linux. Este directorio le dá a los usuarios la ubicación de los archivos de datos para un servicio en particular tal como FTP, WWW o CVS. Los datos que sólo pertenecen a un usuario específico deben ir en el directorio /home/. El directorio /sys / Utiliza el nuevo sistema de archivos virtual sysfs específico al kernel 2.6. Ahora con el soporte más extendido para los dispositivos de conexión en caliente (hot plug) en el kernel 2.6, el directorio /sys/ contiene información similar a la que se encuentra en /proc/, pero muestra una vista jerárquica de la información de dispositivos específica con relación a los dispositivos de conexión en caliente. El directorio /usr/ Es para archivos que puedan ser compartidos a través de muchas máquinas. El directorio /usr/ habitualmente tiene su propia partición y se monta en sólo lectura. Bajo el directorio /usr/, el subdirectorio bin/ contiene ejecutables, el directorio etc/ contiene archivos de configuración del sistema, games es para juegos, include/ contiene los archivos de cabecera C, kerberos/ contiene binarios y otros archivos relacionados con Kerberos y lib/ contiene archivos objeto y bibliotecas que no están diseñadas para ser utilizadas directamente por usuarios o scripts de shell. El directorio libexec/ contiene pequeños programas de ayuda llamados por otros programas, sbin/ es para los binarios de administración del sistema (aquéllos que no pertenecen al directorio /sbin/), share/ contiene archivos que no son de una arquitectura específica, src/ es para código fuente. pág. 70 El directorio /var / Ya que el FHS requiere que Linux sea para montar / usr / en modo sólo lectura, cualquier programa que escriba archivos log o que necesite spool / o lock / directorios deben escribirlos en el directorio / var / directorio. Los estados FHS / var / es para: Archivos de datos variables. Esto incluye archivos y directorios spool, datos de administración, de registro y archivos temporales y transitorios. SISTEMA DE ARCHIVOS – RET HAT Red Hat Enterprise Linux incluye soporte para muchos sistemas de archivos populares, haciendo posible acceder fácilmente a los sistemas de archivos de otros sistemas operativos. Esto es particularmente útil en un escenario de arranque dual y cuando se migren archivos desde un sistema operativo a otro. Los sistemas de archivos soportados incluyen: EXT2 EXT3 NFS ISO 9660 MSDOS VFAT En las diferentes versiones Red Hat Enterprise 5 el sistema de archivos por defecto era el EXT 3, sin embargo las versiones 6 de este sistema vienen por defecto en EXT4, y las versiones orientadas a sistemas escalables utilizan NFS ya que permite mayor almacenamiento de datos. PLATAFORMAS SOBRE LAS QUE TRABAJA – RET HAT Arquitecturas Soportadas X86 X86_64 System z PPC64 pág. 71 PROCESO DE INSTALACIÓN El proceso se debe llevar a cabo instalando desde los componentes base hasta el manejo de los datos. INSTALACIÓN BASE El primer paso es la instalación del sistema operativo base, ya sea desde un disco, una imagen ISO o mediante kickstart, durante el proceso se debe asegurar de: Asignar suficiente espacio a la partición de almacenamiento de datos. La ubicación por defecto para los paquetes de canal es /var/satellite. Se debe recordar que para el servidor satélite de RHN con la Embedded Database la base de datos RPM va en la partición /opt, mientras que la base de datos misma está construida en /rhnsat. Activar NTP (Protocolo de tiempo para red) en el Satélite y en la base de datos independiente en caso de que ésta exista. Seleccione además la zona horaria apropiada. Todos los sistemas cliente deben estar ejecutando el demonio ntpd y estar configurados en la zona horaria correcta. Debido a complicaciones potenciales, es altamente recomendable que la partición /home/ sea montada localmente. INSTALACIÓN DEL SERVIDOR a) Iniciar como root# b) Insertar el CD del Servidor que contiene los archivos de instalación. c) Si está realizando una instalación desde el CD, Red Hat Enterprise Linux puede automontar el CD. Si éste es el caso, el CD será montado en el directorio /media/cdrom/. d) Si Red Hat Enterprise Linux no monta el CD automáticamente, se puede montar el CD al directorio /media/cdrom/ con el comando siguiente: i. mount /dev/cdrom /media/cdrom ii. Si se utilizan imágenes ISO para la instalación, se deben montar desde el directorio que las contenga usando el comando: iii. mount -o loop nombre_archivo_iso /media/cdrom El resto de instrucciones asumen que /mnt/cdrom/ es el directorio de montaje. pág. 72 Controles Extra Si es requerimiento del usuario a partir de instalar los 2 elementos anteriores se puede agregar elementos como aplicaciones de Monitorin o sondeos MySQL tomándolos como ejemplo. GESTIÓN DE PROCESOS Y DEL PROCESADOR – RET HAT En versiones anteriores de Red Hat Enterprise Linux, el kernel utiliza un mecanismo basado en el temporizador que produce continuamente una interrupción del sistema. Durante cada interrupción, el sistema sondea; es decir, se comprueba para ver si había trabajo por hacer. Dependiendo de la configuración, esta interrupción del sistema o el temporizador podrían ocurrir varios cientos o varios miles de veces por segundo. Esto sucedió cada segundo, independientemente de la carga de trabajo del sistema. En un sistema con poca carga, este impacto el consumo de energía al evitar que el procesador de la utilización eficaz de los estados de suspensión. El sistema utiliza la menor cantidad de energía cuando está en un estado de sueño. La manera más eficiente de la energía para hacer un sistema funcionar es hacer el trabajo lo más rápido posible, entrar en el estado de sueño profundo y dormir todo el tiempo posible. Para implementar esto, Red Hat Enterprise Linux 6 utiliza un kernel sin intervalo. Con esto, el contador de tiempo de interrupción se ha quitado de un bucle vacío, transformando Red Hat Enterprise Linux 6 en un entorno completamente impulsado por interrupciones. El kernel sin intervalo permite que el sistema entre en estados de sueño profundo durante los tiempos de inactividad, y responder rápidamente cuando hay trabajo por hacer. El programador es responsable de mantener las CPUs en el sistema ocupado. El planificador de Linux implementa una serie de políticas de planificación, que determinan cuándo y por cuánto tiempo un hilo se ejecuta en un núcleo de la CPU en particular. pág. 73 Políticas de planificación se dividen en dos categorías principales: Políticas en tiempo real SCHED_FIFO SCHED_RR Políticas normales SCHED_OTHER SCHED_OTHER SCHED_IDLE GESTIÓN DE MEMORIA – RET HAT Las direcciones de memoria física se traducen a direcciones de memoria virtual como parte de la gestión de memoria. La relación de mapeado físico de direcciones virtuales se almacena en una estructura de datos conocida como la tabla de páginas. Dado que la lectura de la tabla de páginas para cada asignación de dirección sería largo y costoso de los recursos, hay una caché para las direcciones utilizadas recientemente. Esta caché se denomina traducción de direcciones Buffer (TLB). Sin embargo, el TLB sólo puede almacenar en caché un determinado número de asignaciones en las direcciones. Si una asignación de dirección solicitada no se encuentra en el TLB, la tabla de la página todavía se debe leer para determinar la asignación de la dirección física a virtual. Esto se conoce como un "Miss TLB”. Las aplicaciones con grandes requisitos de memoria son más propensos a ser afectados por el área de la TLB de las aplicaciones con requisitos mínimos de memoria debido a la relación entre sus requisitos de memoria y el tamaño de las páginas utilizadas para correlaciones de dirección de la memoria caché en la TLB . Dado que cada uno se pierda implica la lectura de la tabla de páginas, es importante para evitar estos fallos siempre que sea posible. La enorme traducción de direcciones de búfer (HugeTLB) permite que la memoria se gestiona en segmentos muy grandes para que más asignaciones de direcciones se pueden almacenar a la vez. Esto reduce la probabilidad de errores de TLB, que a su vez mejora el rendimiento en aplicaciones con grandes requisitos de memoria. La memoria se gestiona en bloques conocidos como páginas. Una página es de 4096 bytes. 1 MB de memoria es igual a 256 páginas; 1 GB de memoria es igual a pág. 74 256.000 páginas, etc CPU tienen una unidad de la gerencia de la memoria que contiene una lista de estas páginas, con cada página de referencia a través de una entrada de la tabla de páginas. Hay dos modos de activar el sistema para gestionar grandes cantidades de memoria: Aumentar el número de entradas de la tabla de páginas en la unidad de gestión de memoria de hardware Aumentar el tamaño de la página El primer método es caro, ya que la unidad de gestión de memoria de hardware en un procesador moderno sólo es compatible con cientos o miles de páginas entradas de la tabla. Además, los algoritmos y hardware de administración de memoria que funciona bien con miles de páginas (megabytes de memoria) pueden tener dificultades para realizar bien con millones (o incluso miles de millones) de las páginas. Esto da lugar a problemas de rendimiento: cuando una aplicación necesita utilizar más páginas de memoria que los soportes de la unidad de gestión de memoria, el sistema vuelve a caer más lento, la gestión de memoria basada en software, lo que hace que todo el sistema funcione más lentamente. Red Hat Enterprise Linux 6 implementa el segundo método mediante el uso de páginas grandes. En pocas palabras, las enormes páginas son bloques de memoria que vienen en 2 MB y 1 GB de tamaño. Las tablas de páginas utilizadas por las páginas de 2MB son adecuados para la gestión de múltiples gigabytes de memoria, mientras que las tablas de página de las páginas de 1GB son los mejores para escalar a terabytes de memoria. Las páginas grandes se deben asignar en el arranque. También son difíciles de manejar de forma manual, ya que a menudo requieren cambios importantes en el código con el fin de ser utilizados con eficacia. Como tal, Red Hat Enterprise Linux 6 también implementó el uso de páginas grandes transparentes (THP). THP es una capa de abstracción que automatiza la mayoría de los aspectos de la creación, la gestión y el uso de páginas grandes. pág. 75 THP esconde gran parte de la complejidad en el uso de páginas grandes de los administradores de sistemas y desarrolladores. Como el objetivo de la THP está mejorando el rendimiento, sus desarrolladores (tanto de la comunidad y Red Hat ) han probado y optimizado THP través de una amplia gama de sistemas , configuraciones , aplicaciones y cargas de trabajo. Esto permite que la configuración predeterminada de THP para mejorar el rendimiento de la mayoría de las configuraciones del sistema. GESTIÓN DE ENTRADA Y SALIDA – RET HAT Red Hat Enterprise Linux 6 introduce una serie de mejoras en el rendimiento de la pila de E/S: Los discos de estado sólido (SSD) son ahora reconocidos automáticamente y el rendimiento del planificador de E S está sintonizado para aprovechar el alto de E/S por segundo (IOPS) de que estos dispositivos pueden realizar. Deseche se ha añadido soporte para el Kernel reportar rangos de bloques no utilizados al almacenamiento subyacente. Esto ayuda a los SSD con sus algoritmos de nivelación de desgaste. También ayuda almacenamiento que soporta el aprovisionamiento de bloque lógico (una especie de espacio de direcciones virtuales para el almacenamiento), manteniendo un control más cercano sobre la cantidad real de almacenamiento en uso. La implementación del sistema de archivos barrera fue reacondicionado en Red Hat Enterprise Linux 6.1 para que sea más rendimiento. pdflush ha sido sustituido por hilos máquina de enjuague por - respaldo del dispositivo , lo que mejora en gran medida la escalabilidad del sistema en configuraciones con grandes LUN cuenta. pág. 76 SOPORTE A TIEMPO REAL Las ejecuciones en tiempo real están programadas en primer lugar, y los hilos normales se programan después de todas las ejecuciones en tiempo real se han programado. Las políticas en tiempo real se utilizan para tareas de tiempo crítico que debe completar sin interrupciones. SCHED_FIFO Esta política también se conoce como programación de prioridad estática, porque define una prioridad fija (entre 1 y 99) para cada hilo. El planificador escanea una lista de temas SCHED_FIFO en orden de prioridad y programa la más alta prioridad del hilo que está listo para funcionar. Este hilo se ejecuta hasta que se bloquea, salidas, o sea invalidada por un hilo de mayor prioridad que está listo para funcionar. Incluso el hilo en tiempo real de menor prioridad se programará por delante de cualquier tema con una política no en tiempo real; si existe sólo un hilo en tiempo real, el valor de prioridad SCHED_FIFO no importa. SCHED_RR Es una variante de round-robin de la política SCHED_FIFO. También se dan las discusiones SCHED_RR una prioridad fija entre 1 y 99. Sin embargo, las discusiones con la misma prioridad se programan estilo round- robin en un determinado quantum, o porción de tiempo. El sched_rr_get_interval (2) llamada al sistema devuelve el valor de la porción de tiempo, pero la duración de la porción de tiempo no se puede ajustar por un usuario. Esta política es útil si necesita hilo múltiple para funcionar con la misma prioridad. pág. 77 SOPORTE PARA LA NUBE E INTEGRACIÓN A ELLA (CLOUD COMPUTING) – RET HAT Red Hat Enterprise Linux OpenStack Platform, es actualmente una solución basada en la nube para las organizaciones, donde se proporciona una base flexible y segura para crear una cloud pública o privada completamente escalable. Dado que OpenStack depende de Linux, se encuentra en una posición única para mantener la integridad y la interoperabilidad tanto de la base de Red Hat Enterprise Linux como de la tecnología OpenStack de Red Hat. Ventajas: Implementar cargas de trabajo basadas en cloud, respetando sus plazos y condiciones, y según sus cargas de trabajo y aplicaciones lo requieran. Mejorar los acuerdos de nivel de servicio (SLA) con una prestación de servicios más rápida. Red Hat Enterprise Linux OpenStack Platform proporciona el rendimiento, la seguridad y la escalabilidad de Red Hat Enterprise Linux, permitiéndole centrarse en ofrecer a sus clientes los servicios que demandan, en lugar de en la plataforma operativa subyacente. Evite la dependencia de un único proveedor cambiando a tecnologías abiertas al tiempo que mantiene las inversiones existentes en infraestructura. Benefíciese de una amplia compatibilidad con aplicaciones. Red Hat Enterprise Linux ejecutado como máquinas virtuales de huéspedes proporciona una plataforma de desarrollo de aplicaciones estable con las certificaciones de partner de distribuidores de software independientes (ISV), lo que le permite garantizar la compatibilidad e introducir sus aplicaciones en el mercado con mayor rapidez. Lleve la seguridad al entorno en cloud. Confíe en las tecnologías de contenedores y la seguridad de calidad militar de SELinux de Red Hat Enterprise Linux para evitar intrusiones y proteger sus datos en clouds públicas y privadas. pág. 78 FEDORA PRESENTACIÓN Fedora es un sistema operativo basado en Linux, una colección de software que hace funcionar las computadoras. Se puede utilizar Fedora junto a, o como reemplazo de, otros sistemas operativos, como Microsoft Windows™ o Mac OS X™. El sistema operativo Fedora es libre y gratuito para disfrutar y compartir. Proyecto Fedora es el nombre de una comunidad de personas en todo el planeta que aman, utilizan y construyen software libre. Trabajando como comunidad, nuestra intención es liderar la creación y la distribución tanto de código como de contenidos libres. Fedora es patrocinado por Red Hat, el proveedor de tecnología de código abierto más confiable en todo el mundo. Red Hat invierte en Fedora para estimular la colaboración y la innovación en tecnologías de software libre. ¿QUÉ HACE A FEDORA DIFERENTE? Proyecto fedora cree en el valor del software libre, y lucha para proteger y promover soluciones que cualquiera pueda utilizar y redistribuir. No solo el sistema operativo Fedora ha sido realizado gracias al software libre, sino que se utilizó exclusivamente software libre para hacerlo llegar a usted. Además, proyecto fedora cree en el poder de la colaboración. Nuestros desarrolladores trabajan con equipos de proyectos de software libre alrededor del mundo a quienes se denominan la "rama desarrollo". Estos equipos crean la gran mayoría del software que constituye Fedora. Colaboramos de manera estrecha con ellos de modo que todos podamos beneficiarnos con su trabajo, y podamos acceder lo más rápido posible a cualquiera de sus avances. Al trabajar con tales equipos en una misma dirección, podemos asegurar que el software libre funciona mejor en conjunto, y al mismo tiempo podemos ofrecer la mejor experiencia a los usuarios. Además, de esta manera podemos velozmente ofrecer las mejorías pertinentes, algo que beneficia no sólo a los usuarios, sino también a las comunidades de desarrollo de software. También proyecto fedora cree que lo mejor es motivar y permitir que otros persigan su visión de un sistema operativo libre. Cualquiera puede reformular a Fedora y convertirlo en un nuevo producto con su propio nombre. Incluso ofrecemos las herramientas (en inglés) para poder hacerlo. De hecho, Fedora ya es la base de pág. 79 distribuciones derivadas como Linux para empresas de Red Hat, el proyecto One Laptop Per Child XO (Una laptop por niño), y los DVDs de Contenido Vivo de Creative Commons (en inglés). ESTRUCTURA Y COMPONENTES DEL SISTEMA - FEDORA Los sistemas operativos Linux se basan en una estructura de capas, donde las capas internas prestan servicios básicos a las externas. El Núcleo (Kernel) es el centro del sistema operativo, realiza las funciones básicas de control y presta los servicios esenciales para gestionar el sistema operativo. El núcleo de Fedora consta principalmente de los componentes descritos a continuación: Gestión de Memoria: Se encarga de asignar áreas de memoria y espacios de paginación a los procesos, a los módulos del núcleo y al área de caché. Gestión de Procesos: Esta parte es esencial que crea, activa y termina los procesos; implementa las reglas de la multitarea. Controladores de Dispositivos: Maneja la comunicación del sistema con cada uno de los dispositivos que están conectados. El núcleo se configura en el proceso de arranque para cargar los módulos necesarios para controlar los dispositivos específicos de cada máquina. Gestor de Sistema de Archivos Virtuales: Capa intermedia que permite acceder a los sistemas de archivos, manteniendo un árbol de directorios homogéneo. PROCESO DE INSTALACIÓN - FEDORA En la primera pantalla de selección de Fedora 20, vamos a escoger la primera opción llamada Install Fedora 20. La segunda opción te permite hacer una revisar la integridad del medio de instalación (detecta cualquier problema relacionado con sus ficheros y errores de superficie que el DVD pudiese tener) y previene así sorpresas, que nos podrían echar a perder el trabajo durante el proceso. La tercera opcion, proporciona herramientas adicionales que bien nos podrían ayudar en caso de algún fallo. Contiene un probador de memoria, opciones de rescate para una instalación defectuosa y modo gráfico seguro. pág. 80 La segunda pantalla, nos permite seleccionar el idioma a emplear durante el proceso de instalación de Fedora 20. La pantalla se divide en 2 columnas; la primera te permite seleccionar el lenguaje y la segunda, su localización. A continuación, el instalador de Fedora 20 te muestra el resumen de todas las opciones configurables. Estas nos permiten personalizar nuestro sistema operativo antes de proceder a su instalación. Las opciones que nos muestran son la fecha y hora, idioma, software, sistema, teclado y red. Todos los elementos deben ser revisados y configurados. En este punto, la pantalla de Resumen de la instalación no debería de mostrarte ninguna advertencia. Ahora se hace clic en el botón de Comenzar instalación que se encuentra en la esquina inferior derecha. Solo queda configurar tanto la cuenta de administrador como la de usuario. Ahora solamente queda esperar a que la instalación culmine. Esto va a tardar algunos minutos y en esta etapa ya no se requiere de tu interacción. GESTIÓN DE MEMORIA - FEDORA pág. 81 Fedora comparte muchas de las características de los esquemas de gestión de memoria de otras implementaciones UNIX, pero tiene sus características propias y únicas, aunque hay que destacar que el esquema de gestión de memoria de Fedora es bastante complejo. En lo que respecta a memoria virtual, el direccionamiento de memoria virtual de Fedora, hace uso de una estructura de tabla de páginas con tres niveles, formada por los siguientes tipos de tablas (cada tabla individual es del tamaño de una página): 1. Directorio de páginas Þ un proceso activo tiene un solo directorio de páginas que es del tamaño de una página. Cada entrada en el directorio de páginas apunta a una página del directorio intermedio de páginas. Para un proceso activo, el directorio de páginas tiene que estar en la memoria principal. 2. Directorio intermedio de páginas Þ este directorio puede ocupar varias páginas y cada entrada de este directorio apunta a una página de la tabla de páginas. 3. Tabla de páginas Þ esta tabla de páginas también puede ocupar varias páginas, y cada entrada de la tabla de página hace referencia a una tabla virtual del proceso. Direccionamiento de Memoria La memoria es uno de los recursos fundamentales para un proceso. El sistema operativo debe ofrecer la memoria a todos los procesos por igual de una forma sencilla y uniforme. Al mismo tiempo, el sistema operativo debe tratar con el hardware real para realizar dicha función, aprovechándolo al máximo. El direccionamiento es una parte importante de la gestión de memoria, puesto que influye mucho tanto en la visión de la misma por parte de un proceso, como en el aprovechamiento del hardware y el rendimiento del sistema. Desde el punto de vista del proceso, son deseables ciertas características relacionadas con el direccionamiento: Protección: La memoria de un proceso debe estar separada de la memoria de los demás procesos. Salvo para threads del mismo proceso. En Fedora un proceso realmente tiene un espacio de direcciones de usuario, que es propio, y un espacio de direcciones del Kernel, que comparte con todos los procesos. pág. 82 Memoria virtual: El proceso debe tener la ilusión de estar solo en el sistema. Espacio de direcciones contiguo y que comienza en 0. Esto facilita el trabajo de los compiladores. Otras características de la gestión de memoria también son deseables, si bien están menos relacionadas con el direccionamiento: Ofrecer al proceso más memoria de la que hay físicamente disponible. Se emplean técnicas de swapping y paginación por demanda. (Swapping: Es un mecanismo o modo de interrelacionar la memoria principal (la que contiene el Programa en ejecución, los datos de proceso inmediato y los resultados intermedios) con la secundaria, de tal modo que se produce un intercambio de programas entre ambas cuyo resultado es la simulación de un sistema multitarea o la potenciación de memoria central a base de recursos de la memoria secundaria.) Aprovechar la memoria mediante técnicas Copy-onwrite. (Copy-On-Write: Cuando un proceso crea una copia de sí mismo, las páginas cargadas en memoria que puedan ser modificadas por dicho proceso o su copia se marcan como copy-on-write. Cuando un proceso modifica la memoria, el núcleodel sistema operativo interviene en la operación y crea una copia de forma que los cambios en la memoria ocupada por un proceso no son visibles por el otro.) Mapeado de ficheros sobre memoria. En general, mejorar el rendimiento del sistema mediante diversas técnicas a la hora de asignar o liberar memoria (Buddy system, Slab allocator, caches, entre otros) pág. 83 GESTIÓN DE PROCESOS - FEDORA Paginación: Un sistema operativo multiusuario y multitarea como Fedora necesita una gran cantidad de memoria física para poder ejecutar todos los procesos. Los espacios de paginación son particiones de disco que permiten ampliar virtualmente la memoria del sistema, guardando el estado de los procesos que en un determinado momento están a la espera de ser ejecutados, si la memoria física está agotada. Los factores principales que deben determinar el tamaño del espacio toral de paginación son: La cantidad de memoria y de disco del sistema. El número de usuarios que tendrán acceso a la máquina. El número previsto de procesos/usuario. El número de servicios activos en el sistema. Sistemas de archivos virtuales /proc y /sys Los sistemas de archivos virtuales montados en /proc y en /sys están almacenados en memoria y contienen una jerarquía de ficheros y directorios especiales que mantienen el estado actual del núcleo del sistema Fedora, recopilando información sobre los dispositivos y los procesos en ejecución. pág. 84 GESTIÓN Y SISTEMA DE ARCHIVOS - FEDORA La distribución Fedora usa el Sistema de Archivos Extendido 3 (Ext3), el cual incluye las siguientes mejoras: El diario de registros es la característica más importante, que mejora los procesos de revisión de integridad, ya que sólo se requiere la comprobación de dicho diario. Soporta mayores niveles de integridad de datos para evitar la corrupción del sistema de archivos, permitiendo elegir el tipo y el nivel de protección. Mayor flujo y mayor velocidad de accesos repetidos a datos. Fácil transición entre ext2 y ext3, sin necesidad de volver a formatear las particiones. La principal diferencia con ext2 es el registro por diario. Un sistema de archivos ext3 puede ser montado y usado como un sistema de archivos ext2. Otra diferencia importante es que ext3 utiliza un árbol binario balanceado (árbol AVL) e incorpora el asignador de bloques de disco Orlov. También incorpora el Sistema de Archivos FHS o también llamado “Estándar de Jerarquía de Sistema de Archivos”, el cual describe un conjunto de reglas que permiten, tanto a los usuarios como a los programas, predecir la localización de los ficheros y directorios instalados en el sistema. pág. 85 GESTIÓN DE COMUNICACIONES Y SEGURIDAD - FEDORA SELinux ("Security-Enhanced Linux") se destaca entre las características de seguridad de Fedora, pues implementa una gran variedad de políticas de seguridad, incluyendo control de acceso obligatorio (MAC "Mandatory Access Control"), a través de los Módulos de Seguridad de Linux que están en el núcleo Linux del sistema. La distribución está liderando las distribuciones que incorporan SELinux, habiéndolo introducido en Fedora Core 2. Sin embargo lo desactivó como elemento predeterminado, pues alteraba radicalmente la forma en que el sistema operativo funcionaba. Posteriormente fue activado por defecto en Fedora Core 3 introduciendo una política menos estricta. Fedora también tiene métodos propios para prevenir la sobrecarga del buffer y la utilización de rootkits. La verificación del buffer en tiempo de compilación, «Exec Shield» y restricciones en como la memoria del núcleo en /dev/mem puede ser accedida ayudan a prevenir esto. pág. 86 SOPORTE PARA LA NUBE E INTEGRACIÓN A ELLA (CLOUD COMPUTING) FEDORA Fedora 20 continúa con la tradición de Fedora de adoptar e integrar las tecnologías más vanguardistas del cloud computing. Algunas características que facilitan el trabajo con virtualización y cloud computing son: Imágenes de la nube de alta calidad: desarrollado por Fedora Cloud SIG, estas imágenes se adaptan bien para funcionar como invitado en nubes públicas y privadas como Amazon Web Services (AWS) y OpenStack. Interfaz de usuario VM Snapshot con virt-manager: esta característica facilita la toma de capturas VM con la inclusión de una interfaz de usuario simple y reconocible para virt-manager, e incluye una funcionalidad en libvirt para soportar el borrado y rebasado de snapshots externos ARM en x86 con libvirt/virt-manager: Este cambio en Fedora 20 repara máquinas virtuales de ARM alojadas en servidores x86 que utilizan herramientas libvirt estándar, libvirt virsh, virt-manager y virt-install. ESTADÍSTICAS - FEDORA Versión Nombre en código Fecha de liberación Versión del núcleo Linux 1 Yarrow 6 de noviembre de 2003 2.4.19 2 Tettnang 18 de mayo de 2004 2.6.5 3 Heidelberg 8 de noviembre de 2004 2.6.9 4 Stentz 13 de junio de 2005 2.6.11 5 Bordeaux 20 de marzo de 2006 2.6.15 6 Zod 24 de octubre de 2006 2.6.18 7 Moonshine 31 de mayo de 2007 2.6.21 8 Werewolf 8 de noviembre de 2007 2.6.23.1 9 Sulphur 13 de mayo de 2008 2.6.25 10 Cambridge 25 de noviembre de 2008 2.6.27 pág. 87 11 Leonidas 9 de junio de 2009 2.6.29-4 12 Constantine 17 de noviembre de 2009 2.6.31 13 Goddard 25 de mayo de 2010 2.6.33 14 Laughlin 2 de noviembre de 2010 2.6.35 15 Lovelock 24 de mayo de 2011 2.6.38 16 Verne 8 de noviembre de 2011 3.1.0 17 Beefy Miracle 29 de mayo de 2012 3.4.1 18 Spherical Cow 15 de enero de 2013 3.6 19 Schrödinger's Cat 2 de julio de 2013 3.9 20 Heisenbug 12 de diciembre de 2013 3.11 pág. 88 RESUMEN Sistemas Operativos Linux y las diferentes distribuciones (Detallar Red Hat, Fedora, Ubuntu, etc) y Chrome OS. ¿Linux? Linux, es un sistema operativo. Es una implementación de libre distribución UNIX para computadoras personales (PC), servidores y estaciones de trabajo. Es uno de los paradigmas más prominentes del software libre y del desarrollo del código abierto, cuyo código fuente está disponible públicamente, para que cualquier persona puede libremente usarlo, estudiarlo, redistribuirlo y, con los conocimientos informáticos adecuados, modificarlo. En 1983 Richard Stallman fundó el proyecto GNU, con el fin de crear sistemas operativos parecidos a UNIX y compatibles con POSIX. Más tarde creó la "Fundación del Software Libre" y escribió la GNU General Public License para posibilitar el software libre en el sistema de copyright. A pesar de que el proyecto GNU era desarrollado constantemente, no disponía sin embargo de ningún buen Kernel basado en UNIX. En 1988 Linus Torvalds entró a la Universidad. Ese mismo año fue cuando el sistema operativo didáctico, basado en UNIX y creado por Andy Tannenbaum, empezó a cobrar importancia. Dicho sistema era el Minix y del cual entró a formar parte Linus Torvalds. Fue entonces cuando Linus Torvalds creo el núcleo Linux y el cuál aporto al sistema operativo GNU. pág. 89 Google Chrome OS Chrome OS es basado en el núcleo Linux, diseñado para trabajar exclusivamente con aplicaciones web. Google explica que Chrome OS es un sistema operativo diferente a lo que se conoce comúnmente como sistema operativo de escritorio, siendo el navegador Google Chrome su principal herramienta de uso. Las primeras características que destaca Google es, que su sistema operativo es un proyecto de código abierto y sin costo alguno. ESTRUCTURA Y COMPONENTES DEL SISTEMA (Chrome OS) El Chrome OS se divide en 3 partes importantes: El firmware tiene un papel clave para que el arranque del sistema sea más rápido y más seguro. Las funcionalidades: La recuperación del sistema, Verificado de arranque, Inicio rápido. El sistema en sí y los servicios: Aquí es en donde se utiliza el kernel de Linux, los drivers y los demonios. El sistema depende de: D-Bus, Administrador de conexiones, Autoupdate, Xscreensaver, Servicios estándares de Linux. El navegador basado en el Chrome y el manejador de ventanas. El administrador de ventanas es el responsable de manejar la interacción del usuario con las múltiples ventanas. Google Cloud Printing A la hora de imprimir documentos, Chrome OS utilizará una tecnología llamada Google Cloud Print, que prescindiría de la necesidad de instalar controladores y que tiene la capacidad de dirigir los trabajos de impresión desde la Web, las aplicaciones de escritorio y móviles. pág. 90 Chromoting Se trata de una tecnología que permitirá ejecutar aplicaciones tradicionales del PC directamente dentro del navegador y que aportará un método muy interesante para no tener que renunciar del todo a aplicaciones de escritorio en este sistema operativo totalmente orientado a los servicios web y a la nube de computación. Esto podría solventar una de las mayores carencias de este desarrollo, por lo que parece en Chrome OS se permitirá el acceso a aplicaciones de Windows, Mac OS X o Linux, pero se manejarán de forma remota: No se podrá ejecutar aplicaciones directamente, simplemente se usará algo parecido a una conexión remota de escritorio que conectará a la máquina con Windows / Mac OS X o Linux y que permitirá utilizarla remotamente. Los datos permanecerán en el ordenador remoto, no en el ordenador con Chrome OS. Gestión de Procesos en Linux Un proceso comienza su ciclo de vida cuando se invoca el método fork(), el cual crea un nuevo proceso duplicando uno existente. El proceso que llama fork() es el padre, mientras que el nuevo proceso generado es el hijo. Un proceso termina invocando exit(), liberando todos los recursos utilizados. Un proceso padre puede preguntar acerca del estado de un proceso hijo terminado mediante el método wait4(), el cual habilita la espera de la finalización de un proceso específico. Cuando un proceso termina, cambia su estado actual a uno especial llamado Zombie, el cual representa un proceso terminado hasta que el padre invoque el método wait() o waitpid(). Gestión de Memoria Linux En un sistema Linux, la memoria se utiliza para los datos de "caché" que es utilizado por la CPU. La idea detrás de almacenamiento en caché es que se necesita más tiempo para la CPU acceder a los datos en el disco duro que lo hace para acceder a los datos que está presente en la memoria principal. Así que el almacenamiento en caché utilizando la memoria principal acelera eficazmente el sistema. En un sistema de ventanas, no hay tal optimización, memoria de manera gratuita se desperdicia, ya que no se acostumbra. Ahora, cuando una aplicación realmente necesita toda la memoria que se utiliza para el almacenamiento en caché, Linux salta los datos en caché y hace la memoria requerida disponible. Como última opción, si la totalidad de la memoria principal se agota, entonces la memoria de intercambio swap se utiliza. pág. 91 Cuando el procesador ejecuta un programa, este leerá una instrucción de memoria y decodificará la misma. Dentro del proceso de decodificar la instrucción, se podría requerir obtener o almacenar contenidos de una localidad de memoria. El procesador entonces ejecuta la instrucción y este se mueve hacia la siguiente instrucción a leer y decodificar (repitiendo lo anterior). De esta forma el procesador se mantiene siempre accediendo a memoria leyendo y almacenando datos sobre ella. Sobre un sistema de memoria virtual, absolutamente todas las direcciones son virtuales y no son direcciones físicas. Esas direcciones virtuales serán convertidas en direcciones físicas por el procesador, tomando como base la información obtenida sobre un conjunto de tablas mantenidas por el Sistema operativo Linux. UBUNTU Ubuntu es un sistema operativo basado en Linux y que se distribuye como software libre, el cual incluye su propio entorno de escritorio denominado Unity Ubuntu está compuesto por diversos paquetes de software que, en su mayoría, son distribuidos bajo código abierto y licencia libre. ESTRUCTURA Y COMPONENTES DEL SISTEMA Para mostrar diferencias en licencias y la prioridad con la que se atienden los problemas que informen los usuarios, Ubuntu divide todo el software en los componentes: main, restricted, universe y multiverse. main: Contiene paquetes que cumplen los requisitos de licencia Ubuntu. Está pensado para que incluya todo lo necesario para la mayoría de los sistemas Linux de uso general. pág. 92 restricted: Contiene paquetes soportados por desarrolladores de Ubuntu que no están bajo licencia libre. universe: Contiene programas que no reciben soporte por parte del equipo de Ubuntu si no de la comunidad. Pueden tener o no licencia restringida. multiverse: Contiene paquetes sin soporte debido a que no cumplen los requisitos de software libre. Programación UBUNTU Linux tiene dos algoritmos de proceso de programación separados. "Uno es de tiempo compartido, un programa preferente justo entre varios procesos; el otro está diseñado para tareas en tiempo real. Los algoritmos de tiempo compartido son tres. SCHED_OTHER SCHED_ BATCH SCHED_IDLE Para los algoritmos de tiempo compartido, se utiliza el método estándar RoundRobin. Los algoritmos en tiempo real son la FCFS y el Round-Robin, que fue descrito anteriormente, con la adición de una prioridad a la de su clase de planificación. Cuando dos procesos tienen la misma clase, la espera en la cola más larga tiene una prioridad más alta. Para los proceso de diferente clase el uno con la clase del hight tiene la mayor prioridad. Memoria SWAP El sistema operativo Linux Ubuntu, utiliza la memoria swap que está en una partición aparte, esta memoria puede ser utilizada por el CPU. Esta puede utilizar tres tipos de memoria llevando una secuencia lineal a través de la misma en la cual la memoria que utiliza la memoria RAM al verse esta utilizada a máxima capacidad pasaría a utilizar la memoria swap. En el sistema Windows no existe dicha optimación así que la memoria no se utiliza y se pierde. En el caso en el cual toda la memoria sea utilizada por la memoria que esté en cache, como última opción la memoria que está destinada en el swap partition será utilizada. pág. 93 DESCRIPCIÓN DE LOS DISPOSITIVOS DE ENTRADA Y SALIDA QUE SOPORTA (LINUX) En un sistema Linux la interacción final con dispositivos la realizan los controladores o el kernel (núcleo). Dicho de otra forma, un dispositivo sólo podrá ser usado si el kernel lo soporta o si existe un controlador capaz de controlarlo y si se configura apropiadamente para hacerlo. SEGURIDAD El sistema incluye funciones avanzadas de seguridad y entre sus políticas se encuentra el no activar, de forma predeterminada, procesos latentes al momento de instalarse. Por eso mismo, no hay un cortafuegos predeterminado, ya que supuestamente no existen servicios que puedan atentar a la seguridad del sistema. Para labores o tareas administrativas en la línea de comandos incluye una herramienta llamada sudo (de las siglas en inglés de SwitchUser do), con la que se evita el uso del usuario administrador. Posee accesibilidad e internacionalización, de modo que el sistema esté disponible para tanta gente como sea posible. Desde la versión 5.04, se utiliza UTF-8 como codificación de caracteres predeterminado. Usuarios y claves Uno de los pilares básicos de la solidez de los sistemas GNU/Linux es su potente gestión de usuarios y de permisos. Las cuentas de usuario aseguran la privacidad de la información, el correcto reparto de privilegios en el sistema y minimizan los efectos en caso de un fallo de la seguridad. RED HAT Red Hat es una distribución Linux creada por Red Hat Inc, que fue una de las más populares en los entornos de usuarios domésticos. Desde el 2003, Red Hat ha desplazado su enfoque hacia el mercado de los negocios con la distribución Red Hat Enterprise Linux y la versión no comercial Fedora Core. pág. 94 El kernel de Red Hat utiliza un mecanismo basado en temporizador que produce continuamente una interrupción del sistema. Durante cada interrupción, el sistema sondea; es decir, se comprueba para ver si había trabajo por hacer. Dependiendo de la configuración, esta interrupción del sistema o el temporizador podrían ocurrir varios cientos o varios miles de veces por segundo. Esto sucedió cada segundo, independientemente de la carga de trabajo del sistema. En un sistema con poca carga, este impacto el consumo de energía al evitar que el procesador de la utilización eficaz de los estados de suspensión. El sistema utiliza la menor cantidad de energía cuando está en un estado de sueño. La gestión de memoria de Red Hat está dado por direcciones de memoria física que se traducen a direcciones de memoria virtual como parte de la gestión de memoria. La relación de mapeado físico de direcciones virtuales se almacena en una estructura de datos conocida como la tabla de páginas. Dado que la lectura de la tabla de páginas para cada asignación de dirección sería largo y costoso de los recursos, hay una caché para las direcciones utilizadas recientemente. Esta caché se denomina traducción de direcciones Buffer (TLB). FEDORA Fedora es un sistema operativo basado en Linux, una colección de software que hace funcionar las computadoras. Se puede utilizar Fedora junto a, o como reemplazo de, otros sistemas operativos, como Microsoft Windows™ o Mac OS X™. El sistema operativo Fedora es libre y gratuito para disfrutar y compartir. Fedora comparte muchas de las características de los esquemas de gestión de memoria de otras implementaciones UNIX, pero tiene sus características propias y únicas, aunque hay que destacar que el esquema de gestión de memoria de Fedora es bastante complejo. En lo que respecta a memoria virtual, el direccionamiento de memoria virtual de Fedora, hace uso de una estructura de tabla de páginas con tres niveles, formada por los siguientes tipos de tablas (cada tabla individual es del tamaño de una página): pág. 95 1. Directorio de páginas Þ un proceso activo tiene un solo directorio de páginas que es del tamaño de una página. Cada entrada en el directorio de páginas apunta a una página del directorio intermedio de páginas. Para un proceso activo, el directorio de páginas tiene que estar en la memoria principal. 2. Directorio intermedio de páginas Þ este directorio puede ocupar varias páginas y cada entrada de este directorio apunta a una página de la tabla de páginas. 3. Tabla de páginas Þ esta tabla de páginas también puede ocupar varias páginas, y cada entrada de la tabla de página hace referencia a una tabla virtual del proceso. Direccionamiento de Memoria La memoria es uno de los recursos fundamentales para un proceso. El sistema operativo debe ofrecer la memoria a todos los procesos por igual de una forma sencilla y uniforme. Al mismo tiempo, el sistema operativo debe tratar con el hardware real para realizar dicha función, aprovechándolo al máximo. El direccionamiento es una parte importante de la gestión de memoria, puesto que influye mucho tanto en la visión de la misma por parte de un proceso, como en el aprovechamiento del hardware y el rendimiento del sistema. SISTEMA DE ARCHIVOS Chrome OS Distribuciones Linux ●Una partición llamada El sistema de archivos de Ubuntu está basado en “stateful partition” que es en el Filesystem Hierarchy Standard. Este es un donde se almacenan los estándar que con mayor o menor rigor siguen la archivos de los usuarios, log, mayoría de las distribuciones GNU/Linux y algunos etc. otros sistemas operativos basados en UNIX. Este ●Una partición opcional de estándar define los nombres, ubicación y los intercambio. permisos de muchos tipos de archivos y ●Dos particiones que directorios. contienen el sistema de ficheros en sí. Los sistemas de archivos más comunes Sistema de archivos raíz soportados incluyen: EXT2 EXT3 ampliamente utilizada en distribuciones Linux EXT4 pág. 96 SOPORTE A CLOUD COMPUTING Chrome OS Distribuciones Linux Google Cloud Print, Ubuntu One es un servicio de alojamiento de impresión de archivos en archivos, integrado con el entorno de escritorio del impresoras conectadas a la sistema operativo Ubuntu. web. Evitando incompatibilidad de Red Hat Enterprise Linux OpenStack Platform, es controladores. actualmente una solución basada para las organizaciones, donde se proporciona una base Chromoting, Uso de flexible y segura para crear una cloud pública o aplicaciones de PC privada completamente escalable. remotamente. Fedora posee características que facilitan el trabajo con virtualización y cloud computing: Imágenes de la nube de alta calidad; GUI VM Snapshot con virtmanager; ARM en x86 con libvirt/-manager. pág. 97 CONCLUSIONES Y OBSERVACIONES El sistema operativo Google Chrome OS es un proyecto muy ambicioso que pretende dejar a un lado los sistemas operativos tradicionales que trabajan a nivel local, el cual quiere que se trabaje desde cualquier pc en cualquier lugar, pero existen problemas serios para que tenga éxito ya que se necesita estar conectado a internet para trabajar en este sistema operativo y es bien sabido que en algunos lugares del mundo aún falta conectividad a internet. Como se vio en el análisis en el punto de seguridad, Chrome OS tiene un trabajo muy fuerte en este punto ya que garantiza que en la máquina donde se trabaja con este sistema operativo no habrá presencia de virus o amenazas que afecten la integridad de la máquina y es un punto a favor para este sistema ya que los sistemas operativos tradicionales tienen grandes falencias en este punto y el cual afecta gravemente a los usuarios. Es una buena apuesta la de Google al permitir que el código fuente de Chrome OS sea liberado para que cualquier desarrollador en el mundo pueda contribuir a la construcción y sobre todo al mejoramiento continuo del sistema para que el sistema sea más robusto y el usuario quede satisfecho con el sistema. Ubuntu ha proporcionado al mundo una manera de compartir software de manera gratuita, y que gracias a miles de contribuidores, esta distribución de Linux se ha esforzado en tener más cabida en los hogares siendo cada vez más fácil de usar. La memoria virtual (partición Swap) que proporciona Linux, es un mecanismo que permite a los procesos que no alcanzan espacio en la memoria RAM o están poco activos, sean movidos a esta área de intercambio (swap en el disco duro) para así liberar memoria principal y poder cargar otros procesos. Aunque este procedimiento es más lento respecto al acceso a RAM, permite aparentar al sistema que tiene más memoria disponible. El Cloud Computing ha permitido a las diferentes distribuciones Linux, Chrome OS y otros sistemas operativos ofrecer soluciones de apoyo tal como acceso remoto, disponibilidad de datos en cualquier lugar, entre otros que de algún modo u otro agregan valor. Red Hat nació como una compilación de las distribuciones que se ofrecían en ese entonces de GNU/Linux. Se trataba de una versión empaquetada de lo que existía en aquellos tiempos, incluyendo documentación y soporte. Red Hat se centra en ofrecer servicios corporativos, y en 2003 delego la tarea de desarrollar el SO personal al proyecto Fedora Core. pág. 98 Red Hat Enterprise Linux utiliza la estructura del sistema de archivos Estándar de Jerarquía de Sistemas de archivos (FHS del inglés Filesystem Hierarchy Standard), un documento que define los nombres, la ubicación y los permisos de muchos tipos de archivos y directorios. Fedora es un sistema operativo que usa el kernel de Linux y se puede usar como reemplazo o conjuntamente con sistemas operativos como Microsfot Windows o Mac OS x. Fedora está respaldado por proyecto Fedora es el nombre de una comunidad de personas en todo el planeta que aman, utilizan y construyen software libre. Proyecto Fedora cree en el valor del software libre, y lucha para proteger y promover soluciones que cualquiera pueda utilizar y redistribuir El núcleo de Fedora consta de: gestión de memoria, gestión de procesos, controladores de dispositivos y gestor de sistema de archivos virtuales. pág. 99 BIBLIOGRAFÍA Definición de Ubuntu. [En línea]. Fecha de consulta: Mayo 24. 2014 desde http://definicion.de/ubuntu/ Wikipedia, La enciclopedia libre. (Mayo 2014). Ubuntu. [En línea]. Fecha de consulta: mayo 21, 2014 desde http://es.wikipedia.org/wiki/Ubuntu Just more thoughts. (Junio 2011). Ubuntu 11.04 - Process management. [En línea]. Fecha de consulta: mayo 21, 2014 desde http://just-morethoughts.blogspot.com/2011/06/ubuntu-1104-process-management-26.html Linux Ubuntu 12.04 LTS. Proceso y Procesadores. [En línea]. Fecha de consulta: mayo 22, 2014 desde https://sites.google.com/site/ubuntuinterclassroom/proceso-y-procesadores Linux Ubuntu 12.04 LTS. Multiprocessing (Multiprocesamiento). [En línea]. Fecha de consulta: mayo 22, 2014 desde https://sites.google.com/site/ubuntuinterclassroom/multiprocessing Scheer, M. Ubuntu Memory Manager & Defragmentation. [En línea]. Fecha de consulta: mayo 22, 2014 desde http://www.ehow.com/facts_7934778_ubuntumemory-manager-defragmentation.html Plauchu, E. (julio 2013). Administracion de Memoria en Linux. [En línea]. Fecha de consulta: mayo 24, 2014 desde http://eplauchu.wordpress.com/2013/07/17/administracion-de-memoria-enlinux/ Linux Ubuntu 12.04 LTS. Manejo de RAM. [En línea]. Fecha de consulta: mayo 23, 2014 desde https://sites.google.com/site/ubuntuinterclassroom/manejo-deram Linux Ubuntu 12.04 LTS. Real Time (Tiempo Real). [En línea]. Fecha de consulta: mayo 27, 2014 desde https://sites.google.com/site/ubuntuinterclassroom/realtime Sistema de archivos. [En línea]. Fecha de consulta: mayo 26, 2014 desde http://doc.ubuntu-es.org/Sistema_de_archivos Ubuntu manuals. stdio - funciones de biblioteca de entrada/salida estándar. [En línea]. Fecha de consulta: mayo 25, 2014 desde http://manpages.ubuntu.com/manpages/trusty/es/man3/stdio.3.html Kernel. [En línea]. Fecha de consulta: mayo 28, 2014 desde http://doc.ubuntues.org/Kernel pág. 100 Wikipedia, La enciclopedia libre. Núcleo Linux, Críticas. [En línea]. Fecha de consulta: mayo 28, 2014 desde http://es.wikipedia.org/wiki/Linux_(n%C3%BAcleo)#Soporte_de_hardware Ubuntu a fondo. (julio 2010). Seguridad en Ubuntu (II) - Usuarios y claves. [En línea]. Fecha de consulta: mayo 29, 2014 desde http://dmolinap.blogspot.com/2010/07/seguridad-en-ubuntu-ii-usuarios-y.html Ubuntu a fondo. (julio 2010). Seguridad en Ubuntu (I) - Introducción. [En línea]. Fecha de consulta: mayo 29, 2014 desde http://dmolinap.blogspot.com/2010/07/seguridad-en-ubuntu-i-introduccion.html Ubuntu perdiendo popularidad rapidísimo ¿culpa de Unity? [En línea]. Fecha de consulta: mayo 30, 2014 desde http://identidadgeek.com/ubuntu-perdiendopopularidad-rapidisimo-%C2%BFculpa-de-unity/2011/11/ Wikipedia, La enciclopedia libre. (mayo 2014). GNU/Linux, Cuota de mercado. [En línea]. Fecha de consulta: mayo 30, 2014 desde http://es.wikipedia.org/wiki/Linux#Cuota_de_mercado Linux Ubuntu 12.04 LTS. Manejo de RAM. [En línea]. Fecha de consulta: mayo 23, 2014 desde https://sites.google.com/site/ubuntuinterclassroom/manejo-decomunicaciones Wikipedia, La enciclopedia libre. (abril 2014). Ubuntu One. [En línea] Fecha de consulta: mayo 29, 2014 desde http://es.wikipedia.org/wiki/Ubuntu_One Hernández, D. Windows 8 Vs Ubuntu 13.10 Saucy Salamander. En línea] Fecha de consulta: mayo 29, 2014 desde http://www.tubuntux.com/2013/10/windows8-vs-ubuntu-1310-saucy.html Administración de Sistemas operativos de Red, [En línea]. Fecha de consulta: mayo 25, 2014 desde http://asorufps.wikispaces.com/Red+Hat++Sistema+Operativo. redhat, [En línea]. Fecha de consulta: Mayo 28, http://co.redhat.com/products/cloud-computing/openstack/. redhat, [En línea]. Fecha de consulta: Mayo 28, 2014 desde https://access.redhat.com/site/documentation/enUS/Red_Hat_Enterprise_Linux/6/html/Performance_Tuning_Guide/index.html. Fedora, [En línea]. Fecha de consulta: Mayo 31, http://grupo4fedora.wikispaces.com/N%C3%BAcleo+Fedora. M. roboto. (Diciembre 2013). Forosla [En línea]. Fecha de consulta: Mayo 31, 2014 desde http://www.forosla.com/fedora-20-como-instalarlo-paso-paso/. 2014 2014 desde desde pág. 101 DiarioTi, (Diciembre 2013). [En línea]. Fecha de consulta: Mayo 31, 2014 desde http://diarioti.com/fedora-de-red-hat-celebra-10-anos-con-nueva-version/72403. 252-M, E. 2. (26 de Mayo de 2014). Evolution: Sistemas Operativos. Obtenido de bmxkazy: http://wwwbmxkazy.blogspot.com/2011/09/cuadro-comparativode-los-so-actuales.html Cardozo, F. (28 de Mayo de 2014). Docs. Obtenido de jeuazarru: http://www.jeuazarru.com/docs/ChromeOS.pdf Desarrollo, C. A. (20 de 05 de 2014). Historia de Linux. Obtenido de CAD: http://www.cad.com.mx/historia_de_linux.htm Google. (28 de Mayo de 2014). Dispositivos. Obtenido de Google: http://www.google.com/intl/es-419/chrome/business/devices/chromebooks.html Low. (23 de Mayo de 2014). Artículos. Obtenido de LowPowPC: http://lowpowpc.com/2013/12/13/como-instalar-chromeos-en-nuestros-pc-pasoa-paso/ Martinez, L. (21 de Mayo de 2014). Presentaciones. Obtenido de authorstream: http://www.authorstream.com/Presentation/luisazulcremamar-2114258sistema-operativo-chromium/ Plauchu, E. (27 de Mayo de 2014). Notas. Obtenido de eplauchu: http://eplauchu.wordpress.com/2013/07/17/administracion-de-memoria-enlinux/ Puerto, K. (26 de Mayo de 2014). Portátiles. Obtenido de xataka: http://img.xataka.com/2014/01/Chrome%20OS%20versus%20Windows%20RT. jpg Wikipedia. (23 de Mayo de 2014). Chrome OS. Obtenido de Wikipedia: http://es.wikipedia.org/wiki/Chrome_OS Wikipedia. (Mayo de 28 de 2014). Google. Obtenido de Wikipedia: http://es.wikipedia.org/wiki/Google pág. 102