linux

26
Linux

Upload: alejandro-trujillo-vargas

Post on 06-Dec-2015

224 views

Category:

Documents


3 download

DESCRIPTION

Arquitectura de sistema multimedia

TRANSCRIPT

Page 1: Linux

Linux

Page 2: Linux

HistoriaLINUX hace su aparición a principios de la década de los noventa, era el año 1991, por aquel entonces un estudiante de informática de la Universidad de Helsinki, llamado Linus Torvalds empezó, -como una afición y sin poderse imaginar a lo que llegaría este proyecto, a programar las primeras líneas de código de este sistema operativo llamado LINUX.

Este comienzo estuvo inspirado en MINIX, un pequeño sistema Unix desarrollado por Andy Tanenbaum. Las primeras discusiones sobre Linux fueron en el grupo de noticias comp.os.minix, en estas discusiones se hablaba sobre todo del desarrollo de un pequeño sistema Unix para usuarios de Minix que querían mas.

Linus nunca anuncio la versión 0.01 de Linux (agosto 1991), esta versión no era ni siquiera ejecutable, solamente incluía los principios del núcleo del sistema, estaba escrita en lenguaje ensamblador y asumía que uno tenía acceso a un sistema Minix para su compilación.

El 5 de octubre de 1991, Linus anuncio la primera versión "Oficial" de Linux, -versión 0.02. Con esta versión Linus pudo ejecutar Bash (GNU Bourne Again Shell) y gcc (El compilador GNU de C) pero no mucho más funcionaba. En este estado de desarrollo ni se pensaba en los términos soporte, documentación, distribución y desarrollo.

Después de la versión 0.03, Linus salto en la numeración hasta la 0.10, más y más programadores a lo largo y ancho de internet empezaron a trabajar en el proyecto y después de sucesivas revisiones, Linus incremento el número de versión hasta la 0.95 (Marzo 1992). Más de un año después (diciembre 1993) el núcleo del sistema estaba en la versión 0.99 y la versión 1.0 no llego hasta el 14 de marzo de 1994.

Desde entonces no se ha parado de desarrollar, la versión actual del núcleo es la 2.2 y sigue avanzando día a día con la meta de perfeccionar y mejorar el sistema.

Page 3: Linux

CaracterísticasLinux es un Sistema Operativo tipo Unix diseñado para aprovechar al máximo las capacidades de las computadoras PC basadas en el microprocesador i386 y posteriores. Es un SO con capacidades de multiprocesamiento, multitarea y multiusuario. Sin embargo, a diferencia de otros sistemas Unix para PC, usted no tiene que pagar cuantiosas licencias por el uso de Linux.

Page 4: Linux

MultitareaMultitareas describe la habilidad de ejecutar aparentemente, al mismo tiempo, numerosos programas sin obstaculizar la ejecución de cada aplicación. Esto se conoce como multitareas preferente, porque cada programa tiene garantizada la posibilidad de correr, esto es, cada programa no se ejecuta sino que hasta que el sistema operativo lo aparta para permitir que otros programas corran. Este tipo de multitareas es exactamente lo que Linux hace. Para comprender mejor la capacidad de multitareas de Linux, se examinará desde otra perspectiva. El microprocesador de una computadora puede hacer una sola cosa a la vez, pero es capaz de completar esas tareas individuales en periodos tan breves que son difíciles de captar. La mente humana es incapaz de detectar la diferencia entre una demora tan breve y algo que ocurra simultáneamente. De tal forma que pareciera que las tareas se realizan al mismo tiempo. Es fácil apreciar los beneficios de tener capacidades de multitareas preferente. Además de reducir los tiempos muertos (lapso en el que no puede proseguir su trabajo en una aplicación porque el proceso no termina aún), la flexibilidad de no tener que cerrar las ventanas de aplicaciones antes de abrir y trabajar en otras es mucho más conveniente.

Page 5: Linux

Multiusuario La capacidad de Linux para asignar tiempo del microprocesador a numerosas aplicaciones simultáneas se prestó como consecuencia a servir a numerosas personas al mismo tiempo, cada una ejecutando una o más aplicaciones. La particularidad en realidad destacada de Linux y sus características de multiusuario y multitareas, es que mas de una persona puede trabajar en la misma versión de la misma aplicación de manera simultánea, desde las mismas terminales o desde terminales separadas. Esto no debe confundirse con numerosos usuarios que actualizan un archivo a un tiempo, particularidad que es potencialmente desconcertante y peligrosa a la vez que indeseable.

