Você está na página 1de 18

Actividad 2.

Arquitectura del diseo del sistema operativo Linux Esta actividad tiene como propsito que distingas cmo est estructurada la arquitectura del sistema operativo Linux. 1. Investiga sobre la arquitectura del sistema operativo Linux, principios del diseo, paradigmas y llamadas al sistema. 2. Con base en la investigacin, realiza elabora un archivo de texto que contenga los temas mencionados Portada Temario Que es Linux LINUX (o GNU/LINUX, ms correctamente) es un Sistema Operativo como MacOS, DOS o Windows. Es decir, Linux es el software necesario para que tu ordenador te permita utilizar programas como: editores de texto, juegos, navegadores de Internet, etc. Linux puede usarse mediante un interfaz grfico al igual que Windows o MacOS, pero tambin puede usarse mediante lnea de comandos como DOS. Linux tiene su origen en Unix. ste apareci en los aos sesenta, desarrollado por los investigadores Dennis Ritchie y Ken Thompson, de los Laboratorios Telefnicos Bell. Andrew Tanenbaum desarroll un sistema operativo parecido a Unix (llamado Minix) para ensear a sus alumnos el diseo de un sistema operativo. Debido al enfoque docente de Minix, Tanenbaum nunca permiti que ste fuera modificado, ya que podran introducirse complicaciones en el sistema para sus alumnos.

