martes, 16 de noviembre de 2010

Componentes de un sistema operativo

Un Sistema operativo (SO) es un programa informático que actúa de interfaz entre los dispositivos de hardware y el usuario. Es responsable de gestionar, coordinar las actividades y llevar a cabo el intercambio de recursos de un computador. Actúa como estación para las aplicaciones que se ejecutan en la máquina.

Gestión de procesos
 
Un proceso es simplemente, un programa en ejecución que necesita recursos para realizar su tarea: tiempo de CPU, memoria, archivos y dispositivos de E/S. El SO es el responsable de:
  • Ø   Crear y destruir los procesos.
  • Ø   Parar y reanudar los procesos.
  • Ø   Ofrecer mecanismos para que se comuniquen y sincronicen.
La gestión de procesos podría ser similar al trabajo de oficina. Se puede tener una lista de tareas a realizar y a estas fijarles prioridades alta, media, baja por ejemplo. Debemos comenzar haciendo las tareas de prioridad alta primero y cuando se terminen seguir con las de prioridad media y después las de baja. Una vez realizada la tarea se tacha. Esto puede traer un problema que las tareas de baja prioridad pueden que nunca lleguen a ejecutarse. y permanezcan en la lista para siempre. Para solucionar esto, se puede asignar alta prioridad a las tareas más antiguas.

Gestión de la memoria principal
 
La Memoria (informática) es una gran tabla de palabras o bytes que se referencian cada una mediante una dirección única. Este almacén de datos de rápido accesos es compartido por la CPU y los dispositivos de E/S, es volátil y pierde su contenido en los fallos del sistema. El SO es el responsable de:
  • Ø  Conocer qué partes de la memoria están utilizadas y por quién.
  • Ø  Decidir qué procesos se cargarán en memoria cuando haya espacio disponible.
  • Ø  Asignar y reclamar espacio de memoria cuando sea necesario.
Gestión del almacenamiento secundario

Un sistema de almacenamiento secundario es necesario, ya que la memoria principal (almacenamiento primario) es volátil y además muy pequeña para almacenar todos los programas y datos. También es necesario mantener los datos que no convenga mantener en la memoria principal. El SO se encarga de:
  • Ø  Planificar los discos.
  • Ø  Gestionar el espacio libre.
  • Ø  Asignar el almacenamiento.
El sistema de Entrada y Salida
 
Consiste en un sistema de almacenamiento temporal (caché), una interfaz de manejadores de dispositivos y otra para dispositivos concretos. El sistema operativo debe gestionar el almacenamiento temporal de E/S y servir las interrupciones de los dispositivos de E/S.

Sistema de archivos

Los archivos son colecciones de información relacionada, definidas por sus creadores. Éstos almacenan programas (en código fuente y objeto) y datos tales como imágenes, textos, información de bases de datos, etc. El SO es responsable de:
  • Ø  Construir y eliminar archivos y directorios.
  • Ø  Ofrecer funciones para manipular archivos y directorios.
  • Ø  Establecer la correspondencia entre archivos y unidades de almacenamiento.
  • Ø  Realizar copias de seguridad de archivos.
Existen diferentes Sistemas de Archivos, es decir, existen diferentes formas de organizar la información que se almacena en las memorias (normalmente discos) de los ordenadores. Por ejemplo, existen los sistemas de archivos FAT, FAT32, EXT2, NTFS.

Sistemas de protección
 
Mecanismo que controla el acceso de los programas o los usuarios a los recursos del sistema. El SO se encarga de:
  • Ø    Distinguir entre uso autorizado y no autorizado.
  • Ø    Especificar los controles de seguridad a realizar.
  • Ø    Forzar el uso de estos mecanismos de protección.
Sistema de comunicaciones

Para mantener las comunicaciones con otros sistemas es necesario poder controlar el envío y recepción de información a través de las interfaces de red. También hay que crear y mantener puntos de comunicación que sirvan a las aplicaciones para enviar y recibir información, y crear y mantener conexiones virtuales entre aplicaciones que están ejecutándose localmente y otras que lo hacen remotamente.

Programas de sistema
 
