Vous êtes sur la page 1sur 11

ARQUITECTURA DEL SISTEMA OPERATIVO LINUX, PRINCIPIOS DEL DISEO, PARADIGMAS Y LLAMADAS AL SISTEMA

El sistema operativo Linux fue desarrollado en 1991 por Linus Torvalds, se basa en sistema UNIX. A partir de la primera versin de Linux el sistema ha sido modificado por miles de programadores de todo el mundo bajo la coordinacin de su creador Linux Torvalds. Su interfaz grfica ha mejorado en los ltimos aos, logrando que sea tan fcil de usar como en los sistemas Windows. En los sistemas operativos Linux el usuario puede elegir entre varias interfaces grficas que cuentan con prestaciones similares, entre las que destacan KDE y Gnome. La principal caracterstica de Linux es que su software no es propiedad de ninguna persona o empresa, es software libre. Al ser software libre, el cdigo fuente es accesible para que cualquiera pueda estudiarlo y modificarlo. La licencia de Linux no restringe el derecho de venta, por lo que diversas empresas de software comercial distribuyen versiones de Linux. Este sistema operativo dependiendo de su versin, se utiliza tanto en supercomputadoras y servidores como en computadoras, la versin ms popular a la fecha es Ubuntu 13.0.

Las principales caractersticas de Linux son: Multiusuario y multitarea. Compatible con Unix. Proporciona una interfaz de lnea de comandos Proporciona interfaz grfica. Es software libre.

ARQUITECTURA
La arquitectura interna de Linux es compleja pero se puede resumir las partes importantes de forma breve y fcil de entender.

PROCESOS Linux se organiza en procesos, que son tareas independientes que se ejecutan de forma simultnea mientras el sistema est en funcionamiento. Los procesos cuelgan unos de otros en una dependencia padre/hijo. Inicialmente al arrancar el sistema slo existe un proceso, llamado init. Init lee los ficheros de configuracin de arranque presentes en el directorio /etc y va creando procesos hijos. Estos a su vez tendrn sus propios hijos formando un rbol de descendientes. Los procesos en ejecucin se encuentran alojados en la memoria rpida RAM del sistema. Cuando se habla de ejecutar o lanzar o arrancar un proceso, nos estmos refiriendo al proceso de leer un fichero almacenado en el disco duro que contiene las instrucciones del programa, colocando las mismas en la memoria RAM y a continuacin empezando a ejecutar las instrucciones del programa ya en RAM.

USUARIOS Linux est diseado para ser utilizado por varios usuarios simultneamente. Aun cuando el sistema slo vaya a ser utilizado por un nico usuario, como es el caso corriente hoy en da, en general internamente Linux utilizar varios usuarios 'robots' para organizar mejor y de forma ms segura el sistema. Linux siempre tiene un superusuario llamado 'root' ('raz' traducido). En el siguiente prrafo se explica el por qu crea varios usuarios en vez de uno nico. Cada uno de los procesos pertenece a un usuario y en funcin del usuario asociado, dicho proceso tendr unos permisos u otros. Un proceso en ejecucin puede cambiar su usuario asociado si tiene los permisos suficientes para hacerlo. En general slo tendr permisos para cambiar de usuario cuando el usuario actual asociado al proceso sea 'root'. El proceso inicial Init se ejecuta con el usuario asociado 'root' lo cual le confiere permisos totales sobre la mquina. En general