Un estudiante finlands llamado Linus Torvalds, constatando que no era posible extender Minix, decidi escribir su propio sistema operativo compatible con Unix. En aquellos momentos el proyecto GNU (GNU's Not Unix), que Richard Stallman haba iniciado haca ya casi diez aos, comprenda un sistema bsico casi completo. La excepcin ms importante era el kernel o ncleo, que controla el hardware. Torvalds decidi aprovechar el sistema GNU y completarlo con su propio ncleo, que bautiz como Linux (Linux Is Not UniX). El sistema conjunto (herramientas GNU y ncleo Linux) forma lo que llamamos GNU/Linux. Arquitectura de Linux La arquitectura del sistema operativo LINUX se divide en tres niveles: 1. El nivel de usuario, donde se ejecutan todos los procesos de usuario , sin capacidad para ejecutar las instrucciones ms privilegiadas del procesador. 2. El nivel del ncleo , es el privilegiado del procesador donde pueden ejecutarse todas sus instrucciones sin restricciones. 3. El nivel del hardware, correspondiente al hardware especifico conectado en el sistema. La comunicacin entre los procesos de usuario y el ncleo se realiza a travs de la librera del sistema, que genera una interrupcin software ( trap ) cada vez que se realiza una llamada al sistema para obtener un servicio del ncleo.

Respecto a la estructura interna del ncleo , LINUX fue desarrollado sobre un sistema basado en un procesador bastante lento como el i386, lo que impuso la utilizacin de una arquitectura monoltica tradicional Linux (Linus Minix) es un clon del sistema operativo Unix para PC con procesador Intel 386.Linux toma dos caractersticas muy importantes de Unix: es un sistema multitarea y multiusuario, lo cualfue implementado posteriormente por los sistemas operativos Windows y MacOS. Con estas caractersticases posible ejecutar tareas de forma independiente, y transparente para el/los usuarios.Linux esta compuesto por cinco sub-modulos [2]: El programador (Scheduler), el manejador dememoria, el sistema de archivos virtual, la interfaz de red y la comunicacion entre procesos (IPC).

Como puede observarse en la gura 1.21 el kernel de linux posee sub-modulos que son indepen-dientes de la arquitectura y otros que deben ser escritos para el procesador utilizado, esto hace que Linuxsea un sistema operativo portable. En la actualidad existe una gran variedad de arquitecturas soportadas porlinux, entre las que se encuentran:alpha arm26 frv i386 m32r m68knommu parisc ppc64 sh sparc um x86 64 arm cris h8300 ia64 m68k mips ppc s390 sh64 sparc64 v850Las funciones de estos componentes se describen a continuacion [1]: Programador de procesos (Scheduler) Es el corazon del sistema operativo linux. Esta encargado de realizar las siguientes tareas:Permitir a los procesos hacer copias de si mismos.Determinar que procesos pueden acceder a la CPU y efectuar la transferencia entre los procesos enejecucion.Recibir interrupciones y llevarlas al subsistema del kernel adecuado.Enviar senales a los procesos de usuario.Manejar el timer f sico.Liberar los recursos de los procesos, cuando estos nalizan su ejecucion.El programador de procesos proporciona dos interfaces: Una limitada para los procesos de usuarioy una interfaz amplia para el resto del kernel. El scheduler de Linux utiliza una interrupcion del timer quese presenta cada 10 ms, por lo tanto, el cambio de estado del programador se realiza cada 10 ms. Esto debeser tenido en cuenta a la hora de realizar procesos que manejen dispositivos hardware veloces. Un procesopuede estar en uno de los siguientes estados:En ejecucion.Retornando de un llamado de sistema.Procesando una rutina de interrupcion.Procesando un llamado del sistema.Listo.En espera. Manejador de Memoria

En el momento en que se energiza la CPU, esta solo ve 1MB de memoria f sica (Incluyendo lasROMs). El codigo de inicializacion del Sistema Operativo debe activar el modo protegido del procesador, detal forma que la memoria Extendida (incluyendo la memoria de los dispositivos) sea accesible. Finalmenteel OS habilita la memoria virtual para permitir la ilusion de un espacio de memoria de 4 GB. El manejadorde memoria proporciona los siguientes servicios (ver guras 1.22 y 1.23): Gran espacio de memoria . Los procesos usuario, pueden referenciar mas memoria que la existentef sicamente. Proteccion La memoria de un proceso es privada y no puede ser leda o modicada por otro proceso.Adicionalmente evita que los procesos sobreescriban datos de solo lectura. Mapeo de memoria Los usuarios pueden mapear un archivo en un area de memoria virtual y accesarel archivo como una memoria. Acceso transparente a la memoria fsica esto asegura un buen desempeno del sistema. Memoria compartida Al igual que el programador el manejador de memoria proporciona dos diferentes niveles de accesoa memoria el nivel de usuario y el de kernel.Nivel de Usuario malloc() / free() . Asigna o libera memoria para que sea utilizada por un proceso. mmap() / munmap() / msync() /mremap() Mapea archivos en regiones de memoria virtual. mprotect

Cambia la proteccion sobre una region de una memoria virtual. mlock() / mlockall() / munlock() / munlockall() Rutinas que permiten al super usuario prevenirel intercambio de memoria. swapon() / swapoff() Rutinas que le permiten al super-usuario agregar o eliminar archivos swapen el sistema.Nivel de kernel kmalloc() / kfree() Asigna o libera memoria para que sea utilizada por estructuras de datos delkernel. verify area() Verica que una region de la memoria de usuario ha sido mapeada con los per-misos necesarios. get free page() / free page() Asigna y libera paginas de memoria f sica.

Comunicacion Entre Procesos (IPC) El mecanismo IPC de Linux posibilita la ejecucion concurrente de procesos, permitiendo compartirrecursos,lasincronizacioneintercambiodedatose ntreellos.Linuxproporcionalossiguientesmecanismos: Se nales Mensajes asncronos enviados a los procesos. Listas de espera Proporciona mecanismos para colocar a dormir a los procesos mientras esperan queuna operacion se complete, o un recurso se libere. Bloqueo de archivos Permite a un proceso declarar una region de un archivo como solo lectura paralos demas procesos. Conductos (pipe) Permite transferencias bi-direccionales entre dos procesos. System V Semaforos Una implementacion del modelo clasico del semaforo. Lista de Mensajes Secuencia de bytes, con un tipo asociado, los mensajes son escritos a unalista de mensajes y pueden obtenerse leyendo esta lista. MemoriaCompartida Mecanismopormediodelcualvariosprocesostienenaccesoala mismaregion de memoria f sica. Sockets del dominio Unix Mecanismo de transferencia de datos orientada a la conexion. Interfaces de Red

Este sistema proporciona conectividad entre maquinas, y un modelo de comunicacion por sockets.Se proporcionan dos modelos de implementacion de sockets: BSD e INET. Ademas, proporciona dos pro-tocolos de transporte con diferentes modelos de comunicacion y calidad de servicio: El poco conableprotocolo UDP ( User Datagram Protocol ) y el conable TCP ( Transmission Control Protocol ), esteulti-mo garantiza el envo de los datos y que los paquetes seran entregados en el mismo orden en que fueronenviados. Se proporcionan tres tipos diferentes de conexion: SLIP (Serial), PLIP (paralela) y ethernet. Sistema de archivo virtual El sistema de archivos de linux cumple con las siguientes tareas: Controlar multiples dispositivos hardware Manejar sistemas de archivos logicosSoporta diferentes formatos ejecutables Por ejemplo a.out, ELF, java) Homogeneidad Proporciona una interfaz comun a todos los dispositivos logicos o f sicos. Desempe noSeguridadConabilidadDrivers de Dispositivos La capamanejador dedispositivos es responsable depresentar unainterfaz comun atodos los dispos-itivos f sicos. El kernel de Linux tiene 3 tipos de controladores de dispositivo: Caracter (acceso secuencial),bloque (acceso en multiplos de tamano de bloque) y red. Ejemplos de controladores secuenciales son elmodem, el mouse; ejemplos de controladores tipo bloque son los dispositivos de almacenamiento masivocomo discos duros, memorias SD. Los manejadores de dispositivos soportan