Page 6: Linux

Shells programables Esta es otra característica que hace de UNIX y en consecuencia de Linux, lo que es: el sistema operativo más flexible. Aunque en los últimos años se han agregado interfaces gráficas al sistema UNIX, casi todas las utilerías para emplear y administrar Linux, se ejecutan mediante la escritura de comandos. En Linux, al intérprete de la línea de comando de le conoce como shell, que no es otra cosa más que un programa diseñado para aceptar comandos y ejecutarlos. Varios tipos de programas pueden emplearse como shells, pero en casi todas las versiones de Linux existen diversos shells estándares disponibles. Los shells de Linux, son equivalentes al COMMAND.COM que emplea MS-DOS. Ambos aceptan y ejecutan comandos, y corren archivos de procesamiento por lotes y programas.

Page 7: Linux

Redes y TelecomunicacionesLa superioridad de Linux sobre otros sistemas operativos es evidente en sus utilerías para redes y comunicaciones. Ningún otro sistema operativo incluye capacidades para red tan estrechamente acopladas. Linux soporta las siguientes interfaces de red: ethernet, fddi, token ring (Utiliza una topología lógica en anillo, aunque por medio de una unidad de acceso de estación múltiple (MSAU o MAU), la red puede verse como si fuera una estrella. Tiene topología física estrella y topología lógica en anillo.Utiliza cable especial apantallado, aunque el cableado también puede ser par trenzado.La longitud total de la red no puede superar los 366 metros.), arcnet, X.25, ISDN, líneas seriales síncronas y asíncronas.

InterconectividadUsted puede conectar Linux a una red local, y convertirlo en servidor para MS-DOS, Windows, Windows para Trabajo en Grupo (WfW), Windows 95 y Macintosh por un costo muy por debajo de otros sistemas comerciales.

ProgramaciónLinux cuenta con un conjunto poderoso de herramientas para el desarrollo de programas: C, C++, ObjectiveC, Pascal, Fortran, BASIC, CLISP, SmallTalk, Ada, Perl, así como depuradores y bibliotecas compartidas de enlace dinámico (DLL).

Page 8: Linux

PortabilidadLinux fue diseñado teniendo en cuenta la portabilidad de las aplicaciones. Linux es compatible con diversos estándares Unix, tales como System V, BSD y los estándares internacionales IEEE POSIX.1 e IEEE POSIX.2, facilitando el desarrollo de aplicaciones para múltiples plataformas.

Ambiente GráficoLinux proporciona la capacidad de ejecutar aplicaciones gráficas mediante una red heterogénea al incorporar la revisión 6 del estándar X11 del MIT, conocido también simplemente como X-Window. Con el hardware adecuado, las Estaciones de Trabajo Linux son una alternativa de bajo costo a las Estaciones de Trabajo de alto rendimiento. (X- Window: software que fue desarrollado a mediados de los años 1980en el MIT (Instituto tecnológico de Massachusetts) para dotar de una interfaz gráfica a los sistemas Unix. Este protocolo permite la interacción gráfica en red entre un usuario y una o más computadoras haciendo transparente la red para éste.)

Page 9: Linux

Poder RISCSi su organización necesita verdadero poder de cómputo Linux corre en computadoras basadas en microprocesadores RISC como Alpha AXP, Sparc, PowerPC y MIPS. Ningún otro sistema operativo soporta una gama tan amplia de plataformas. (Reduced Instruction Set Computer, en español Computador con Conjunto de Instrucciones Reducidas) es un tipo de diseño de CPU generalmente utilizado en microprocesadores o microcontroladores con las siguientes características fundamentales:

1.Instrucciones de tamaño fijo y presentado en un reducido número de formatos.2.Sólo las instrucciones de carga y almacenamiento acceden a la memoria de

datos.

Page 10: Linux

Planificador de linuxLa planificación es el método mediante el cual los hilos, los procesos o los flujos de datos tienen acceso a los recursos, por ejemplo, tiempo de procesador, ancho de banda en la comunicación, entre otros.

Planificador

