Informacin General Un Sistema Operativo (SO) es una coleccin organizada de rutinas o extensiones de software del hardware. Consiste en rutinas de control que hacen funcionar una computadora y proporcionan un entorno para la ejecucin de los programas. Existen otros programas que se apoyan en el SO para poder acceder a los recursos que necesitan. Esto se lleva a cabo a travs de llamadas sistema operativo. Tambin el SO debe brindar una forma de que el usuario se pueda comunicar con l a travs de una interfaz que le brinde una va de comunicacin con el hardware del sistema informtico. El objetivo principal del SO es lograr que el sistema informtico es el lograr que el hardware de la computadora se emplee de modo eficiente, y el objetivo secundario se use de manera cmoda. El SO debe asegurar el correcto funcionamiento del sistema informtico. Para lograr esto el hardware debe brindar algn mecanismo apropiado que impida que los usuarios intervengan en el funcionamiento del sistema y as mismo el SO debe poder utilizar este recurso de hardware de modo que esto se cumpla. El SO debe ofrecer servicios a los programas y sus usuarios para facilitar la tarea de programacin. Qu es un sistema operativo? Las clases de sistemas operativos en la que nos basaremos sern los denominados multiusuarios y de multiprogramacin; es decir que varios usuarios podrn correr concurrentemente mltiples programas. Un SO es una parte importante de casi cualquier sistema informtico. Para entender mejor esto veremos que un sistema informtico puede separar en cuatro partes: El hardware El SO Los programas de aplicacin Los usuarios
Estas partes hacen de capas, cada una de las cuales acerca ms al usuario a utilizar los recursos del hardware. El hardware (CPU, memoria y dispositivos) proporciona los recursos de computacin bsicos sobre los que se agregaran estas capas sucesivas. Los programas de aplicacin como los compiladores, juegos, aplicaciones de negocios, etc. definen la forma en que estos recursos se emplearn para solucionar los problemas del usuario. Puede haber varias clases de usuarios usando el sistema, como ser personas, programas y otras computadoras, tratando de resolver diversos problemas. El SO controla y coordina el uso del hardware entre los diversos programas de aplicacin y los distintos usuarios, administrando todos los recursos como disco, memoria, impresoras, monitor, etc. El SO determina los tiempos en que un determinado programa utilizar un recurso dado. Al comienzo de la era informtica, los sistemas no utilizaban SO's. Estas computadoras de hace 40 aos ejecutaban un programa a la vez que era cargado por un programador. Este cargaba el programa y lo ejecutaba. Si exista algn error que hiciera que el programa se detuviera antes de lo esperado, se tena que comenzar de nuevo con todo el proceso. Recordemos que en esa poca no haba muchas computadoras en funcionamiento, as que el programador tena que esperar de varios das hasta tener nuevamente su turno enfrente de la computadora. Los SO's existen porque son una solucin razonable al problema de crear un sistema informtico til. El objetivo fundamental de los sistemas informticos es ejecutar los programas de los usuarios y facilitar la resolucin de sus problemas. Todo esto se haca a travs de tarjetas perforadas que una persona encargada cargaba en la computadora y luego de algunas horas devolva la salida impresa al programador. Al avanzar la tecnologa informtica, muchos de estos programas se cargaban en una sola cinta, otro programa residente en la memoria de la computadora, cargaba y manipulaba los programas de esa cinta. Este es el ancestro de los SO's de hoy en da. En la dcada del 60 la tecnologa de SO's avanzo mucho y se podan tener mltiples programas al mismo tiempo en la memoria. As surgi el concepto de multiprogramacin. Si un programa necesitaba esperas a que ocurriera algn evento externo, como que una cinta se rebobinara, otro podra tener acceso a la CPU para as poder utilizar el 100% del poder de procesamiento con que contaba la computadora. Esto ahorraba mucho dinero ya que en aquel entonces todo en lo referente a cmputo (memoria, espacio en disco, etc) costaba cientos de miles de dlares. A finales de los 60's, en 1969, naci UNIX, SO que trataremos ms adelante, y es la base de muchos de los SO's de hoy en da, aunque muchos no lo admitan.
Definir que forma parte de un SO y que no sera difcil, dada la gran variedad existente, pero una definicin para los SO que nos compete en estos momentos seria que el SO es el programa que ejecuta todo el tiempo en la computadora (conocido usualmente como kernel o ncleo), siendo los programas de aplicacin todo lo dems. En general un SO intenta incrementar la productividad de un recurso de proceso tal como el hardware de la computadora, o de los usuarios de los sistemas informticos. Ahora bien, en lo referente a la utilizacin eficiente de un sistema informtico no siempre se puede lograr que un SO lo logre. Casi siempre resulta contradictorio la comodidad y la eficiencia. El sistema operativo en capas Podemos imaginar a Linux como una cebolla donde cada capa se comunica con la capa inferior. En la parte del centro se encuentra la capa de comunicacin con el hardware. El SO la utiliza para poder controlar los diversos aspectos del hardware. Sobre ella se encuentra la capa de dispositivos. Es un conjunto de funciones denominadas controladores de dispositivo que se encuentra dentro del kernel del SO. Ellas acceden directamente al hardware y hacen el trabajo de lectura, escritura, etc. Es un punto muy sensible del sistema en donde cuando un error surge poco puede hacerse para detener el proceso. Sobre la capa de dispositivos se encuentra la capa de administracin, esta es un conjunto de funciones a las que se hace referencia como sistema operativo tomando la decisin de que se ejecuta y cuando. Son las funciones que administran tambin los procesos, dndoles los turnos pertinentes y mandndolos a dormir cuando no es su turno. La capa que sigue es la de los procesos mismos, por ejemplo el shell del SO. Estos procesos reciben la ordenes directamente del usuariou otros procesos y los traducen al lenguaje de maquina pasndoselos al SO para su ejecucin. A partir del shell se podrn arrancar otrosprocesos, como programas, que forman la capa superior de la cebolla.Estos se comunicaran con el shell para que el SO interprete sus rdenes
Por que usar GNU/Linux y que nos ofrece Los usuarios buscan sistemas que puedan satisfacer sus necesidades. Tal vez la curiosidad los ha llevado a buscar en GNU/Linux, pero es bueno saber que la eleccin no solamente puede satisfacer dicha curiosidad. Como estudiantes, tendrn ante ustedes un sistema muy configurable y esa sola opcin hace que sea el preferido de los mbitos acadmicos. El poder tener el cdigo fuente de cada punto de un sistema operativo funcional es un recurso invaluable que no se poda tener hasta no hace mucho. Pero no nos engaemos con que tenemos un sistema solamente didctico. GNU/Linux presenta un sin fin de aplicaciones que generan un ambiente por dems de estable para los negocios de hoy en da. Y este es un punto interesante ya que es en las empresas donde GNU/Linux tiene mayor entrada, debido en gran parte al poder contar con un sistema Un*x de bajo costo total de la propiedad (TCO por sus siglas en ingls) y sin las complicaciones de licencias que tienen otros SO. Pongamos un ejemplo. Una empresa compra una distribucin cualquiera por u$s 30, la instala en sus 120 mquinas. Nada lo impide, no es ilegal y sobre todas las cosas, tendrn una plataforma mucho ms estable que con otros SO's. Dirn seguramente que GNU/Linux no cuenta con ningn soporte. Es un gran error. Primero que todo GNU/Linux cuenta con una gran comunidad dispuesta a ayudar y sobre todo, en esa comunidad se podr contactar hasta a los mismos programadores que formaron parte del proyecto. Tal vez a una empresa no le interese el soporte a travs de un contacto que supunen poco confiable. Las empresas necesitan echarle la culpa a alguna organizacin si el servidor no funciona. Muy bien, empresas como IBM, Hewllett-Packard y Compaq ya venden servidores con GNU/Linux preinstalados y con garantas y servicios tcnicos similares a los que ofrecen con otras plataformas. Si eso no basta, numerosas empresas locales de servicio estn entrando en la competencia de brindar asistencia y soporte a aquellas personas que ya posean un sistema GNU/Linux, sin importar si se lo han comprado a ellos. Por parte de las distribuciones, cuentan con soporte permanente, ya sea a travs de la web o correo electrnico, servicio que cuesta muchsimo en otros SO's y ni hablar de SO's Un*x. Tambin desde el punto de vista del usuario final, la cantidad de software disponible es ms que suficiente para satisfacer las necesidades en todos los campos. Veamos algunos ejemplos: Estacin de trabajo Internet Contamos en este rea con una enorme variedad de clientes para los ms diversos protocolos. La siguiente lista no intenta ser completa, solamente se listan los programas mas comunes en cada campo: http (web): Navegadores en modo consola puro (lynx, links, w3c, emacs/w3c), en modo consola con capacidad grfica (links) y para X ( mozilla/netscape, konqueror, links, galen, epiphany) correo y noticias: Clientes para consola (mutt, pine, slrn, tin) y para X (kmail, evolution, sylpheed, balsa, pan, knode) ftp: Clientes de consola (ftp, con este nombre se agrupan varias versiones) y para X (gftp, konqueror). irc (chat): Clientes para consola (BitchX, epicII) y para X (XChat, KSirc, chatzilla) im (mensajera instantnea): Existen una variedad de clientes, siendo la caracterstica saliente que la mayora suele ser cliente de varias redes a la vez (jabber, icq, msn, aim, gadu-gadu, etc.). Hay tanto clientes de consola (centericq, pebrot) como para X (gaim, kopete, amsn, psi). Estacin de trabajo de oficina Encontraremos aqu una gran variedad de software destinado tanto a crear como a transformar y visualizar diferentes tipos de documentos. La siguiente lista es meramente orientativa: Procesadores de texto: Una gran cantidad de programas para X (OpenOffice Writer, Abiword, Ted, PW, Kword). Planillas de clculo: Existen algunas para la consola (GNU Oleo, sc) y tambin para X (OpenOffice Writer, Gnumeric,Kcalc, abs, Siag). Bases de datos: Existen aplicaciones que van desde algunas de gran calibre aplicables a servidores (PostgreSQL, MySQL) hasta mas pequeas comparables con algunas bases de datos personales del mundo Windows (Firefox, MiniSQL). Estas no proveen interfaces grficas en general, sino conectividad con clientes. Algunos clientes destacados son pgacces (interfaz grfica para PostgreSQL) y el front-end de OpenOffice para MySQL y archivos DBF. Programas de presentaciones: Disponibles para X (OpenOffice Impress, Kpresenter). Imagenes vectoriales: Varias opciones disponibles para X (OpenOffice Draw, Xfig, Sodipodi). Imagenes raster (bitmap): Se cuenta con varias aplicaciones con diferentes grados de sofisticacin (Gimp, Xpaint, Kpaint). Diseo 3d: Blender/Blender 3D, PovRay. Formateo de documentos: Esta seccin podra decirse que es casi desconocida en el mundo de Windows y MacOS, si bien los programas que pertenecen a este grupo se destacan por su gran portabilidad y tienen versiones nativas en los sistemas antes mencionados. La idea es escribir en un archivo de texto (sin formato alguno) el texto intercalando instrucciones acerca de que funcin cumple el texto dentro del documento, si es un prrafo, un encabezado, una lista numerada, etc. Luego, el formateador procesa el archivo fuente y produce una salida formateada que puede ser impresa con una gran calidad, por ejemplo en formato pdf. Los formateadores de texto ms comunes son, en orden de popularidad: TeX-LaTeX: El formateador de Donald Knuth es el estndar de facto para salidas de gran calidad como libros y publicaciones cientficas. Troff-Nroff-Groff: El abuelo de los formateadores, ha quedado un tanto desfasado frente a los dems, pero se destaca por ser el nico que viene instalado en los sistemas base de todas las distribuciones, ya que se utiliza para darle formato a las pginas man. Lout: Sistema similar a LaTeX, distinguindose por ser mucho ms moderno y minimalista. Su salida es por defecto postscript, por lo que puede ser impreso en impresoras que soporten este estndar directamente. Markup languages: Aqu se agrupan una serie de tecnologas bastante recientes, orientadas a la creacin de documentos sobre todo de la rama informtica. Un exponente destacado de este grupo es DocBook, el cual se utiliz para la creacin de este documento. Estacin de trabajo cientfica GNU/Linux cuenta con software para el trabajo en distintas ramas de la ciencia y la tecnologa. Sera muy largo enumerar la cantidad de software disponible en esta rea. Sin dudas, los ms destacados son: Lenguaje de programacin tipo Matlab: GNU Octave, Scilab, Euler. Programas para grficas cientficas: Gri (lenguaje), GNU Plotutils (consola, no interactivo), Gnuplot, xmgrace, SciGraphica. Programas de clculo de elementos finitos: FreeFEM, CalculiX. GIS: Grass, Spring, GMT. Existen una gran cantidad de herramientas para cada rama de la ciencia. Si nuestro trabajo es de este tipo, sin dudas el software disponible llenar nuestras necesidades. Ahora bien, GNU/Linux cuenta adems con una serie de soportes para tecnologas heredadas como podran ser aplicaciones que corren en otro tipo de plataforma. Se cuenta con emuladores de DOS y Windows, estando siendo adems portadas una gran cantidad de aplicaciones tanto de corriente principal como grandes aplicaciones. Esto da la seguridad de no tener que cambiar el software por el que se pag anteriormente, pero hay que decir que este tipo de programas emuladores todava tienen sus fallas, siendo difcil poder ejecutar algunas aplicaciones poco conocidas. Existe una frase que habla por si misma: GNU/Linux lo tiene todo: Estabilidad, soporte y software. Adems en esta poca de recortes GNU/Linux es la clave para mantener nuestro negocio competitivo tanto tecnolgica como econmicamente. Caractersticas de Linux multitarea: varios programas (realmente procesos) ejecutndose al mismo tiempo. multiusuario: varios usuarios en la misma mquina al mismo tiempo multiplataforma: corre en muchas CPUs distintas, no slo Intel. tiene proteccin de la memoria entre procesos, de manera que uno de ellos no pueda colgar el sistema. memoria virtual usando paginacin (sin intercambio de procesos completos) a disco: una particin o un archivo en el sistema de archivos, o ambos, con la posibilidad de aadir ms reas de intercambio sobre la marcha (se sigue denominando intercambio, es en realidad un intercambio de pginas). Un total de 16 zonas de intercambio de 128Mb de tamao mximo pueden ser usadas en un momento dado con un lmite terico de 2Gb para intercambio. 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 ste puede a su vez ser reducido cuando se ejecuten grandes programas. libreras compartidas de carga dinmica (DLL's) y libreras estticas tambin, por supuesto. se realizan volcados de estado (core dumps) para posibilitar los anlisis post-mortem, permitiendo el uso de depuradores sobre los programas no slo en ejecucin sino tambin tras abortar stos por cualquier motivo. casi totalmente compatible con POSIX, System V y BSD a nivel fuente. mediante un mdulo de emulacin de iBCS2, casi completamente compatible con SCO, SVR3 y SVR4 a nivel binario. todo el cdigo fuente est disponible, incluyendo el ncleo completo y todos los drivers, las herramientas de desarrollo y todos los programas de usuario; adems todo ello se puede distribuir libremente. Hay algunos programas comerciales que estn siendo ofrecidos para Linux actualmente sin cdigo fuente, pero todo lo que ha sido gratuito sigue siendo gratuito. control de tareas POSIX. pseudo-terminales (pty's). emulacin de 387 en el ncleo, de tal forma que los programas no tengan que hacer su propia emulacin matemtica. Cualquier mquina que ejecute Linux parecer dotada de coprocesador matemtico. Por supuesto, si tu ordenador ya tiene una FPU (unidad de coma flotante), ser usada en lugar de la emulacin, pudiendo incluso compilar tu propio kernel sin la emulacin matemtica y conseguir un pequeo ahorro de memoria. soporte para muchos teclados nacionales o adaptados y es bastante fcil aadir nuevos dinmicamente. consolas virtuales mltiples: varias sesiones de login a travs de la consola entre las que se puede cambiar con las combinaciones adecuadas de teclas (totalmente independiente del hardware de video). Se crean dinmicamente y puedes tener hasta 64. soporte para varios sistemas de archivo comunes, incluyendo minix-1, Xenix y todos los sistemas de archivo tpicos 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 FAT, FAT32 y NTFS) mediante un sistema de archivos especial: no necesitas ningn comando especial para usar la particin MS-DOS, parece un sistema de archivos normal de Unix (excepto por algunas graciosas 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 aadido al ncleo de desarrollo y estar en la prxima versin estable. un sistema de archivos especial llamado UMSDOS que permite que Linux sea instalado en un sistema de archivos DOS. soporte en slo lectura de HPFS-2 del OS/2 2.1 sistema de archivos de CD-ROM que lee todos los formatos estndar de CD-ROM. TCP/IP, incluyendo ftp, telnet, NFS, etc. Appletalk disponible en el actual ncleo de desarrollo. software cliente y servidor Netware disponible en los ncleos de desarrollo.