las operaciones de archivo, ypueden ser tratados como tal. Sistema de Archivos logico Aunque es posible acceder a dispositivos fsicos a traves de un archivo de dispositivo, es comunacceder a dispositivos tipo bloque utilizando un sistema de arcvhivos logico, el que puede ser montado enun punto del sistema de archivos virtual.Para dar soporte al sistema de archivos virtual, Linux utiliza el concepto de inodes . Linux usa uninode para representar un archivo sobre un dispositivo tipo bloque. El inode es virtual en el sentido quecontiene operaciones que son implementadas diferentemente dependiendo de el sistema logico y del sistemaf sicodonderesideelarchivo.Lainterfazinodehacequetodosl osarchivosseveanigualaotrossubsistemasLinux. El inode se utiliza como una posicion de almacenamiento para la informacion relacionada con unarchivo abierto en el disco. El inode almacena los buffers asociados, la longitud total del archivo en bloques,y el mapeo entre el offset del archivo y los bloques del dispositivo. Modulos La mayor funcionalidad del sistema de archivos virtual se encuentra disponible en la forma de modu-los cargados dinamicamente. Esta cconguracion dinamica permite a los usuarios de Linux compilar unkernel tan pequeno como sea posible, mientras permite cargar el manejador del dispositivo y modulos delsistema de archivos si solo son necesarios durante una sesion. Esto esutil en el caso de los dispositivos quese pueden conectar en caliente, como por ejemplo un scanner, si tenemos el manejador del scanner craga-do aun sin que este este conectado a nuestro equipo se esta desperdiciando la memoria asociada a dichocontrolador.

Interfaces de Red Este sistema proporciona conectividad entre maquinas, y un modelo de comunicacion por sockets.Se proporcionan dos modelos de implementacion de sockets: BSD e INET. Ademas, proporciona dos pro-tocolos de transporte con diferentes modelos de comunicacion y calidad de servicio: El poco conable protocolo UDP ( User Datagram Protocol ) y el conable TCP ( Transmission Control Protocol ), esteulti-mo garantiza el envo de los datos y que los paquetes seran entregados en el mismo orden en que fueronenviados. Se proporcionan tres tipos diferentes de conexion: SLIP (Serial), PLIP (paralela) y ethernet. Principios del diseo en que est basado Linux es un sistema multiusuario, multitarea, con un conjunto completo de herramientas compatibles con UNIX. El sistema de archivos de de Linux se ajusta a la semntica tradicional de UNIX, y el modelo estndar de trabajo con redes UNIX se implementa plenamente. Una buena parte del desarrollo temprano fue realizado por entusiastas individuos, no instalaciones de desarrollo, por lo que Linux procuro sacar la mxima funcionalidad de sus recursos limitados. El ncleo se encarga de mantener todas las abstracciones importantes del sistema operativo, incluidas cosas tales como memoria virtual y procesos. Las bibliotecas del sistema definen un conjunto estndar de funciones a travs de de las cuales las aplicaciones pueden interactuar con el ncleo y que implementan gran parte de la funcionalidad del sistema operativo que no necesita todos los privilegios del cdigo del ncleo.

