Modulo I

Sistema Operativo Linux


                                                                                                                                                                
                                         

Definición y Concepto

Linux es un Sistema Operativo como MacOS, DOS o Windows pero con diferentes propiedades y interfaz. En otra palabra, El sistema operativo Linux es necesario para que tu computadora te permita utilizar otros programas. Linux es uno de los paradigmas del desarrollo de software libre (y de código abierto), donde el código fuente está disponible públicamente y cualquier persona puede libremente usarlo, modificarlo y redistribuirlo  bajo los términos de la GPL (General Public License, en español: Licencia Pública General de GNU) y otra serie de licencias libres. Fue desarrollado originalmente por Linus Torvalds, quién empezó a trabajar sobre Linux en 1991 siendo estudiante de la Universidad de Helsinki en Finlandia. Luego, miles de programadores contribuyeron a su desarrollo y fue distribuido gratuitamente sobre la Internet. 

Funciones y Características

Las funciones principales del sistema operativo Linux son:
- Sistema multitarea
- Sistema multiusuario
- Shells programables
- Independencia de dispositivos
- Comunicaciones

El Linux es capaz de ejecutar varios programas a la vez son tener que parar para efectuar cada aplicación. Los shells programables conectan las órdenes de un usuario con Kernel Linux y al ser programables se pueden modificar para adaptarlos a las necesidades de cada persona; el sistema multiusuario permite que varios individuos accedan a las aplicaciones y recursos del sistema al mismo tiempo y, por supuesto que puedan ejecutar varios programas a la vez.


Características del Sistema Linux:
El sistema Linux tiene las siguientes características:
-          Estabilidad: Tiene protección de la memoria entre procesos, de manera que uno de ellos no pueda colgar el sistema.
-          Multitarea: Varios programas (realmente procesos) ejecutándose al mismo tiempo.
-          Multiusuario: Varios usuarios en la misma máquina al mismo tiempo (y sin licencias para todos).
-          Multiplataforma: Se ejecuta en muchos tipos de CPU, no sólo Intel.
-          Manejo de la Memoria: 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.
-          Interfaz Gráfica de Usuario: KDE, GNOME.
-          Desarrollo de Software: KDevelop (Lenguaje C, C++, Java, PHP, Perl, Phyton, entre otros).
-          Trabajo de redes: TCP/IP, incluyendo ftp, telnet, NFS, Wíreless, etc.
-          Disponibilidad del Código Fuente: Todo el código fuente está disponible, incluyendo el núcleo completo, todos los drivers, las herramientas de desarrollo y todos los programas de usuario; además está disponible libremente.
-          Tiene soporte para cualquier elemento hardware que sea relativamente popular.



Evolución Histórica
El sistema operativo Linux tiene como antecedentes los sistemas operativos Unix, BSD y MINIX y el proyecto GNU, cada elemento contribuyendo de diferentes formas al desarrollo de este sistema.
Esta historia empieza con el sistema operativo Unix que fue creado en 1969 en los laboratorios Bell de AT&T en los Estados Unidos por un equipo conformado por Ken Thompson, Dennis Ritchie, Douglas Mcllroy and Joe Ossanna. Se lanzo en 1971 originalmente codificado en lenguaje de asemblador pero en 1973 se volvió a escribir en el lenguaje C, lo que hizo que fuera más portable a diferentes equipos.  Debido a esto y un fallo legal que obligó a AT&T a dejar la licencia del código fuente a cualquiera que lo pidiera, el sistema Unix fue adoptándose y creciendo en muchas instituciones, tanto académicas como empresariales.
Luego apareció el proyecto GNU, iniciado por Richard Stallman en 1983 con el fin de crear un sistema de software completo compatible con Unix, conformado por solo software libre. En 1985 empezó La Fundación de Software Libre (Free Software Foundation) y escribió la licencia GNU GPL. Luego se desarrollaron los programas necesarios para un sistema operativo (como compiladores, el núcleo, editores de texto y un sistema de ventanas) sin embargo no se realizó el desarrollo de elementos de bajo nivel como los controladores para dispositivos y daemons. Linus Torvalds (el creador del núcleo de Linux) citó esto como una de las razones que le provocó a desarrollar su sistema.
También existieron los sistemas BSD y Minix. El BSD se desarrolló antes de Linux sin embargo por problemas legales no se podía lanzar hasta 1992. Dice Torvalds que probablemente no hubiera desarrollado Linux si ya se había lanzado BSD. El Minix es un sistema similar a Unix pero reducido y dirigido a la educación en Informática.
En 1991 Linus Torvalds, llevado por la curiosidad en los sistemas operativos y su descontento con la condición de la licencia de Minix que lo limitaba al uso académico, empezó a trabajar en su propio sistema operativo, lo que se convertiría en el núcleo Linux. Empezó su desarrollo mientras atendía la universidad de Helsinki en un sistema operando Minix. Muchos de los programas utilizados en este sistema también se utilizaron en Linux, sin embargo con el desarrollo del sistema se crearon programas bajo el proyecto GNU para reemplazar estos programas. El desarrollo del sistema como tal también se traslado al sistema de Linux, sin dependencia de Minix. También se hizo un cambio de licencia a la del GNU.  Con el tiempo se hizo un esfuerzo para integrar diferentes componentes del GNU con Linux para crear un sistema operativo completamente funcional.
Hoy en día el sistema operativo Linux ha tenido un gran desarrollo. Existen varias distribuciones, una comunidad extensa que contribuye a su desarrollo, lo que incluyo voluntarios, empresas y grupos. También ha tenido un gran aceptación, aunque tiene un base de usuarios relativamente pequeño en los sistemas de escritorio en comparación con los sistemas de Microsoft, tiene dominio en los sistemas de servidores y supercomputadoras. 