cuando Init ejecute sus procesos hijos lo har asociandolos a usuarios distintos cuyos permisos se reduzcan a los esenciales para ejecutar la tarea para la cual estn diseado. P.ej, Init puede arrancar un proceso 'servidor de correo' asociado al usuario 'mail'. Este usuario tendr los permisos justos y necesarios para poder enviar y recibir correo y almacenarlo en el directorio /var/spool/mail. El proceso 'servicio de correo' puede a su vez arrancar procesos hijos pero estos estarn automticamente asociados a su usuario 'mail', nunca a 'root'. Este simple sistema de permisos provee a Linux de un sistema de seguridad muy slido. El entorno grfico estndar de Linux es un proceso ms llamado X. Cuando se arrancan las X todos los programas grficos (que son a su vez procesos) colgarn de l y se ejecutarn por normal general con los permisos del usuario que se ha logeado con su nombre y password al inicio de la sesin. Las aplicaciones que solemos manejar frecuentemente como el navegador web o el reproductor de video no son ms que procesos hijo del proceso X. Si ejecutamos por ejemplo un cliente de correo con un agujero de seguridad y descargamos un correo con virus, dicho virus 'engaar' al cliente de correo para que lo ejecute y entonces tendremos un nuevo proceso 'virus' colgando del cliente de correo y asociado al usuario que inici la sesin. Sin embargo puesto que este usuario no tiene permisos de administracin el virus no podr modificar ficheros claves del sistema, slamente los ficheros propios del usuario. Al reiniciar el ordenador el virus habr desaparecido. Esto complica enormemente la creacin de virus para Linux. El entorno grfico X es un proceso ms, sin ningn privilegio sobre cualquier otro. Esto significa que podemos prescindir del mismo si no nos hace falta. En general, cuando Linux se utiliza como servidor de Internet es normal no iniciar el entorno grfico ya que consume mucha memoria y puede ralentizar el sistema. Este ha hecho que Linux se popularice y desplaze a Windows en el entorno profesionales ya que por ejemplo permite contratar servicios de hospedaje virtual a precios mucho ms reducidos que sus equivalentes en Windows. Tambin al no depender de un entorno grfico, puede administrarse remotamente de forma mucho ms cmoda mediante lneas de comandos, mientras que Windows requiere transmitir el entorno grfico a travs de Internet (mucho ms lento, costoso e inseguro).

FICHEROS Los procesos acceden al hardware y a otros recursos como la conexin de red a internet o los datos almacenados en disco a travs de un sistema de ficheros. Todas las entradas y salidas de datos desde/hacia procesos se realiza a travs de ficheros. A continuacin se muestra un ejemplo real del rbol de procesos hasta llegar al proceso navegador firefox: USUARIO PROCESO root ... root \_ /usr/sbin/gdm-binary \_ /etc/X11/X \_ gnome-panel \_ /usr/bin/firefox /sbin/init [5]

usuario1 usuario1 usuario1

KERNEL El primer proceso en ejecutarse es el Kernel. El kernel hace de frontera entre el software y el hardware. Para nuestra CPU, el kernel es un programa de software como cualquier otro pero para el resto de procesos, init incluido, el kernel se comporta como si fuese hardware. Cuando un proceso quiere acceder al hardware no lo hace directamente, sino que se lo pide al kernel. El kernel hace de interlocutor entre procesos y hardware. Si varios procesos quieren acceder al disco duro o a Internet, el kernel asignar un tiempo a cada uno de ellos, copiar los datos que cada proceso quiere enviar y los enviar al disco duro o a la red. Tambin es el kernel el encargado de distribuir el tiempo de CPU asignado a cada proceso. Linux es un sistema multiproceso debido a que, aun disponiendo de un nico procesador, Linux es capaz de ejecutar simultneamente varias tareas haciendo rotar el propietario de la CPU cada fraccin de segundo. En realidad puede asignar el control de la CPU a un nuevo proceso entre 100 o 1000 veces

por segundo, dependiendo de la potencia de la CPU. Para un ser humano da la impresin de que todas las tareas se estn ejecutando de forma simultnea. Este sistema de asignacin de la CPU es clave y est extremadamente estudiado y optimizado. P.ej, Linux es lo suficientemente inteligente como para saber qu procesos estn a la espera de recibir un dato de internet y, mientras este dato no llegue, no le asignar el valioso tiempo de CPU. Desde hace unos aos a esta parte, los procesadores han desarrollado sistemas de ahorro de energa permitiendo disminuir la frecuencia, potencia o ciclo de trabajo de la CPU cuando no hay tareas que hacer. Linux est al tanto de este hecho y si observa que no hay aplicaciones demandando la CPU automticamente le indica al procesador que disminuya el consumo de energa.