Los utilitarios del sistema son programas que realizan tareas de administracin especializadas individuales. Algunos utilitarios del sistema podran invocarse una sola vez para asignar valores iniciales y configurar algn aspecto del sistema; otras (llamadas demonios en la terminologa UNIX) podran ejecutarse de forma permanente, realizando tares tales como responder a las conexiones de red entrantes, aceptar solicitudes de ingreso al sistema desde terminales, o actualizar archivos de bitcora. Mdulos del ncleo El ncleo de Linux tiene la facultad de de cargar y descargar secciones arbitrarias del cdigo del ncleo cuando se le piden hacerlo. Estos mdulos del ncleo cargables se ejecutan en modo de ncleo privilegiado, y por ello tiene pleno acceso a todas las capacidades de hardware de la maquina que en la que se ejecutan. Un mdulo podra implementar un driver de dispositivo, un sistema de archivos o un protocolo de redes. El soporte de mdulos en Linux tiene tres componentes: 1. La gestin de mdulos permite cargar mdulos en la memoria y comunicarse con el resto del sistema. 2. El registro de controladores permite a los mdulos notificar al resto del ncleo que esta disponible un nuevo controlador. 3. Un mecanismo de resolucin de conflictos permite a diferentes drivers reservar recursos de hardware y proteger dichos recursos contra un uso accidental por parte de otro controlador.

Gestin de Mdulos
La carga de un modulo requiere algo ms que la carga de su contenido binario en la memoria del ncleo. El sistema tambin debe asegurarse de actualizar las referencias que el modulo haga a smbolos o puntos de ingreso del ncleo de modo que apunten a las posiciones correctas dentro del espacio de direcciones del ncleo. Linux divide esta tarea de cargar mdulos en dos secciones distintas: el manejo de secciones de cdigo de mdulos en memoria del ncleo y el manejo de smbolos a los que se permite a los mdulos hacer referencia. La carga del modulo se efecta en dos etapas. Primero, el utilitario cargador de mdulos pide al ncleo reservar un rea contigua a la memoria virtual del ncleo para el modulo. El ncleo devuelve la direccin de memoria asignada, y el utilitario de carga puede utilizarla. Segundo, una llamada al sistema pasa entonces el modulo, junto con una tabla de smbolos que el modulo desea exportar, al ncleo. Y se copia el modulo mismo sin alteraciones al espacio asignado, y la tabla de smbolos se actualiza con nuevos smbolos que podrn usar otros mdulos. Solicitador de mdulos, el ncleo define una interfaz de comunicaciones para conectarse a un programa de gestin de mdulos, hecha la conexin, el ncleo informara al proceso de gestin cada vez que un proceso solicite un driver de dispositivo, sistema de archivos o servicio de red que no est cargado, y dar al gestor la oportunidad de cargar ese servicio.

Registro de Controladores
Las tablas de registros incluyen los siguientes elementos:

Drivers de dispositivos. Estos incluyen los de dispositivos por caracteres (como impresoras,
terminales o ratones), dispositivos por bloques (incluidas todas las unidades de disco) y dispositivos de interfaz de red.

Sistemas de archivos. Se encarga de implementar las rutinas de invocacin del sistema de


archivos virtual de Linux

Protocolos de red. Un modul puede implementar un protocolo de redes completo. Formato binario. Este formato especifica una forma de reconocer, y cargar, un nuevo tipo de
archivo ejecutable.

