Un sistema operativo es un software de sistema, es decir, un conjunto de programas de computadora destinado a permitir una administración eficaz de sus recursos. Comienza a trabajar cuando se enciende el computador, y gestiona el hardware de la máquina desde los niveles más básicos, permitiendo también la interacción con el usuario. Un sistema operativo es posible encontrar normalmente en la mayoría de los aparatos electrónicos que utilicen microprocesadores para funcionar, ya que gracias a éstos podemos entender la máquina y que ésta cumpla con sus funciones (teléfonos móviles, reproductores de DVD, autorradios, computadoras, etc). Actualmente el concepto de computadora esta intrínsecamente relacionado al de sistema operativo, aunque éste existe en otros aparatos electrónicos y no sólo en las computadoras. Características de un sistema operativo Las características deseables más importantes de un sistema operativo son: Permitir la concurrencia de procesos, traslapándose el tiempo de entrada/salida (E/S) con el de cálculo y ocupando la memoria con varios programas. Posibilitar la ejecución de cualquier proceso en el momento que se solicite siempre y cuando haya suficientes recursos libres para él. Ser eficiente en cuanto a reducir: el tiempo medio que ocupa cada trabajo, el tiempo que no se usa la CPU, el tiempo de respuesta en sistemas multiacceso y el plazo entre dos asignaciones de CPU a un mismo programa. Ser eficiente en cuanto a aumentar la utilización de recursos en general, tales como memoria, procesadores, dispositivos de E/S, discos magnéticos, datos, etc. Ser fiable, es decir, un sistema operativo no debe tener errores y debe prever todas las posibles situaciones. Ser de tamaño pequeño. Posibilitar y facilitar en lo posible el "diálogo" entre computadora y usuario de la misma. Permitir compartir entre varios usuarios los recursos de hardware con que cuenta una computadora. Permitir a los usuarios compartir datos entre ellos, en caso necesario. Facilitar la E/S de los diferentes dispositivos conectados a una computadora. Funciones de un sistema operativo Las funciones más importantes que debe cumplir un sistema operativo son las siguientes: Aceptar los trabajos y conservarlos hasta su finalización. Detectar errores y actuar de modo apropiado en caso de que se produzcan. Controlar las operaciones de E/S. Controlar las interrupciones. Planificar la ejecución de tareas. Entregar recursos a las tareas. Retirar recursos de las tareas. Proteger la memoria contra el acceso indebido de los programas. Soportar el multiacceso. EVOLUCION DE LOS SISTEMAS OPERATIVO Años 40 A finales de los años 40, con lo que podríamos llamar la aparición de la primera generación de computadoras, se accedía directamente a la consola de la computadora desde la cual se actuaba sobre una serie de micro interruptores que permitían introducir directamente el programa en la memoria de la computadora (en realidad al existir tan pocas computadoras todos podrían considerarse prototipos y cada constructor lo hacía sin seguir ningún criterio predeterminado). Por aquel entonces no existían los sistemas operativos, y los programadores debían interactuar con el hardware del computador sin ayuda externa. Esto hacía que el tiempo de preparación para realizar una tarea fuera considerable.
Años 50 A principios de los años 50 con el objeto de facilitar la interacción entre persona y computador, los sistemas operativos hacen una aparición discreta y bastante simple, con conceptos tales como el monitor residente, el proceso por lotes y el almacenamiento temporal.
Monitor residente Su funcionamiento era bastante simple, se limitaba a cargar los programas a memoria, leyéndolos de una cinta o de tarjetas perforadas, y ejecutarlos. El problema era encontrar una forma de optimizar el tiempo entre la retirada de un trabajo y el montaje del siguiente. Era sumamente complicado, por el hecho de que eran tarjetas perforadas las cuales las tenia que leer el sistema.
Procesamiento por lotes Como solución para optimizar, en un mismo núcleo de cinta o conjunto de tarjetas se montaban los programas, de forma que se ejecutaran uno a continuación de otro sin perder apenas tiempo en la transición.
Almacenamiento temporal Su objetivo era disminuir el tiempo de carga de los programas, haciendo simultánea la carga del programa o la salida de datos con la ejecución de la siguiente tarea. Para ello se utilizaban dos técnicas, el buffering y el spooling.
Años 60 En los años 60 se produjeron cambios notorios en varios campos de la informática, con la aparición del circuito integrado la mayoría orientados a seguir incrementando el potencial de los computadores. Para ello se utilizaban técnicas de lo más diversas:
Multiprogramación En un sistema multiprogramado la memoria principal alberga a más de un programa de usuario. La CPU ejecuta instrucciones de un programa, cuando el que se encuentra en ejecución realiza una operación de E/S; en lugar de esperar a que termine la operación de E/S, se pasa a ejecutar otro programa. Si éste realiza, a su vez, otra operación de E/S, se mandan las órdenes oportunas al controlador, y pasa a ejecutarse otro.
Tiempo compartido En este punto tenemos un sistema que hace buen uso de la electrónica disponible, pero adolece la falta de interactividad; para conseguirla debe convertirse en un sistema multiusuario, en el cual existen varios usuarios con un terminal en línea, utilizando el modo de operación de tiempo compartido. En estos sistemas los programas de los distintos usuarios residen en memoria.
Tiempo real Estos sistemas se usan en entornos donde se deben aceptar y procesar en tiempos muy breves un gran número de sucesos, en su mayoría externos al ordenador. Si el sistema no respeta las restricciones de tiempo en las que las operaciones deben entregar su resultado se dice que ha fallado. El tiempo de respuesta a su vez debe servir para resolver el problema o hecho planteado.
.
Sistemas operativos desarrollados Además del Atlas Supervisor y el OS/360, los años 70 marcaron el inicio de UNIX, a mediados de los 60 aparece Multics, sistema operativo multiusuario - multitarea desarrollado por los laboratorios Bell de AT&T y programado en PL/1 uno de los pocos SO desarrollados en un lenguaje de alto nivel en aquel tiempo, luego del fracaso del proyecto, UNIX comienza a desarrollarse a partir de este a finales de la década.
Años 70 Debido al avance de la electrónica, pudo empezar a crearse circuitos con miles de transistores en un centímetro cuadrado de silicio, lo que llevaría, pocos años después, a producir los primeros sistemas integrados. Ésta década se podría definir como la de los sistemas de propósito general y en ella se desarrollan tecnologías que se siguen utilizando en la actualidad. Es en los años 70 cuando se produce el boom de los miniordenadores y la informática se acerca al nivel de usuario. En lo relativo a lenguajes de programación, es de señalar la aparición de Pascal y C, el último de los cuales se creó específicamente para reescribir por completo el código del sistema operativo Unix, convirtiéndolo en uno de los pocos SO escritos en un lenguaje de alto nivel. En el campo de la programación lógica se dio a luz la primera implementación de Prolog, y en la revolucionaria orientación a objetos, Smalltalk.
Inconvenientes de los sistemas existentes Se trataba de sistemas grandes y costosos, pues antes no se había construido nada similar y muchos de los proyectos desarrollados terminaron con costos muy por encima del presupuesto y mucho después de lo que se marcaba como fecha de finalización. Además, aunque formaban una capa entre el hardware y el usuario, éste debía conocer un complejo lenguaje de control para realizar sus trabajos. Otro de los inconvenientes es el gran consumo de recursos que ocasionaban, debido a los grandes espacios de memoria principal y secundaria ocupados, así como el tiempo de procesador consumido. Es por esto que se intentó hacer hincapié en mejorar las técnicas ya existentes de multiprogramación y tiempo compartido.
Características de los nuevos sistemas Para solventar los problemas antes comentados, se realizó un costosísimo trabajo para interponer una amplia capa de software entre el usuario y la máquina, de forma que el primero no tuviese que conocer ningún detalle de la circuitería.
Sistemas operativos desarrollados MULTIC (Multiplexed Information and Computing Service): Originalmente era un proyecto cooperativo liderado por Fernando Corbató del MIT, con General Electric y los laboratorios Bell, que comenzó en los 60, pero los laboratorios Bell abandonaron en 1969 para comenzar a crear el sistema UNIX. Se desarrolló inicialmente para el mainframe GE-645, un sistema de 36 bits; después fue soportado por la serie de máquinas Honeywell 6180. Fue uno de los primeros sistemas operativos de tiempo compartido, que implementó un solo nivel de almacenamiento para el acceso a los datos, desechando la clara distinción entre los ficheros y los procesos en memoria, y uno de los primeros sistemas multiprocesador.
Años 80 Con la creación de los circuitos LSI -integración a gran escala-, chips que contenían miles de transistores en un centímetro cuadrado de silicio, empezó el auge de los ordenadores personales. En éstos se dejó un poco de lado el rendimiento y se buscó más que el sistema operativo fuera amigable, surgiendo menús, e interfaces gráficas. Esto reducía la rapidez de las aplicaciones, pero se volvían más prácticos y simples para los usuarios. En esta época, siguieron utilizándose lenguajes ya existentes, como Smalltalk o C, y nacieron otros nuevos, de los cuales se podrían destacar: C++ y Eiffel dentro del paradigma de la orientación a objetos, y Haskell y Miranda en el campo de la programación declarativa. Un avance importante que se estableció a mediados de la década de 1980 fue el desarrollo de redes de computadoras personales que corrían sistemas operativos en red y sistemas operativos distribuidos. En esta escena, dos sistemas operativos eran los mayoritarios: MS-DOS(Micro Soft Disk Operating), escrito por Microsoft para IBM PCy otras computadoras que utilizaban la CPU Intel 8088 y sus sucesores, y UNIX, que dominaba en los ordenadores personales que hacían uso del Motorola 68000.
Apple Macintosh El lanzamiento oficial se produjo en enero de 1984, al precio de 2495 dólares. Muchos usuarios, al ver que estaba completamente diseñado para funcionar a través de una GUI (Graphic User Interface), acostumbrados a la línea de comandos, lo tacharon de juguete. A pesar de todo, el Mac se situó a la cabeza en el mundo de la edición a nivel gráfico.
MS-DOS En 1981 Microsoft compró un sistema operativo llamado QDOS que, tras realizar unas pocas modificaciones, se convirtió en la primera versión de MS-DOS (MicroSoft Disk Operating System). A partir de aquí se sucedieron una serie de cambios hasta llegar a la versión 7.1, versión 8 en Windows Milenium, a partir de la cual MS-DOS dejó de existir como tal y se convirtió en una parte integrada del sistema operativo Windows.
Años 90
La idea de un Sistema Operativo Libre para la humanidad nace en 1984, impulsada por Richard Stallman, ex-empleado del MIT. Motivado por esta idea comienza la construcción y desarrollo de las herrmientas elementales que componen un Sistema Operativo, a esta parte del desarrollo del Sistema Operativo se le conoce como proyecto GNU. En esta etapa Richard Stallman cuenta con la colaboración de miles de programadores a nivel mundial. En 1991 aparece la primera versión del núcleo Linux. Creado por Linus Torvalds, pero antes de que este apareciera ya existía la mayoría de las herramientas que componían al Sistema Operativo, pero aun así el núcleo Linux tiene una importancia fundamental para el proyecto, es tal la importancia de este que el proyecto termina llamándose GNU/Linux, dando un 50% de importancia a ambas partes. Este sistema es similar a Unix, basado en el estándar POSIX , un sistema que en principio trabajaba en modo comandos. Hoy en día dispone de Ventanas, gracias a un servidor gráfico y a gestores de ventanas como KDE, GNOME entre muchos. Recientemente GNU/Linux dispone de un aplicativo que convierte las ventanas en un entorno 3D como por ejemplo Beryl o Compiz. Lo que permite utilizar linux de una forma visual atractiva.
Microsoft Windows A mediados de los años 80 se crea este sistema operativo, pero no es hasta la salida de Windows 95 que se le puede considerar un sistema operativo, solo era una interfaz gráfica del MS-DOS. Hoy en día es el sistema operativo más difundido en el ámbito doméstico aunque también hay versiones para servidores como Windows NT. Microsoft ha diseñado también algunas versiones para superordenadores, pero sin mucho éxito. Años después se hizo el Windows 98 que era el más eficaz de esa época Después se crearía el sistema operativo de Windows ME (Windows Millenium Edition) aproximadamente entre el año 1999 y el año 2000. Un año después se crearía el sistema operativo de Windows 2000 en ese mismo año. Después le seguiría el sistema operativo más utilizado en la actualidad, Windows XP y otros sistemas operativos de esta familia especializados en las empresas. Ahora el más reciente es Windows Vista, que, actualmente, tiene muchas críticas. Ahora está en desarrollo el sistema operativo Windows 7, que será una especie de "actualización" a Windows Vista, sacando novedades y mejorando problemas de incompatibilidad, rendimiento y más. Sistemas operativos mas utilizados Los sistemas operativos más utilizados en los PC son DOS, OS/2, y Windows, pero hay otros que también se utilizan, como por ejemplo Linux y Unix. Diferencias entre Windows Y Linux Si comparamos Linux con Windows 95/98/XP encontramos las siguientes ventajas e inconvenientes: Precio: Linux es libre, flexible, gratuito, configurable, eficiente, no requiere hardware caro, no obliga a cambiar continuamente la versión del software. Windows es un software no gratuito y poco flexible, ademas de que continuamente cambia la versión de software. Compatibilidad: Linux requiere mas conocimientos de informática, no hay sustituto directo para todas las aplicaciones, algunos dispositivos de última generación no están soportados (cada vez son menos). Windows es un software mucho mas compatible, tiene mucho mayor soporte en cuanto a dispositivos y requiere el mínimo de conocimientos de informática. Usuarios: Linux es un software menos comercial por lo cual es menos utilizado ya que como es gratuito la mayoría de usuarios no le tienen toda la confianza. Windows es un software muy publicitado lo cual lo convierte en un producto muy comercial además de que cuenta con un numero mucho mayor de usuarios alrededor del mundo. Seguridad: Windows no es el único sistema operativo donde podemos encontrar vulnerabilidades. En realidad, cualquier sistema construido por el hombre está potencialmente afectado. Linux no es una excepción, solo que en relación a Windows es mucho menos vulnerable. Bien es cierto que las vulnerabilidades encontradas son en número menores, pero también es verdad que el ímpetu con el que se buscan los agujeros en Windows es mucho mayor, debido a que algunos informáticos utilizan buena parte de su tiempo y se divierten buscando manchas en el expediente de Microsoft. Sin embargo, la desventaja más negativa resulta que Microsoft va "jubilando" sus sistemas operativos con el tiempo. Por ejemplo, con la entrada de 2003 ha calificado de obsoletos a sus sistemas MS-DOS, Windows 3.x, Windows 95 y Windows NT 3.5. Windows ME, con tan sólo unos pocos años de vida, se jubilaron el 31 de diciembre de 2003. A partir de entonces, Microsoft no ofrece más asistencia ni actualizaciones para ellos, lo que puede dejar desprotegidos a miles de usuarios de todo el mundo, que deberán actualizar su sistema operativo para disponer actualizaciones de seguridad.
Diferencias entre Windows y Unix Unix y Windows parten de paradigmas completamente diferentes para la carga de código en tiempo de ejecución. Antes de intentar construir un módulo con carga dinámic, se debe comprender cómo funciona el sistema final del usuario. En Unix, un fichero objeto compartido (shared object, .so) contiene código que será utilizado por el programa junto con los nombres de las funciones y datos que espera encontrar en el programa. Cuando el fichero se une al programa, se cambian todas las referencias a dichas funciones y datos para que apunten a sus direcciones de memoria reales en el programa. A grandes rasgos, se realiza una operación de enlace. En Windows, un fichero de biblioteca de enlace dinámico, (dynamic-link library, .dll) no tiene referencias pendientes. En lugar de ello, todo acceso a funciones y datos pasa por una tabla de consulta. Por ello, no hay que arreglar el código de la DLL para que haga referencia a la memoria del programa. El programa ya utiliza la tabla de búsquedas, lo que cambia en tiempo de ejecución es la tabla de búsquedas para apuntar a las funciones y datos finales. En Unix, sólo hay un tipo de fichero de biblioteca (.a) que contiene código de varios ficheros objeto (.o). En el paso de enlace para crear un fichero objeto compartido (.so), el enlazador puede encontrarse que desconoce dónde se define un identificador. El enlazador lo buscará en los ficheros objeto y en las bibliotecas. Si lo encuentra, incluirá todo el código del fichero objeto. En Windows, existen dos tipos de biblioteca, una biblioteca estática y una biblioteca de importación (ambas llamadas .lib). Una biblioteca estática es como un fichero .a de Unix: contiene código que se incluirá si es necesario. Una biblioteca de importación se usas sólo para asegurar al enlazador que un identificador concreto es legal y estará presente en el programa cuando se cargue la DLL. Por ello, el enlazador utiliza la información de la biblioteca de importación para construir la tabla de consulta para usar los identificadores no incluidos en la DLL. Cuando se enlaza una aplicación o DLL, puede generarse una biblioteca de importación, que tendrá que usarse para futuras DLLs que dependan de los símbolos de la aplicación o DLL. Diferencia entre Linux y Unix Linux Contra Unix En Los términos de características, Unix y Linux son bastante semejantes. Sin embargo, el mayor la diferencia entre Unix y Linux es que Unix se diseñó específicamente Para el networking. Linux corre perfectamente multa como un sistema personal de Unix y En camareros grandes. Linux sostiene una mucha gran variedad de ferretería que Unix y a causa del modelo Abierto de la Fuente, cualquier conductor con toda seguridad ferretería Puede ser escrito para Linux tan largo como alguien tiene el tiempo a hace así. Muchos las universidades y las compañías comienzan al uso Linux en vez de Unix porque puede proporcionar la funcionalidad de una estación de trabajo en la ferretería de PC En una fracción del costo. Hay otras versiones libres de Unix disponibles Tal como FreeBSD. FreeBSD y Linux son semejantes pero basados en diferente Las metas y por lo tanto diseñó diferentemente. La meta de Linux debía desarrollar un sistema libre de Unix que se podría correr en ambos un nivel personal y en grande Los camareros de la red. FreeBSD buscado sólo a modifica el código existente de BSD Unix. Ventajas de Linux 1. Linux es básicamente un duplicado de UNIX, lo que significa que incorpora muchas de las ventajas de este importante sistema operativo. 2. En Linux pueden correr varios procesos a la vez de forma ininterrumpida como un servidor de red al tiempo que un procesador de textos, una animación, copia de archivos o revisar el correo electrónico. 3. Seguridad porque es un sistema operacional diseñado con la idea de Cliente - Servidor con permisos de acceso y ejecución a cada usuario. Esto quiere decir que varios usuarios pueden utilizar una misma maquina al tiempo sin interferir en cada proceso. 4. Linux es software libre, casi gratuito. Linux es popular entre programadores y desarrolladores e implica un espíritu de colaboración. 5. Linux integra una implementación completa de los diferentes protocolos y estándares de red, con los que se puede conectar fácilmente a Internet y acceder a todo tipo de información disponible. Desventajas de Linux 1. Linux no cuenta con una empresa que lo respalde, por lo que no existe un verdadero soporte como el de otros sistemas operativos. 2. La pendiente de aprendizaje es lenta. 3. No es tan fácil de usar como otros sistemas operativos, aunque actualmente algunas distribuciones están mejorando su facilidad de uso, gracias al entorno de ventanas, sus escritorios y las aplicaciones diseñadas específicamente para él, cada día resulta más sencillo su integración y uso. 4. Documentación y terminología muy técnica. 5. Para usuarios corrientes, todavía no es un sistema de escritorio. Funciona únicamente con proveedores de hardware que accedieron a la licencia GPL y en algunas instancias no es compa. Principales ventajas El tour de inicio al Wndows XP Starter es más detallado. Cuenta con varios videos de introducción en castellano para el usuario principiante. Se puede aprender desde como usar el Mouse hasta saber lo que es un Firewall. Tiene una gran cantidad de tutoriales. Viene con 3 wallpapers del país de destino. El protector de pantalla es la bandera nacional. Opción de configuración automática para el PC Unix Unix es un sistema operativo de tiempo compartido, controla los recursos de una computadora y los asigna entre los usuarios. Permite a los usuarios correr sus programas. Controla los dispositivos de periféricos conectados a la máquina. Además es un sistema multiusuario, en el que existe la portabilidad para la implementación de distintas computadoras. Ventajas de Unix Ø Multiusuario. Ø Multitarea. Ø Soporta acceso remoto. Ø Soporte nativo de TCP/IP (Fácil conexión a Internet y otras redes) o Contiene xFree86, que es una interfaz gráfica de usuario basada en los estándares de X-Windows, y también es gratuita. Desventajas de Unix Ø Carencia de soporte técnico. Ø No ofrece mucha seguridad. Ø Problemas de hardware, no soporta todas las plataformas, y no es compatible con algunas marcas específicas. Ø No existe un control de calidad al momento de elaborar software para Linux, pues muchas veces las aplicaciones se hacen y se liberan sin control alguno. Ø Es poco probable que aplicaciones para DOS y OS/2, se ejecuten correctamente bajo Linux. Ø No hay forma segura de instalarlo sin reparticionar el disco duro.