Académique Documents
Professionnel Documents
Culture Documents
INDICE
I. II. III. Objetivo...3 Marco terico..3 Desarrollo...4 1. Introduccin a Linux....4 1.1 Definicin y concepto....4 1.2 Funciones y caractersticas....4 1.3 Evolucin histrica.....6 1.4 Clasificacin.....8 1.5 Estructura: niveles o estratos de diseo...10 1.6 Ncleo...13 2. Administracin de procesos y del procesador en Linux ..16 2.1 Concepto de proceso.....16 2.2 Estados y transiciones de los procesos...18 2.3 Procesos ligeros: Hilos o hebras.....22 2.4 Concurrencia y secuenciabilidad....22 2.5 Niveles, objetivos y criterios de planificacin...26 2.6 Tcnicas de administracin del planificador...27 3. Administracin de la memoria en Linux....32 3.1 Poltica y filosofa......32 3.2 Memoria real......32 3.3 Organizacin de memoria virtual......34 3.4 Administracin de memoria virtual.....40 4. Administracin de entrada/salida en Linux....44 4.1 Dispositivos y manejadores de dispositivos: Device drivers...44 4.2 Mecanismos y funciones de los manejadores de dispositivos: Device drivers...45 4.3 Estructuras de datos para manejo de dispositivos ....51 4.4 Operaciones de Entrada/salida......56 5. Sistemas de archivos en Linux...60 5.1 Concepto.....60 5.2 Nocin de archivo real y virtual...60 5.3 Componentes de un sistema de archivos..63 5.4 Organizacin lgica y fsica..64 5.5 Mecanismos de acceso a los archivos..65 5.6 Manejo de espacio en memoria secundaria...65 5.7 Modelo jerrquico....67 5.8 Mecanismos de recuperacin en caso de falla ..67 6. Proteccin y seguridad en Linux..70 6.1 Concepto y objetivos de proteccin...70 6.2 Funciones del sistema de proteccin.71 6.3 Implantacin de matrices de acceso..77 6.4 Proteccin basada en el lenguaje....78 6.5 Concepto de seguridad...79 6.6 Clasificaciones de la seguridad...82 6.7 Validacin y amenazas al sistema.84 6.8 Cifrado....97 Conclusin...99 Bibliografa...100
IV. V.
4 de junio de 2013
I.OBJETIVO
El objetivo principal es elaborar una investigacin completa acerca de algn sistema operativo en particular, en este caso Linux; implementar cada punto de las unidades vistas durante todo el curso en este sistema operativo, como trabaja y funciona.
II.MARCO TEORICO
Sistema operativo
Es el programa (o software) ms importante de un ordenador. Para que funcionen los otros programas, cada ordenador de uso general debe tener un sistema operativo. Los sistemas operativos realizan tareas bsicas, tales como reconocimiento de la conexin del teclado, enviar la informacin a la pantalla, no perder de vista archivos y directorios en el disco, y controlar los dispositivos perifricos tales como impresoras, escner, etc (Mas adelante, 2005)
4 de junio de 2013
III.DESARROLLO
Introduccion a Linux.
Redes y Telecomunicaciones La superioridad de Linux sobre otros sistemas operativos es evidente en sus utileras para redes y comunicaciones. Ningn otro sistema operativo incluye capacidades para red tan estrechamente acopladas. Linux soporta las siguientes interfaces de red: ethernet, fddi, token ring, arcnet, X.25, ISDN, lneas seriales sncronas y asncronas. Internet Con Linux usted puede conectarse a Internet y al vasto mundo de informacin que esta red abarca. Correo Electrnico, Listas de Correo, Grupos de Inters, Bsqueda y Transferencia de Archivos, Gopher, WAIS, y por supuesto, World Wide Web. Interconectividad Usted 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. Programacin Linux 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 dinmico (DLL). Portabilidad Linux fue diseado teniendo en cuenta la portabilidad de las aplicaciones. Linux es compatible con diversos estndares Unix, tales como System V, BSD y los estndares internacionales IEEE POSIX.1 e IEEE POSIX.2, facilitando el desarrollo de aplicaciones para mltiples plataformas. Ambiente Grfico Linux proporciona la capacidad de ejecutar aplicaciones grficas mediante una red heterognea al incorporar la revisin 6 del estndar X11 del MIT, conocido tambin 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.
4 de junio de 2013
Poder RISC Si su organizacin necesita verdadero poder de cmputo Linux corre en computadoras basadas en microprocesadores RISC como Alpha AXP, Sparc, PowerPC y MIPS. FUNCIONES Sistema multitarea: En Linux es posible ejecutar varios programas a la vez sin necesidad de tener que parar la ejecucin de cada aplicacin. Sistema multiusuario: Varios usuarios pueden acceder a las aplicaciones y recursos del sistema Linux al mismo tiempo. Y, por supuesto, cada uno de ellos puede ejecutar varios programas a la vez (multitarea). Shells programables: Un shell conecta las rdenes de un usuario con el Kernel de Linux (el ncleo del sistema), y al ser programables se puede modificar para adaptarlo a tus necesidades. Por ejemplo, es muy til para realizar procesos en segundo plano. Independencia de dispositivos: Linux admite cualquier tipo de dispositivo (mdems, impresoras) gracias a que cada una vez instalado uno nuevo, se aade al Kernel el enlace o controlador necesario con el dispositivo, haciendo que el Kernel y el enlace se fusionen. Linux posee una gran adaptabilidad y no se encuentra limitado como otros sistemas operativos. Comunicaciones: Linux es el sistema ms flexible para poder conectarse a cualquier ordenador del mundo. Internet se cre y desarrollo dentro del mundo de Unix, y por lo tanto Linux tiene las mayores capacidades para navegar, ya que Unix y Linux son sistemas prcticamente idnticos. Con Linux podr montar un servidor en su propia casa sin tener que pagar las enormes cantidades de dinero que piden otros sistemas.
4 de junio de 2013
fue puesta a disposicin de todo el mundo, mucha gente la descarg y la prob y mucha gente consider que poda aportar algo a este sistema operativo y se sum al desarrollo del mismo. Linux fue mejorando paulatinamente desde ese ao hasta hoy en da. As mismo mucha gente convirti a Linux en su plataforma de desarrollo de software escribiendo cada vez ms y ms aplicaciones para l y dotando al operativo con programas que resolviesen todos los problemas que pueden ser atacados con un ordenador personal. Otra gran huella en la historia de la evolucin de Linux hasta lo que es hoy en da, es la aparicin de las distribuciones. Las distribuciones son paquetes software que bsicamente incluyen el kernel, aplicaciones para el kernel y mtodos de instalacin y mantenimiento del sistema operativo como tambin de las aplicaciones. Las primeras distribuciones que surgieron fueron Slackware y RedHat la ltima. Posteriormente surgen otro tipo de distribuciones como Suse, Mandrake, Caldera, OpenLinux, etc... Que intentan hacer nuevas contribuciones en cuanto a instalacin y manejo, casi todas ella comerciales. Mencin aparte la distribucin Deban. Deban es la nica distribucin totalmente libre y en la que solo caben programas totalmente libres. Deban es mantenida por miles de voluntarios que mantienen su software y mejoran sus sistema de instalacin da tras da para dar un resultado cada vez ms elaborado. La historia de Linux est fuertemente vinculada a la del proyecto GNU. Hacia 1991, cuando la primera versin del ncleo Linux fue liberada, el proyecto GNU haba producido varios de los componentes del sistema operativo, incluyendo un intrprete de comandos, una biblioteca C y un compilador, pero an no contaba con el ncleo que permitiera complementar el sistema operativo. Entonces, el ncleo creado por Linus Torvalds, llen el hueco final que el sistema operativo GNU exiga.
4 de junio de 2013
1.4
1. Linux para los novatos Estos son las distribuciones para los novatos o recin llegados de Linux, as como para los usuarios que no tienen demasiado tiempo para modificar y configurar sus ordenadores.
Ubuntu Tal vez la distribucin de Linux ms famosa, y por lo general el primero ve a cualquier recin llegado. Casa de la Moneda de Linux Mint, ganado mucha popularidad, que se basa en Ubuntu, pero viene con soporte para MP3 y flash y otras cosas no es compatible con Ubuntu por defecto. PCLinuxOS Esta es otra distribucin de Linux orientada a principiantes, ms o menos como Casa de la Moneda, se trata de sacarlo de la caja, con el apoyo de una gran cantidad de hardware. Mandriva es realmente una gran distribucin, lo us durante ms de un ao, y en ese tiempo, cuando yo lo estaba usando, que era el ms avanzado de Linux de escritorio que he probado. Se cont con el apoyo de una plataforma hardware muchas otras distribuciones no en ese momento.
4 de junio de 2013
2.
Fedora, es de alguna manera el entorno limitado de tipos de RedHat, es de escritorio orientado, y por lo general los paquetes de software sangrado borde. Tambin hacen un montn de contribucin a la comunidad Linux. Deban Linux se adapta a todas las secciones, si se instala desde el DVD, o de algunos de sus Deban LiveCD, usted puede tener algo como Ubuntu.
3.
La distribucin de estas secciones no est dirigida para el recin llegado, pero desde luego no tiene por qu ser un experto en Linux con el fin de instalar y usar.
Slackware algunos dirs Slackware no es para usuarios avanzados, y que es parcialmente cierto, si usted lo instala, fuera de la caja, que tiene casi todo lo que necesita para trabajar, en un servidor o entorno de escritorio, y si es todo lo que necesita, entonces estn bien, pero si desea instalar ms software, usted puede estar en problemas. Gentoo El problema es que con tanto poder en sus dedos, puede arruinar las cosas fcilmente. La comunidad es un probable de lo mejor, y la documentacin es sin duda el mejor en el mundo Linux. Si usted realmente tiene el tiempo y te gusta Linux un poco ms, debe estar ejecutando Gentoo. Arch Linux Arch Linux, esta distribucin se basa en el principio KISS . Tambin utiliza los scripts de inicio al estilo BSD, que para m son mucho ms fciles de usar que los de System V.
4. Linux para los servidores Vamos a enumerar aqu algunas de las mejores distribuciones para servidores, una vez ms, en mi opinin.
CentOS Si no les importa tener software antiguo CentOS es una distribucin de buen servidor, puede utilizar centosplus, pero entonces usted podra estar perdiendo una de las fortalezas de CentOS, que es la estabilidad y la seguridad.
4 de junio de 2013
Slackware se han centrado en la seguridad de hard rock y la estabilidad. Tambin es muy simple y fcil de administrador, que es ideal para el campo Servidor. Debian Tiene una gran cantidad de aplicaciones, tal vez usted no ser capaz de encontrar una aplicacin de servidor que no est en sus repositorios oficiales.
4 de junio de 2013
/ Directorio raz donde se encuentran todos los directorios y archivos de una manera lgica. /bin En este directorio podemos encontrar todos los archivos ejecutables del sistema. En l estn muchos de los comandos que usamos habitualmente como por ejemplo ls, cat, more, cp, tar adems de los de tus programas. /home Aqu se encuentran todos los archivos de los usuarios del sistema. Si mi nombre de usuario es kiefer seria /home/kiefer /media Generalmente aqu es donde se montan los Cds y Dvds adems de los SticksUSB y discos duros externos. /sbin Contiene archivos ejecutables que por lo general son comandos usados para la administracin del sistema. Los comandos mount, halt, umount y shutdown son algunos de ellos. /usr Contiene varios archivos y subdirectorio importantes como pueden ser las configuraciones del entorno grafico X, fuentes del kernel, librerias, juegos y un largo etc. /boot Todos los archivos necesarios para el arranque incluidos el cargador Grub y los kernels disponibles. /mnt Directorio vaco, normalmente se suele usar para montajes de unidades temporales que deseamos cargar en ese momento.
4 de junio de 2013
10
/var Contiene varios archivos que definen el sistema as como archivos log que almacenan cada movimiento del sistema como por ejemplo el fichero /var/log/messages. /cdrom Normalmente es un enlace simblico hacia /media/cdrom /dev Aqu es donde estn todos los drivers y los dispositivos, estos se identifican en forma de archivo. /lib Contiene librerias para C y otros lenguajes de programacin. /proc Directorio que contiene informacin sobre diferentes partes del sistema, cpu, discos, tiempo uptime, irqs, memoria, etc /opt En este directorio se suelen almacenar todos los archivos de una instalacin fuera de los repositorios como puede ser cuando instalamos un .deb /etc Contiene prcticamente todos los archivos de configuracin del equipo y los demonios de inicio en /etc/init.d entre otras cosas. /lost+found Directorio especfico para archivos perdidos. Cada particin tiene el suyo propio independientemente. /root Directorio particular del superusuario del sistema (root)
4 de junio de 2013
11
/tmp Directorio temporal que pueden usar todos los usuarios para archivos temporales y del sistema. En Linux no existen unidades, todo se monta como carpetas que empiezan en el directorio principal (tambin llamado raz), adems, aunque puedes crear las carpetas que quieras.
Hasta que empez el desarrollo de la serie 2.6 del ncleo, existieron dos tipos de versiones del ncleo:
Versin de produccin: La versin de produccin, era la versin estable hasta el momento. Esta versin era el resultado final de las versiones de desarrollo o experimentales.
4 de junio de 2013
12
Cuando el equipo de desarrollo del ncleo experimental, decida que tena un ncleo estable y con la suficiente calidad, se lanzaba una nueva versin de produccin o estable. Esta versin era la que se deba utilizar para un uso normal del sistema, ya que eran las versiones consideradas ms estables y libres de fallos en el momento de su lanzamiento.
Versin de desarrollo: Esta versin era experimental y era la que utilizaban los desarrolladores para programar, comprobar y verificar nuevas caractersticas, correcciones, etc. Estos ncleos solan ser inestables y no se deban usar sin saber lo que se haca.
Arquitectura del Kernel Linux Debido a que el kernel de Linux es monoltico, tiene ms complejidad que en los otros tipos de kernel. Esta fue una caracterstica de diseo que estaba bajo un poco de debate en los primeros das de Linux y an tiene algunos de los defectos de diseo. Una cosa que los desarrolladores del kernel de Linux hicieron para conseguir solucionar estas fallas es hacer mdulos del kernel que pueden ser cargados y descargados en tiempo de ejecucin, lo que significa que puede agregar o quitar caractersticas de su ncleo en el momento. Esto puede ir ms all de la adicin de la funcionalidad de hardware para el ncleo, mediante la inclusin de mdulos que ejecutan los procesos del servidor, como la virtualizacin de bajo nivel, pero tambin puede permitir que el ncleo pueda ser del todo reemplazado sin necesidad de reiniciar el equipo en algunos casos. Mdulos del Kernel Los mdulos del kernel, tambin conocido como un mdulo del kernel cargables (LKM), son esenciales para mantener el funcionamiento del ncleo con todo el hardware sin consumir toda la memoria disponible. Un mdulo generalmente, aumenta la funcionalidad del ncleo de base para cosas como los dispositivos, sistemas de archivos y las llamadas al sistema. Debido a su carcter modular, usted puede personalizar fcilmente su ncleo mediante el establecimiento de mdulos de carga o no.
4 de junio de 2013
13
Los mdulos de terceros y de cdigo cerrado estn disponibles en algunas distribuciones, como Ubuntu, y no puede ser instalado de forma predeterminada porque el cdigo fuente de los mdulos no est disponible. Las empresas desarrolladoras de software no proporcionan el cdigo fuente, sino que construyen sus propios mdulos y compilan sus archivos, archivos para su distribucin. Un ncleo no es magia, pero es completamente esencial para cualquier equipo que ejecute correctamente. El kernel de Linux es diferente a OS X y Windows, ya que incluye los controladores nivel del ncleo y hace muchas cosas.
4 de junio de 2013
14
4 de junio de 2013
15
State (Estado) A medida que un proceso se ejecuta, su estado cambia segn las circunstancias. Los procesos en Linux tienen los siguientes estados: Running (Preparado) El proceso se est ejecutando (es el proceso en curso en el sistema) o est listo para ejecutarse (est esperando a ser asignado a una de las cpus del sistema). Waiting (Esperando) El proceso est esperando algn suceso o por algn recurso. Linux diferencia dos tipos de procesos; interrumpibles e ininterrumpibles. Los procesos en espera interrumpibles pueden ser interrumpidos por seales mientras que los ininterrumpibles dependen directamente de sucesos de hardware y no se pueden interrumpir en ningn caso. Stopped (Detenido) El proceso ha sido detenido, normalmente porque ha recibido una seal. Si se estn depurando errores en un proceso, ste puede estar detenido. Zombie Es un proceso que ya ha terminado pero cuya estructura task_struct permanece an en el vector task. Se suele mantener para que el padre pueda extraer informacin til de l.
Un Proceso en Linux es un programa que se est ejecutando en un determinado momento en el sistema. En el Sistema Operativo Linux siempre hay una serie de procesos que se est ejecutando sin que el usuario se d cuenta de ello y stos hacen que el sistema sea utilizable. El proceso init es un proceso despachador y produce, entre otros, los procesos para que los usuarios puedan conectarse al sistema. Normalmente ejecuta la secuencia de rdenes del script /etc/rc.boot para comprobar los sistemas de archivos y posteriormente ejecuta las rdenes del etc/rc y /etc/rc.local para comenzar las operaciones de multiusuario; en otro caso, se comenzara en modo monousuario. Hay dos tipos de procesos: los de usuario y los demonios. Los Procesos de Usuario: son aquello procesos que el usuario utiliza Los Demonios: son aquellos procesos que para su funcionamiento, no requiere de la intervencin del usuario y en general se usan para programas que funcionan constantemente como servidores de red, programas administrativos, etc. En la jerga del mundo de Linux, se habla que los procesos estn vivos o estn muertos, son lanzados o pueden ser matados.
4 de junio de 2013
16
En Linux, un proceso no puede imponer su derecho sobre otro proceso que se est ejecutando para ejecutarse l mismo. Cada proceso decide dejar la CPU que est usando cuando tiene que esperar un suceso en el sistema. Por ejemplo, un proceso puede estar esperando a leer un carcter de un fichero. Esta espera sucede dentro de la llamada de sistema, en modo sistema; el proceso utiliza una funcin de una biblioteca para abrir y leer el fichero y la funcin, a su vez, hace una llamada de sistema para leer bites del fichero abierto. En este caso el proceso en espera ser suspendido y se elegir a otro proceso para ejecutarse. Linux usa un algoritmo razonablemente simple para planificar las prioridades y elegir un proceso entre los procesos que hay en el sistema. Cuando ha elegido un nuevo proceso para ejecutar, el planificador salva el estado del proceso en curso, los registros especficos del procesador y otros contextos en la estructura de datos task_struct. Luego restaura el estado del nuevo proceso (que tambin es especfico a un procesador) para ejecutarlo y da control del sistema a ese proceso
Existen varios modelos que representan los estados que puede tener un proceso; esto es el Modelo de dos estados y el Modelo de los cinco estados.
4 de junio de 2013
17
Modelo de dos estados: El modelo de estados ms simple es el de dos estados. En este modelo, un proceso puede estar ejecutndose o no. Cuando se crea un nuevo proceso, se pone en estado de No ejecucin. En algn momento el proceso que se est ejecutando pasar al estado No ejecucin y otro proceso se elegir de la lista de procesos listos para ejecutar para ponerlo en estado Ejecucin. De esta explicacin se desprende que es necesario que el sistema operativo pueda seguirle la pista a los procesos, conociendo su estado y el lugar que ocupa en memoria. Adems los procesos que no se estn ejecutando deben guardarse en algn tipo de cola mientras esperan su turno para ejecutar.
Modelo de Cinco estados: El modelo anterior de 2 estados funcionara bien con una cola FIFO y planificacin por turno rotatorio para los procesos que no estn en ejecucin, si los procesos estuvieran siempre listos para ejecutar. En la realidad, los procesos utilizan datos para operar con ellos, y puede suceder que no se encuentren listos, o que se deba esperar algn suceso antes de continuar, como una operacin de Entrada/Salida. Es por esto que se necesita un estado donde los procesos permanezcan esperando la realizacin de la operacin de Entrada Salida por parte del Sistema Operativo hasta que puedan proseguir. Se divide entonces al estado No ejecucin en dos estados: Listo y Espera. Se agregan adems un estado Nuevo y otro Terminado. Los cinco estados de este diagrama son los siguientes segn Osliyo: *Ejecucin: el proceso est actualmente en ejecucin. *Listo: el proceso est listo para ser ejecutado, slo est esperando que el planificador de corto plazo as lo disponga. *Espera: el proceso no puede ejecutar hasta que no se produzca cierto suceso, como la finalizacin de una operacin de Entrada/Salida solicitada por una llamada al sistema operativo. *Nuevo: El proceso recin fue creado y todava no fue admitido por el sistema operativo.
4 de junio de 2013
18
En general los procesos que se encuentran en este estado todava no fueron cargados en la memoria principal. *Terminado: El proceso fue expulsado del grupo de procesos ejecutables, ya sea porque termin o por algn fallo, como un error de proteccin, aritmtico, etc. Los nuevos estados Nuevo y Terminado son tiles para la gestin de procesos. En este modelo los estados Espera y Listo tienen ambos colas de espera. Cuando un nuevo proceso es admitido por el sistema operativo, se sita en la cola de listos. A falta de un esquema de prioridades sta puede ser una cola FIFO. Una de las razones para implementar el estado Espera era poder hacer que los procesos se puedan mantener esperando algn suceso, por ejemplo una Entrada/Salida. Sin embargo, al ser mucho ms lentas estas operaciones, puede suceder que en nuestro modelo de cinco estados todos los procesos en memoria estn esperando en el estado Espera y que no haya ms memoria disponible para nuevos procesos. Podra conseguirse ms memoria, aunque es probable que esto slo permita procesos ms grandes y no necesariamente nuevos procesos. Adems hay un costo asociado a la memoria y de cualquier forma es probable que se llegara al mismo estado con el tiempo. Otra solucin es el intercambio. El intercambio se lleva a cabo moviendo una parte de un proceso o un proceso completo desde la memoria principal al disco, quedando en el estado Suspendido. Despus del intercambio, se puede aceptar un nuevo proceso o traer a memoria un proceso suspendido anteriormente. El problema que se presenta ahora es que puede ser que si se decide traer a memoria un proceso que est en el estado Suspendido, el mismo todava se encuentre en espera. Slo convendra traerlo cuando ya est listo para ejecutar, esto implica que ya aconteci el suceso que estaba esperando. Para tener esta diferenciacin entre procesos suspendidos, ya sean listos como en espera, se utilizan cuatro estados: Listo, Espera, suspendido y bloqueado.
TRANSICIONES (Segn Andrew S. Tanenbaum, 2003) *De ejecucin Bloqueado: al iniciar una operacin de E/S, al realizar una operacin WAIT sobre un semforo a cero (en el tema de procesos concurrentes se estudiarn los semforos). *De ejecucin Listo: por ejemplo, en un sistema de tiempo compartido, cuando el proceso que ocupa la CPU lleva demasiado tiempo ejecutndose continuamente (agota su cuanto) el sistema operativo decide que otro proceso ocupe la CPU, pasando el proceso
4 de junio de 2013
19
que ocupaba la CPU a estado listo. *De Listo en ejecucin: cuando lo requiere el planificador de la CPU (veremos el planificador de la CPU en el tema de planificacin de procesos). *De Bloqueado Listo: se dispone del recurso por el que se haba bloqueado el proceso. Por ejemplo, termina la operacin de E/S, o se produce una operacin SIGNAL sobre el semforo en que se bloque el proceso, no habiendo otros procesos bloqueados en el semforo. Obsrvese que de las cuatro transiciones de estado posibles, la nica iniciada por el proceso de usuario es el bloqueo, las otras tres son iniciadas por entidades externas al proceso.
Interpretacin de la figura: Como podemos observar en esta figura tenemos una serie de transiciones posibles entre estados de proceso, representadas a partir mediante una gama de colores. Estos colores hay que interpretarlos de forma que, el color del borde de los estados representa a dichos estados, los colores dentro de los crculos nos dicen las posibles alternativas de acceso hacia otro estado, y los colores de las flechas nos representan hacia qu estado nos dirigimos si seguimos la misma.
4 de junio de 2013
20
sincronizacin y exclusin mutua del acceso concurrente de los hilos a la memoria del proceso es responsabilidad del programador que los usa.
4 de junio de 2013
21
Solucin a la seccin crtica: Para resolver el problema de la seccin crtica es necesario utilizar algn mecanismo de sincronizacin que permita a los procesos cooperar entre ellos sin problemas. Este mecanismo debe proteger el cdigo de la seccin crtica y su funcionamiento bsico es el siguiente:
Cada proceso debe solicitar permiso para entrar en la seccin crtica, mediante algn fragmento de cdigo que se denomina de forma genrica entrada en la seccin crtica. Cuando un proceso sale de la seccin crtica debe indicarlo mediante otro fragmento de cdigo que se denomina salida de la seccin crtica. Este fragmento permitir que otros procesos entren a ejecutar el cdigo de la seccin crtica.
Cualquier solucin que se utilice para resolver este problema debe cumplir los tres requisitos siguientes:
Exclusin mutua: Si un proceso est ejecutando cdigo de la seccin crtica, ningn otro proceso lo podr hacer. Progreso: Si ningn proceso est ejecutando dentro de la seccin crtica, la decisin de qu proceso entra en la seccin se har sobre los procesos que desean entrar. Espera acotada: Debe haber un lmite en el nmero de veces que se permite que los dems procesos entren a ejecutar cdigo de la seccin crtica despus de que un proceso haya efectuado una solicitud de entrada y antes de que se conceda la suya.
Para solucionar las condiciones de competencia se implement un modelo para prohibir que dos procesos accedan al mismo recurso. El modelo en cuestin se denomina exclusin mutua Interaccin entre procesos Estos tipos de interaccin se producen dependiendo del grado o nivel de conocimiento que un proceso tiene de otro. La exclusin mutua desafortunadamente trae consigo otro gran problema, el interbloqueo, este se da cuando dos o ms procesos requieren acceso a dos o ms recursos compartidos, el problema se puede presentar en el caso que el sistema operativo asigne a cada proceso un recurso, pero dicho proceso necesite a su vez del recurso que
4 de junio de 2013
22
tiene el otro proceso (y viceversa) por lo cual ambos procesos son bloqueados a la espera de que se libere el recurso que necesita cada uno, por lo cual ambos procesos se bloquean permanentemente ya que ninguno de los dos puede terminar hasta no utilizar el recurso faltante y por este motivo el recurso ya asignado no puede ser liberado. El tercer problema es la inanicin, esta se presenta cuando un proceso permanece en estado de bloqueo permanente a la espera de un recurso que necesita, pero por algn motivo externo al proceso solicitante, este nunca logra que le sea asignado (por lo general por que dos o ms procesos se pasan mutuamente el control de dicho recurso por lo que siempre estar ocupado). Estos tres problemas se dan tambin cuando los procesos no compiten entre s por el recurso si no que por el contrario deben cooperar entre ellos (sin tener conocimiento exacto de quin es el otro y que hace) ya que son conscientes de que no son los nicos que hacen uso de este, para el caso de la exclusin mutua se debe aclarar que slo se debe hacer uso de ella en el caso que los datos compartidos deban ser modicados. Adicionalmente en la cooperacin por comparticin se debe tambin garantizar la coherencia de los datos, ya que puede darse el caso de que a pesar que cuando se modica un dato nadie ms puede modicarlo (por la exclusin mutua) hasta tanto no nalicen las instrucciones que hacen uso de este, es posible que se requiera de algn otro dato (o datos) con los cuales se trabaje en diversas partes del proceso en conjunto con el que tiene la garanta de la exclusin mutua, pero puede suceder que entre cada uso de la informacin del dato esta pueda variar, por lo tanto puede presentarse el caso de que aun habiendo exclusin mutua, el resultado de la ejecucin puede variar su comportamiento normal. Para solucionar esto se utiliza la atomicidad de las instrucciones, es decir no pueden presentarse cambios mientras un conjunto de instrucciones (declaradas como atmicas) se est ejecutando, este tipo de situaciones se presenta mucho en aplicaciones como bases de datos. Exclusin mtua El principio de exclusin mutua es un mecanismo empleado en el diseo de los sistemas operativos para evitar los problemas de competencia por recursos, se basa en denir una zona o regin crtica la cual est marcada por las instrucciones que hacen uso del recurso o recursos por el que se presenta la competencia (recurso crtico), existen diferentes mtodos de aplicacin de la exclusin mutua tanto por hardware como por software, dentro de las soluciones por software se destacan el algoritmo de Dekker y el algoritmo de Peterson, sin embargo su explicacin se deja para consulta en textos ms avanzados segn criterio del docente, aunque exhortando a hablar sobre algunos (s) de los problemas clsicos que se utilizan para ilustrar las diferentes soluciones.
4 de junio de 2013
23
Interbloqueo Este problema se presenta cuando dos o ms procesos se bloquean mutuamente a la espera de un recurso crtico y esta situacin se mantiene de manera permanente, no existen como en la exclusin mutua grandes soluciones que permitan disolver un interbloqueo, por el contrario se deben utilizar diversas tcnicas para prevenir este tipo de situaciones. Inanicin La inanicin se presenta cuando un proceso nunca lograr acceder a un recurso crtico, y por tanto no pudiendo continuar con su normal ejecucin. SEMAFOROS Los semforos se pueden utilizar para controlar el acceso a los archivos, memoria compartida, y en general cualquier otro recurso compartido. Obtener semforos Con IPC de System V, se obtienen conjuntos de semforos. Obviamente, se puede obtener un conjunto de semforos que slo contiene un semforo, pero la idea es que se puede tener una gran cantidad de semforos al crear un solo conjunto de semforos.
Destruir un semforo Hay dos maneras de deshacerse de un conjunto semforos: una es usando el comando ipcrm de UNIX. La otra manera es a travs de la llamada semctl () con los argumentos adecuados. Los semforos son muy tiles en una situacin de concurrencia. Sirven para controlar el acceso a un archivo, pero tambin a otro recurso como por ejemplo la memoria compartida. Siempre cuando se tienen mltiples procesos ejecutndose dentro de una seccin crtica de cdigo, se necesitan los semforos. Una vez ejecutado este ejemplo, se puede verificar la existencia del conjunto de semforos con el comando ipcs. (No se olviden eliminar el semforo con el comando ipcrm!)
4 de junio de 2013
24
importante de los sistemas; todos los dems (incluyendo los mdulos de acceso a disco, controladores de video, etc.), dependen directamente de l. Los procesos en Linux pueden ser divididos en tres categoras, relacionadas con la prioridad: interactivos, por lotes y de tiempo real. Los procesos Tiempo Real son manejados bien por un algoritmo FIFO o RR. Los dems procesos son despachados utilizando planificacin RR con un sistema de envejecimiento basado en crditos, donde el siguiente proceso a ejecutar es aquel que ms crditos posea. Los procesos Tiempo Real son considerados prioritarios sobre cualquier otro proceso en el sistema, por lo que sern ejecutados antes que los dems.
SCHED_OTHER: Es la planificacin clsica de UNIX. No es aplicable a tiempo real. Examina las prioridades dinmicas (calculadas como combinacin de las especificadas por el usuario y las calculadas por el sistema). Los procesos que llevan ms tiempo en el sistema van perdiendo prioridad. SCHED_FIFO: El sistema FIFO o FCFS (First to Come is First Served). Los procesos esperan en cola y se ejecutan secuencialmente. Se sigue calculando un cuanto de tiempo para el proceso, aunque normalmente no se use porque con esta planificacin no se fuerza al proceso a abandonar la CPU. Se usa en procesos de tiempo real. SCHED_RR: Round Robin o turno rotatorio. Funciona como el FIFO pero ahora cuando un proceso acaba su cuanto de tiempo (time slice) se le desaloja. El siguiente proceso se escoge de la lista de procesos con SCHED_RR o de la lista SCHED_FIFO. Son procesos en tiempo real. SCHED_YIELD: No es una poltica de planificacin, sino un modificador que afecta a las tres polticas anteriores. El proceso cede la CPU a cualquier otro que est listo. Se activa con una llamada al sistema (sched_yield ()) slo para el siguiente ciclo de planificacin.
4 de junio de 2013
25
Diferencias en el kernel El nuevo planificador ejecuta un hilo de ncleo en cada CPU. Este hilo se encarga de planificar los procesos de la cola de ejecucin de la CPU en la que se ejecuta. Se llama a este hilo por temporizador, por llamada del sistema o cuando se ha acabado la cola de ejecucin para equilibrar la carga con otras cpus. Adems, se lleva la cuenta del comportamiento del proceso, si se dedica a entrada/salida o tiene carga de CPU, pudiendo cambiar dinmicamente la poltica de planificacin y la prioridad del proceso. Policy (poltica) Esta es la poltica de planificacin que se aplicar a este proceso. Hay dos tipos de procesos en Linux, normales y de tiempo real. Los procesos de tiempo real tienen una prioridad ms alta que los otros. Si hay un proceso de tiempo real listo para ejecutarse, siempre se ejecutar primero. Los procesos de tiempo real pueden tener dos tipos de polticas: RR (en crculo) y FIFO. En la planificacin RR, cada proceso de tiempo real ejecutable se ejecuta por turnos, y en la planificacin FIFO cada proceso ejecutable se ejecuta en el orden en el que est en la cola de ejecucin y el orden no se cambia nunca. Priority (prioridad) Esta es la prioridad esttica que el planificador dar a este proceso. Tambin es la cantidad de tiempo (en jiffies) que se permitir ejecutar a este proceso una vez que sea su turno de ejecucin. Se puede cambiar la prioridad de un proceso mediante una llamada de sistema y la orden renice. Rt_priority (prioridad de tiempo real) Linux soporta procesos de tiempo real y estos tienen una prioridad ms alta que todos los otros procesos en el sistema que no es de tiempo real. Este campo permite al planificador darle a cada proceso de tiempo real una prioridad relativa. La prioridad del proceso de tiempo real se puede alterar mediante llamadas de sistema.
4 de junio de 2013
26
La gestin de memoria en Linux tiene dos componentes. Primero, el sistema de gestin de memoria fsica, que se encarga de asignar y liberar pginas, grupos de pginas y bloques pequeos de memoria. El segundo componente maneja la memoria virtual, que es memoria que tiene una correspondencia con el espacio de direcciones de procesos de ejecucin.
4 de junio de 2013
27
se utiliza la memoria fsica para tener cache de los datos de los dispositivos de i/o, memoria compartida y buffers de intercambio. El administrador de memoria fsica del ncleo de Linux es el asignador de pginas, es el que se encarga de asignar intervalos de pginas contiguas fsicamente si se le solicitan.. Se usan listas enlazadas individuales para registrar las regiones de memoria libre de cada tamao permitido; en Linux, el tamao ms pequeo que se puede asignar con este mecanismo es una sola pgina fsica. Existen varios subsistemas de gestin de memoria especializados que usan el asignador de pginas subyacente para administrar para administrar su propia reserva de memoria. Los subsistemas de memoria ms importantes son los de memoria virtual. Linux tambin trabaja con estas dos formas de compartir la memoria: Particiones fijas: se divide la memoria en reas contiguas, cuyo tamao puede variar pero permanece fijo mientras el sistema est activo. Particiones variables: las reas contiguas se asignan a medida que se necesitan, y se liberan cuando dejan de usarse. Zona de intercambio Permite hasta un mximo de 8 cheros, que se crean con un tamao jo que no cambia durante su uso. Es ms eciente usar una particin que un archivo. No es necesario que haya correspondencia entre bloque de archivo y bloques de disco (ahorra la E/S de disco por lectura de bloques indirectos). Las escrituras fsicas pueden ser de cualquier tamao, no tienen que ser del bloque de archivo entero. Una pgina siempre se escribe contigua en el disco, en un archivo de paginacin podra o no quedar contigua. La asignacin del hueco de intercambio se hace cuando se necesita Los segmentos de texto se paginan desde su archivo en disco, no se les asigna hueco en la zona de intercambio.
4 de junio de 2013
28
Para cada particin/archivo de paginacin hay un mapa de bits para controlar los huecos asignados/libres. A las particiones/cheros se les puede asignar un valor de prioridad, a las particiones se les asigna mayor prioridad. Cuando se necesita asignar un hueco a una pgina, se escoge la particin/archivo de ms alta prioridad y con un hueco disponible.
4 de junio de 2013
29
Esquema de paginacin de tres niveles Se tienen los siguientes tipos de tablas: Directorio global: cada proceso tiene slo uno que ha de estar en memoria, y su tamao es de una pgina. Cada entrada apunta a un directorio intermedio de pginas (tabla intermedia de pginas). Directorio intermedio de pginas: que puede ocupar varias pginas. Cada entrada seala a una pgina de la tabla de pginas nal. Tabla de pginas: que puede ocupar varias pginas. Cada una de sus entradas hace referencia a la pgina virtual requerida.
Cada direccin virtual se divide en 4 campos: Directorio: 1er campo, para consultar el directorio global Intermedio: 2campo, para consultar el directorio intermedio de pginas Pgina: 3campo, para acceder a la tabla de pginas Desplazamiento dentro de la pgina seleccionada, 4campo
4 de junio de 2013
30
Con el paginado se logra eliminar el problema de la fragmentacin externa, ya que mientras haya marcos libres suficientes se puede cumplir con cualquier pedido de asignacin de memoria. Sigue habiendo fragmentacin interna, aunque sea pequea, porque la memoria debe asignarse en cantidades enteras de pginas. Hasta ahora se partamos de la base de que un programa tena que residir completamente en memoria. Con el paginado, slo sera necesario que resida en memoria la pgina que contiene la instruccin que se est ejecutando. Si aplicamos el principio de localidad, es decir que en un programa las referencias a memoria tienden a estar agrupadas, las pginas tenderan a ser unas pocas a la vez. Esto implica que la cantidad de memoria fsica necesaria sera mucho menor a la que ocuparan todos los programas juntos. Esto se implementa mediante un bit en la tabla de pginas que indica si la pgina est presente en memoria o no. Si est presente, el acceso contina como en el caso del paginado normal. Si no est, se genera lo que se conoce como fallo de pgina. En este caso, para que el proceso pueda continuar, se debe traer la pgina desde el disco a la memoria. Mientras esto ocurre, el proceso no puede continuar y deja de utilizar la CPU. Cuando el marco es ubicado en memoria, se actualiza la tabla de pginas y se re arranca el proceso desde donde se produjo el fallo de pgina. El precio que se paga por esto es que el acceso demora mucho ms que si la pgina hubiera estado en memoria., por el tiempo de acceso al disco. Para poder resolver un fallo de pgina, tiene que haber un marco libre para ubicar la nueva pgina. Cuando no hay ningn marco libre sucede el caso, mediante algn criterio que vara de acuerdo al sistema de que se trate, se selecciona una pgina y se la elimina de la memoria fsica para hacer lugar para la nueva pgina. Para que el contenido de la pgina eliminada no se pierda, se la graba en un archivo especial llamado archivo de intercambio.
4 de junio de 2013
31
Ya que una pgina puede estar tanto en memoria real o en el archivo de intercambio, la cantidad total de memoria utilizable por los procesos es la suma de ambas. Tabla de pginas en Linux Linux supone que hay tres niveles de tablas de pginas: El directorio de tablas de pginas (punteros a tablas intermedias). La tabla de pginas intermedia (punteros a tablas de pginas). Las tablas de pginas (punteros a pginas).
Cada plataforma sobre la que funciona Linux tiene que proporcionar los marcos que permitan al ncleo atravesar las tablas de pgina de cada proceso. De esta forma, el ncleo no necesita conocer el formato de las entradas de la tabla de pginas ni cmo stas se organizan. Esto es tan til que Linux utiliza el mismo cdigo de gestin de tablas de pginas en un procesador Alpha, que tiene tres niveles de tablas de pginas, que en un Intel x86, que slo tiene dos niveles de tablas (para ello, supone que el tamao de la tabla intermedia es 1, y por tanto, coincide con la entrada del directorio).
Asignacin de pginas Linux utiliza el algoritmo Buddy para asignar y liberar eficientemente bloques de pginas. El cdigo de asignacin intenta asignar un bloque de una o ms pginas fsicas. Las pginas
4 de junio de 2013
32
se asignan en bloques de tamao potencia de 2. Esto quiere decir que pueden asignar bloques de 1, 2, 4, etc. pginas. El algoritmo de asignacin busca primero entre los bloques de pginas de igual tamao que el pedido. Luego sigue la lista de pginas libres que est encolada. Si no encuentra ningn bloque de pginas del tamao pedido libre, entonces busca en los siguientes (los cuales son del doble del tamao pedido). Puesto que el nmero de pginas de cada bloque es potencia de 2, simplemente dividiendo el bloque por la mitad se obtienen dos bloques con un tamao de bloque inmediatamente inferior. Cache de pginas Linux El cometido de la cache de pginas en Linux es el de acelerar el acceso a los ficheros de disco. Las lecturas sobre los ficheros proyectados en memoria se realizan pgina a pgina y estas pginas se guardan en la cache de pginas. Siempre que se lee en una pgina de un fichero proyectado en memoria, por ejemplo cuando se necesita traer a memoria una pgina desde un fichero de intercambio, la pgina se lee a travs de la cache de pginas. Linux asigna una pgina fsica y lee la pgina desde el fichero del disco. Si es posible, Linux comenzar una lectura de la siguiente pgina del fichero. Con esta pgina de adelanto se consigue que si el proceso est accediendo las pginas de forma secuencial, la siguiente pgina est lista y esperando en memoria la peticin del proceso. Con el tiempo, la cache de pginas va creciendo conforme las imgenes se leen y ejecutan. Las pginas han de ser eliminadas de la cache cuando dejan de utilizarse. Conforme Linux utiliza memoria puede comenzar a escasear las pginas de memoria fsica. En esta situacin Linux reducir el tamao de la cache de pginas.
Segmentacin en Linux: Linux no aprovecha la segmentacin. Sin embargo, no puede desactivarla, la utiliza de una forma muy limitada. Se ha preferido la paginacin sobre la segmentacin porque la
4 de junio de 2013
33
gestin de memoria es ms simple, y uno de los objetivos de Linux es la portabilidad: muchos procesadores soportan malamente la segmentacin, as que la independencia de la plataforma se vera disminuida en Linux. Linux gestiona la memoria central y las tablas de pginas utilizadas para convertir las direcciones lineales (virtuales) en direcciones fsicas. Implementa una gestin de la memoria ampliamente independiente de la plataforma sobre la que se ejecuta. Este modelo no siempre se corresponde con el de la plataforma sobre el cual se ejecuta). Est sumamente extenso el modelo de paginacin en Linux que se hace imposible de abordar.
El demonio de paginacin tambin se puede activar si se necesitan marcos libres y no hay sucientes. Demonio de paginacin: Su cdigo consiste en un ciclo que se ejecuta hasta 6 veces, con urgencia creciente, Invoca a tres procedimientos que se encargan de recuperar diferentes tipos de pginas.
4 de junio de 2013
34
El valor de urgencia se pasa como parmetro, para que el procedimiento sepa cunto debe esforzarse por recuperar pginas. El efecto de este algoritmo es que primero se toman las pginas fciles de cada categora para despus ir tras las difciles. Cuando se han recuperado sucientes pginas se duerme otra vez. Los procedimientos para recuperar marcos: 1er Procedimiento. Trata de recuperar pginas del cach de paginacin y del cach de buffer a los que no se haya hecho referencia ltimamente. 2Procedimiento. Busca pginas compartidas que al parecer ninguno de los usuarios est utilizando mucho. 3Procedimiento. Intenta recuperar pginas de usuarios ordinarias. Tercer procedimiento para recuperar pginas de usuario: Primero se ejecuta un ciclo que abarca todos los procesos y determina cul es el que ms pginas tiene en memoria. Una vez localizado ese proceso se examinan todas sus pginas en orden por direccin virtual, partiendo del punto donde se qued por ltima vez el procedimiento. Paginacin por Demanda Puesto que hay mucho menos memoria fsica que memoria virtual, Linux ha de tener especial cuidado de no hacer un mal uso de la memoria fsica. Una forma de conservar memoria fsica es cargar slo las pginas que estn siendo utilizadas por un programa. En este caso no es necesario cargar en memoria toda la base de datos, sino slo aquellos registros que son examinados. Si la consulta consiste en realizar una bsqueda, entonces no tiene sentido cargar el fragmento de programa que se ocupa de aadir nuevos registros. Esta tcnica de cargar slo pginas virtuales en memoria conforme son accedidas es conocida como Paginacin por demanda. Linux utiliza la paginacin por demanda para cargar imgenes ejecutables en la memoria virtual de un proceso. Siempre que se ejecuta un proceso, se abre el fichero que la contiene y su contenido se asocia en la memoria virtual del proceso. Esto se hace modificando las estructuras de datos que describen el mapa de memoria del proceso y se conoce como asociacin de memoria. Sin embargo, slo la primera parte de la imagen se copia realmente en memoria fsica, el resto de la imagen se deja en disco. Conforme se va
4 de junio de 2013
35
ejecutando, se generan fallos de pgina y Linux utiliza el mapa de memoria del proceso para determinar qu partes de la imagen ha de traer a memoria para ser ejecutadas. Liberacin de pginas Asignar bloques de pginas tiende a fragmentar la memoria al dividir los bloques grandes para conseguir bloques ms pequeos. El cdigo de liberacin de pginas recombina pginas en bloques de mayor tamao siempre que es posible. De hecho, el tamao de bloque de pgina es importante pues facilita la recombinacin en bloques grandes. Siempre que se libera un bloque de pginas, se comprueba si est libre el bloque adyacente de igual tamao. Si es as, se combina con el bloque de pginas recin liberado para formar un bloque nuevo de tamao doble. Cada vez que dos bloques de pginas se recombinan en uno mayor, el algoritmo de liberacin intenta volver a recombinarlo en otro an mayor. De esta forma, los bloques de pginas libres son tan grandes como la utilizacin de la memoria permita. Intercambiando y liberando pginas en Linux Cuando queda poca memoria fsica, el subsistema de gestin de memoria de Linux tiene que intentar liberar pginas fsicas. Este trabajo es realizado por el demonio de intercambio del ncleo (kswapd). El demonio de intercambio del ncleo es un tipo especial de proceso, un hilo de ejecucin del ncleo. Los hilos del ncleo son procesos que no tienen memoria virtual, en lugar de ello, se ejecutan en modo ncleo en el espacio de memoria fsica. Su misin es la de garantizar que haya suficientes pginas libres en el sistema para mantener al sistema de gestin de memoria funcionando eficientemente. Linux no quiere enviar a disco de intercambio demasiadas pginas a la vez, por lo lleva la cuenta de cuantas pginas estn en ese momento siendo copiadas al fichero de intercambio. Si hay suficientes pginas libres, el demonio de intercambio se duerme hasta que el temporizador expire, en caso contrario, el demonio intenta de tres formas distintas reducir el nmero de pginas fsicas ocupadas: Reduciendo el tamao de la cache de pginas y el buffer cache. Enviando a disco pginas compartidas. Enviando a disco o descartando pginas.
Si el nmero de pginas libres ha cado demasiado, el demonio de intercambio intentar liberar 6 pginas antes de su prxima ejecucin. En caso contrario, intentar liberar 3 pginas. Los mtodos anteriores se intentan uno tras otro de hasta que se consiguen
4 de junio de 2013
36
liberar suficientes pginas. Luego el demonio de intercambio se suspende hasta que el temporizador vuelva a expirar. El demonio recuerda cul fue el ltimo mtodo que emple para liberar pginas, y la prxima vez que se ejecuta lo vuelve a intentar con el mismo mtodo que tuvo xito.
4 de junio de 2013
37
4 de junio de 2013
38
4 de junio de 2013
39
Kernel interfaces Los manejadores de dispositivos deben proporcionar una interfaz estndar al kernel de Linux o al subsistema del que ellos son parte. Kernel mecanismos y servicios Los manejadores de dispositivo hacen uso del estndar de los servicios del kernel como la asignacin de memoria, interrupciones y colas de la espera para operar. Cargable La mayora de los controladores de dispositivo pueden ser cargados cuando se necesiten (segn la demanda) como los mdulos del kernel cuando se necesitan y se descargan cuando ellos ya no estn usndose. Esto hace al kernel muy adaptable y eficaz con los recursos del sistema. Configurable Los controladores de dispositivos de Linux pueden construirse en el kernel. Los dispositivos construidos se configuraran cuando el kernel es compilado. Dinmico Como el sector de arranque del sistema y cada controlador de dispositivo es inicializado se buscan los dispositivos del hardware que este est controlando. No le importa si el dispositivo empez controlndose por un manejador de dispositivo particular que no existe. En este caso el manejador de dispositivo es absolutamente redundante y no causa ningn dao aparte de ocupar un poco de la memoria del sistema. Interrupciones Cada vez que el dispositivo se da una orden, por ejemplo mover el cabezal de lectura de sector 42 del disco'' el controlador de dispositivo tiene la opcin de decidir la forma en que se entera de que el comando se ha completado. Los controladores de dispositivo pueden sondear el dispositivo o pueden utilizar las interrupciones. Sondeo del dispositivo por lo general significa leer su estado de registro de vez en cuando hasta que los cambios de estado del dispositivo para indicar que se ha completado la solicitud. Como un controlador de dispositivo es parte del ncleo sera desastroso si un conductor era para sondear como nada ms en el ncleo del sistema permite ejecutar hasta que el dispositivo se haba completado la solicitud. En lugar de los controladores de dispositivos de votacin usar temporizadores del sistema para tener el ncleo llamar a una rutina dentro del controlador de dispositivo en un momento posterior.
4 de junio de 2013
40
Un controlador de dispositivo impulsado por interrupcin es aquel en el que el dispositivo de hardware que se controla elevar una alarma cada vez que necesita ser reparado. El kernel de Linux debe ser capaz de entregar la interrupcin del dispositivo de hardware para el controlador de dispositivo correcto. Esto se consigue por el controlador de dispositivo de registro de su uso de la interrupcin con el ncleo. Se registra la direccin de una rutina de tratamiento de interrupcin y el nmero de interrupcin que desea poseer. Se puede ver que las interrupciones estn siendo utilizadas por los controladores de dispositivo, as como el nmero de cada tipo de interrupciones que ha habido. Este inters de los recursos de interrupcin se realiza en el momento de la inicializacin del controlador. Algunas de las interrupciones en el sistema son fijas. Cmo se entrega una interrupcin a la CPU? En s es dependiente de la arquitectura, pero en la mayora de las arquitecturas de la entrega de la interrupcin en un modo especial que para otras interrupciones que ocurran en el sistema. Un controlador de dispositivo debe hacer lo menos posible en su rutina de manejo de interrupciones para que el kernel Linux pueda descartar la alarma y volver a lo que estaba haciendo antes de que se interrumpiera. Los controladores de dispositivos que se necesitan para hacer un montn de trabajo como resultado de recibir una interrupcin pueden usar los controladores de medio fondo del ncleo o colas de tareas para las rutinas de cola que se llamarn ms tarde. Acceso directo a memoria (DMA) Utilizando los controladores de dispositivos impulsados interrumpe la transferencia de datos hacia o desde dispositivos de hardware funciona bien cuando la cantidad de datos es razonablemente bajo. Si la latencia de interrupcin, la cantidad de tiempo que se necesita entre el dispositivo de hardware eleva la interrupcin y la rutina de manejo de interrupciones del controlador de dispositivo que se llama, es baja (digamos 2 milisegundos), entonces el impacto global del sistema de la transferencia de datos es muy bajo. Para los dispositivos de alta velocidad, tales como controladores de disco duro o dispositivos Ethernet la velocidad de transferencia de datos es mucho ms alto. Acceso directo a memoria o DMA, se invent para resolver este problema. Un controlador de DMA permite que los dispositivos para transferir datos hacia o desde la memoria del sistema sin la intervencin del procesador. Cada canal de DMA ha asociado un registro de direccin de 16 bits y un nmero de registro de 16 bits. Para iniciar la transferencia de una base de datos del controlador de dispositivo configura la direccin del canal de DMA y el
4 de junio de 2013
41
recuento de registros, junto con la direccin de la transferencia de datos, leer o escribir. A continuacin, se le indica al dispositivo que puede iniciar la DMA cuando se desea. Cuando se complete la transferencia de las interrupciones del dispositivo al PC. Mientras que la transferencia tiene lugar la CPU est libre para hacer otras cosas. Los controladores de dispositivos tienen que tener cuidado al usar DMA. En primer lugar el controlador de DMA no sabe nada de la memoria virtual, que slo tiene acceso a la memoria fsica en el sistema. Sin embargo, puede bloquear pginas fsicas del proceso en memoria, evitando que sean cambiados al dispositivo de intercambio durante una operacin de DMA. En segundo lugar, el controlador DMA no se puede acceder a toda la memoria fsica. La direccin de registro del canal DMA representa los primeros 16 bits de la direccin DMA, los prximos 8 bits proceden del registro pgina. Esto significa que las solicitudes de DMA se limitan a la parte inferior 16 Mbytes de memoria. Canales DMA son recursos escasos, hay slo 7 de ellos, y no pueden ser compartidos entre los controladores de dispositivos. Al igual que las interrupciones, el controlador del dispositivo debe ser capaz de trabajar en el canal DMA debe utilizar. Al igual que interrumpe, algunos dispositivos tienen un canal DMA fija. A veces, el canal de DMA para un dispositivo se puede ajustar mediante puentes; un nmero de dispositivos Ethernet utilizan esta tcnica. Los dispositivos ms flexibles se les puede decir que canales DMA para el uso y, en este caso, el controlador de dispositivo slo tiene que elegir un canal DMA de uso gratuito. Linux supervisa el uso de los canales DMA utilizando un vector de estructuras de datos canal_dma (uno por canal DMA). La estructura de datos canal_dma contiene slo dos campos, un puntero a una cadena que describe el dueo del canal DMA y una bandera que indica si el canal DMA se asigna o no. Memoria Los controladores de los dispositivos tienen que ser cuidados al usar la memoria. Como ellos son parte del Kernel de Linux, ellos no pueden usar la memoria virtual. Cada tiempo un controlador del dispositivo corre, quiz cuando una interrupcin es recibida o como un fondo medio o el manipulador de cola de tarea son programados, el proceso actual puede cambiar. El controlador del dispositivo no puede confiar en un funcionamiento de un proceso particular aun cuando est funcionando en su nombre. Como el resto del Kernel, los controladores de dispositivos
4 de junio de 2013
42
usan estructuras de datos para guardar huella del dispositivo que est controlando. Estas estructuras de datos pueden ser asignadas estticamente, parte del cdigo del controlador del dispositivo, pero que podra ser malgastado mientras este hace el Kernel ms grande de lo que este necesita ser. Linux proporciona asignacin de memoria de Kernel y rutinas de des asignacin y este es el que usan los controladores de dispositivos. La memoria del Kernel es asignada en pedazos que son potencia de 2. El nmero de bytes que demanda el controlador del dispositivo es redondeado al prximo lmite de tamao de bloque. Esto hace ms fcil la des asignacin de memoria del Kernel, como los bloques libres ms pequeos pueden ser recombinados en los bloques ms grandes. Puede ser que Linux necesite hacer bastante trabajo extra cuando la memoria del Kernel es solicitada. Si la cantidad de memoria libre es baja, las paginas fsicas pueden necesitar ser desechadas o escritas al dispositivo de intercambio. Normalmente, Linux suspendera el solicitador, poniendo el proceso hacia una cola de espera hasta que all suficiente memoria fsica. No todos los controladores de dispositivo (o de hecho el cdigo del Kernel de Linux) pueden querer que esto pase y para que las rutinas de asignacin de memoria del Kernel puedan ser solicitadas para fallar si ellos no pueden asignar la memoria inmediatamente. Si el controlador del dispositivo desea DMA de la memoria asignada puede especificar tambin que la memoria DMA esta hbil. Este camino est en el Kernel de Linux que necesita entender lo que constituye la memoria hbil de DMA para este sistema, y no el controlador del dispositivo.
Linux es muy dinmico, cada vez que inicia el Kernel de Linux puede encontrarse los dispositivos fsicos diferentes y as la necesidad de controladores de dispositivos diferentes. Linux le permite incluir a controladores de dispositivos en el momento de la estructura del Kernel por va de escritura en su configuracin.
4 de junio de 2013
43
Cuando estos controladores se inicializan en el tiempo de arranque ellos no pueden descubrir ningn hardware para controlar. Pueden cargarse otros controladores como mdulos del Kernel cuando son necesitados. Tener suficiente fuerza para esta naturaleza dinmica de controladores de dispositivos, los controladores de dispositivo se registran con el Kernel como son inicializados. Linux mantiene tablas de controladores de dispositivos registrados como parte de sus interfaces con ellos. Estas tablas incluyen los indicadores a las rutinas y a la informacin que sostiene la interface con esa clase de dispositivos. Dispositivos de carcter Los dispositivos de carcter, son el ms simple de los dispositivos de Linux, como los archivos, las aplicaciones usan el sistema normal de llamada para abrirlos, leerlos, escribir en ellos y cerrarlos exactamente como si el dispositivo fuera un archivo. Esto es verdad aun cuando el dispositivo es un mdem usando por el demonio de PPP para conectar un sistema de Linux hacia una red. Cuando un dispositivo de carcter se inicializa su controlador se registra con el kernel de Linux agregando una entrada en el chrdevsvector de estructuras de datos de device_structz. El identificador del dispositivo mayor se usa como un ndice en este vector. El identificador del dispositivo mayor para un dispositivo es fijo. Cada entrada en el vector del chrdevs, es una estructura de datos de device_struct que contiene dos elementos; un indicador al nombre del controlador del dispositivo registrado y un indicador a un bloque de operaciones del archivo. Este bloque de operaciones del archivo tiene direcciones de rutinas dentro del controlador del dispositivo de carcter cada una de las cuales los une con las operaciones del archivo especfico como abrir, leer, escribir y cerrar. Cuando un archivo especial de carcter que representa un dispositivo de carcter se abre el kernel para preparar las cosas para que se llamen las rutinas de las operaciones del archivo correctas del controlador del dispositivo de carcter. Simplemente como un archivo ordinario o directorio, cada dispositivo del archivo especial se representa por un inode VFS. El inode VFS para un carcter es el archivo especial, de hecho para todos los
4 de junio de 2013
44
archivos especiales de dispositivos, este contiene ambos identificadores mayores y menores para el dispositivo. Siempre que un inode VFS representa un carcter el archivo especial se crea, las operaciones del archivo se ponen por defecto a las operaciones del dispositivo de carcter. Estas son operaciones nicas del archivo, la operacin de abrir el archivo. Cuando se abre el archivo especial del carcter por una aplicacin la operacin de abrir el archivo genrico usa el identificador mayor del dispositivo como un ndice en el vector del chrdevs para recuperar las operaciones bloqueadas del archivo para este dispositivo particular. Tambin prepara la estructura de datos del archivo describiendo el archivo especial de carcter, tomando los indicadores de las operaciones del archivo del controlador del dispositivo. Despus de esto todas a las aplicaciones de las operaciones de archivo se trazarn las llamadas a las de los dispositivos de carcter puestos en las operaciones del archivo. Dispositivos de Bloque Los dispositivos de bloque tambin soportan ser accedidos como los archivos. Los mecanismos usados para mantener el correcto set de operaciones de archivo para abrir el archivo especial de bloque son muy parecidos como en los dispositivos del carcter. Linux mantiene el set de dispositivos de bloque registrados en el vector blkdevs. Los diferentes dispositivos de carcter, tienen clases de dispositivos de bloque. Los dispositivos de SCSI son de una tal clase y dispositivos de IDE son de otra. Es la clase la que se registra con el kernel de Linux y proporciona las operaciones de archivo al kernel. Los controladores de dispositivo para una clase de dispositivo de bloque proporcionan la clase de las interfaces especficas a la clase. Cada controlador de dispositivo de bloque debe proporcionar una interfaz al buffer de cache para una normal interfaz de las operaciones de archivo. Cada controlador de dispositivo de bloque rellena su entrada en el vector del blk_dev en la estructura de datos de blk_dev_struct. El ndice en este vector es, de nuevo, el nmero mayor del dispositivo. La estructura de datos de blk_dev_struct consiste en la direccin de una rutina de requerimiento y en un indicador a una lista de requerimientos de la estructura de datos, cada uno representa un requerimiento del buffer cache para que el controlador pueda leer o escribir un bloque de datos.
4 de junio de 2013
45
Figura: El Buffer Cache de los requerimientos de los Dispositivos de Bloque Cada tiempo el buffer cache desea leer o escribir un bloque de datos desde un registro de dispositivos si agrega que un requerimiento en la estructura de datos blk_dev_struct. Muestra que cada requerimiento tiene un indicador a una o ms estructura de datos del buffer_head, cada uno de los requerimientos son para leer o escribir en un bloque de datos. Las estructuras del buffer_head se cierran con llave (por el buffer cache) y puede haber un proceso esperando a que el bloque de operaciones del buffer se complete. A cada estructura del requerimiento se asigna una lista esttica. Si el requerimiento est agregndose a una lista de requerimientos vaca, la funcin de la demanda del controlador se llama para empezar el proceso en la cola de requerimientos. Por otra parte el controlador procesar cada requerimiento simplemente en la lista de los requerimientos. Una vez el controlador del dispositivo ha completado un requerimiento debe quitarlo de cada una de las estructuras del buffer_head desde la estructura de requerimientos, abrindolos y marcndolos para actualizar. Al abrirlos del buffer_head se despertar cualquier proceso que ha estado esperando inactivo para completar el bloque de operaciones. El proceso est inactivo en el buffer_head que contendr la entrada del directorio hasta que el controlador del dispositivo lo active. La estructura de datos de requerimiento es marcada como libre para que pueda usarse en otro requerimiento del bloque.
4 de junio de 2013
46
Discos Duros Los controladores de disco mantienen un mtodo ms permanente guardando los datos, mientras se crean en los platos fuentes del disco. Para escribir los datos, una cabeza diminuta magnetiza las partculas diminutas en la superficie de los platos. El dato se lee por una cabeza que puede descubrir si una partcula diminuta particular es magnetizada. Una unidad de disco consiste en uno o ms platos, cada uno esta echo de vidrio finamente pulido o de compuestos cermicos y cubierto con una capa fina de xido frrico. Las platos se atan a un eje central e hilan a una velocidad constante que puede variar entre 3000 y 10,000 RPM que depende del modelo. Compare esto a un disco flexible que slo se hila a 360 RPM. Las cabezas del read/write del disco son responsables para leer y escribir los datos y hay un par para cada plato, una cabeza para cada superficie. Las cabezas del read/write no tocan la superficie de los platos fsicamente, en cambio ellos flotan adelante un muy delgado cojn de aire. Las cabezas del read/write se mueven por la superficie de los platos por un actuador. Todas las cabezas del read/write se atan juntas, todas ellas se mueven juntas por las superficies de los platos. Cada superficie del plato es dividida en crculos estrechos, concntricos llamados huellas. La pista 0 es la pista extrema y la pista numerada ms alta es la ms cercana a la pista del eje central. Un cilindro es el juego de todas las pista con el mismo nmero. As que todas las pista 5 de cada lado de cada plato en el disco estn conocidas como cilindro 5. Como el nmero de cilindros es igual que el nmero de pista, usted ve a menudo geometras del disco descritas por lo que se refiere a los cilindros. Cada pista es dividida en los sectores. Un sector es la unidad ms pequea de datos que pueden escribirse a o pueden leerse de un disco duro y tambin es el tamao del bloque del disco. Un tamao del sector comn es 512 bytes y el tamao del sector era fijo cuando el disco fue estructurado, normalmente cuando el disco es manufacturado. Un disco normalmente se describe por su geometra, el nmero de cilindros, cabezas y sectores. Aunque los subsistemas del disco construyen las entradas del gendisk durante su inicializacin ellos slo se usan por Linux durante la comprobacin de la particin. En cambio, cada subsistema del disco mantiene su propia estructura de datos la cual le permite trazar mayor el dispositivo especial y menor nmero de dispositivos a las particiones dentro de los discos fsicos.
4 de junio de 2013
47
Dispositivos de Red Un dispositivo de red es, segn el subsistema de red de Linux, es considerado como una entidad que enva y recibe paquetes de datos. Normalmente es un dispositivo fsico tal como una tarjeta Ethernet. Algunos dispositivos de red sin embargo son solo el software tal como el dispositivo loopback, el cual es para datos remitentes a usted mismo. Los drivers del dispositivo de red registran los dispositivos que ellos controlan con Linux durante la inicializacin de la red en tiempo de ganancia del ncleo. La estructura de datos device contiene informacin sobre el dispositivo y las direcciones de funciones que permiten apoyando los diversos protocolos de red usar los servicios del dispositivo. Estas funciones se preocupan principalmente de datos transmitidos usando el dispositivo de red. El dispositivo usa la norma networking que apoya los mecanismos para pasar datos recibidos hasta la capa protocolar apropiada. Todos los datos de red transmitidos y recibidos son representados por las estructuras de datos sk_buff, estas son estructuras flexibles de datos permiten a las cabeceras protocolares de red ser fcilmente agregados y retirados. Las estructuras de datos device contienen informacin sobre el dispositivo de red: Nombre Informacin de bus Banderas de Interface Informacin del Protocolo.
4 de junio de 2013
48
Cada dispositivo describe como puede ser usado por las capas del protocolo de red: mtu El tamao del paquete ms grande que esta red puede transmitir no incluyendo ningn vnculo de cabecera de capa que se necesita agregar. Este mximo es usado por las capas protocolares. La Familia La familia indica la familia protocolar que el dispositivo puede soportar. La familia para todo dispositivo de red Linux es AF_INET, la direccin de familia Internet. Tipo El tipo de interface de hardware describe los medios que este dispositivo de red tiene adjunto. Hay muchos tipos diferentes de medios que los dispositivos de red Linux soportan. Ests incluyen Ethernet, X.25, Token Ring, Slip, PPP y Apple Localtalk. Direcciones La estructura de datos device retiene un nmero de direcciones que son relevantes a este dispositivo de red, incluyendo sus direcciones IP. La cadena de paquetes Esta es la cadena de paquetes sk_buff encadenados esperada para ser transmitida sobre este dispositivo de red, Funciones de apoyo Cada dispositivo provee un conjunto de rutinas estndar que las capas protocolares llaman como parte de su interface al vnculo de capa de este dispositivo. Estas incluyen estructurar y enmarcar rutinas transmitidas as como tambin rutinas para agregar cabeceras estndares de marco y recopilar estadsticas.
4 de junio de 2013
49
5.1 Concepto
Un sistema de archivos establece los mecanismos para acceder a los datos que contiene y permite o no el acceso a dichos datos en determinadas circunstancias y en caso de alguna inconsistencia posibilita medios para su restauracin. Existen diferentes sistemas de archivos y cada sistema operativo soporta diferentes sistemas de ficheros, algunos de ellos son los siguientes:
Ext2 el primer sistema de archivos diseado expresamente para Linux. Ext3 versin mejorada de Ext2, ampliamente utilizada en distribuciones Linux Ext4 nuevo sistema de ficheros para Linux evolucionado de Ext3
4 de junio de 2013
50
de las caractersticas de la unidad fsica subyacente. Linux soporta transparentemente muchos sistemas diferentes (por ejemplo MS-DOS y EXT2) y presenta todos los ficheros y sistemas de ficheros montados como un nico rbol virtual. Por esto, los usuarios y los procesos no necesitan generalmente saber en qu tipo de sistema de ficheros est algn fichero, tan slo lo usan. Archivo Virtual El sistema de Ficheros Virtual est implementado de forma que el acceso a los ficheros es rpido y tan eficiente como es posible. Tambin debe asegurar que los ficheros y los datos que contiene son correctos. Estos dos requisitos pueden ser incompatibles uno con el otro. El VFS de Linux mantiene una memoria intermedia con informacin de cada sistema de ficheros montado y en uso. Se debe tener mucho cuidado al actualizar correctamente el sistema de ficheros ya que los datos contenidos en esas memorias se modifican cuando se crean, escriben y borran ficheros y directorios. Si se pudieran ver las estructuras de datos del sistema de ficheros dentro del kernel en ejecucin, se podra ver los bloques de datos que se leen y escriben por el sistema de ficheros. El sistema de archivos virtual ofrece a Linux una visin homognea de un sistema de archivos con independencia del sistema de archivos real que resida en cada volumen. Linux es capaz de adaptarse a una variedad de sistemas de archivo. Lo hace mediante un Sistema de archivos virtual que sirve como interface en el sistema de archivos que hay en el volumen y el propio sistema operativo. El sistema virtual se enfrenta al sistema de
4 de junio de 2013
51
archivos que exista en el volumen ofrecindole al sistema operativo un nico formato con independencia de cul sea este sistema de archivos. VFS permite a Linux soportar muchos, incluso muy diferentes, sistemas de ficheros y cada uno presentando un interfaz software comn al VFS. Todos los detalles del sistema de ficheros de Linux son traducidos mediante software de forma que todo el sistema de ficheros parece idntico al resto del kernel de Linux y a los programas que se ejecutan en el sistema. La capa del sistema de Ficheros Virtual de Linux permite al usuario montar de forma transparente diferentes sistemas de ficheros al mismo tiempo. El VFS de Linux mantiene una memoria cache con informacin de cada sistema de ficheros montado y en uso, siempre se debe tener mucho cuidado al actualizar correctamente el sistema de ficheros ya que los datos contenidos en las ante memorias se modifican cuando se crean, escriben y borran ficheros y directorios.
Archivo real Es un objeto que contiene programas, datos o cualquier otro elemento. Un archivo se muestra de manera real, en la informacin del espacio que ocupa en un disco duro o sistema de almacenamiento, en otras palabras su tamao en bytes.
4 de junio de 2013
52
4 de junio de 2013
53
terminales; las entidades lgicas incluyen directorios y archivos normales, en los que se almacenan documentos y programas. Organizacin fsica En Linux no existen unidades fsicas, sino ficheros que hacen referencia a ellas, integrados en la estructura de ficheros como cualquier otro. El sistema de ficheros de Linux consta de varias partes importantes: Superbloque Tabla de inodos Bloques de datos
En Linux cada bloque es de 512 bytes o de mltiplos de 512. Al igual que el clster era la estrella del sistema de ficheros FAT, en ext3 es el bloque. Organizacin Lgica El ncleo del sistema trabaja con el sistema de archivos a un nivel lgico y no trata directamente con los dispositivos fsicos. Cada disco tiene asociados unos nmeros de dispositivo que son utilizados como ndices en una tabla de funciones del ncleo que determinar cul de ellas es necesario emplear para manejar el disco. El sistema de ficheros de Linux de forma lgica posee una estructura arbrea cuya raz es nica y se representa por / que adems constituye el carcter separador en el camino (Path) de cualquier recurso del sistema.
4 de junio de 2013
54
sistema de ficheros, adems mantiene la estructura del sistema de ficheros. Mantiene toda la informacin que los usuarios de Linux y procesos ven como ficheros, directorios, enlaces flexibles, informacin de proteccin de ficheros y as. Los tipos de acceso ms conocidos son: Acceso Secuencial: el proceso lee en orden todos los registros del archivo comenzando por el principio, sin poder: Saltar registros. Acceso Aleatorio: el proceso puede leer los registros en cualquier orden utilizando dos mtodos para determinar el punto de inicio de la lectura: Cada operacin de lectura da la posicin en el archivo con la cual iniciar. Una operacin especial (seek) establece la posicin de trabajo pudiendo luego leerse el archivo secuencialmente.
4 de junio de 2013
55
Asignacin ligada o encadenada. Cada archivo es una lista ligada de blocks y el directorio contiene un apuntador al primer bloc y al ltimo. La asignacin se hace con bloques individuales, cada bloque contendr un puntero al siguiente bloque de la cadena. La tabla de asignacin de archivos necesita una sola entrada por cada archivo que muestre el bloque de comienzo y la longitud del mismo, cualquier bloque puede aadirse a la cadena. No hay que preocuparse por la fragmentacin externa porque solo se necesita un bloque cada vez.
Asignacin Indexada. Cada archivo tiene su propio bloc de ndice el cual es un arreglo de direcciones de bloc. En esta asignacin la tabla de asignacin de archivos contiene un ndice separado de un nivel para cada archivo: el ndice posee una entrada para cada seccin asignada al archivo. Normalmente, los ndices no estn almacenados fsicamente como parte de la tabla de asignacin de archivos. Ms exactamente el ndice de archivo se guardara en un bloque aparte y la entrada del archivo en la entrada de asignacin apuntara a dicho bloque.
Al espacio de memoria secundaria que guarda datos que aparentan estar en memoria principal se le llama espacio de trasiego o intercambio, en el caso de GNU/Linux, espacio swap. El uso de memoria secundaria en Linux: Permite que la cantidad de espacio dedicado a los procesos no est limitado por la cantidad de memoria principal instalada. Es posible tener cargados ms procesos y es posible cargar procesos ms grandes. Reduce la velocidad de ejecucin. Cuando se ejecutan procesos que corren en memoria secundaria no se puede igualar la velocidad de proceso que se conseguira si se utilizase memoria principal.
Linux debe gestionar la traduccin de direcciones entre el espacio de memoria virtual y fsico. Para este fin Linux se apoya en hardware especfico como la MMU (unidad de gestin de memoria, normalmente integrada en la CPU).
4 de junio de 2013
56
modelo de seguridad dependiente de la forma en que se almacenan los ficheros en los dispositivos. Un sistema de archivos puede verse desde dos categoras lgicas de ficheros: Archivos compartidos con otras mquinas o privados. Archivos variables o estticos. Por lo tanto, un sistema de archivos es un subrbol de directorios con un directorio raz que debe tener unos permisos acordes con las necesidades de acceso a sus archivos, una estructura lgica de almacenamiento y un punto de montaje adecuado en el rbol de directorios global del servidor. Linux Proporciona un espacio de nombres global y jerrquico para los ficheros, directorios y otros objetos relacionados con los ficheros. Adems, proporciona las funciones del sistema de ficheros. Al abrir un archivo Linux: Busca en su directorio el nombre del archivo. Extrae los atributos y direcciones en disco. Graba esta informacin en una tabla de memoria real. Todas las referencias subsecuentes al archivo utilizarn la informacin de la memoria principal.
4 de junio de 2013
57
de archivo de Linux. Recuperacin de archivo despus de fallo en la alimentacin de corriente, fallo del sistema, infeccin de virus o reforma de particin, hasta para el sistema de archivo diferente. La creacin de la imagen archiva un disco entero, particin o su parte. Tal imagen de unidad de disco puede ser tratada como la unidad de disco regular. Los archivos recuperados pueden ser ahorrados en cualquier disco accesible por el sistema operativo de servidor. La Recuperacin Rpida LINUX es el software de recuperacin de datos LINUX no destructivo. Hay slo tres pasos para realizar la operacin completa. Ellos son el Anlisis, Seleccionar y Ahorrar. El Software de Recuperacin de Datos de Linux usa el algoritmo rpido para buscar y restaurar particiones perdidas, borradas, archivos y carpetas y de ah es el software de recuperacin de datos Linux rpido, simple y fcil de usar, que le ayuda a recuperar sus datos perdidos y archivos en el protocolo en caso de fallo del sistema de disco o desastres de prdida de datos y de ah apoya su continuidad comercial. Los datos son recuperados entonces dentro de una materia de horas, comparadas a una recuperacin de datos tpica puede tomar dos das hasta cinco das. La Recuperacin de Datos de la recuperacin de datos remota afirma que esto es la primera compaa para ofrecer la recuperacin remota de datos para el sistema operativo Linux. Muchos usuarios dan vuelta a cintas de reserva para recuperar ficheros de datos perdidos. Lamentablemente, la capacidad de restaurar datos perdidos est directamente relacionada con la vez pasada que el sistema fue hecho una copia de seguridad y la calidad de aquel proceso. La Recuperacin de Datos de Linux es la tarea difcil y requiere una maestra y profesional talentoso a fin de recuperar los datos.
4 de junio de 2013
58
Proteccin y seguridad
6.1 concepto proteccin y objetivos de
Ante todo Linux es un sistema multiusuario real. Puede haber varios usuarios distintos trabajando a la vez cada uno desde su terminal. El sistema tiene la obligacin de proteger a unos usuarios frente a otros y protegerse a s mismo. Linux es una excelente estacin de trabajo aislada, pero lo habitual es que cada mquina Linux est conectada a una red y adems est prestando servicios de red. El sistema tiene la obligacin de garantizar los servicios que presta. Adems, con la generalizacin de las conexiones con Internet y el rpido desarrollo del software, la seguridad se est convirtiendo en una cuestin cada vez ms importante. Ahora, la seguridad es un requisito bsico, ya que la red global es insegura por definicin. Mientras sus datos estn almacenados en un soporte informtico, mientras sus datos vayan desde un sistema X a otro sistema Y a travs de un medio fsico, Internet, por ejemplo, puede pasar por ciertos puntos durante el camino proporcionando a otros usuarios la posibilidad de interceptarlos, e incluso alterar la informacin contenida. Incluso algn usuario de su sistema puede modificar datos de forma maliciosa para hacer algo que nos pueda resultar perjudicial. Con el acceso masivo y barato a Internet se han reducido notablemente los costes de un atacante para asaltar un sistema en red, a la vez que ha aumentado paralelamente el nmero de potenciales atacantes. Tambin queremos remarcar el carcter dinmico de la seguridad de los sistemas en red. Continuamente aparecen nuevos mtodos para conseguir accesos indebidos o comprometer el correcto funcionamiento de la red. Esto obliga a estar actualizado permanentemente, y consultar las publicaciones electrnicas que informan de los ltimos
4 de junio de 2013
59
sucesos detectados. Evidentemente, estas publicaciones informan principalmente sobre actividades que ya se han llevado a cabo, por lo que esperamos que no sea el primero en sufrirlas. Pero tambin se puede encontrar informacin sobre debilidades detectadas antes de que se lleven a cabo. Por todo esto, este curso no pretende proporcionar una lista actualizada de programas o servicios potencialmente inseguros o de programas que afectan a la seguridad. Como continuamente aparecen nuevos programas para comprometer la seguridad de las redes y de las comunicaciones, lo que s haremos ser indicar los lugares ms habituales donde buscar una informacin actualizada de ese tipo, y algunos mtodos generales para prevenir que esos programas tengan xito en su sistema.
Un arranque seguro Posibilidad de bloquear las terminales Por supuesto, las capacidades de un sistema multiusuario real.
4 de junio de 2013
60
Seguridad en el arranque Cuando alguien inicia el sistema operativo Linux se encuentra con una pantalla de login: el sistema est pidiendo que se identifique. Si es un usuario conocido, podr iniciar una sesin y trabajar con el sistema. Si no lo es, no tendr opcin de hacer absolutamente nada. Adems, el sistema registra todos los intentos de acceso (fallidos o no), por lo que no pasarn desapercibidos intentos repetidos de acceso no autorizado. LILO (Linux Loader) es el encargado de cargar el sistema operativo en memoria y pasarle informacin para su inicio Y ahora algunas consideraciones generales:
Tenga en cuenta que ningn sistema es realmente seguro si alguien, con los conocimientos necesarios, puede usar su propio disco para arrancar. Si tiene una mquina servidora, y tiene una clave para el arranque, la mquina no se reiniciar sin suministrar la clave y tendr que acudir a introducirla en el caso de una parada no prevista. Bloqueo de la consola En los entornos Unix es conocido el truco de ejecutar en una terminal, que alguien ha dejado inocentemente abierto, un guion que simule la pantalla de presentacin al sistema. Entonces un usuario incauto introducir su nombre y clave, que quedarn a merced del autor del engao. Si se aleja de su mquina de vez en cuando, estara bien poder bloquear su consola para que nadie pueda manipularla o mirar su trabajo. Dos programas que hacen esto son xlock y vlock. xlock bloquea la pantalla cuando nos encontramos en modo grfico. Est incluido en la mayora de las distribuciones Linux que soportan X. En general puede ejecutar xlock desde cualquier xterm de su consola y bloquear la pantalla de forma que necesitar su clave para desbloquearla. Mire la pgina de manual para ver ms detalles, algunos curiosos. vlock es un simple programa que le permite cerrar alguna o todas las consolas virtuales de su mquina Linux. Puede bloquear slo aqulla en la que est trabajando o todas. Si slo cierra una, las otras se pueden abrir y utilizar la consola, pero no se podr usar su vty hasta que no la desbloquee. Desde luego, bloquear una consola prevendr que alguien manipule su trabajo, pero no previene de reinicios de la mquina u otras formas de deteriorar su trabajo.
4 de junio de 2013
61
Cuentas de usuario, grupos Cada usuario pertenece a uno o varios grupos y cada recurso pertenecen a un usuario y un grupo. Los permisos para un recurso se pueden asignar al propietario, al grupo y a otros (resto de los usuarios). Ahora bien, para mantener un sistema seguro, pero funcional, tendremos que realizar las combinaciones necesarias entre el propietario y grupo de un recurso con los permisos de los propietarios, grupos y otros. Por ejemplo, la unidad de disco flexible tiene las siguientes caractersticas:
Propietario: root con permiso de lectura y escritura. Grupo: floppy con permiso de lectura y escritura. Otros: resto de los usuario con permiso de lectura.
El administrador tiene que conocer las necesidades de cada uno de sus usuarios y asignarle los mnimos privilegios para que pueda realizar su trabajo sin resultar un peligro para otros usuarios o el sistema. Ms abajo veremos otro mecanismo para poder utilizar un recurso sobre el cual no tenemos privilegios. No se asuste. Los valores que traen por defecto las distribuciones de Linux son suficientes para mantener el sistema seguro. Otro peligro potencial para el sistema es mantener cuentas abiertas que se han dejado de utilizar. Estas cuentas pueden constituir un buen refugio para un potencial atacante y pasar desapercibidas sus acciones. Seguridad de las claves La seguridad de una sola cuenta puede comprometer la seguridad de todo el sistema. Esto es una realidad ante la que debemos protegernos. Por un lado tenemos que asegurarnos de que nuestros usuarios utilizan claves slidas:
No deben ser una palabra conocida. Deberan contener letras, nmeros y caracteres especiales. Deben ser fciles de recordar y difciles de adivinar.
Para comprobar que este requisito se verifica en nuestro sistema, podemos usar los mismos mecanismos que utilizan los atacantes. Existen varios programas que van probando varias palabras de diccionario, claves habituales y combinaciones de caracteres, que son cifrados con el mismo algoritmo que usa el sistema para mantener sus claves;
4 de junio de 2013
62
despus son comparadas con el valor de la clave cifrada que queremos averiguar hasta que el valor obtenido de un cifrado coincide con una clave cifrada. Posteriormente notificaremos al usuario que su clave es dbil y le solicitaremos que la modifique. Usando este mecanismo, al menos podemos garantizar que no estaremos en inferioridad de condiciones con respecto a los atacantes locales. Seguridad del ncleo Linux tiene la gran ventaja de tener disponible el cdigo fuente del ncleo; en realidad Linux propiamente dicho es slo el ncleo. Esto nos permite la posibilidad de crear ncleos a medida de nuestras necesidades. Y parte de nuestras necesidades ser la mejora de la seguridad. Para compilar el ncleo primero tendremos que configurar las opciones que nos interesen. Las fuentes del ncleo se guardan habitualmente en el directorio correspondiente, y una vez situados en l, tendremos que ejecutar, si estamos en modo grfico. As nos aparecen todas las opciones de configuracin. Dentro de ellas nos vamos a fijar en las que estn relacionadas con la seguridad, viendo una breve explicacin de lo que hacen y cmo se usan. Como el ncleo controla las caractersticas de red de su sistema, es importante que el ncleo tenga las opciones que garanticen la seguridad y que el propio ncleo no pueda ser comprometido. Para prevenir algunos de los ltimos ataques de red, debe intentar mantener una versin del ncleo actualizada. Una de las caractersticas ms interesantes del ncleo Linux es la posibilidad de realizar enmascaramiento de direcciones. Con esta tcnica podremos dar acceso a Internet a una red local con direcciones privadas de forma transparente, es decir, sin ningn tipo de modificacin en la configuracin de las aplicaciones clientes, a diferencia de los proxies clsicos. Dispositivos del ncleo Hay algunos dispositivos de bloque y carcter disponibles en Linux que tambin le resultarn tiles para mantener la seguridad de sus sistemas.
4 de junio de 2013
63
Comunicaciones seguras Por ltimo, nos interesar mantener unas comunicaciones seguras para garantizar la privacidad e integridad de la informacin. Actualmente existen las herramientas necesarias para cada necesidad.
6.3
La mayor parte de las entradas de la matriz estn vacas. Tabla global Consiste en un conjunto de tripletas ordenadas: Si no existe, se genera error. Desventajas: La tabla es grande, por lo tanto no puede estar en memoria principal. Adems hay informacin repetida, ya que si todos los dominios usan de la misma forma un mismo objeto, debo tener una entrada de la tabla para cada dominio. En este caso se puede implementar un conjunto de derechos por omisin, que contiene todo los objetos a los que puedo acceder desde cualquier dominio. Lista de capacidades para dominios es igual que en el caso anterior, pero para los dominios. Cada dominio tiene una lista de capacidades (objetos y operaciones). El usuario puede acceder a estas listas indirectamente, ya que estn protegidas por el sistema. Proteccin de capacidades. Cada objeto tiene una etiqueta para denotar su tipo (puntero, booleano, valor no inicializado). No son directamente accesibles al usuario. El espacio de direcciones de un programa se puede dividir: Una parte accesible con datos e instrucciones normales. Otra parte con la lista de capacidades accesibles. Un mecanismo de cerradura y llave Es un trmino medio entre las dos listas (capacidades y acceso). Cada objeto tiene una lista de patrones de bit llamada cerradura, y cada dominio tiene otra llamada llave. Para que un proceso que se ejecuta en un dominio pueda acceder a un objeto, el dominio debe tener la llave adecuada. Comparacin Cuando un usuario crea un objeto, establece sus derechos, pero es difcil determinar el conjunto de derechos para cada dominio. Las listas de capacidades son tiles para localizar informacin de un proceso en particular pero no se corresponden con las necesidades del usuario. El mecanismo de cerradura y llave, es un trmino medio.
4 de junio de 2013
64
Puede ser eficaz y flexible, dependiendo de la longitud de las llaves, y los privilegios de acceso se pueden revocar para un dominio, simplemente cambiando su llave. La mayor parte de los sistemas usa una combinacin entre listas de acceso y capacidades.
4 de junio de 2013
65
Eficiencia Se logra mayor eficiencia cuando el hardware apoya la proteccin. La especificacin de proteccin en un lenguaje de programacin permite describir en alto nivel las polticas de asignacin y uso de recursos. El programador de aplicaciones necesita un mecanismo de control de acceso seguro y dinmico para distribuir capacidades a los recursos del sistema entre los procesos de usuario. Las construcciones que permiten al programador declarar las restricciones tienen tres operaciones bsicas: Distribuir capacidades de manera segura y eficiente entre procesos clientes. Especificar el tipo de operaciones que un proceso podra invocar en un recurso asignado. Especificar el orden en que un proceso dado puede invocar las operaciones de un recurso.
4 de junio de 2013
66
Un problema ms interesante es que hacer con los intrusos. Estos tienen dos variedades. Los intrusos pasivos solo desean leer archivos que no estn autorizados a leer. Los intrusos activos son ms crueles: Desean hacer cambios no autorizados a los datos. Si se desea disear un sistema seguro contra los intrusos, es importante tener en cuenta el tipo de intruso con el que se desea tener proteccin. Algunas de las categoras comunes son: Curiosidad casual de usuarios no tcnicos. Muchas personas tienen en sus escritorios terminales para sistemas con tiempo compartido y, por la naturaleza humana, algunos de ellos leern el correo electrnico de los dems u otros archivos, si no existen barreras en frente de ellos. Por ejemplo la mayora de los sistemas UNIS tienen pre definido que todos los archivos se pueden leer de manera pblica. Conocidos husmeando. Algunos estudiantes, programadores de sistemas, operadores y dems personal tcnico consideran como un reto personal romper la seguridad del sistema de cmputo local. A menudo son muy calificados y estn dispuestos a invertir una cantidad sustancial de su tiempo en este esfuerzo. Un intento deliberado de hacer dinero. Algunos programadores en banco han intentado penetrar un sistema bancario con el fin de robarle al banco. Los esquemas han variado desde cambiar el software para truncar y no redondear el inters, para quedarse con una pequea fraccin de dinero, hasta sacar dinero de las cuentas que no se han utilizado en anos o el "correo negro. Espionaje comercias o militar. El espionaje indica un intento serio y fundamentado por parte de un competidor u otro pas para robar programas, secretos comerciales, patentes, tecnologa, diseo de circuitos, planes de comercializacin, etc. A menudo, este intento implica la cobertura de cables o el levantamiento de antenas hacia la computadora con el fin de recoger su radiacin electromagntica. Debe quedar claro que el intento por mantener la KGB lejos de los secretos militares es un poco distinto del intento por evitar que los estudiantes inserten un mensaje gracioso en el sistema. La cantidad de esfuerzo que alguien pone en la seguridad y la proteccin depende claramente de quien se piensa sea el enemigo. Otro aspecto del problema de la seguridad es la primaca: la proteccin de las personas respecto del mal uso de la informacin en contra de uno mismo. Esto implica en forma casi inmediata muchos aspectos morales y legales.
4 de junio de 2013
67
Para proteger un sistema, debemos optar las necesarias medidas de seguridad en cuatro niveles distintos: 1. Fsico. El nodo o nodos que contengan los sistemas informticos deben dotarse de medidas de seguridad fsicas frente a posibles intrusiones armadas o subrepticias por parte de potenciales intrusos. Hay que dotar de seguridad tanto a las habitaciones donde las maquinas residan como a los terminales o estaciones de trabajo que tengan acceso a dichas maquinas. 2. Humano. La autorizacin de los usuarios debe llevarse a cabo con cuidado, para garantizar que solo los usuarios apropiados tengan acceso al sistema. Sin embargo, incluso los usuarios autorizados pueden verse motivados para permitir que otros usen su acceso (por ejemplo, a cambio de un soborno). Tambin pueden ser engaados para permitir el acceso de otros, mediante tcnicas de ingeniera social. Uno de los tipos de ataque basado en las tcnicas de ingeniera social es el denominado phishing; con este tipo de ataque, un correo electrnico o pgina web de aspecto autentico llevan a engao a un usuario para que introduzca informacin confidencial. Otra tcnica comnmente utilizada es el anlisis de desperdicios, un trmino autorizado a la computadora (por ejemplo, examinando el contenido de las papeleras, localizando listines de telfonos encontrando notas con contraseas). Estos problemas de seguridad son cuestiones relacionadas con la gestin y con el personal, ms que problemas relativos a los sistemas operativos. 3. Sistema operativo. El sistema debe auto protegerse frente a los diversos fallos de seguridad accidentales o premeditados. Un problema que este fuera de control puede llegar a constituir un ataque accidental de denegacin de servicio. Asimismo, una cierta consulta a un servicio podra conducir a la revelacin de contraseas o un desbordamiento de la pila podra permitir que se iniciara un proceso no autorizado. La lista de posibles fallos es casi infinita. 4. Red. Son muchos los datos en los modernos sistemas informticos que viajen a travs de lneas arrendadas privadas, de lneas compartidas como Internet, de conexiones inalmbricas o de lneas de acceso telefnico. La interceptacin de estos datos podra ser tan daina como el acceso a un computador, y la interrupcin en la comunicacin podra constituir un ataque remoto de denegacin de servicio, disminuyendo la capacidad de uso del sistema y la confianza en el mismo por parte de los usuarios. Si queremos poder garantizar la seguridad del sistema operativo, es necesario garantizar la seguridad en los primeros dos niveles. Cualquier debilidad en uno de los niveles altos de seguridad (fsico o humano) podra puentear las medidas de seguridad que son
4 de junio de 2013
68
estrictamente de bajo nivel. As, la frase que afirma que una cadena es tan fuerte como el ms dbil de sus eslabones es especialmente cierta cuando hablamos de seguridad de los sistemas. Para poder mantener la seguridad, debemos contemplar todos estos aspectos. Adems, el sistema debe proporcionar mecanismos de proteccin para permitir la implementacin de las caractersticas de seguridad. Sin la capacidad de autorizar a los usuarios y procesos, de controlar su acceso y de registrar sus actividades, sera imposible que un sistema operativo implementara medidas de seguridad o se ejecutara de forma segura. Para soportar un esquema global de proteccin hacen falta mecanismos de proteccin hardware.
Proteccin contra desastres (como inundaciones, incendios, etc.). Proteccin contra intrusos.
En la seguridad fsica son importantes los mecanismos de deteccin, algunos ejemplos son:
La proteccin contra desastres puede ser costosa y frecuentemente no se analiza en detalle; depende en gran medida de las consecuencias de la perdida.
4 de junio de 2013
69
Se utilizan sistemas de identificacin fsica: o Tarjetas de identificacin. o Sistemas de huellas digitales. o Identificacin por medio de la voz.
Seguridad Operacional Consiste en las diferentes polticas y procedimientos implementados por la administracin de la instalacin computacional. La autorizacin determina que acceso se permite y a quien. La clasificacin divide el problema en sus problemas:
Los datos del sistema y los usuarios se dividen en clases: o A las clases se conceden diferentes derechos de acceso.
La pregunta es si se puede confiar en la gente. El tratamiento que generalmente se da al problema es la divisin de responsabilidades: o Se otorgan distintos conjuntos de responsabilidades. o No es necesario que se conozca la totalidad del sistema para cumplir con esas responsabilidades. o Para poder comprometer al sistema puede ser necesaria la cooperacin entre muchas personas: Se reduce la probabilidad de violar la seguridad. o Debe instrumentarse un gran nmero de verificaciones y balances en el sistema para ayudar a la deteccin de brechas en la seguridad. o El personal debe estar al tanto de que el sistema dispone de controles, pero: Debe desconocer cuales son esos controles: Se reduce la probabilidad de poder evitarlos. Debe producirse un efecto disuasivo respecto de posibles intentos de violar la seguridad.
4 de junio de 2013
70
Enumerar y comprender las amenazas potenciales. Definir qu grado de seguridad se desea (y cuanto se est dispuesto a gastar en seguridad). Analizar las contramedidas disponibles.
o Que sean complejas y difciles de adivinar. o Cambiarlas de vez en cuando. o Peligro de prdida del secreto.
La contrasea debe guardarse cifrada. Proteccin por Contrasea Las clases de elementos de autentificacin para establecer la identidad de una persona son: Algo sobre la persona: Ej.: huellas digitales, registro de la voz, fotografa, firma, etc. Algo posedo por la persona: o Ej.: insignias especiales, tarjetas de identificacin, llaves, etc. Algo conocido por la persona: o Ej.: contraseas, combinaciones de cerraduras, etc.
o
El esquema ms comn de autentificacin es la proteccin por contrasea: El usuario elige una palabra clave, la memoriza, la teclea para ser admitido en el sistema computarizado:
o
4 de junio de 2013
71
La proteccin por contraseas tiene ciertas desventajas si no se utilizan criterios adecuados para: Elegir las contraseas.
Comunicarlas fehacientemente en caso de que sea necesario. Destruir las contraseas luego de que han sido comunicadas. Modificarlas luego de algn tiempo.
Los usuarios tienden a elegir contraseas fciles de recordar: Nombre de un amigo, pariente, perro, gato, etc.
Estos datos podran ser conocidos por quien intente una violacin a la seguridad mediante intentos repetidos, por lo tanto debe limitarse la cantidad de intentos fallidos de acierto para el ingreso de la contrasea. La contrasea no debe ser muy corta para no facilitar la probabilidad de acierto. Tampoco debe ser muy larga para que no se dificulte su memorizacin, ya que los usuarios la anotaran por miedo a no recordarla y ello incrementara los riesgos de que trascienda. Contraseas de un solo uso Al final de cada sesin, se le pide al usuario que cambie la contrasea. Si alguien roba una contrasea, el verdadero usuario se dar cuenta cuando vaya a identificarse de nuevo, pues el impostor habr cambiado la contrasea, con lo que el fallo de seguridad queda detectado. Verificacin de Amenazas Es una tcnica segn la cual los usuarios no pueden tener acceso directo a un recurso: Solo lo tienen las rutinas del S. O. llamadas programas de vigilancia.
4 de junio de 2013
72
El usuario solicita el acceso al S. O. El S. O. niega o permite el acceso. El acceso lo hace un programa de vigilancia que luego pasa los resultados al programa del usuario. Permite: o Detectar los intentos de penetracin en el momento en que se producen. o Advertir en consecuencia.
Amenazas relacionadas con los programas Los procesos son junto con el kernel, el nico medio de realizar un trabajo til en una computadora. Por tanto, un objetivo comn de los piratas informticos consiste en escribir un programa que cree una brecha de seguridad. De hecho, las mayoras de las brechas de seguridad no relacionadas con programas tienen por objetivos crear una brecha que si este basada en un programa. CABALLO DE TROYA Definicin.- Un programa indudablemente til e inocente que contiene cdigos escondidos que permiten la modificacin no autorizada y la explotacin o destruccin de la informacin. Los programas caballo de Troya se distribuyen por lo general por Internet. Los juegos, freeware y protectores de pantalla son los medios comunes que utilizan los caballos de Troya. Se denomina troyano (o caballo de Troya, traduccin ms fiel del ingls Trojan horse aunque no tan utilizada) a un programa malicioso capaz de alojarse en computadoras y permitir el acceso a usuarios externos, a travs de una red local o de Internet, con el fin de recabar informacin o controlar remotamente a la maquina anfitriona. Un troyano no es de por s, un virus, aun cuando tericamente pueda ser distribuido y funcionar como tal. La diferencia fundamental entre un troyano y un virus consiste en su finalidad. Para que un programa sea un "troyano" solo tiene que acceder y controlar la maquina anfitriona sin ser advertido, normalmente bajo una apariencia inocua. Al contrario que un virus, que es un husped destructivo, el troyano no necesariamente provoca danos porque no es su objetivo. Suele ser un programa pequeo alojado dentro de una aplicacin, una imagen, un archivo de msica u otro elemento de apariencia inocente, que se instala en el sistema al ejecutar
4 de junio de 2013
73
el archivo que lo contiene. Una vez instalado parece realizar una funcin til (aunque cierto tipo de troyanos permanecen ocultos y por tal motivo los antivirus o anti troyanos no los eliminan) pero internamente realiza otras tareas de las que el usuario no es consciente, de igual forma que el Caballo de Troya que los griegos regalaron a los troyanos. Habitualmente se utiliza para espiar, usando la tcnica para instalar un software de acceso remoto que permite monitorizar lo que el usuario legtimo de la computadora hace y, por ejemplo, capturar las pulsaciones del teclado con el fin de obtener contraseas u otra informacin sensible. La mejor defensa contra los troyanos es no ejecutar nada de lo cual se desconozca el origen y mantener software antivirus actualizado y dotado de buena heurstica; es recomendable tambin instalar algn software anti troyano, de los cuales existen versiones gratis aunque muchas de ellas constituyen a su vez un troyano. Otra solucin bastante eficaz contra los troyanos es tener instalado un firewall. Otra manera de detectarlos es inspeccionando frecuentemente la lista de procesos activos en memoria en busca de elementos extraos, vigilar accesos a disco innecesarios, etc. Lo peor de todo es que ltimamente los troyanos estn siendo diseados de tal manera que es imposible poder detectarlos excepto por programas que a su vez contienen otro tipo de troyano, inclusive y aunque no confirmado, existen troyanos dentro de los programas para poder saber cul es el tipo de uso que se les y poder sacar mejores herramientas al mercado llamados tambin "troyanos sociales" Los troyanos estn actualmente ilegalizados, pero hay muchos crackers que lo utilizan. PUERTA TRASERA En la informtica, una puerta trasera, es una secuencia especial dentro del cdigo de programacin mediante el programador puede acceder o escapar de un programa en caso de emergencia o contingencia en algn problema. A su vez, estas puertas tambin pueden ser perjudiciales debido a que los crackers al descubrirlas pueden acceder a un sistema en forma ilegal y aprovecharse la falencia. A pesar de que no se consideran propiamente como virus, representan un riesgo de seguridad importante, y usualmente son desconocidas la inmensa gama de problemas que
4 de junio de 2013
74
estas puedan llegar a producir. Al hablar de estas nos referimos genricamente a una forma "no oficial" de acceso a un sistema o a un programa. Algunos programadores dejan puertas traseras a propsito, para poder entrar rpidamente en un sistema; en otras ocasiones existen debido a fallos o errores. Ni que decir tiene que una de las formas tpicas de actuacin de los piratas informticos es localizar o introducir a los diversos sistemas una puerta trasera y entrar por ella. Generalmente estos se hacen pasar por otros, es decir, se ocultan en otro programa que les sirve de caballo de Troya para que el usuario los instale por error. Como todo en Internet se basa en la arquitectura cliente / servidor, solo se necesita instalar un programa servidor en una mquina para poder controlarla a distancia desde otro equipo, si se cuenta con el cliente adecuado, esta puede bien ser la computadora de un usuario descuidado o poco informado. Las puertas traseras son programas que permiten acceso prcticamente ilimitado a un equipo de forma remota. El problema, para quien quiere usar este ataque, es que debe convencerlo a usted de que instale el servidor. Por eso, si aparece un desconocido ofrecindole algn programa maravilloso y tentador, no le crea de inmediato. Lo que estn probablemente a punto de darle es un troyano, un servidor que le proporcionara a algn intruso acceso total a su computadora. Con todo el riesgo que esto implica, hay una forma simple y totalmente segura de evitarlo: no acepte archivos ni mucho menos ejecute programas que le hayan mandado siendo estos sobre todo de procedencia dudosa. El hecho que se les clasifique como software malvolo en algunos casos, es que cuando corren, se instalan en el sistema sin necesidad de la intervencin del usuario y una vez instalados en la computadora, no se pueden visualizar estas aplicaciones en la lista de tareas en la mayora de los casos. Concluimos esto, recomendando ciertas medidas muy bsicas para estar a salvo de las puertas traseras y el delicado riesgo para la seguridad que estas representan.
4 de junio de 2013
75
Caractersticas principales:
El tipo de actuacin es retardada. El creador es consciente en todo momento del posible dao que puede causar y del momento que este se puede producir. Este ataque est determinado por una condicin que determina el creador dentro del cdigo. El cdigo no se replica. Los creadores de este tipo de cdigos malignos suelen ser personal interno de la empresa, que por discrepancias con la direccin o descontento suelen programarlas para realizar el dao.
VIRUS Un virus informtico es un programa que se copia automticamente y que tiene por objeto alterar el normal funcionamiento de la computadora, sin el permiso o el conocimiento del usuario. Aunque popularmente se incluye al "malware" dentro de los virus, en el sentido estricto de esta ciencia los virus son programas que se replican y ejecutan por s mismos. Los virus, habitualmente, reemplazan archivos ejecutables por otros infectados con el cdigo de este. Los virus pueden destruir, de manera intencionada, los datos almacenados en un ordenador, aunque tambin existen otros ms benignos, que solo se caracterizan por ser molestos. El funcionamiento de un virus informtico es conceptualmente simple. Se ejecuta un programa que est infectado, en la mayora de las ocasiones, por desconocimiento del usuario. El cdigo del virus queda residente (alojado) en la memoria RAM de la computadora, aun cuando el programa que lo contena haya terminado de ejecutarse. El virus toma entonces el control de los servicios bsicos del sistema operativo, infectando de, manera posterior, archivos ejecutables que sean llamados para su ejecucin. Finalmente se aade el cdigo del virus al del programa infectado y se graba en disco, con lo cual el proceso de replicado se completa. Amenazas del Sistema y de la Red Las amenazas basadas en programas utilizan tpicamente un fallo en los mecanismos de proteccin de un sistema para atacar a los programas. Por contraste, las amenazas del
4 de junio de 2013
76
sistema y de la red implican el abuso de los servicios y de las conexiones de red. En ocasiones, se utiliza un ataque del sistema y de la red para lanzar un ataque de programa, y viceversa. Es importante destacar que las mascaradas y los ataques por reproduccin tambin resultan comunes en las redes que interconectan los sistemas. De hecho, estos ataques son ms efectivos y ms difciles de contrarrestar cuando estn implicados mltiples sistemas. La generalizacin de este concepto es que el compartir secretos (para demostrar la identidad y en forma de claves de cifrado) es una necesidad para la autenticacin del cifrado, y que esa comparticin resulta ms sencilla en aquellos entornos (por ejemplo con un nico sistema operativo) en los que existan mtodos seguros de comparticin. Estos mtodos incluyen la memoria compartida y los mecanismos de comunicacin interprocesos.
GUSANOS Un gusano es un virus informtico o programa auto replicante que no altera los archivos sino que reside en la memoria y se duplica a s mismo. Los gusanos utilizan las partes automticas de un sistema operativo que generalmente son invisibles al usuario. Es algo usual detectar la presencia de gusanos en un sistema cuando, debido a su incontrolada replicacin, los recursos del sistema se consumen hasta el punto de que las tareas ordinarias del mismo son excesivamente lentas o simplemente no pueden ejecutarse. Cuando se lanzan nuevos gusanos, se propagan muy rpidamente. Bloquean las redes y posiblemente provocan esperas largas para ver las pginas Web en Internet. Debido a que los gusanos no tienen que viajar mediante un programa o archivo "host", tambin pueden crear un tnel en el sistema y permitir que otro usuario tome el control del equipo de forma remota. Entre los ejemplos recientes de gusanos se incluyen.
6.8 Cifrado
Hay cosas peores que el robo de un ordenador porttil, por ejemplo el robo de un porttil con toda la documentacin dentro. No slo por el robo de la informacin, que si hacemos copias de seguridad debera ser mnimo, sino por la desagradable sensacin de dejar
4 de junio de 2013
77
parte de nuestra vida en manos de un desconocido, eso sin contar las claves, documentos y dems que si sean vitales para nuestro trabajo. En Linux existe una solucin muy sencilla para evitar ese problema, y es cifrar todas las particiones que sean elegidas para guardar los datos (generalmente el home del usuario, aunque es conveniente hacerlo con el swap). El cifrado de particiones no afecta al rendimiento general del equipo, y ha sido pulido hasta convertirse en una opcin estndar que suele ser ofrecida incluso durante la instalacin, aunque siempre es mejor hacer las cosas a mano hasta saber cul es el funcionamiento real. Eso es lo que intentar explicar en los siguientes puntos. Como configurar un sistema Linux ya instalado para que tenga cifradas las particiones de datos. Creando la particin Como trabajamos con una distribucin basada en Red Hat (CentOS), las particiones de datos suelen estar guardadas en un contenedor LVM. En mi caso sigo sus reglas y en la instalacin hago un contenedor LVM con todo el espacio que me queda para datos y slo creo una particin swap. Luego, segn lo voy necesitando lo voy asignando. Borrar la informacin y cifrar los datos Si el disco es nuevo o no nos importan mucho los datos que haba dentro podemos saltar este paso. En caso contrario es buena idea no dejar ni rastro de los datos antiguos, aunque puede llevar bastante tiempo. Particin swap y temporal Todo esto funciona bien para particiones de datos. Sin embargo existen particiones especiales de las que solemos pedir otro tipo de comportamiento. Me refiero a las particiones de tipo swap y los directorios temporales. No habra ningn problema en tratar estas dos particiones como dos particiones normales y cifrarlas segn el procedimiento anterior, sin embargo suele ser habitual iniciarlas al arranque totalmente vaco.
4 de junio de 2013
78
IV.CONCLUSIN
Despus de haber realizado este trabajo y haber visto la evolucin de este sistema operativo, no dudamos en concluir que estamos ante un sistema operativo de futuro, abrindose paso a travs de otros sistemas comerciales, que, tericamente, deberan ofrecer caractersticas mejores a las que ofrece Linux. Nuestra opinin sobre este sistema operativo es que ha tenido esta gran evolucin en los cuatro o cinco ltimos aos, en gran medida debido a la ideologa que sigue este sistema operativo, la cual permite que cualquier usuario tenga la posibilidad de modificar el cdigo fuente, personalizando el sistema o creando programas nuevos a los que cualquiera pueda acceder, modificar y reparar a travs de la red. Dada esta caracterstica, creemos que Linux tiene una gran perspectiva de futuro. Esto no queda nicamente as, sino que adems, est produciendo una revolucin en la actual concepcin de mercado de software comercial, creando nuevos tipos de licencias con los que los programas puedan ser comerciales, pero incluyendo las fuentes, con lo que se consigue obtener unas caractersticas parecidas a la del software libre. Adems gracias al sistema multitarea y multiproceso de Linux, que ofrece una gran potencia de clculo y velocidad de intercomunicacin, este sistema es apto para grandes estaciones de trabajo y de servidores de red, entre otros. Centrndonos ms en el tema del trabajo, nuestra opinin, es que es un sistema muy estable, apto y recomendable para cualquier informtico, no solo con la gran cantidad de sistemas de ficheros y protocolos de red que es capaz de utilizar, sino que adems ofrece una gran posibilidad de desarrollo, gran potencia en entorno grfico, tanto desde el punto de vista de usuario como de programador, y una interfaz de red que permite la fcil comunicacin entre sistemas UNIX, o cualquier otro sistema operativo actual.
4 de junio de 2013
79
V.BIBLIOGRAFIA
http://www.maquinariapro.com/sistemas/sistema-operativo-linux.html http://www.monografias.com/trabajos/solinux/solinux.shtml http://softwarelibre.mes.edu.cu/index_html/news/la-evolucion-de-linux http://www.cad.com.mx/historia_de_linux.htm http://www.maginvent.org/articles/linuxmm/Kernel_o_nucleo_Linux.html http://www.linux-es.org/kernel http://www.taringa.net/posts/linux/7676622/Que-es-el-kernel-de-Linux-y-cual-es-sutarea.html http://ditec.um.es/so/apuntes/teoria/tema4.pdf http://www.monografias.com/trabajos54/paginacion-linux/paginacion-linux.shtml#paginac http://www.bestwebmaker.com/blog/wp-content/uploads/2009/07/TEMA-14-SISTEMA-DEFICHEROS-LINUX.pdf
The Linux VFS, Chapter 4 of Linux File Systems by Moshe Bar (McGraw-Hill, 2001). ISBN 0-07-212955-7 Mas adelante. (20 de Noviembre de 2005). Recuperado el 01 de Junio de 2013, de http://www.masadelante.com/faqs/sistema-operativo
4 de junio de 2013
80