Es el componente del sistema operativo encargado de la planificación. La necesidad de algoritmos de planificación surgió con la aparición de sistemas operativos multi tareas.

Completely Fair Scheduler (CFS)

Desde la versión 2.6.23 el planificador tradicional de Linux fue remplazado por el CFS. El 80 % del diseño de CFS fundamentalmente modela un Procesador multi tarea “ideal”.

CFS busca mantener el balance (equidad) en el tiempo de procesador que se asignan a los procesos. Cada proceso debe recibir un tiempo equitativo.

Cuando un proceso esta “fuera de balance”, se le asigna tiempo de ejecución en el procesador.

Para determinar el balance, CFS mantiene la cantidad de tiempo que se le ha asignado a un proceso en lo que llaman “Virtual Runtime”.

CFS utiliza una colas basadas en el tiempo.

El proceso con menor “Virtual Runtime” es el más próximo a ser ejecutado.

Page 11: Linux

Arquitectura CFSCFS mantiene un árbol “rojo-negro” ordenado por tiempo.Un árbol RB está balanceado.

El sub árbol con claves menores a n se encuentra a la izquierda. El sub árbol con claves

mayores a n se encuentra a la derecha. La profundidad de 2 nodos cualquiera no difiere

en más de 1. Los sub árboles son balanceados también.La búsqueda es O (log n)

El nodo más a la izquierda tiene la clave más pequeña. Eso quiere decir que es el nodo con el menor “virtual runtime”. Es decir, es el nodo que representa al proceso que más necesita ejecutarse

El nodo de más a la derecha tiene la clave más grande (mayor virtual runtime). Es el proceso que menos necesita ejecución.

Entonces, CFS selecciona el nodo más a la izquierda para ser despachado.

El nodo se elimina del árbol. Si no ha terminado, se inserta de nuevo con un nuevo valor de virtual runtime.

Virtualruntime + = (delta_exec )(NICE _0_LOAD )

delta_exec Cantidad de tiempo de ejecución.NICE _0_LOAD Valor de la unidad de peso.

Los arboles “rojo-negro” son auto-balanceables. Ningún camino es, a lo sumo, el doble en tamaño que cualquier otro.

Page 12: Linux
Page 13: Linux

Las operaciones en el árbol ocurren en tiempo O (log (n)), donde n es el número de nodos del árbol. De esta manera se pueden ejecutar las operaciones de inserción y eliminación de procesos de manera rápida y eficiente.

Políticas de PlanificaciónUtiliza una técnica de tiempo compartido.A cada proceso se le asigna un quantum de tiempo para ejecutarse en el procesador.La planificación se ejecuta acorde a un ranking de prioridad.Utiliza prioridades dinámicas que son ajustadas a través del tiempo. Los procesos que no han sido ejecutados por ele procesador en un periodo largo de tiempo, aumentan su prioridad. Los que han sido ejecutados por mayor tiempo, reducen su prioridad.

Page 14: Linux

Políticas de PlanificaciónSe utiliza la expropiación de procesos. Un proceso se expropia cuando:Se acaba su quantum de tiempo.Entra un nuevo proceso con mayor prioridad que se ejecuta actualmente.Un proceso puede tener 2 tipos de prioridades:

Estática: Es asignada cuando el proceso es creado. Los procesos de tiempo real también tienen prioridad estática (de 0 a 99). Estos procesos tienen prioridad mayor a los procesos comunes y no puede ser cambiada por el planificador. Estos utilizan 2 tipos de políticas:SCHED_FIFO SCHED_RRLos procesos normales utilizan la política SCHED_OTHER.

Políticas de PlanificaciónSe pueden clasificar los procesos mediante dos esquemas:CPU-bound y I/O-boundInteractive, Batch y Real-Time

El planificador asigna mayor prioridad a procesos en tiempo real. Estos nunca pueden ser bloqueados por procesos de menor prioridad.Los procesos “Batch” son penalizados por el planificador, ya que no son responsivos y corren generalmente en segundo plano.Los procesos “Real Time” necesitan mayor tiempo de ejecución.

Page 15: Linux

FuncionamientoEl planificador de Linux ejecuta varios métodos para cumplir su función, entre los principales están:scheduler_tick()try_to_wake_up() recalc_task_prio() load_balance() schedule()

