November 14 Kernel Linux 2010 Docente: Ing. Carlos Ortega. Kernel Linux Universidad Nacional de Ingeniería Índice Abstract ................................................................................................................................................ 3 Introducción .......................................................................................................................................... 4 ¿Qué es el Kernel? .............................................................................................................................. 7 Reconocimiento del tipo de Kernel .............................................................................................. 7 ESTRUCTURA DEL KERNEL DE LINUX................................................................................................... 8 Linux vs Windows ................................................................................................................................ 15 Tendencias de linux hacia el futuro y sus aplicaciones ................................................. 17 Elaborado por: Carlos Eduardo Rodríguez Avilés 2 Kernel Linux Universidad Nacional de Ingeniería Abstract In this paper we have reviewed the Kernel Linux as an alternative OS for all the computers in the world. Basically Linux was created by, at that moment a student, Linus Torvalds in 1991. Linux was created based on the GNU philosophy and the UNIX platform which makes it the most complete and reliable free software in the world. Thus, it has a lot of advantages when you compare it with other OS, for example, is the less expensive OS from all since there is no license to purchase at a high price. As we can see, these advantages bring a lot of expectations about the Kernel, thus, many companies are implementing the Kernel Linux as a cell phone OS, videogames, etc. We are now in front of the new wave of free software which is getting more and more fans around the world. As we may know, Linux is a community that grows like clockwork so we can expect unlimited derivates from the original code due to the large amount of contributions developed by the users. As a matter of fact, we may be noticing the beginning of the future of the OS as we know it. Elaborado por: Carlos Eduardo Rodríguez Avilés 3 Kernel Linux Universidad Nacional de Ingeniería Introducción En 1991 Linus Benedict Torvalds, estudiante de la Universidad De Helsinki, estreno la version 0.02 de su sistema operativo Linux. Desde entonces, millones de usuarios en todo el mundo poseen este sistema gratuito y miles de ellos contribuyen a su continuo desarrollo aportando programas, información sobre bugs (fallos de software/hardware), ayuda, tutoriales, etc. La idea de crear un sistema clon de Unix basado en GNU (General Public License o Licencia General Publica) y el código fuente disponible gratuitamente, surgió en 1991 cuando Linus Torvalds estudiaba la carrera de ciencias informáticas. Torvalds se encontraba especialmente interesado en Minix, el único sistema Unix disponible en aquel entonces. Este sistema gratuito fue creado por Andrew Tanenbaum con el propósito de facilitar a los alumnos de la universidad el estudio y diseño de sistemas operativos. Minix era un Unix más, tanto en apariencia como en el Kernel, pero distaba mucho de ser comparable a uno de los grandes. A partir de ese momento Torvalds decidió crear un sistema que excediera los estándares de Minix, poniendo en marcha el proyecto Linux. Estas son algunas fechas importantes en cuanto al desarrollo del Kernel Linux: 1995: En marzo, la siguiente rama estable de Linux aparece, la serie 1.2. Más tarde, Linux es transportado a las plataformas informáticas DEC y SUN SPARC. Durante los años siguientes es transportado a un número cada vez mayor de plataformas. 1996: La versión 2.0 del núcleo Linux es liberada. Éste ahora puede servir varios procesadores al mismo tiempo, y así se hace una alternativa seria para muchas empresas. Elaborado por: Carlos Eduardo Rodríguez Avilés 4 Kernel Linux Universidad Nacional de Ingeniería 1997: Varios programas propietarios son liberados para Linux en el mercado, como la base de datos Adabas D, el navegador Netscape y las suites de oficina Applixware y StarOffice. 1998: Empresas importantes de informática como IBM, Compaq y Oracle anuncian soporte para Linux. Además, un grupo de programadores comienza a desarrollar la interfaz gráfica de usuario KDE, primera de su clase para Linux, con el objetivo de proveer facilidad de uso al usuario. 25 de enero de 1999: Aparece la serie 2.2 del núcleo Linux, en enero, con el código de red y el soporte a SMP mejorados. Al mismo tiempo, un grupo de desarrolladores comienza el trabajo sobre el entorno gráfico GNOME, que competirá con KDE por la facilidad de uso y la eficiencia para el usuario. Durante ese año IBM anuncia un extenso proyecto para el soporte de Linux. Este Kernel tenia 1.800.847 líneas de código. 18 de diciembre de 1999: se publicaron parches de IBM Mainframe para 2.2.13, permitiendo de esta forma que Linux fuera usado en ordenadores corporativos. 2000: La Suite de oficina StarOffice es ofrecida según los términos de la GNU GPL, abriendo así el camino para una Suite de oficina avanzada, y libre en Linux. 4 de enero 2001: En enero, se libera la serie 2.4 del núcleo Linux. El núcleo Linux ahora soporta hasta 64 Gb de RAM, sistemas de 64 bits, dispositivos USB y un sistema de archivos journaling.Este Kernel tenia 3.377.902 lineas de codigo. 2002: La comunidad OpenOffice.org libera la versión 1.0 de su Suite de oficina homónima. El navegador web libre Mozilla es también liberado. En septiembre, aparece el Slapper-worm el cual es el primer gusano informático Linux. 17 de diciembre 2003: Al final del año, la serie 2.6 del núcleo Linux es liberada, después de lo cual Linus Torvalds va a trabajar para el OSDL. Linux se usa más extensamente sobre sistemas integrados (embedded system).Este Kernel tenia 5.929.913 lineas de codigo. 2004: El equipo de XFree86 se desintegra y se forma la fundación X.Org, que provoca un desarrollo considerablemente más rápido del servidor X para Linux. Elaborado por: Carlos Eduardo Rodríguez Avilés 5 Kernel Linux Universidad Nacional de Ingeniería 2005: El proyecto openSUSE es comenzado como una distribución libre de la comunidad de Novell. Además el proyecto OpenOffice.org proyecta la versión de lanzamiento 2.0 que soporta al estándar OASIS OpenDocument en octubre. 2006: El Xgl de Novell y el AIGLX de Red Hat permiten el uso de efectos acelerados por hardware sobre el escritorio Linux. Oracle publica su propia distribución de Red Hat. Novell y Microsoft anuncian una cooperación para la mejor interoperabilidad. 2007: Dell llega a ser el primer fabricante principal de computadoras en vender una computadora personal de escritorio con UBUNTU instalado. 24 de diciembre de 2008: Se lanza Linux 2.6.28 con 10.195.402 lineas de codigo. 24 de febrero de 2010: Se lanza Linux 2.6.33 con 12.990.041 lineas de codigo. La ultima version del Kernel 2.6.35.2 salio el 13 de agosto de 2010, esta es la ultima version estable del Kernel Linux, la version mas reciente es la 2.6.36-rc1 que está en prueba. Linux habia nacido para ser un sistema operativo del tipo Posix (variante de Unix), totalmente gratuito para el usuario y con libre acceso al codigo fuente. Esta tres ideas fueron las que lo han convertido en el sistema con mejor rendimiento, más fiable, veloz y con mas desarrolladores del mundo. El trabajo presentado trata sobre el Kernel Linux el cual es parte de lo que se conoce como “software libre”, terminología usada para aquellos programas libres de licencia y que se pueden usar de manera gratuita. Este es el software libre más famoso y difundido en el mundo y se expondrá su funcionamiento y avances realizados en materia de Linux y software libre. Al tener en muy poco tiempo miles de usuarios, las nuevas versiones de Linux salían casi semanalmente. En el presente hay millones de usuarios y gracias a ellos y sus aportes, Linux crece sin respiro alguno. Elaborado por: Carlos Eduardo Rodríguez Avilés 6 Kernel Linux ¿Qué es el Kernel? Universidad Nacional de Ingeniería El kernel ó núcleo de Linux lo podríamos definir como el corazón del SO. Antiguamente había dos tipos de versiones del núcleo. Teníamos: Versión de produccion: Era la versión estable del momento y la que se debía de utilizar, ya que, esta versión era el resultado final de las versiones que estaban en desarrollo. Versión de desarrollo: Era la versión que estaba en desarrollo y la que los programadores utilizaban para corregir bugs. Esta versión es muy inestable. Reconocimiento del tipo de Kernel Los números de versión del Kernel de Linux consisten en cuatro números: A.B.C.D Asi por ejemplo podemos citar la versión 2.6.31.5 1. El primer número indica la versión del Kernel. 2. El segundo número indica la revisión mayor. Antes del Kernel 2.6 los números de revisión pares correspondían a versiones estables y los impares correspondían a versiones inestables que estaban aún en desarrollo. Después de la versión 2.6 lo números se manejaron de manera distinta. 3. El tercer número corresponde a las revisiones menores, como la aceptación de nuevos drivers. 4. El cuarto número corresponde a las correcciones de errores menores o parches de seguridad. Elaborado por: Carlos Eduardo Rodríguez Avilés 7 Kernel Linux Universidad Nacional de Ingeniería ESTRUCTURA DEL KERNEL DE LINUX Introducción: Originalmente Linux era monolítico, es decir que todas las funcionalidades estaban incluidas en el código del núcleo y era necesario recompilarlo para soportar un nuevo dispositivo, etc. Sin embargo, esta idea no encaja bien con la enorme diversidad de componentes hardware que existen hoy en día. Que todas las personas tengan los mismos componentes es raro, por esta razón Linux, como buen sistema operativo Unix pretende obtener todo el partido de la máquina en la que se está ejecutando. Debido a todo esto, el diseño fue migrando paulatinamente a un modelo basado en módulos. Se procura así que el núcleo sea lo más ligero posible y cuando sea necesario añadir una nueva funcionalidad como soportar una nueva tarjeta de sonido, sólo haya que compilar el módulo y añadirlo al núcleo. (Nota: Unix es un sistema operativo portable, multitasking y multiusuario desarrollado en principio en 1969 por un grupo de empleados de Laboratorios Bell, de este se han basado muchos sistemas operativos como Solaris y Linux para crear un núcleo de sistema operativo de tipo Unix) eSTRUCTURA El Kernel está compuesto por cinco subsistemas. 1) Process Scheduler o Programador de Procesos 2) Memory Manager o Administrador de Memoria 3) Virtual File System o Sistema de Archivos Virtual 4) Network Interface o Interfaz de Red 5) Inter-Process Comunication o Comunicación Entre Procesos Estos componentes son independientes entre sí. Elaborado por: Carlos Eduardo Rodríguez Avilés 8 Kernel Linux Universidad Nacional de Ingeniería 1) Process Scheduler o Programador de Procesos a) Permitirle a los procesos crear nuevas copias de sí mismos (forking) b) Determinar qué proceso tendrá acceso a la CPU c) Recibir interrupciones y desviarlas hacia el subsistema respectivo d) Enviar mensajes a los procesos de usuario e) Manejar el reloj de Hardware (Hardware Timer) f) Liberar recursos cuando un programa los haya desocupado. El Process Scheduler también soporta módulos cargados dinámicamente. Una de las funcionabilidades más importantes de esto último son el Virtual File System y Network Interface. También provee dos interfaces. Uno, provee una interface de llamada a sistema limitada que los procesos pueden llamar. Dos, provee una interface para el resto del espacio del Kernel. En tiempo de booteo, Linux posee sólo un proceso, init(), que a su vez realiza copias de sí mismo a través de llamadas fork(). Cuando un proceso termina, ejecuta la llamada a _exit(). Ademas posee llamados a señales a través de signal(). Esta llamada permite a un proceso asociar un manejador de funcion (function handler) con una señal en particular. Las señales pueden considerarse como una forma de IPC o intercomunicación de procesos. Acerca del timer, Linux maneja un timer interno que se inicia cada 10 milisegundos. Esto permite que los procesos se reasignen (Scheduling) cada 10 ms. Esta unidad se llama “clock tick” que sirve para medir la cantidad de ticks que un proceso en particular puede continuar ejecutándose sin forzar su reasignación. Cada proceso se asigna con un identificador único, llamado Process ID o pid, que es asignado a la lista de procesos o tabla de procesos. Finalmente, una estructura de modulos es usada para representar los modulos cargados en tiempo de ejecución. Esta estructura posee campos que son usados para implementar una lista de estructura de modulos. Es decir, un campo que apunta a la tabla de símbolos de los módulos y otro con el nombre del módulo. Elaborado por: Carlos Eduardo Rodríguez Avilés 9 Kernel Linux Universidad Nacional de Ingeniería 2) Memory Manager o Administrador de Memoria El Memory Manager o administrador de memoria permite lo siguiente: a) Gran espacio de direcciones: Los programas pueden requerir más memoria que la que físicamente existe b) Protección: La memoria asignada un proceso es privada para tal. c) Mapas de Memoria: Se puede mapear un archivo dentro de un area de memoria virtual y acceder al archivo como si fuera memoria d) Acceso Limpio a la Memoria Física: el MM asegura que los procesos puedan usar transparentemente todos los recursos de la máquina, asegurando además un rendimiento aceptable e) Memoria Compartida: Permite que los procesos puedan compartir trozos de la memoria asignada. El Administrador de memoria posee dos interfaces : una interfaz con llamada a sistema que es usada por los procesos de usuario (User Space) y una interface que es usada por los otros subsistemas (Kernel Space).Algunas de las llamadas de usuario incluyen malloc() y free(). Las llamadas de kernel incluyen kmalloc() y kfree(). Ya que Linux soporta múltiples arquitecturas, es necesario entonces que existan rutinas específicas para abstraer los detalles del uso del hardware en una sola interface. El Memory Manager usa el administrador de memoria de hardware para mapear direcciones virtuales a direcciones físicas. Gracias a esto, los procesos no están conscientes de cuanta memoria física está asociada a una dirección virtual. Esto permite al MM poder mover trozos de memoria virtual dentro de la memoria física. Además, permite que dos procesos puedan compartir dos trozos de memoria física si las regiones de memoria virtual asignadas a ellas son mapeadas en la misma dirección física. Otro concepto importante es el Swapping o intercambio, que es intercambiar (swap) memoria ocupada por procesos en un archivo. Esto le permite al Kernel poder ejecutar mayor cantidad de procesos que usen mayor cantidad de memoria física existente. El MM posee un demonio, kswapd, para ejecutar la tarea de intercambiar zonas de memoria en archivos y viceversa. Este demonio chequea periódicamente si no existen direcciones físicas mapeadas recientemente. Estas direcciones son vaciadas de la memoria física, y además de esto, el MM minimiza la cantidad de actividad de disco necesaria para hacer este intercambio. Elaborado por: Carlos Eduardo Rodríguez Avilés 10 Kernel Linux Universidad Nacional de Ingeniería El administrador de memoria del hardware detecta cuando un proceso de usuario tiene acceso a una porción de memoria no mapeada en una dirección virtual y avisa al Kernel de esta falla. Existen dos alternativas para solucionar esto: a) o la página de memoria es volcada a un archivo y viceversa b) o el proceso está haciendo referencia a una zona de memoria no permitida Si el administrador de memoria detecta un acceso no permitido (a la memoria) notifica al proceso con una señal. Si el proceso no sabe cómo manejar esta señal, el proceso es finalizado. 3) Virtual File System o Sistema de Archivos Virtual Un importante desarrollo tuvo lugar cuando se añadió el sistema de ficheros EXT, en aquel momento el sistema de ficheros real se separó del sistema operativo y servicios del sistema a favor de un interfaz conocido como el sistema de Ficheros Virtual, o VFS. VFS permite a Linux soportar muchos, incluso muy diferentes, sistemas de ficheros y cada uno presentando un interfaz software común al VFS. Todos los detalles del sistema de ficheros de Linux son traducidos mediante software de forma que todo el sistema de ficheros parece idéntico al resto del kernel de Linux y a los programas que se ejecutan en el sistema. La capa del sistema de Ficheros Virtual de Linux permite al usuario montar de forma transparente diferentes sistemas de ficheros al mismo tiempo. El VFS de Linux mantiene una antememoria (cache) con información de cada sistema de ficheros montado y en uso, siempre se debe tener mucho cuidado al actualizar correctamente el sistema de ficheros ya que los datos contenidos en las antememorias se modifican cuando se crean, escriben y borran ficheros y directorios. La antememoria o caché más importantes es el Buffer Cache, que está integrado entre cada sistema de ficheros y su dispositivo de bloque. Tal y como se accede a los bloques se ponen en el Buffer Cache y se almacenan en varias colas dependiendo de sus estados. El Buffer Cache no sólo mantiene buffers de datos, también ayuda a administrar el interfaz asíncrono con los controladores de dispositivos de bloque. Como ventajas podemos citar la estructura de datos en memoria con los bloques más frecuentemente utilizados y las lecturas adelantadas. Linux implementa el denominado Virtual File System Cache, (VFS Caché) para acelerar substancialmente el sistema de ficheros. El argumento "filename" es utilizado por el VFS para buscar en una estructura denominada Directory Entry Caché (dentry caché o dcache), donde se almacenan referencias a los directorios utilizados Una entrada del dcaché contiene un puntero a un inodo y solo residen en memoria, mientras que los inodos tienen existencia en el disco físico. El VFS implementa un buffer caché que controla los accesos a disco, realizando operaciones de lectura en avance (look-ahead) Existe caché de directorios, de inodos y de bloques de disco. Elaborado por: Carlos Eduardo Rodríguez Avilés 11 Kernel Linux Universidad Nacional de Ingeniería 4) Network Interface o Interfaz de Red El sistema de red de Linux permite la conectividad entre distintas máquinas de una red y un modelo de conexión via sockets. Existen dos tipos de sockets, los BSD y los INET. Linux posee dos protocolos de transporte con distintos tipos de modelo de comunicación y calidad de servicio. Están los mensajes no confiables, basados en el protocolo UDP y los mensajes confiables basados en TCP. Estos dos están implementados sobre el protocolo de transporte y el protocolo IP. El protocolo IP está por encima de los drivers. A los drivers se les provee distintas formas de comunicación: SLIP (Serial Link IP), PLIP (Parallel Line IP) y Ethernet. Un protocolo de resolución de direcciones media entre el protocolo IP y los drivers de Ethernet. Su tarea es resolver direcciones IP lógicas y convertirlas en direcciones físicas ethernet (de capa 3 a capa 2). Los servicios de red son usados por los otros subsistemas y por el usuario a traves de la interfaz de sockets, que son creados y manipulados a traves de socketcall(). Los datos son leidos y escritos a través de read() y write() como si fuera un descriptor de archivo. El modelo BSD de sockets es presentado a los procesos de usuario. El modelo es orientado a la conexión, se permite hacer streaming (flujo) y se permiten buffers. La implementacion BSD está por sobre la INET. BSD maneja las tareas de forma similar al VFS (Virtual File System) y administra una estructura de datos general para las conexiones. Su propósito es la portabilidad a través de la abstracción de los detalles, a través de una simple interfaz. La interfaz BSD es usada por Unix y Windows. El modelo INET administra los puntos finales de la comunicación para los protocolos TCP y UDP. La lectura/escritura de red comienza por leer o escribir en un socket. Esto invoca a una llamada de sistema que es manejada por el VFS (o sea, las llamadas a archivo o sockets es simétrica). Desde ahí, se determina que la llamada BSD sock_write() es la que implementa la llamada al filesystem. Esta rutina maneja detalles administrativos (permisos) y pasa el control a inet_write(), para después llamar a una funcion de transporte, como tcp_write(). Las rutinas de escritura de la capa de transporte son las responsables de fragmentar los datos entrantes en paquetes de transporte. Estas rutinas pasan el control a ip_build_header() que construye una cabecera IP para ser insertada en el paquete a enviar. Luego, tcp_build_header() es llamada para crear una cabecera TCP. Una vez hecho esto, se envian los datos directamente al driver de red. Elaborado por: Carlos Eduardo Rodríguez Avilés 12 Kernel Linux Universidad Nacional de Ingeniería El sistema de red posee dos servicios de transporte diferentes. UDP posee una comunicación no orientada a la conexión y no confiable. Está encargada de recibir paquetes de la capa IP y encontrar el socket de destino donde los datos deben ser enviados. Si no se encuentra el socket, se genera un error. TCP, en cambio, es bastante mas complicado. Ademas del manejo de datos entre los procesos de recepción y envío, realiza complicadas tareas de administración de la conexión. TCP envia los datos al socket como un stream (flujo), en vez de una secuencia de datos (como UDP), pero garantiza una comunicación confiable. El protocolo IP provee un servicio de transporte de paquetes. Dado un paquete y un destino, la capa de comunicación IP es responsable del enrutamiento del paquete al host que corresponda. Para un flujo de datos saliente, IP es responsable de a) Particionar el flujo en paquetes IP b) Enrutar los paquetes a la dirección de destino c) Generar una cabecera que será usada por los drivers de red d) Seleccionar el dispositivo de red apropiado para enviar los datos Para un flujo de datos entrantes, IP es responsable de a) Verificar la validez de la cabecera b) Comparar la dirección de destino con la dirección local y reenviarlo si no corresponde c) Desfragmentar el paquete IP d) Enviar los paquetes a la capa TCP o UDP según corresponda El protocolo ARP (Address Resolution Protocol) es el responsable de convertir entre direcciones IP y direcciones de red reales. ARP soporta distintos tipos de hardware, Ethernet, FDDI, etc. Esta función es necesaria cuando los sockets se comunican con direcciones IP, ya que no pueden ser usadas directamente por los dispositivos de red. El subsistema de red provee sus propios drivers para conexiones seriales, paralelas y ethernet. Posee una interfaz de abstracción para los dispositivos para ocultar las diferencias entre las comunicaciones de las capas mas bajas y mas altas de este subsistema. Elaborado por: Carlos Eduardo Rodríguez Avilés 13 Kernel Linux Universidad Nacional de Ingeniería 5) Inter-Process Comunication o Comunicación Entre Procesos El IPC es un mecanismo en el cual los procesos que se están ejecutando posean medios para compartir recursos, sincronizarse y compartir datos entre ellos. Linux implementa todas las formas de IPC a través de recursos compartidos, estructuras de datos de Kernel y colas de espera. Estas formas de IPC son a través de a) Señales b) Colas de Espera c) Bloqueos de Archivos d) Pipes y Named Pipes, que permiten una transferencia de datos bidireccional y orientada a la conexión entre dos procesos, explícitamente seteando los pipes o comunicándolos a través de named pipes en el sistema de archivos (N. del E.:piensen en ls -als | more como una forma de piping) e) Unix Domain Sockets, otro medio de transferencia, más usado en el modelo INET f) IPC de System V compuesta por: g) Semáforos h) Colas de Mensaje i) Memoria Compartida Una señal es una notificación enviada a un proceso por el kernel o por otro proceso. Las señales se envían a través de send_sig(). El numero de señal se da como parámetro, como también el proceso destino. Los procesos pueden registrar sus propias señales, a través de la función signal(). Los bloqueos de archivo están soportados directamente por el kernel. Para bloquear un archivo, puede usarse open() simplemente. Pipes (tuberías) pueden ser usadas con pipe(), para filesystems read() o write() y para named pipes open(). Para Unix Domain Sockets, toda la funcionabilidad está encapsulada en socketcall(). En IPC de System V, existe una interfaz común para los tres métodos, ipc(). Las colas de espera son solo listas con los procesos que esperan por un evento del kernel, como la finalización de una lectura de DMA. Un proceso puede entrar voluntariamente a una cola de espera con sleep_on() o interruptable_sleep_on() y despertar con wake_up() o wake_up_interruptable() (que remueve los procesos de esta cola). Los bloqueos de archivos ocurren para prevenir que dos procesos puedan acceder al mismo archivo. Esta exclusión puede ser hecha al archivo completa o a una porción del archivo. Elaborado por: Carlos Eduardo Rodríguez Avilés 14 Kernel Linux Universidad Nacional de Ingeniería Los Pipes y Named Pipes son similares, pero su creación es diferente. En ambos casos debe existir un descriptor de archivo que esta enlazado a la tubería. Después de la creacion de la tubería, una página de memoria es asociada a ella que es tratada como un buffer circular, donde las funciones de escritura se manejan de forma atómica. Si se llena este buffer, se bloquea el proceso de escritura. Si se leen mas datos de los existentes, el proceso de lectura se bloquea. Así, cada tubería posee un proceso de espera asociado. Los semáforos se implementan con colas de espera, siguiendo el modelo clásico de semáforos. Cada semáforo posee un valor asociado. Existen dos operaciones para este manejo, up() y down(). Cuando el valor del semáforo es 0, el proceso que ocupa el semáforo (para decrementar su estado) es bloqueado en la cola de espera. Las colas de mensajes son listas que los procesos leen o escriben secuencias de bytes. Los mensajes se reciben en el mismo orden que son escritos. Existen dos colas, una para los procesos que envían un mensaje completo a la cola y otra para ordenar las escrituras de los mensajes. La memoria compartida es la forma más rápida de IPC. Permite que los procesos puedan compartir regiones de la memoria. La creación de esta memoria compartida se hace a través del administrador de memoria. Linux vs Windows En esta sección hablaremos sobre las ventajas y desventajas existentes entre Linux y el OS más usado en el mundo: Windows. Tópico Linux Windows Precio La mayoría de las variantes de Software Linux se encuentran gratis o a un muy bajo precio. Cada licencia de Windows puede costar entre $50.00 a $150.00 según la serie. Elaborado por: Carlos Eduardo Rodríguez Avilés 15 Kernel Linux Universidad Nacional de Ingeniería Manejo A pesar que se han dado muchas mejoras a Linux, Windows es de mucho más fácil manejo. Windows ha logrado grandes avances en cuanto a su interfaz para el usuario. No será tal vez el OS más fácil pero si lo es en comparación a Linux. Robustez Linux se ha caracterizado siempre por la robustez de su sistema ya que pueden pasar meses e incluso años sin la necesidad de apagar o reiniciar el equipo, también si una aplicación falla simplemente no bloquea totalmente al equipo. En Windows siempre hay que reiniciar cuando se cambia la configuración del sistema, se bloquea fácilmente cuando ejecuta operaciones aparentemente simples por lo que hay que reiniciar el equipo. La gran cantidad de usuarios que utilizan Linux tiene un limitado Windows hace que su OS Software grupo de partners cuyos sea mas standard y Software son compatibles. compatible con otras empresas que crean Software. Elaborado por: Carlos Eduardo Rodríguez Avilés 16 Kernel Linux Universidad Nacional de Ingeniería Muchos de los programas disponibles para Linux (sean juegos, hojas de calculo, etc..) son freeware o fuente Costos de abierta. Incluso aquellas Softwares que no son freeware como Gimp, OpenOffice, Staroffice y Wine están disponibles a muy bajo precio. A pesar de que Windows cuenta con una amplia gama de Software gratis, muchos de ellos, en especial los más avanzados, pueden costar entre $20.00 a $200.00 por copia. Linux es un sistema mucho Seguridad más seguro en comparación a Windows. A pesar de que Windows ha realizado avances en cuanto a seguridad, aún es un OS vulnerable a ataques de virus y hackers. Tendencias de linux hacia el futuro y sus aplicaciones Los operadores de telefonía móvil están mirando a los sistemas operativos Linux como una forma de abaratar los costes y como una forma de diversificar la oferta para ajustarse mejor a la demanda, como una reacción al deterioro de la economía. Hasta ahora el crecimiento ha sido lento y se ha estabilizado hace poco tiempo. Sin embargo, los avisos recientes de Motorola, de Vodafone, de HTC, y de Huawei, entre otros indicando de la adopción de nuevos modelos con Linux demuestran claramente que los fabricantes y los operadores están listos para usar Linux a una escala más grande. Y de hecho fue Nokia, el primer fabricante que lo incluyó hace unos meses, presentó un modelo de gama alta, el N900, que funciona con Linux Maemo. Además, el propio Symbian completó su migración a código abierto en Febrero de 2010. Elaborado por: Carlos Eduardo Rodríguez Avilés 17 Kernel Linux Universidad Nacional de Ingeniería También Google utilizó Linux para construir el sistema Android de su teléfono Nexus One, fabricado con HTC. El software libre se está poniendo de moda, así la mayoría de los fabricantes podrán incluir sus programas, en todas las plataformas que existen hoy en día. Elaborado por: Carlos Eduardo Rodríguez Avilés 18 Kernel Linux Conclusiones Universidad Nacional de Ingeniería El Kernel Linux es el OS Software Libre mas difundido del mundo. Su robustez es basada en la plataforma UNIX en que está basado. Basicamente, y como vimos en secciones anteriores, en comparación al OS Windows basado en lenguaje de programación C, las líneas de código basado en UNIX tienen una raíz distinta a C por lo que la mayoría de virus creados que poseen la raíz en C no afectan a Linux. El Kernel en si esta siendo impulsado como el futuro del software en ámbitos que van más alla de las PC. Hablamos de incluir el código en dispositivos como teléfonos móvil como ya se implementó en el OS Android de Google o el OS Maemo de Nokia que está sustituyendo el ya conocido Symbian. Económicamente hablando es el más ventajoso y es debido a eso, entre otras cualidades del Kernel, que varias de las compañías más grandes del mundo lo han implementado. La reducción de costos siempre es un problema y el Kernel permite ahorrar los costos de una licencia costosa. Elaborado por: Carlos Eduardo Rodríguez Avilés 19