Si antes nombrbamos que los procesos estn asociados a usuarios y gestionan ficheros, en realidad estos usuarios y ficheros son gestionados por el kernel. Cuando un proceso quiere acceder a un fichero, en realidad le pide al kernel que acceda al fichero y ser el kernel quien le devuelva los datos que haya leido. Antes de ello el kernel comprueba el usuario y grupo asociado al proceso, comprueba a su vez los usuarios o grupos que pueden acceder a dicho fichero. Si no concuerdan, en vez de devolver el dato, devolver un error o excepcin al proceso llamante indicndole el "porque".

Otra labor del kernel es abstraer a los procesos del hardware real de la mquina. Un proceso 'visor de fotos' que quiera acceder al fichero

/home/usuario1/FOTOS/vaciones001.png no tiene que preocuparse si dicho fichero est en un disco duro, una memoria SSD o debe ser accedido a travs de la red local ya que se encuentra en otro ordenador. El kernel mediante un sistema llamado "montaje" mapea rutas lgicas de directorios, p.ej, /home/usuario1 con un dispositivo fsico, p.ej, el disco duro local o un disco duro en Internet a 1000 kms. de distancia. El proceso 'visor de fotos' no se tiene que preocupar de dnde est fisicamente el fichero, slamente de su ruta simblica

/home/usuario1/FOTOS/vacaciones0001.png.

La memoria RAM de un sistema es limitada, y de nuevo el kernel se encarga de asignar memoria a los procesos. Adems, de nuevo, es lo suficientemente inteligente como para saber qu procesos llevan mucho tiempo sin ejecutarse (por ejemplo un servidor de correo que lleva 10 minutos sin enviar ni recibir correos) y si la memoria RAM escasea, es capaz de mover el proceso de RAM al disco duro y asignar la memoria RAM a procesos que en un instante dado puedan hacer mejor uso de la misma.

La palabra Linux, estrictamente hablando, en realidad se refiere slamente al kernel. Los procesos normales en realidad no son Linux, son procesos desarrollados por diferentes grupos de trabajo (fundacin GNU, Mozilla, empresas,...). Sin embargo es costumbre resumir, por abuso del lenguaje, como Linux a todo y cuanto se ejecuta bajo el kernel (algo que en realidad siempre ha molestado a otros grupos de desarrollo que se ven injustamente ignorados por este hecho).

PRINCIPIOS DE DISEO
Un sistema basado en Linux es un sistema operativo tipo Unix modular. Se deriva gran parte de su diseo bsico de los principios establecidos en Unix durante los aos 1970 y 1980. Este sistema utiliza un kernel monoltico, el kernel de Linux, que maneja el control de procesos, creacin de redes, y el acceso al sistema perifrico y el archivo. Los controladores de dispositivo estn integradas directamente con el kernel o aadirse como mdulos cargados, mientras que el sistema est funcionando.

Proyectos separados que interactan con el ncleo proporcionan gran parte de la funcionalidad de alto nivel del sistema. El espacio de usuario de GNU es una parte importante de la mayora de los sistemas basados en Linux, proporcionando la aplicacin ms comn de la biblioteca C, el shell popular, y muchas de las

herramientas comunes de Unix que llevan a cabo muchas de las tareas bsicas del sistema operativo. La interfaz grfica de usuario utilizada por la mayora de los sistemas Linux est construido en la cima de una implementacin del sistema X Window.

Algunos de los componentes de un sistema Linux instalado son:

Un gestor de arranque - por ejemplo, GRUB o LILO. Este es un programa que es ejecutado por el ordenador cuando se enciende por primera vez, y carga el kernel Linux en la memoria.