Son aplicaciones de utilidad que se suministran con el SO pero no forman parte de él. Ofrecen un entorno útil para el desarrollo y ejecución de programas, siendo algunas de las tareas que realizan:
  • Ø   Manipulación y modificación de archivos.
  • Ø   Información del estado del sistema.
  • Ø  Soporte a lenguajes de programación.
    Características de un sistema operativo (Administración de tareas)

     Mono tarea: solamente puede ejecutar un proceso (aparte de los procesos del propio SO) en un momento dado. Una vez que empieza a ejecutar un proceso, continuará haciéndolo hasta su finalización y/o interrupción.

Multitarea: Es capaz de ejecutar varios procesos al mismo tiempo. Este tipo de SO normalmente asigna los recursos disponibles (CPU, memoria,
periféricos) de forma alternada a los procesos que los solicitan, de manera que el usuario percibe que todos funcionan a la vez, de forma concurrente.
Administración de usuarios

Mono usuario: Solo permite ejecutar los programas de n usuario al mismo tiempo.

Multiusuario: Permite que varios usuarios ejecuten simultáneamente sus programas, accediendo a la vez a os recursos de a computadora. Normalmente
 estos sistemas operativos utilizan métodos de protección de datos, de manera que un programa no pueda usar o cambiar los datos de otro usuario.
Manejo de recursos

Centralizado: Permite utilizar los recursos de una sola computadora

Distribuido: Permite utilizar los recursos (memoria, CPU, disco, periféricos) de más de una computadora al mismo tiempo.

viernes, 29 de octubre de 2010

Sistemas de Tiempo Real

Los sistemas de tiempo real (STR) son sistemas informáticos que se encuentran en multitud de aplicaciones, desde la electrónica de consumo hasta el control de complejos procesos industriales. Están presentes en prácticamente todos los aspectos de nuestra sociedad como, teléfonos móviles, automóviles, control de tráfico, ingenios espaciales, procesos automáticos de fabricación, producción de energía, aeronaves, etc. Además, el auge de los Sistemas de Tiempo Real está en constante aumento, ya que cada vez más máquinas se fabrican incluyendo un número mayor de sistemas controlados por computador. Un ejemplo cercano es la industria del automóvil, ya que un turismo actual de gama media incluye alrededor de una docena de estos automatismos (ABS, airbag, etc). Otro ejemplo cotidiano son los electrodomésticos de nueva generación, que incluyen Sistemas de Tiempo Real para su control y temporización. Hoy día son tantas las aplicaciones de estos sistemas que su número duplica actualmente al de los sistemas informáticos "convencionales" o de propósito general. Las previsiones son que esta diferencia vaya en constante aumento, debido fundamentalmente el elevado crecimiento de la automatización en casi todas las facetas de la vida cotidiana. Esto convierte a esta asignatura en un complemento muy atractivo para la formación de un Ingeniero Informático.

Caratesristicas de Sistema de Tiempo Real

Las más importantes son las siguientes:
  • Gran complejidad: Los sistemas de Tiempo Real suelen ser los más complicados en cuanto a especificación, diseño y mantenimiento debido a las exigencias que plantean respecto al cumplimiento de los plazos y latencias. Además a esto se suma que en multitud de aplicaciones actuales son sistemas geográficamente distribuidos, lo que los hace todavía más complejos.
  • Ejecución simultánea de tareas: Para cumplir con los plazos especificados para el sistema casi siempre es necesario aprovechar el paralelismo intrínseco a casi todas las aplicaciones y avanzar trabajo en paralelo ejecutando simultáneamente varias tareas. Además, la distribución geográfica de los recursos que mencionábamos en el punto anterior también suele forzar esta ejecución simultánea.
  • Determinismo: Para garantizar que el sistema cumple con los plazos, debemos evitar cualquier fuente de aleatoriedad en él. Es decir, la única manera de poder garantizar que el sistema es de Tiempo Real es que siempre se comporte de la misma manera. Los tiempos de ejecución de las tareas no pueden estar afectados por fenómenos estocásticos que hagan que no sean predecibles.
  • Fiabilidad y seguridad: Por este mismo motivo es necesario que el sistema sea fiable y seguro, garantizando tolerancia a fallos en todos los casos por si alguno de los componentes del sistema no funciona adecuadamente o como se esperaba.

viernes, 15 de octubre de 2010