Rutina schedule()Es el método más importante del planificador. Este método es el responsable de elegir el próximo proceso a ser ejecutado.Es ejecutado cuando:

Un proceso cede voluntariamente el CPU.Un proceso espera por una señal para dormir. Un proceso agota su tiempo de ejecución. Otros casos.

Page 16: Linux
Page 17: Linux

Kernel de LinuxSe encuentra en el directorio de los códigos fuentes del kernel, en el directorio /usr/src/linux/kernel/sched/. Algunos de los archivos principales son:

sched.c : Contiene el código del planificador genérico. Las políticas de gestión están implementadas en otros archivos.

sched_fair.c : Contiene el código del planificador CFS y provee las politicas de planificación para los procesos “Interactive” y “Batch”.sched_rt.c : Provee las políticas usadas para los procesos “RealTime”.

Page 18: Linux

Sistema de archivosFAT, FAT16, FAT32: sistema de archivos de MS-DOS, Windows 95 y Windows 98. Se sigue utilizando por su sencillez y porque es reconocido por todos los sistemas operativos. Es un sistema de archivos muy frágil y no es tolerante a fallos, además de ser lento con respecto a los otros.

NTFS: sistema de archivos de Windows NT, 2000, XP y 2003. Es un sistema más sofisticado y rápido que es anterior y el actual estándard de Microsoft. Es un sistema de archivos cuya implementación es propietaria y cerrada, por lo que no es reconocido en su totalidad por todos los sistemas operativos.

EXT2: sistema de archivos estándard de Linux, su organización interna permite no necesitar defragmentación (fenómeno que se da en otros sistemas por el cual los archivos de distribuyen de forma que el tiempo que se tarda en acceder a ellos se incrementa, realientizando el acceso a disco).

EXT3: es la extensión de EXT2, incorpora tolerancia a fallos permitiendo una rápida recuperación del sistema cuando el ordenador se bloqueó o apagó inesperadamente.

ReinserFS y XFS: sistemas de archivos de alto rendimiento y rapidez que mejoran los sistemas anteriores.

Page 19: Linux

Siete distribuciones GNU/ Linux especializadas en la creación de

contenidos multimedia

Page 20: Linux

ArtisxArtistX es una distribución derivada de Ubuntu, la última versión, ArtistX 1.2, se ha basado en Ubuntu 11.10 Oneiric Ocelot. Se distribuye mediante una imagen ISO de DVD que puede funcionar en modo Live. Los trabajos realizados con ArtistX pueden guardarse en cualquier dispositivo USB o grabar en CD o DVD desde la propia distribución.

El catálogo de software que incorpora contiene la mayoría de programas de código abierto de audio, gráficos 2D y 3D, y tratamiento de vídeo. Con ArtistX podemos convertir nuestra máquina en una estación de trabajo multimedia completa sin tocar el disco duro.

ArtistX 1.2 funciona con el Kernel 3.0.0-15. Como entornos de escritorio trae GNOME 3 y KDE 4.7. Cuenta con Ubiquity installer. El número de paquetes disponible ronda los 2.500. La última actualización es de Octubre de 2011. La contraseña para sudo en modo live es super user. El vídeo corresponde a la versión 1.1 y con él podéis tener una idea de cómo es la distribución.

Page 21: Linux
Page 22: Linux
Page 23: Linux
Page 24: Linux

BlenderBuntuCon la misma filosofía de la distribución anterior, BlenderBuntu está enfocado a que Blender “vuele”. En la página del proyecto hablan de un ahorro de tiempo en el proceso de render del 44%, comparado con Windows 7.

La versión actual de BlenderBunto (V2) está construida sobre la base de Ubuntu 11.10. La próxima entrega, en la que ya se está trabajando, se basará en Precise Pangolin (LTS). El entorno de escritorio empleado es aún más ligero que en el caso anterior, ya que emplea el rápido y elegante LXDE.

BlenderBuntu tiene todo lo necesario para un modelador 3D y nada más. La versión de Blender es la más reciente, y se actualiza automáticamente. BlenderBuntu cuenta con el navegador web Arora, una utilidad de captura de pantalla y otra para grabar acciones sobre el escritorio, por si deseamos hacer un Screencast.

Page 25: Linux
Page 26: Linux