Clasificación
           
Un sistema operativo se puede clasificar por varios criterios como son el número de usuarios, número de tareas y el número de procesadores. El sistema operativo Linux se clasifica como multiusuario, multitarea y multiproceso. También se clasifica como monolítico por su estructura.


Estructura: Niveles o Estratos de diseño
ESTRUCTURA MONOLÍTICA: El sistema operativo Linux implementa una estructura monolítica lo que  comprende un núcleo o kernel grande y complejo donde están concentrados todos los componentes y funcionalidades posibles del sistema base como planificación, sistema de archivos, redes, controladores de dispositivos y gestión de memoria.  También implementa una forma de modularidad donde se permiten la carga dinámica de módulos  ejecutables que pueden ser compilados, modificados, cargados y descargados en tiempo de ejecución, de manera similar a los servicios de un micro núcleo.
CARACTERÍSTICAS
- Construcción de programa final a base de módulos compilados separadamente que se une a través del editor de enlaces.
- Buena definición de parámetros de enlace entre las rutinas existentes.
- Carecen de protección y privilegios al entrar y manejan diferentes aspectos de la computadora.
- Generalmente están hechos a la medida

                                                                         Núcleo
                  El kernel ó núcleo de linux puede ser definido como el corazón de este sistema operativo. Que tiene la responsabilidad de que el software y el hardware de tu computador puedan trabajar juntos o comunicar entre ellos.
Las funciones más importantes son:
• Administrar la memoria para todos los programas y procesos en ejecución.
• Administración del tiempo de procesador que los programas y procesos en ejecución utilizan.
• Es el encargado de que podamos acceder a los elementos de nuestro computador de una manera cómoda y rápida.

Interrupciones

Una interrupción se genera cuando se quiere que la computadora deje de ejecutar el proceso en curso y ejecute una función específica de quien produce la interrupción. Y Cuando se ejecuta esta función específica podemos decir que la computadora (CPU) está atendiendo la interrupción.
Se puede clasificar en 3 niveles:
Interrupción software: es cuando un el Usuario solicita una llamada del sistema.
Interrupciones hardware: son causadas cuando un dispositivo hardware requiere la atención de la computadora (CPU) para que se ejecute su manejador.
Excepciones: son interrupciones causadas por la propia computadora (CPU), cuando ocurre algo no deseado, por ejemplo una división por cero.




Despachador (Scheduler)

Se encarga de seleccionar un proceso que espera en la fila y asignarle tiempo de CPU o en otras palabras, El despachador se encarga de asignar el CPU al proceso seleccionado.

Comunicación (IPC)

La comunicación IPC es una función básica de los sistemas operativos. Los cuales pueden comunicarse entre sí  y compartir espacios de memoria o socket, ya sean variables compartidas o buffers, tuberías, semáforos, etc.  La IPC provee un mecanismo que permite a los procesos comunicarse y sincronizarse entre sí, normalmente a través de un sistema de bajo nivel de paso de mensajes. La comunicación se establece siguiendo una serie de reglas o protocolos de comunicación. Los protocolos desarrollados para internet son los mayormente usados:
IP (capa de red), TCP (capa de transporte) y FTP o HTTP (capa de aplicación).
En un Sistema, los procesos pueden ejecutarse independientemente o cooperando entre sí. La comunicación entre procesos puede estar motivada por la competencia o el uso de recursos compartidos o porque varios procesos deban ejecutarse de forma síncrona para completar una tarea.

Bibliografía:
- Características del sistema operativo Linux
- GNU/Linux
- Historia de Linux
- Definición de Linux ¿Qué es Linux ?
- Sistema Operativo Linux
-Historia y evolución de Linux
http://www.linux-es.org/kernel

No comments:

Post a Comment