Sistemas de Computacion Personales

Un sistema de computación personal también se conoce como PC (personal computer),  esta es una computadora personal que regularmente la usa un usuario. La primera computadora personal fue creada por IBM. Estas computadoras personales son comandadas por un sistema operativo (S.O).
 En el año 1984 la investigación Watson de IBM escribe: Mientras que no sea viable obtener una educación en casa, a través de nuestra propia computadora personal, la naturaleza humana no habrá cambiado. Fue por esto que la primera generación de computadoras personales se comenzó a estableces en la década de los 70’s. Fue el lanzamiento de la hoja de cálculo VisiCal en un principio fue para Apple II y luego para el IBM PC, la verdadera aplicación que hiso que las computadoras personales fueran una herramienta personal para el trabajo y la familia, luego en los años 80’s el precio de estas disminuyo considerablemente, esto por consiguiente a los años 90’s el tener una computadora ya no era impedimento para casi nadie, esto fue porque su valor ya era bastante menor.
  La computadora personal llego a tener su fácil adquisición por un chip de silicio de muy pequeño tamaño para su procesador.
 En los años 80’s en los Estados Unidos los lanzamientos más importantes para computadoras personales fueron  Apple II (1977), IBM PC (1981), el Commodore 64 (1982), y el Apple Macintosh (1984).

Otros lanzamientos:
1980: Commodore VIC-20 (por debajo de US$300; primera computadora en el mundo en pasar la marca de un millón de unidades vendidas)

1980: Computadora a color TRS-80 (Motorola 6809, trabajos múltiples opcionales OS-9)

1980: Osborne Computer Company lanza el Osborne 1 (primera computadora "portátil")

Junio de 1981: Texas Instruments TI-99/4A - basada en el menos exitoso TI-99/4, segunda computadora personal con una CPU de 16 bit, primera en agregar gráficos "sprite"

Agosto de 1981: PC de IBM - versión original de la plataforma de hardware compatible de la PC de IBM. El modelo original fue denominado IBM 5150. Fue creado por un equipo de 12 ingenieros y los diseñadores bajo la dirección de Estridge de la división de los sistemas de la entrada de IBM en Boca Ratón, Florida

1981: Sinclair ZX81 (Europa) - el kit costaba £49,95; £69,95 pre-construido. Fue lanzado como Timex Sinclair 1000 en los EE.UU. en 1982

1981: BBC micro (Europa) - computadora educativa del Primer Ministro del Reino Unido por una década; BASIC avanzado con el ensamblador integrado del código automático 6502; diseñado con una miríada de puertos de entrada-salida

1982: Kaypro lanza la computadora Kaypro II
Abril de 1982: Sinclair ZX Spectrum (Europa) - la computadora personal británica más vendida; creó la industria británica del software

Agosto de 1982: Commodore 64 - El modelo de computadora más vendido de todos los tiempos: ~ 17 millones vendidos
1983: Coleco Adam
1983: MSX (Japón) - diseño de referencia de ASCII y Microsoft, fabricado por varias compañías: ~ 5 millones vendidos)

1983: Laser 200 - computadora de VTech de nivel de entrada dirigida siendo el más barato en mercado).
Enero de 1984: Apple Macintosh (N.) - Primer ratón comercialmente acertado conducido, hogar/computadora personal completamente GUI-basados; primer 16/32-bit

1984: Amstrad/Schneider CPC y PCW se extiende (Europa) - estándar británico antes de la PC de IBM; Ventas alemanas al lado de C64 y el Macintosh, de Apple

1985: ST de Atari (N.) - Primero con el interfaz incorporado de MIDI; también ESPOLÓN 1MB por menos de US$1000
Julio de 1985: Commodore Amiga (N.) (chipset de encargo para los gráficos y el sonido; OS de los trabajos múltiple)

1987: Acer Archimedes (Europa) (basada en el microprocesador Acer-en desarrollo de gran alcance del BRAZO de 32 bit; la mayoría de la computadora personal de gran alcance en su clase en su principio)
Las computadoras personales operan con un S.O. Los S.O actualmente son:

Microsoft Windows
creado por Bill Gates en noviembre de 1985 como complemento para MS-DOS , la versión más actual es Windows 7