Resolucin de Conflictos
Linux ofrece un mecanismo central de resolucin de conflictos que ayuda a arbitrar el acceso de ciertos recursos de hardware. Sus objetivos son:

Evitar que los mdulos entren en conflicto al tratar de acceder a recursos de hardware. Evitar que los auto sondeos (sondeos de driver que auto detectan la configuracin de un
dispositivo) interfieran los drivers de dispositivos existentes.

Resolver conflictos entre mltiples drivers que tratan de acceder al mismo hardware; por
ejemplo, el controlador de impresora en paralelo y el controlador de red PLIP podran tratar de hablar ambos con el puerto de impresora paralelo.

Que paradigmas de programacin se usaron para su desarrollo


C es un lenguaje de programacin creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolucin del anterior lenguaje B, a su vez basado en BCPL. Al igual que B, es un lenguaje orientado a la implementacin de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del cdigo que produce y es el lenguaje de programacin ms popular para crear software de sistemas, aunque tambin se utiliza para crear aplicaciones. Se trata de un lenguaje fuertemente tipificado de medio nivel pero con muchas caractersticas de bajo nivel. Dispone de las estructuras tpicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar cdigo en ensamblador con cdigo C o acceder directamente a memoria o dispositivos perifricos. La primera estandarizacin del lenguaje C fue en ANSI, con el estndar X3.159-1989. El lenguaje que define este estndar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como estndar ISO (ISO/IEC 9899:1990). La adopcin de este estndar es muy amplia por lo que, si los programas creados lo siguen, el cdigo es porttil entre plataformas y/o arquitecturas. El desarrollo inicial de C se llev a cabo en los Laboratorios Bell de AT&T entre 1969 y 1973; segn Ritchie, el periodo ms creativo tuvo lugar en 1972. Se le dio el nombre "C" porque muchas de sus caractersticas fueron tomadas de un lenguaje anterior llamado "B". Hay muchas leyendas acerca del origen de C y el sistema operativo con el que est ntimamente relacionado, Unix. Algunas de ellas son: El desarrollo de C fue el resultado del deseo de los programadores de jugar con Space Travel. Haban estado jugando en el mainframe de su compaa, pero debido a su poca capacidad de proceso y al tener que soportar 100 usuarios, Thompson y Ritchie no tenan suficiente control sobre la nave para evitar colisiones con los asteroides. Por ese motivo decidieron portar el juego a un PDP-7 de la oficina que no se utilizaba; pero esa mquina no tena sistema operativo, as que decidieron escribir uno. Finalmente decidieron portar el sistema operativo del PDP-11 que haba en su oficina, pero era muy costoso, pues todo el cdigo estaba escrito en lenguaje ensamblador. Entonces decidieron usar un lenguaje de alto nivel y porttil para que el sistema operativo se pudiera portar fcilmente de un ordenador a otro. Consideraron

usar B, pero careca de las funcionalidades necesarias para aprovechar algunas caractersticas avanzadas del PDP-11. Entonces empezaron a crear un nuevo lenguaje, C. La justificacin para obtener el ordenador original que se us para desarrollar Unix fue crear un sistema que automatizase el archivo de patentes. La versin original de Unix se desarroll en lenguaje ensamblador. Ms tarde, el lenguaje C se desarroll para poder reescribir el sistema operativo.

En 1973, el lenguaje C se haba vuelto tan potente que la mayor parte del kernel Unix, originalmente escrito en el lenguaje ensamblador PDP-11/20, fue reescrita en C. ste fue uno de los primeros ncleos de sistema operativo implementados en un lenguaje distinto al ensamblador. (Algunos casos anteriores son el sistema Multics, escrito en PL/I, y Master Control Program para el B5000 de Burroughs, escrito en ALGOL en 1961).

Estructura de las llamadas al sistema El ncleo de Linux dispone de dos llamadas al sistema, read y write, que permiten a un proceso de usuario leer y escribir datos en un archivo que previamente debe haber sido abierto por medio de la llamada al sistema open. Esta llamada open devuelve un descriptor de fichero fd el cual tendrn que utilizar el read y el write para acceder al archivo en cuestin. Linux considera los archivos como una serie de bytes que carecen de tipo y de estructura. Por tanto, no impone ninguna restriccin sobre los datos que pueda leer o escribir un proceso de cualquier tipo de ficheros. De modo que es capaz de soportar varios tipos de Sistemas de Ficheros como EXT2, Minix, Fat, etc.