Un programa init. Se trata de un proceso iniciado por el ncleo Linux, y est en la raz del rbol de procesos: en otros trminos, todos los procesos se ponen en marcha a travs de init. Se inicia procesos tales como servicios de sistema y de inicio de sesin le pedir

Bibliotecas de software que contienen cdigo que puede ser utilizado por los procesos que se ejecutan. En los sistemas Linux que utilizan archivos ejecutables ELF formato, el enlazador dinmico que gestiona el uso de las bibliotecas dinmicas es "ld-linux.so". La biblioteca de software ms utilizados en sistemas Linux es la Biblioteca de C de GNU. Si el sistema est configurado para el usuario para compilar software ellos mismos, tambin se incluirn los archivos de cabecera para describir la interfaz de las bibliotecas instaladas.

Programas de interfaz de usuario, tales como los shells de comandos o entornos de ventanas

PARADIGMAS
Sus principales paradigmas son: Que es software libre. Que sus aplicaciones son tanto para desarrollo de software, como para oficina u ocio.

LLAMADAS AL SISTEMA
Para hacer uso de las llamadas al sistema desde el lenguaje de programacin C, los sistemas operativos que trabajan con el ncleo Linux ponen a disposicin del usuario varias funciones o procedimientos de librera que representan a las llamadas del sistema. Los prototipos relativos a estas funciones o procedimientos pueden encontrarse listados en el archivo de cabecera unistd.h (este se encuentra en el directorio /usr/include/asm/, aqu tambin pueden encontrarse los archivos unistd_32.h y unistd_64.h, archivos relativos a las arquitecturas de 32 y 64 bits respectivamente).

El sistema operativo de ncleo Linux cuenta con aproximadamente 200 funciones relacionadas con cada llamada al sistema, algunos de los cuales pueden agruparse en ciertas categoras que permiten el manejo o control de: procesos, seales, archivos, tiempo, etc.

Los conceptos explicados anteriormente pueden resumirse con el siguiente esquema:

Llamadas al sistema para el control de procesos Este tipo de llamadas al sistema permiten realizar "actividades" relacionadas con los programas que estn en espera para ejecucin o que se estn ejecutando, es decir, cuando son un proceso; cada sistema operativo tiene sus formas de invocar dichas llamadas, en el caso de los sistemas operativos bajo el ncleo Linux estas se pueden invocar desde el Shell o interprete de comandos y desde el lenguaje C.

Las llamadas ms comunes de este tipo son:

1. fork( ) 2. getpid( ) 3. getppid( ) 4. La familia de llamadas exec() 5. wait( ) 6. waitpid() 7. exit() 8. system()

Llamadas al sistema para el control de seales Las llamadas a sistema para el control de seales, son un tipo de llamada de sistema que permite a un proceso establecer comunicacin con otros procesos que se estn ejecutando en la mquina o para que el kernel se comunique con ellos, como puede ser, informar sobre alguna condicin, una solicitud de espera, etc.

En tal comunicacin el proceso puede ser emisor o receptor de la seal. Las seales que se pueden producir dependen de la mquina y de los privilegios que el proceso tenga.

Para la mayora de aplicaciones grandes, se usan seales como forma de controlar las tareas, pudiendo as teniendo aplicaciones en segundo plano o corriendo provisionalmente.

En el caso de los sistemas operativos con ncleo Linux el listado de seales se puede obtener con el comando kill y la opcin -l, para la maquina usada en los ejemplos, el listado de seales con su respectivo nmero son:

Las seales no tiene ninguna prioridad u orden para ser atendidas, es posible ignorarlas (excepto SIGSTOP y SIGKILL) y si en algn momento llegan simultneamente varias seales del mismo tipo, solo se tendr en cuenta una y las dems se consideraran como si nunca hubieran llegado.

BIBLIOGRAFA http://centrodeartigos.com/articulos-enciclopedicos/article_86283.html

http://systope.blogspot.mx/2012/06/llamadas-al-sistema-en-linux.html

Vous aimerez peut-être aussi