Mac  OS X
este sistema operativo fue creado por Apple, es el sucesor del Mac SO del año 1984, también es de la familia de los UNIX, la actual versión del servidor es Mac OS X Server 10.6.

GNU/Linux  inicializado por Linus Torvalds, este es el dueño del Kernel original (núcleo). Este S.O es distribuido por RedHat y es de la familia de los S.O UNIX, este sistema operativo es de código abierto lo que no quiere decir que es gratis. Este sistema operativo tiene programadores en todo el mundo.

martes, 28 de septiembre de 2010

Sistemas Operativos por lotes.

Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interacción entre los usuarios y los programas en ejecución. Se reúnen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o más trabajos como sucede en el procesamiento en serie. Estos sistemas son de los más tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas.
Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecución muy alto, porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad de la ejecución de los trabajos.

Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual está orientado a procesamiento científico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento académico.

Algunas otras características con que cuenta los sistemas operativos por lotes son:
  1. Requiere que el programa, datos y órdenes al sistema sean remitidos todos juntos en forma de lote.
  2. Permiten poca o ninguna interacción usuario/programa en ejecución.
  3. Mayor potencial de utilización de recursos que procesamiento serial simple en sistemas multiusuarios.
  4. No conveniente para desarrollo de programas por bajo tiempo de retorno y depuración fuera de línea.
  5. Conveniente para programas de largos tiempos de ejecución (ej, análisis estadísticos, nóminas de personal, etc.)
  6. Se encuentra en muchos computadores personales combinados con procesamiento serial.
  7. Planificación del procesador sencilla, típicamente procesados en orden de llegada.
  8. Planificación de memoria sencilla,  generalmente se divide en dos: parte residente del S.O. y programas transitorios.
  9. No requieren gestión crítica de dispositivos en el tiempo.
  10. Suelen proporcionar gestión sencilla de manejo de archivos: se requiere poca protección y ningún control de concurrencia para el acceso.




Sistemas Operativos de tiempo compartido.

Permiten la simulación de que el sistema y sus recursos son todos para cada usuario. El usuario hace una petición a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecerá en la terminal del usuario.
Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusión de que tiene el sistema dedicado para sí mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administración de memoria principal y secundaria.
Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10.

Características de sistemas operativos de tiempo compartido son:
  1. Populares representantes de sistemas multiprogramados multiusuario, ej: sistemas de diseño asistido por computador, procesamiento de texto, etc.
  2. Dan la ilusión de que cada usuario tiene una máquina para  sí.
  3. Mayoría utilizan algoritmo de reparto circular.
  4. Programas se ejecutan con prioridad rotatoria que se incrementa con la espera y disminuye después de concedido el servicio.
  5. Evitan monopolización del sistema asignando tiempos de procesador (time slot).
  6. Gestión de memoria proporciona protección a programas residentes. Gestión de archivo debe proporcionar protección y control de acceso debido a que  pueden existir múltiples usuarios acezando un mismo archivo.

martes, 14 de septiembre de 2010

Unidad1: Diseño y Estructuras de Hardware
 
Sistemas Operativos.
Sin el software, una computadora no es más que una masa metálica sin utilidad. Con el software, una computadora puede almacenar, procesar y recuperar información, encontrar errores de ortografía en manuscritos, tener aventuras e intervenir en muchas otras valiosas actividades para ganar el sustento. El software para computadoras puede clasificarse en general en dos clases: los programas de sistema, que controlan la operación de la computadora en sí y los programas de aplicación, los cuales resuelven problemas para sus usuarios. El programa fundamental de todos los programas de sistema es el sistema operativo (SO). Un Sistema Operativo es una parte importante de cualquier sistema de computación. Esto es a grandes rasgos un concepto de sistemas operativos, en el contenido que a continuación presentamos existen diversos conceptos, así como también su historia, características y su clasificación. Adicionalmente se presenta en este documento una breve reseña de los Sistemas Operativos más utilizados en la actualidad como lo son MS-DOS, Windows, Linux, Macintosh OS y Unix.

 

Concepto y Definición De Sistema Operativos