Por tanto, los procesos deben disponer de un acceso uniforme a los datos independientemente del tipo de Sistema de Fichero que se est utilizando, para lo cual se sirven del Sistema Virtual de Ficheros (VFS) que es la interfaz entre las llamadas al sistema y el sistema real de ficheros que gestiona los datos. Esto es, cada vez que se ejecute una llamada al sistema, sta se dirige al VFS el cual redirige la peticin hacia el mdulo que gestiona el fichero, como se puede observar con ms detalle en la siguiente figura:

Las llamadas al sistema read y write actuarn sobre el sistema de ficheros EXT2 cuyas caractersticas principales son: - Divide el disco en pequeas unidades lgicas llamadas bloques que son las unidades mnimas que pueden ser asignadas y su tamao se puede establecer a la hora de crear el sistema de ficheros. - Divide las particiones lgicas que ocupa en grupo de bloques que es un conjunto de bloques secuenciales, que mantiene la informacin relacionada fsicamente en el disco y facilita las tareas de gestin ya que el sistema de ficheros es manejado globalmente como una serie de grupos de bloques. Los grupos de bloques contienen informacin como la que se muestra en la siguiente figura:

Superbloque: Copia del superbloque. Esta estructura contiene las informaciones de control del sistema de archivos y se duplica en cada grupo de bloques para permitir recuperar fcilmente una corrupcin del sistema de

archivos. Descriptores de grupo: contienen las direcciones de bloques que contienen las informaciones cruciales, como los bloques y la tabla de inodos. Tambin se duplican en cada grupo de bloques. Mapa de bits de bloques de datos: a cada bloque se le asocia un bit indicando si est asignado o disponible. Mapa de bits de bloques inodos: a cada inodo se le asocia un bit indicando si est asignado o disponible. Tabla de inodos: contiene una parte de la tabla de inodos del sistema de archivos. Bloques de datos: se utilizan para almacenar los datos contenidos en los archivos y los directorios. Conclusin Debido a la naturaleza funcional y de disponibilidad de LINUX, este se ha vuelto sumamente popular en todo el mundo y por ello un gran numero de programadores han tomado su cdigo fuente original y lo han adaptado para satisfacer necesidades particulares. Actualmente , hay docenas de proyectos para portar LINUX a varias plataformas de hardware. LINUX puede emplearse en una gran cantidad de aplicaciones. Desde manejo de redes, pasando por desarrollo de software hasta llegar a ser una plataforma de trabajo para el usuario final. Es adems, una excelente alternativa de bajo costo frente a otros sistemas operativos de precio mas elevado. Soporta una amplia gama de programas incluyendo X-WINDOWS, Redes TCP/IP y juegos tan populares como DOOM. Tambin se encuentra

aplicaciones para servidores de archivos ( File Servers ) , Web Servers, FTP y en desarrollo emuladores que permitirn correr aplicaciones DOS y WINDOWS sobre la plataforma LINUX . No existen muchas aplicaciones comerciales para LINUX, por ahora, pero de todas maneras ya hay algunas. Fuentes
http://manuales.dgsca.unam.mx/Internet/glosario.htm http://parentesis.com/informacion/Glosario http://linux.ciberaula.com/articulo/que_es_linux/ http://es.scribd.com/doc/53163581/13/Arquitectura-de-Linux-1-2 http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/MonogSO/LINUX99.htm ftp://www.cc.uah.es/pub/Alumnos/I.T.I.Gestion/Sist.Operativos/TECWeb/T4/index_archivos/Page 2860.htm http://es.wikipedia.org/wiki/C_(lenguaje_de_programaci%C3%B3n) http://sopa.dis.ulpgc.es/ii-dso/leclinux/fs/readwrite/LEC20_READWRITE.pdf