Un Sistema Operativo es un
programa que actúa como intermediario entre el usuario y el hardware del computador y su propósito es proporcionar el entorno en el cual el usuario pueda ejecutar programas. Entonces, el objetivo principal de un Sistema Operativo es, lograr que el sistema de computación se use de manera cómoda, y el objetivo secundario es que el hardware del computador se emplee de manera eficiente.

Componentes De Un Sistema Operativo

Un sistema operativo está conformado básicamente por cuatro módulos:

  1. Núcleo o Kernel.
  2. Administrador de memoria.
  3. Sistema de entrada/salida.
  4. Administrador de archivos.

Núcleo.

Es el módulo de más bajo nivel de un sistema operativo, pues descansa directamente sobre el hardware de la computadora. Entre las tareas que desempeña se incluyen el manejo de las interrupciones, la asignación de trabajo al procesador y el proporcionar una vía de comunicación entre los distintos programas. En general, el núcleo se encarga de controlar el resto de los módulos y sincronizar su ejecución. El núcleo contiene un submódulo denominado "planificador", el cual se encarga de asignar tiempo del procesador a los programas, de acuerdo a una cierta política de planificación que varía de un sistema operativo a otro. Normalmente se utiliza una jerarquía de prioridades que determinan cómo se asignará el tiempo del CPU a cada programa. Una política de planificación muy común en los sistemas de multiprogramación y multiproceso son las técnicas de "time slicing" (fracción de tiempo). Se asigna a cada programa un corto intervalo de tiempo del procesador. Si el programa no ha terminado durante este intervalo de tiempo, vuelve a la cola de programas.

Administrador de memoria.

Este módulo se encarga de asignar ciertas porciones de la memoria principal (RAM) a los diferentes programas o partes de los programas que la necesiten, mientras el resto de los datos y los programas se mantienen en los dispositivos de almacenamiento masivo. De este modo, cuando se asigna una parte de la memoria principal se hace de una forma estructurada, siguiendo un determinado orden. La forma más común de administración de la memoria supone crear una memoria virtual; con este sistema, la memoria de la computadora aparece, para cualquier usuario del sistema, mucho mayor de lo que en realidad es.

Sistema de entrada/salida (E/S).

Este componente presenta al usuario la E/S de datos como una cuestión independiente del dispositivo; es decir, para los usuarios, todos los dispositivos tienen las mismas características y son tratados de la misma forma, siendo el sistema operativo el encargado de atender las particularidades de cada uno de ellos (como su velocidad de operación). Una técnica muy común, especialmente en salida, es el uso de "spoolers". Los datos de salida se almacenan de forma temporal en una cola situada en un dispositivo de almacenamiento masivo (el spool), hasta que el dispositivo periférico requerido se encuentre libre; de este modo se evita que un programa quede retenido porque el periférico no esté disponible. El sistema operativo dispone de llamadas para añadir y eliminar archivos del spool.

Administrador de archivos.

Se encarga de mantener la estructura de los datos y los programas del sistema y de los diferentes usuarios (que se mantienen en archivos) y de asegurar el uso eficiente de los medios de almacenamiento masivo. El administrador de archivos también supervisa la creación, actualización y eliminación de los archivos, manteniendo un directorio con todos los archivos que existen en el sistema en cada momento y coopera con el módulo administrador de memoria durante las transferencias de datos desde y hacia la memoria principal. Si se dispone de un sistema de memoria virtual, existen transferencias entre la memoria principal y los medios de almacenamiento masivo para mantener la estructura de la misma.
Los archivos almacenados en los dispositivos de almacenamiento masivo tienen distintos propósitos. Algunos contienen información que puede ser compartida. Otros son de carácter privado, e incluso secreto. Por tanto, cada archivo está dotado de un conjunto de privilegios de acceso, que indican la extensión con la que se puede compartir la información contenida en el archivo. El sistema operativo comprueba que estos privilegios no sean violados.




Características de un sistema operativo.

Las características deseables más importantes de un sistema operativo son:
  1. 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.
  2. Posibilitar la ejecución de cualquier proceso en el momento que se solicite siempre y cuando haya suficientes recursos libres para él.
  3. 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.
  4. 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.
  5. Ser fiable, es decir, un sistema operativo no debe tener errores y debe prever todas las posibles situaciones.
  6. Ser de tamaño pequeño.
  7. Posibilitar y facilitar en lo posible el "diálogo" entre computadora y usuario de la misma.
  8. Permitir compartir entre varios usuarios los recursos de hardware con que cuenta una computadora.
  9. Permitir a los usuarios compartir datos entre ellos, en caso necesario.
  10. 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:
  1. Aceptar los trabajos y conservarlos hasta su finalización.
  2. Detectar errores y actuar de modo apropiado en caso de que se produzcan.
  3. Controlar las operaciones de E/S.
  4. Controlar las interrupciones.
  5. Planificar la ejecución de tareas.
  6. Entregar recursos a las tareas.
  7. Retirar recursos de las tareas.
  8. Proteger la memoria contra el acceso indebido de los programas.
  9. Soportar el multiacceso.
  10. Proporcionar al usuario un sencillo manejo de todo el sistema.
  11. Aprovechar los tiempos muertos del procesador.
  12. Compartir los recursos de la máquina entre varios procesos al mismo tiempo.
  13. Administrar eficientemente el sistema de cómputo como un todo armónico.

lunes, 30 de agosto de 2010

Primera Generación de Computadoras

Ésta generación tiene tres teorías de su año de inició que son 1938, 1948 y 1951 hasta el año 1958.
Las computadoras empleaban bulbos para procesar información.
Los datos y programas se ingresaban en código especial por medio de tarjetas perforadas.
Con un tambor que giraba rápidamente se podía lograr el almacenamiento interno, también usaban cilindros magnéticos para almacenar información e instrucciones internas.
Se realizó un estudio que arrojó que con 20 computadoras se saturaba el mercado de los Estados Unidos.
Las computadoras eran demasiado grandes y utilizaban una gran cantidad de electricidad.
Las computadoras empezaron a utilizar el código binario para representar datos.
Las computadoras eran muy caras que llegaban a costar los $10.000 dolares.

Eckert Mauchly contribuyeron al desarrollo de computadoras de la primera generación formando una campaña privada y construyendo UNIVAC I, que el comité del censo utilizó para evaluar el censo de 1950.

La primera computadora creada en 1953 fue la IBM 701,


después en 1954 se construyó la IBM 650 
que fue la computadora mas exitosa de la primera generación de la que se produjeron varios de cientos de ésta misma.

Aquí un video para mejorar su información http://www.youtube.com/watch?v=QBTkDfuw_ro&feature=related


viernes, 27 de agosto de 2010

Síntesis Código LINUX

Este documental, trata sobre la creación y el surgimiento del sistema operativo Linux (Linux es muy similar  a UNIX). En él se da a conocer muy bien lo que es Linux todas sus características, En viejos tiempos, Linus Torvalds  había gastado mucha plata para comprarse una PC de última generación PC386 a 33 Mhz y con 4MB de RAM. Venía con Minix, un sistema operativo que no le gustaba, entonces creo Linux. Y en un día como hoy hace 16 años,Torvalds  apareció en internet con la primera versión de Linux, la 0.01. Que ocupaba apenas 64 Kb.
A paso del tiempo Linux se une al proyecto GNU, que por su lado estaban haciendo otros SO con un kernel llamado “hurd“, pero que no era muy bueno, por ende unieron esfuerzos y crearon lo que hoy llamamos GNU/Linux.  Linus Torvalds reflexiona varios meses sobre que copyright repartir Linux.
Linux se saca bajo el copyright GNU y se utiliza una licencia JPL.
Eligio la licencia JPL ya que la persona que modificar su código de fuente tendría que poner sus mejoras a disposición de todo el mundo.

En el documental 
Código Linux se habla también de la historia del Software Libre contada a través del proyecto GNU, donde se muestran  entrevistas de los personajes más importantes del sector, como Linus Torvalds (el creador de Linux), Richard Stallman(programador), Alan Cox(programador de Linux), Jon “maddog” Hall(responsable de Linux internacional), Miguel de icaza(programador y fundador del proyecto GNOME), entre muchos otros.

También se dan datos de cómo cuando fue creada la WWW (World Wide Web)

Incluso, se habla mucho de la “cultura Hacker”, y comprendimos bien a que nos referimos cuando decimos “Hacker”.

Bueno después de aver visto el video "Código linux" tenemos la duda en que SO nos conviene más ocupar.