4.investigacion de linux.docx

114
4-6-2013 INSTITUTO TECNOLOGICO DE HERMOSILLO SISTEMAS OPERATIVOS Jesús Eduardo Díaz Almada Luis Carlos Piri Ramos INVESTIGACION LINUX O.S. Maestro: Daniel Pérez Pérez

Upload: eduardo-diiaz

Post on 22-Oct-2015

37 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 4.INVESTIGACION DE LINUX.docx

4-6-2013

INVESTIGACION LINUX O.S.

Maestro: Daniel Pérez Pérez

Page 2: 4.INVESTIGACION DE LINUX.docx

1

SISTEMA OPERATIVO: LINUX

INDICE

I. Objetivo…………………………………………………………………………………………………………………………………...3II. Marco teórico………………………………………………………………………………….……………………………………….3III. Desarrollo………………………………………………………………………………….……………………………………………..4

1. Introducción a Linux……………………………………………………….…………….…………………………………..41.1 Definición y concepto…………………………………………………….……….…………………………………..41.2 Funciones y características……………………………………………………….…………….…………………..41.3 Evolución histórica……………………………………………………….…………….……………….……………..61.4 Clasificación……………………………………………………….…………….………………………….……………..81.5 Estructura: niveles o estratos de diseño……………………………….…………………………………..101.6 Núcleo……………………………………………………….…………….……………………………………………….13

2. Administración de procesos y del procesador en Linux…………………………………………………..162.1 Concepto de proceso……………………………………………………….………..……………………………..162.2 Estados y transiciones de los procesos……………………………………………………….……………..182.3 Procesos ligeros: Hilos o hebras……………………………………………………….…………….…….…..222.4 Concurrencia y secuenciabilidad……………………………………………………….…………….………..222.5 Niveles, objetivos y criterios de planificación……………………………………………………….…..262.6 Técnicas de administración del planificador……………………………………………………….……..27

3. Administración de la memoria en Linux……………………………………………………………….…….…..323.1 Política y filosofía……………………………………………………….…………….…………………………..…..323.2 Memoria real……………………………………………………….…………….………………………………..…..323.3 Organización de memoria virtual……………………………………………………….…………….…..…..343.4 Administración de memoria virtual……………………………………………………….……………..…..40

4. Administración de entrada/salida en Linux……………………………………………………….……….…..444.1 Dispositivos y manejadores de dispositivos: Device drivers……………………………………...444.2 Mecanismos y funciones de los manejadores de dispositivos: Device drivers………..….454.3 Estructuras de datos para manejo de dispositivos………………………………………………..…..514.4 Operaciones de Entrada/salida……………………………………………………….……………..…….…..56

5. Sistemas de archivos en Linux……………………………………………………….……….……………………….605.1 Concepto……………………………………………………….……….……………………………………..………….605.2 Noción de archivo real y virtual………………………………………………………..……………………….605.3 Componentes de un sistema de archivos……………………………………………………….

………….635.4 Organización lógica y física……………………………………………………….……….………………………645.5 Mecanismos de acceso a los archivos……………………………………………………….……………….655.6 Manejo de espacio en memoria secundaria………………………………………………………..…….655.7 Modelo jerárquico……………………………………………………….………………………………………..….675.8 Mecanismos de recuperación en caso de falla……………………………………………………….….67

6. Protección y seguridad en Linux……………………………………………………….…………………………….706.1 Concepto y objetivos de protección……………………………………………………….…………………..706.2 Funciones del sistema de protección……………………………………………………….…………………716.3 Implantación de matrices de acceso……………………………………………………….………………….776.4 Protección basada en el lenguaje……………………………………………………….…………………..….786.5 Concepto de seguridad……………………………………………………….………………….………………….796.6 Clasificaciones de la seguridad……………………………………………………….……………………….….826.7 Validación y amenazas al sistema……………………………………………………………………………….846.8 Cifrado……………………………………………………….……………………………………………………………...97

IV. Conclusión………………………………………………………………………………….…………….…………………………….99

4 de junio de 2013

Page 3: 4.INVESTIGACION DE LINUX.docx

2

SISTEMA OPERATIVO: LINUX

V. Bibliografía……………………………………………………….……………………………………………………………….….100

I.OBJETIVO

El objetivo principal es elaborar una investigación completa acerca de algún 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 operativoEs el programa (o software) más 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 básicas, tales como reconocimiento de la conexión del teclado, enviar la información a la pantalla, no perder de vista archivos y directorios en el disco, y controlar los dispositivos periféricos tales como impresoras, escáner, etc (Masadelante, 2005)

4 de junio de 2013

Page 4: 4.INVESTIGACION DE LINUX.docx

3

SISTEMA OPERATIVO: LINUX

III.DESARROLLO

1Introduccion a Linux.

1.1 Definición y concepto de Linux

Linux es un sistema operativo de software libre (no es propiedad de ninguna persona o empresa), por ende no es necesario comprar una licencia para instalarlo y utilizarlo en un equipo informático. Es un sistema multitarea, multiusuario, compatible con UNIX, y proporciona una interfaz de comandos y una interfaz gráfica, que lo convierte un sistema muy atractivo y con

estupendas perspectivas de futuro.

El nombre de Linux proviene del nombre de su autor Linus y del sistema operativo UNIX. No obstante su verdadero nombre es GNU/Linux.

1.2 Funciones y características

CARACTERÍSTICAS

Multitarea

Describe la habilidad de ejecutar, aparentemente al mismo tiempo, numerosos programas sin obstaculizar la ejecución de cada aplicación. Esto se conoce como multitarea preferente, porque cada programa tiene garantizada la posibilidad de correr.

Multiusuario

4 de junio de 2013

Page 5: 4.INVESTIGACION DE LINUX.docx

4

SISTEMA OPERATIVO: LINUX

Linux permite que más de una sola persona pueda trabajar en la misma versión de la misma aplicación de manera simultánea, desde las mismas terminales, o en terminales separadas.

Redes y Telecomunicaciones

La superioridad de Linux sobre otros sistemas operativos es evidente en sus utilerías para redes y comunicaciones. Ningún otro sistema operativo incluye capacidades para red tan estrechamente acopladas. Linux soporta las siguientes interfaces de red: ethernet, fddi, token ring, arcnet, X.25, ISDN, líneas seriales síncronas y asíncronas.

Internet

Con Linux usted puede conectarse a Internet y al vasto mundo de información que esta red abarca. Correo Electrónico, Listas de Correo, Grupos de Interés, Búsqueda 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.

Programación

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 dinámico (DLL).

Portabilidad

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

Ambiente Gráfico

Linux proporciona la capacidad de ejecutar aplicaciones gráficas mediante una red heterogénea al incorporar la revisión 6 del estándar X11 del MIT, conocido también

4 de junio de 2013

Page 6: 4.INVESTIGACION DE LINUX.docx

5

SISTEMA OPERATIVO: LINUX

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.

Poder RISC

Si su organización necesita verdadero poder de cómputo 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 ejecución de cada aplicación.

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 núcleo 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 (módems, impresoras) gracias a que cada una vez instalado uno nuevo, se añade 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 más 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 prácticamente idénticos. Con Linux podrá montar un servidor en su propia casa sin tener que pagar las enormes cantidades de dinero que piden otros sistemas.

1.3 Evolución histórica

Linux nace de la mano de un estudiante de informática de la ciudad de Helsinki en 1991, Linus Torvalds. Linus comienza con el sistema operativo Minix (hecho por Richard Tanenbaum) para conseguir explorar las posibilidades del microprocesador 386 y así

4 de junio de 2013

Page 7: 4.INVESTIGACION DE LINUX.docx

6

SISTEMA OPERATIVO: LINUX

comienza la andanza de Linux. Posteriormente, Linus decide reescribir su operativo desde cero, sin usar para nada Minix. Después de peticiones de ayuda a la comunidad de internet para resolver sus numerosas dudas y de agrias discusiones con Tanenbaum en 1991 consigue sacar una versión del kernel que se puedo considerar usable. Esta versión fue puesta a disposición de todo el mundo, mucha gente la descargó y la probó y mucha gente consideró que podía aportar algo a este sistema operativo y se sumó al desarrollo del mismo. Linux fue mejorando paulatinamente desde ese año hasta hoy en día.

Así mismo mucha gente convirtió a Linux en su plataforma de desarrollo de software escribiendo cada vez más y más 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 evolución de Linux hasta lo que es hoy en día, es la aparición de las distribuciones. Las distribuciones son paquetes software que básicamente incluyen el kernel, aplicaciones para el kernel y métodos de instalación y mantenimiento del sistema operativo como también 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 instalación y manejo, casi todas ella comerciales. Mención aparte la distribución Debían. Debían es la única distribución totalmente libre y en la que solo caben programas totalmente libres. Debían es mantenida por miles de voluntarios que mantienen su software y mejoran sus sistema de instalación día tras día para dar un resultado cada vez más elaborado.

La historia de Linux está fuertemente vinculada a la del proyecto GNU.

Hacia 1991, cuando la primera versión del núcleo Linux fue liberada, el proyecto GNU había producido varios de los componentes del sistema operativo, incluyendo un intérprete de comandos, una biblioteca C y un compilador, pero aún no contaba con el núcleo que permitiera complementar el sistema operativo.Entonces, el núcleo creado por Linus Torvalds, llenó el hueco final que el sistema operativo GNU exigía.

4 de junio de 2013

Page 8: 4.INVESTIGACION DE LINUX.docx

7

SISTEMA OPERATIVO: LINUX

1.4 Clasificación de las distribuciones de Linux

1. Linux para los novatosEstos son las distribuciones para los novatos o recién llegados de Linux, así como para los usuarios que no tienen demasiado tiempo para modificar y configurar sus ordenadores.

Ubuntu Tal vez la distribución de Linux más famosa, y por lo general el primero ve a cualquier recién 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 distribución de Linux orientada a principiantes, más 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 distribución, lo usé durante más de un año, y en ese tiempo, cuando yo lo estaba usando, que era el más 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

Page 9: 4.INVESTIGACION DE LINUX.docx

8

SISTEMA OPERATIVO: LINUX

2. Los usuarios intermedios

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. También hacen un montón de contribución a la comunidad Linux.

Debían Linux se adapta a todas las secciones, si se instala desde el DVD, o de algunos de sus Debían LiveCD, usted puede tener algo como Ubuntu.

3. Los usuarios avanzados

La distribución de estas secciones no está dirigida para el recién llegado, pero desde luego no tiene por qué ser un experto en Linux con el fin de instalar y usar.

Slackware algunos dirás 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 están bien, pero si desea instalar más software, usted puede estar en problemas.

Gentoo El problema es que con tanto poder en sus dedos, puede arruinar las cosas fácilmente. La comunidad es un probable de lo mejor, y la documentación es sin duda el mejor en el mundo Linux. Si usted realmente tiene el tiempo y te gusta Linux un poco más, debe estar ejecutando Gentoo.

Arch Linux Arch Linux, esta distribución se basa en el principio KISS . También utiliza los scripts de inicio al estilo BSD, que para mí son mucho más fáciles 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 más, en mi opinión.

CentOS Si no les importa tener software antiguo CentOS es una distribución de buen servidor, puede utilizar centosplus, pero entonces usted podría estar perdiendo una de las fortalezas de CentOS, que es la estabilidad y la seguridad.

4 de junio de 2013

Page 10: 4.INVESTIGACION DE LINUX.docx

9

SISTEMA OPERATIVO: LINUX

Slackware se han centrado en la seguridad de hard rock y la estabilidad. También es muy simple y fácil 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 aplicación de servidor que no está en sus repositorios oficiales.

1.5 Estructura: niveles o estratos de diseño

En Linux existen diversos directorios y subdirectorios que cumplen esta labor. Librerías, binarios, programas instalados, archivos temporales, etc., se encuentran contenidos en sitios específicos donde podemos ubicarlos si precisamos en algún momento de ellos.

4 de junio de 2013

Page 11: 4.INVESTIGACION DE LINUX.docx

10

SISTEMA OPERATIVO: LINUX

A continuación daré una breve reseña sobre ellos:

/

Directorio raíz donde se encuentran todos los directorios y archivos de una manera lógica.

/bin

En este directorio podemos encontrar todos los archivos ejecutables del sistema. En él están muchos de los comandos que usamos habitualmente como por ejemplo ls, cat, more, cp, tar… además 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 además de los SticksUSB y discos duros externos.

/sbin

Contiene archivos ejecutables que por lo general son comandos usados para la administración 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 vacío, normalmente se suele usar para montajes de unidades temporales que deseamos cargar en ese momento.

4 de junio de 2013

Page 12: 4.INVESTIGACION DE LINUX.docx

11

SISTEMA OPERATIVO: LINUX

/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 simbólico hacia /media/cdrom

/dev

Aquí es donde están todos los drivers y los dispositivos, estos se identifican en forma de archivo.

/lib

Contiene librerias para C y otros lenguajes de programación.

/proc

Directorio que contiene información sobre diferentes partes del sistema, cpu, discos, tiempo uptime, irqs, memoria, etc…

/opt

En este directorio se suelen almacenar todos los archivos de una instalación fuera de los repositorios como puede ser cuando instalamos un .deb

/etc

Contiene prácticamente todos los archivos de configuración del equipo y los demonios de inicio en /etc/init.d entre otras cosas.

/lost+found

Directorio específico para archivos perdidos. Cada partición tiene el suyo propio independientemente.

/root

Directorio particular del superusuario del sistema (root)

4 de junio de 2013

Page 13: 4.INVESTIGACION DE LINUX.docx

12

SISTEMA OPERATIVO: LINUX

/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 (también llamado raíz), además, aunque puedes crear las carpetas que quieras.

1.6 Núcleo de Linux

El kernel o núcleo de Linux se puede definir como el corazón de este sistema operativo. Es el encargado de que el software y el hardware del computador puedan trabajar juntos. Las funciones del Kernel se simplifican en:

1. Administración de la memoria, para todos los programas en ejecución.

2. Administración del tiempo de procesador, que estos programas en ejecución utilizan.

3. Acceder a los periféricos/elementos y hardware de entrada y salida de una forma práctica y cómoda.

El usuario de Linux puede adaptar el Kernel a sus necesidades configurando y compilando un nuevo Kernel o simplemente parchando y compilando el Kernel existente.

Hasta que empezó el desarrollo de la serie 2.6 del núcleo, existieron dos tipos de versiones del núcleo:

Versión de producción: La versión de producción, era la versión estable hasta el momento. Esta versión era el resultado final de las versiones de desarrollo o experimentales.

4 de junio de 2013

Page 14: 4.INVESTIGACION DE LINUX.docx

13

SISTEMA OPERATIVO: LINUX

Cuando el equipo de desarrollo del núcleo experimental, decidía que tenía un núcleo estable y con la suficiente calidad, se lanzaba una nueva versión de producción o estable. Esta versión era la que se debía utilizar para un uso normal del sistema, ya que eran las versiones consideradas más estables y libres de fallos en el momento de su lanzamiento.

Versión de desarrollo: Esta versión era experimental y era la que utilizaban los desarrolladores para programar, comprobar y verificar nuevas características, correcciones, etc. Estos núcleos solían ser inestables y no se debían usar sin saber lo que se hacía.

Arquitectura del Kernel Linux

Debido a que el kernel de Linux es monolítico, tiene más complejidad que en los otros tipos de kernel. Esta fue una característica de diseño que estaba bajo un poco de debate en los primeros días de Linux y aún tiene algunos de los defectos de diseño.

Una cosa que los desarrolladores del kernel de Linux hicieron para conseguir solucionar estas fallas es hacer módulos del kernel que pueden ser cargados y descargados en tiempo de ejecución, lo que significa que puede agregar o quitar características de su núcleo en el momento. Esto puede ir más allá de la adición de la funcionalidad de hardware para el núcleo, mediante la inclusión de módulos que ejecutan los procesos del servidor, como la virtualización de bajo nivel, pero también puede permitir que el núcleo pueda ser del todo reemplazado sin necesidad de reiniciar el equipo en algunos casos.

Módulos del Kernel

Los módulos del kernel, también conocido como un módulo del kernel cargables (LKM), son esenciales para mantener el funcionamiento del núcleo con todo el hardware sin consumir toda la memoria disponible.

Un módulo generalmente, aumenta la funcionalidad del núcleo de base para cosas como los dispositivos, sistemas de archivos y las llamadas al sistema. Debido a su carácter modular, usted puede personalizar fácilmente su núcleo mediante el establecimiento de módulos de carga o no.

4 de junio de 2013

Page 15: 4.INVESTIGACION DE LINUX.docx

14

SISTEMA OPERATIVO: LINUX

Los módulos de terceros y de código cerrado están disponibles en algunas distribuciones, como Ubuntu, y no puede ser instalado de forma predeterminada porque el código fuente de los módulos no está disponible. Las empresas desarrolladoras de software no proporcionan el código fuente, sino que construyen sus propios módulos y compilan sus archivos, archivos para su distribución.

Un núcleo 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 núcleo y hace muchas cosas.

4 de junio de 2013

Page 16: 4.INVESTIGACION DE LINUX.docx

15

SISTEMA OPERATIVO: LINUX

2Administrador de procesos y del procesador.

2.1 Concepto de proceso.

Los procesos son programas que se ejecutan en un momento dado. Cuando usamos un sistema operativo de GNU/Linux como Ubuntu por ejemplo existen una serie de procesos que se están ejecutando constantemente y que son los que hacen al sistema operativo utilizable.

Los procesos en GNU/Linux son organizados de forma jerárquica, cada proceso es lanzado por un proceso padre y es denominado proceso hijo. De esta forma, todos los procesos en GNU/Linux son hijos de init ya que este es el primer proceso que se ejecuta al iniciar el ordenador e init es padre de todos los procesos. Si se mata al proceso padre, también desaparecerán los procesos hijos.

Para que Linux pueda gestionar los procesos en el sistema, cada proceso se representa por una estructura de datos task_struct (las tareas task y los procesos son términos intercambiables en Linux). El vector task es una lista de punteros a estructuras task_struct en el sistema. Esto quiere decir que el máximo número de procesos en el sistema está limitado por el tamaño del vector task; por defecto tiene 512 entradas. A medida que se crean procesos, se crean nuevas estructuras task_struct a partir de la memoria del sistema y se añaden al vector task. Para encontrar fácilmente el proceso en ejecución, hay un puntero (current) que apunta a este proceso.

Linux soporta procesos de tiempo real así como procesos normales. Estos procesos tienen que reaccionar muy rápidamente a sucesos externos (de ahí el término “tiempo real”') y reciben un trato diferente del planificador.

La estructura task_struct es bastante grande y compleja, pero sus campos se pueden dividir en áreas funcionales:

4 de junio de 2013

Page 17: 4.INVESTIGACION DE LINUX.docx

16

SISTEMA OPERATIVO: LINUX

State (Estado) A medida que un proceso se ejecuta, su estado cambia según 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 algún suceso o por algún recurso. Linux diferencia dos tipos de procesos; interrumpibles e ininterrumpibles. Los procesos en espera interrumpibles pueden ser interrumpidos por señales mientras que los ininterrumpibles dependen directamente de sucesos de hardware y no se pueden interrumpir en ningún caso.

Stopped (Detenido) El proceso ha sido detenido, normalmente porque ha recibido una señal. Si se están depurando errores en un proceso, éste puede estar detenido.

Zombie Es un proceso que ya ha terminado pero cuya estructura task_struct permanece aún en el vector task. Se suele mantener para que el padre pueda extraer información ú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 comenzaría 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 intervención 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 están vivos o están muertos, son lanzados o pueden ser matados.

4 de junio de 2013

Page 18: 4.INVESTIGACION DE LINUX.docx

17

SISTEMA OPERATIVO: LINUX

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 carácter de un fichero. Esta espera sucede dentro de la llamada de sistema, en modo sistema; el proceso utiliza una función de una biblioteca para abrir y leer el fichero y la función, 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 específicos del procesador y otros contextos en la estructura de datos task_struct. Luego restaura el estado del nuevo proceso (que también es específico a un procesador) para ejecutarlo y da control del sistema a ese proceso

2.2 Estados y transiciones

ESTADOS.

(Según Andrew S. Tanenbaum, 2003) El principal trabajo del procesador es ejecutar las instrucciones de máquina que se encuentran en memoria principal. Estas instrucciones se encuentran en forma de programas. Para que un programa pueda ser ejecutado, el sistema operativo crea un nuevo proceso, y el procesador ejecuta una tras otra las instrucciones del mismo. En un entorno de multiprogramación, el procesador intercalará la ejecución de instrucciones de varios programas que se encuentran en memoria. El sistema operativo es el responsable de determinar las pautas de intercalado y asignación de recursos a cada 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

Page 19: 4.INVESTIGACION DE LINUX.docx

18

SISTEMA OPERATIVO: LINUX

Modelo de dos estados:

El modelo de estados más simple es el de dos estados. En este modelo, un proceso puede estar ejecutándose o no. Cuando se crea un nuevo proceso, se pone en estado de “No ejecución”. En algún momento el proceso que se está ejecutando pasará al estado “No ejecución” y otro proceso se elegirá de la lista de procesos listos para ejecutar para ponerlo en estado “Ejecución”. De esta explicación 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. Además los procesos que no se están ejecutando deben guardarse en algún tipo de cola mientras esperan su turno para ejecutar.

Modelo de Cinco estados:El modelo anterior de 2 estados funcionaría bien con una cola FIFO y planificación por turno rotatorio para los procesos que no están en ejecución, 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 algún suceso antes de continuar, como una operación de Entrada/Salida. Es por esto que se necesita un estado donde los procesos permanezcan esperando la realización de la operación de Entrada Salida por parte del Sistema Operativo hasta que puedan proseguir. Se divide entonces al estado “No ejecución” en dos estados: Listo y Espera. Se agregan además un estado “Nuevo” y otro “Terminado”.

Los cinco estados de este diagrama son los siguientes según Osëliyo:

*Ejecución: el proceso está actualmente en ejecución.*Listo: el proceso está listo para ser ejecutado, sólo 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 finalización de una operación de Entrada/Salida solicitada por una llamada al sistema operativo.*Nuevo: El proceso recién fue creado y todavía no fue admitido por el sistema operativo.

4 de junio de 2013

Page 20: 4.INVESTIGACION DE LINUX.docx

19

SISTEMA OPERATIVO: LINUX

En general los procesos que se encuentran en este estado todavía no fueron cargados en la memoria principal.*Terminado: El proceso fue expulsado del grupo de procesos ejecutables, ya sea porque terminó o por algún fallo, como un error de protección, aritmético, etc.

Los nuevos estados “Nuevo” y “Terminado” son útiles para la gestión 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 sitúa 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 algún suceso, por ejemplo una Entrada/Salida. Sin embargo, al ser mucho más lentas estas operaciones, puede suceder que en nuestro modelo de cinco estados todos los procesos en memoria estén esperando en el estado “Espera” y que no haya más memoria disponible para nuevos procesos. Podría conseguirse más memoria, aunque es probable que esto sólo permita procesos más grandes y no necesariamente nuevos procesos. Además hay un costo asociado a la memoria y de cualquier forma es probable que se llegara al mismo estado con el tiempo. Otra solución 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”. Después 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 todavía se encuentre en espera. Sólo convendría traerlo cuando ya está listo para ejecutar, esto implica que ya aconteció el suceso que estaba esperando. Para tener esta diferenciación entre procesos suspendidos, ya sean listos como en espera, se utilizan cuatro estados: Listo, Espera, suspendido y bloqueado.

TRANSICIONES

(Según Andrew S. Tanenbaum, 2003)

*De ejecución á Bloqueado: al iniciar una operación de E/S, al realizar una operación WAIT sobre un semáforo a cero (en el tema de procesos concurrentes se estudiarán los semáforos).*De ejecución á Listo: por ejemplo, en un sistema de tiempo compartido, cuando el proceso que ocupa la CPU lleva demasiado tiempo ejecutándose continuamente (agota su cuanto) el sistema operativo decide que otro proceso ocupe la CPU, pasando el proceso

4 de junio de 2013

Page 21: 4.INVESTIGACION DE LINUX.docx

20

SISTEMA OPERATIVO: LINUX

que ocupaba la CPU a estado listo.*De Listo á en ejecución: cuando lo requiere el planificador de la CPU (veremos el planificador de la CPU en el tema de planificación de procesos).*De Bloqueado á Listo: se dispone del recurso por el que se había bloqueado el proceso. Por ejemplo, termina la operación de E/S, o se produce una operación SIGNAL sobre el semáforo en que se bloqueó el proceso, no habiendo otros procesos bloqueados en el semáforo.

Obsérvese 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.

Interpretación 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 círculos 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.

2.3 procesos ligeros

Linux usa la misma estructura de datos (task_struct) para representar un proceso y para representar un hilo. Esto supone una ventaja importante para la planificación: se planifica cada hilo como si fuera un proceso. A veces a esto se le llama proceso ligero (LWP- Light Weight Process). La peculiaridad es que a esta estructura tiene unos campos que son punteros al espacio de direcciones de un proceso.

¿En qué se diferencia un proceso hijo de un hilo? Al crear un proceso hijo lo que se hace es copiar la memoria del padre en otra dirección y hacer que estos punteros señalen a la nueva; al crear un hilo lo que se hace es copiar los punteros, de forma que todos los hilos de un mismo proceso comparten exactamente el mismo espacio de direcciones. La

4 de junio de 2013

Page 22: 4.INVESTIGACION DE LINUX.docx

21

SISTEMA OPERATIVO: LINUX

sincronización y exclusión mutua del acceso concurrente de los hilos a la memoria del proceso es responsabilidad del programador que los usa.

2.4 Concurrencia y secuencialidad

Cuando consultamos en un diccionario por el significado de esta palabra encontramos entre una de las definiciones: Acaecimiento de varios sucesos o cosas de manera simultánea.

Este mismo significado es el que adquiere éste término cuando se relaciona con la teoría de los sistemas operativos, la concurrencia se presenta cuando dos o más procesos deben hacer uso de un mismo recurso a un mismo tiempo. Alguien puede pensar que se está presentando una contradicción o que se está hablando sólo de sistemas con más de una CPU, ya que en una sola CPU no se puede ejecutar más de un proceso en al mismo tiempo.

Sección critica:

La sección crítica es la parte que debe protegerse de interferencias de otros procesos. También se define como a la porción de código de un programa de computador el cual accede a un recurso compartido que no debe de ser accedido por más de un hilo en ejecución (thread). La sección crítica por lo general termina en un tiempo determinado y el hilo, proceso o tarea solo tendrá que esperar un período determinado de tiempo para entrar.

Se necesita de un mecanismo de sincronización en la entrada y salida de la sección crítica para asegurar la utilización exclusiva del recurso

Problemas de la sección critica:

El problema de la sección crítica es uno de los problemas que con mayor frecuencia aparece cuando se ejecutan procesos concurrentes.

Cuando Linux realiza esta acción en dos procesadores de forma simultánea sin ningún tipo de control, se pueden producir errores, ya que se puede asignar el mismo PID a dos procesos distintos.

Este problema se debe a que constituyen una sección crítica que debe ejecutarse en forma atómica, es decir, de forma completa e indivisible y ningún otro proceso podrá ejecutar dicho código mientras el primero no haya acabado su sección.

4 de junio de 2013

Page 23: 4.INVESTIGACION DE LINUX.docx

22

SISTEMA OPERATIVO: LINUX

Solución a la sección crítica:

Para resolver el problema de la sección crítica es necesario utilizar algún mecanismo de sincronización que permita a los procesos cooperar entre ellos sin problemas. Este mecanismo debe proteger el código de la sección crítica y su funcionamiento básico es el siguiente:

Cada proceso debe solicitar permiso para entrar en la sección crítica, mediante algún fragmento de código que se denomina de forma genérica entrada en la sección crítica.

Cuando un proceso sale de la sección crítica debe indicarlo mediante otro fragmento de código que se denomina salida de la sección crítica. Este fragmento permitirá que otros procesos entren a ejecutar el código de la sección crítica.

Cualquier solución que se utilice para resolver este problema debe cumplir los tres requisitos siguientes:

Exclusión mutua: Si un proceso está ejecutando código de la sección crítica, ningún otro proceso lo podrá hacer.

Progreso: Si ningún proceso está ejecutando dentro de la sección crítica, la decisión de qué proceso entra en la sección se hará sobre los procesos que desean entrar.

Espera acotada: Debe haber un límite en el número de veces que se permite que los demás procesos entren a ejecutar código de la sección crítica después 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 cuestión se denomina exclusión mutua

Interacción entre procesos

Estos tipos de interacción se producen dependiendo del grado o nivel de conocimiento que un proceso tiene de otro.

La exclusión mutua desafortunadamente trae consigo otro gran problema, el interbloqueo, este se da cuando dos o más procesos requieren acceso a dos o más 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

Page 24: 4.INVESTIGACION DE LINUX.docx

23

SISTEMA OPERATIVO: LINUX

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 inanición, esta se presenta cuando un proceso permanece en estado de bloqueo permanente a la espera de un recurso que necesita, pero por algún motivo externo al proceso solicitante, este nunca logra que le sea asignado (por lo general por que dos o más procesos se pasan mutuamente el control de dicho recurso por lo que siempre estará ocupado). Estos tres problemas se dan también 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 quién 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 exclusión mutua se debe aclarar que sólo se debe hacer uso de ella en el caso que los datos compartidos deban ser modificados. Adicionalmente en la cooperación por compartición se debe también garantizar la coherencia de los datos, ya que puede darse el caso de que a pesar que cuando se modifica un dato nadie más puede modificarlo (por la exclusión mutua) hasta tanto no finalicen las instrucciones que hacen uso de este, es posible que se requiera de algún otro dato (o datos) con los cuales se trabaje en diversas partes del proceso en conjunto con el que tiene la garantía de la exclusión mutua, pero puede suceder que entre cada uso de la información del dato esta pueda variar, por lo tanto puede presentarse el caso de que aun habiendo exclusión mutua, el resultado de la ejecución 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 atómicas) se esté ejecutando, este tipo de situaciones se presenta mucho en aplicaciones como bases de datos.

Exclusión mútua

El principio de exclusión mutua es un mecanismo empleado en el diseño de los sistemas operativos para evitar los problemas de competencia por recursos, se basa en definir una zona o región crítica la cual está marcada por las instrucciones que hacen uso del recurso o recursos por el que se presenta la competencia (recurso crítico), existen diferentes métodos de aplicación de la exclusión 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 explicación se deja para consulta en textos más avanzados según criterio del docente, aunque exhortando a hablar sobre algunos (s) de los problemas clásicos que se utilizan para ilustrar las diferentes soluciones.

4 de junio de 2013

Page 25: 4.INVESTIGACION DE LINUX.docx

24

SISTEMA OPERATIVO: LINUX

Interbloqueo

Este problema se presenta cuando dos o más procesos se bloquean mutuamente a la espera de un recurso crítico y esta situación se mantiene de manera permanente, no existen como en la exclusión mutua grandes soluciones que permitan disolver un interbloqueo, por el contrario se deben utilizar diversas técnicas para prevenir este tipo de situaciones.

Inanición

La inanición se presenta cuando un proceso nunca lograr acceder a un recurso crítico, y por tanto no pudiendo continuar con su normal ejecución.

SEMAFOROS

Los semáforos se pueden utilizar para controlar el acceso a los archivos, memoria compartida, y en general cualquier otro recurso compartido. Obtener semáforos Con IPC de System V, se obtienen conjuntos de semáforos. Obviamente, se puede obtener un conjunto de semáforos que sólo contiene un semáforo, pero la idea es que se puede tener una gran cantidad de semáforos al crear un solo conjunto de semáforos.

Destruir un semáforo Hay dos maneras de deshacerse de un conjunto semáforos: una es usando el comando “ipcrm” de UNIX. La otra manera es a través de la llamada semctl () con los argumentos adecuados.

Los semáforos son muy útiles en una situación de concurrencia. Sirven para controlar el acceso a un archivo, pero también a otro recurso como por ejemplo la memoria compartida. Siempre cuando se tienen múltiples procesos ejecutándose dentro de una sección crítica de código, se necesitan los semáforos.

Una vez ejecutado este ejemplo, se puede verificar la existencia del conjunto de semáforos con el comando ipcs. (No se olviden eliminar el semáforo con el comando ipcrm!)

2.5 niveles, objetivos y criterios del planificador

El Process Scheduler (SCHED), es el componente del kernel de Linux encargado de controlar el acceso de los procesos al CPU. El SCHED es el componente de bajo nivel más

4 de junio de 2013

Page 26: 4.INVESTIGACION DE LINUX.docx

25

SISTEMA OPERATIVO: LINUX

importante de los sistemas; todos los demás (incluyendo los módulos de acceso a disco, controladores de video, etc.), dependen directamente de él.

Los procesos en Linux pueden ser divididos en tres categorías, 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 demás procesos son despachados utilizando planificación RR con un sistema de envejecimiento basado en créditos, donde el siguiente proceso a ejecutar es aquel que más créditos posea. Los procesos “Tiempo Real” son considerados prioritarios sobre cualquier otro proceso en el sistema, por lo que serán ejecutados antes que los demás.

2.6 Técnicas de administración del planificador

Los tipos de algoritmos de planificación usados en este núcleo están definidos en las extensiones de tiempo real del estándar POSIX (POSIX.1b, antes llamado POSIX.4). El algoritmo de planificación es bastante parecido a un “RR” con prioridades. Puede haber a la vez en el sistema procesos con distinta política de planificación establecida. En realidad cada proceso se puede planificar de varias maneras, las políticas de planificación de un proceso se pueden cambiar en tiempo de ejecución y son:

SCHED_OTHER: Es la planificación clásica de UNIX. No es aplicable a tiempo real. Examina las prioridades dinámicas (calculadas como combinación de las especificadas por el usuario y las calculadas por el sistema). Los procesos que llevan más 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 planificación 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 política de planificación, sino un modificador que afecta a las tres políticas anteriores. El proceso cede la CPU a cualquier otro que esté listo. Se activa con una llamada al sistema (sched_yield ()) sólo para el siguiente ciclo de planificación.

4 de junio de 2013

Page 27: 4.INVESTIGACION DE LINUX.docx

26

SISTEMA OPERATIVO: LINUX

Diferencias en el kernel

El nuevo planificador ejecuta un hilo de núcleo en cada CPU. Este hilo se encarga de planificar los procesos de la cola de ejecución 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 ejecución para equilibrar la carga con otras cpus. Además, se lleva la cuenta del comportamiento del proceso, si se dedica a entrada/salida o tiene carga de CPU, pudiendo cambiar dinámicamente la política de planificación y la prioridad del proceso.

Policy (política)

Esta es la política de planificación 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 más 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 políticas: “RR” (en círculo) y “FIFO”. En la planificación “RR”, cada proceso de tiempo real ejecutable se ejecuta por turnos, y en la planificación “FIFO” cada proceso ejecutable se ejecuta en el orden en el que está en la cola de ejecución y el orden no se cambia nunca.

Priority (prioridad)

Esta es la prioridad estática que el planificador dará a este proceso. También es la cantidad de tiempo (en jiffies) que se permitirá ejecutar a este proceso una vez que sea su turno de ejecución. 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 más 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

Page 28: 4.INVESTIGACION DE LINUX.docx

27

SISTEMA OPERATIVO: LINUX

3Administracion de memoria en Linux.

La gestión de memoria en Linux tiene dos componentes. Primero, el sistema de gestión de memoria física, que se encarga de asignar y liberar páginas, grupos de páginas y bloques pequeños de memoria. El segundo componente maneja la memoria virtual, que es memoria que tiene una correspondencia con el espacio de direcciones de procesos de ejecución.

3.1 Política y filosofía en Linux

GNU/Linux ha sido desarrollado principalmente por un grupo de programadores de todo el mundo unidos por Internet. A través de Internet, cualquiera tiene la oportunidad de unirse al grupo y ayudar al desarrollo y depuración de GNU/Linux, portar nuevo software, escribir documentación o ayudar a los nuevos usuarios. Hoy en día, grandes compañías como IBM, SUN, HP y Novell, entre otras muchas, aportan a GNU/Linux grandes ayudas tanto económicas como del trabajo de sus propios empleados. El sistema se ha diseñado siguiendo una filosofía abierta y de crecimiento.

Normalmente, GNU/Linux se comparte como un kernel junto con otros programas en lo que se conoce como distribución. Existen numerosas distribuciones GNU/Linux. Se diferencian principalmente entre ellas por los programas que incorporan.

Las principales distribuciones son RedHat, Fedora, Suse, openSUSE y Debian. Las distribuciones se pueden conseguir gratuitamente en su web correspondiente.

3.2 Memorial real

La memoria RAM es un recurso fundamental y debe ser administrado con mucho cuidado. Es el espacio que están utilizando los procesos que se están ejecutando. En Linux también

4 de junio de 2013

Page 29: 4.INVESTIGACION DE LINUX.docx

28

SISTEMA OPERATIVO: LINUX

se utiliza la memoria física para tener cache de los datos de los dispositivos de i/o, memoria compartida y buffers de intercambio.

El administrador de memoria física del núcleo de Linux es el asignador de páginas, es el que se encarga de asignar intervalos de páginas contiguas físicamente si se le solicitan.. Se usan listas enlazadas individuales para registrar las regiones de memoria libre de cada tamaño permitido; en Linux, el tamaño más pequeño que se puede asignar con este mecanismo es una sola página física. Existen varios subsistemas de gestión de memoria especializados que usan el asignador de páginas subyacente para administrar para administrar su propia reserva de memoria. Los subsistemas de memoria más importantes son los de memoria virtual.

Linux también trabaja con estas dos formas de compartir la memoria:

Particiones fijas: se divide la memoria en áreas contiguas, cuyo tamaño 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 máximo de 8 ficheros, que se crean con un tamaño fijo que no cambia durante su uso.

- Es más eficiente usar una partición 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 físicas pueden ser de cualquier tamaño, no tienen que ser del bloque de archivo entero.

- Una página siempre se escribe contigua en el disco, en un archivo de paginación podría o no quedar contigua.

- La asignación 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

Page 30: 4.INVESTIGACION DE LINUX.docx

29

SISTEMA OPERATIVO: LINUX

- Para cada partición/archivo de paginación hay un mapa de bits para controlar los huecos asignados/libres.

- A las particiones/ficheros se les puede asignar un valor de prioridad, a las particiones se les asigna mayor prioridad. Cuando se necesita asignar un hueco a una página, se escoge la partición/archivo de más alta prioridad y con un hueco disponible.

3.3 Organización de memoria virtual

Paginación en Linux

El espacio de memoria se divide en partes iguales llamadas marcos .A cada proceso se le asigna un espacio de memoria lineal. Un mecanismo de hardware permite que ese espacio de direcciones se divida, en forma transparente para el programa, en páginas del mismo tamaño que los marcos. Éstos se relacionan entre sí mediante una tabla de páginas. Para cada página del proceso, existe un marco correspondiente en memoria.

Linux utiliza un esquema de paginación a tres niveles, paginación por demanda, aunque para ser más eficiente, pre página algunas páginas cuando se produce un fallo de página. No utiliza el concepto de conjunto de trabajo tamaño de página fijo.

El espacio de direcciones virtual se divide en áreas o regiones homogéneas y contiguas:

-Cada área consiste en una serie de páginas consecutivas con las mismas propiedades en cuanto a protección y paginación.

-El segmento de texto podría ser un ejemplo de área

-Puede haber huecos entre las distintas áreas

-Cualquier referencia a la memoria que caiga dentro de un hueco producirá un fallo de página

-Para cada área el sistema operativo almacena, entre otros, los siguientes datos: modo de protección, si es paginable o no, dirección en la que crece (hacia arriba el segmento de datos, hacia abajo la pila), si es privada o compartida, si tiene asignado hueco en la zona de intercambio, y si lo tiene, dónde

Ejemplo de división en áreas del espacio de direcciones virtuales de dos procesos que comparten el código:

4 de junio de 2013

Page 31: 4.INVESTIGACION DE LINUX.docx

30

SISTEMA OPERATIVO: LINUX

Esquema de paginación de tres niveles

Se tienen los siguientes tipos de tablas:

Directorio global: cada proceso tiene sólo uno que ha de estar en memoria, y su tamaño es de una página. Cada entrada apunta a un directorio intermedio de páginas (tabla intermedia de páginas).

Directorio intermedio de páginas: que puede ocupar varias páginas. Cada entrada señala a una página de la tabla de páginas final.

Tabla de páginas: que puede ocupar varias páginas. Cada una de sus entradas hace referencia a la página virtual requerida.

Cada dirección virtual se divide en 4 campos:

Directorio: 1er campo, para consultar el directorio global

Intermedio: 2°campo, para consultar el directorio intermedio de páginas

Página: 3°campo, para acceder a la tabla de páginas

Desplazamiento dentro de la página seleccionada, 4°campo

4 de junio de 2013

Page 32: 4.INVESTIGACION DE LINUX.docx

31

SISTEMA OPERATIVO: LINUX

Con el paginado se logra eliminar el problema de la fragmentación externa, ya que mientras haya marcos libres suficientes se puede cumplir con cualquier pedido de asignación de memoria. Sigue habiendo fragmentación interna, aunque sea pequeña, porque la memoria debe asignarse en cantidades enteras de páginas.

Hasta ahora se partíamos de la base de que un programa tenía que residir completamente en memoria. Con el paginado, sólo sería necesario que resida en memoria la página que contiene la instrucción 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 páginas tenderían a ser unas pocas a la vez. Esto implica que la cantidad de memoria física necesaria sería mucho menor a la que ocuparían todos los programas juntos.

Esto se implementa mediante un bit en la tabla de páginas que indica si la página está presente en memoria o no. Si está presente, el acceso continúa como en el caso del paginado normal. Si no está, se genera lo que se conoce como fallo de página. En este caso, para que el proceso pueda continuar, se debe traer la página 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 páginas y se re arranca el proceso desde donde se produjo el fallo de página. El precio que se paga por esto es que el acceso demora mucho más que si la página hubiera estado en memoria., por el tiempo de acceso al disco.

Para poder resolver un fallo de página, tiene que haber un marco libre para ubicar la nueva página. Cuando no hay ningún marco libre sucede el caso, mediante algún criterio que varía de acuerdo al sistema de que se trate, se selecciona una página y se la elimina de la memoria física para hacer lugar para la nueva página. Para que el contenido de la página eliminada no se pierda, se la graba en un archivo especial llamado archivo de intercambio.

4 de junio de 2013

Page 33: 4.INVESTIGACION DE LINUX.docx

32

SISTEMA OPERATIVO: LINUX

Ya que una página 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 páginas en Linux

Linux supone que hay tres niveles de tablas de páginas:

- El directorio de tablas de páginas (punteros a tablas intermedias).- La tabla de páginas intermedia (punteros a tablas de páginas).- Las tablas de páginas (punteros a páginas).

Cada plataforma sobre la que funciona Linux tiene que proporcionar los marcos que permitan al núcleo atravesar las tablas de página de cada proceso. De esta forma, el núcleo no necesita conocer el formato de las entradas de la tabla de páginas ni cómo éstas se organizan.

Esto es tan útil que Linux utiliza el mismo código de gestión de tablas de páginas en un procesador Alpha, que tiene tres niveles de tablas de páginas, que en un Intel x86, que sólo tiene dos niveles de tablas (para ello, supone que el tamaño de la tabla intermedia es 1, y por tanto, coincide con la entrada del directorio).

Asignación de páginas

Linux utiliza el algoritmo Buddy para asignar y liberar eficientemente bloques de páginas. El código de asignación intenta asignar un bloque de una o más páginas físicas. Las páginas

4 de junio de 2013

Page 34: 4.INVESTIGACION DE LINUX.docx

33

SISTEMA OPERATIVO: LINUX

se asignan en bloques de tamaño potencia de 2. Esto quiere decir que pueden asignar bloques de 1, 2, 4, etc. páginas.

El algoritmo de asignación busca primero entre los bloques de páginas de igual tamaño que el pedido. Luego sigue la lista de páginas libres que está encolada. Si no encuentra ningún bloque de páginas del tamaño pedido libre, entonces busca en los siguientes (los cuales son del doble del tamaño pedido).

Puesto que el número de páginas de cada bloque es potencia de 2, simplemente dividiendo el bloque por la mitad se obtienen dos bloques con un tamaño de bloque inmediatamente inferior.

Cache de páginas Linux

El cometido de la cache de páginas en Linux es el de acelerar el acceso a los ficheros de disco. Las lecturas sobre los ficheros proyectados en memoria se realizan página a página y estas páginas se guardan en la cache de páginas.

Siempre que se lee en una página de un fichero proyectado en memoria, por ejemplo cuando se necesita traer a memoria una página desde un fichero de intercambio, la página se lee a través de la cache de páginas. Linux asigna una página física y lee la página desde el fichero del disco.

Si es posible, Linux comenzará una lectura de la siguiente página del fichero. Con esta página de adelanto se consigue que si el proceso está accediendo las páginas de forma secuencial, la siguiente página esté lista y esperando en memoria la petición del proceso.

Con el tiempo, la cache de páginas va creciendo conforme las imágenes se leen y ejecutan. Las páginas han de ser eliminadas de la cache cuando dejan de utilizarse. Conforme Linux utiliza memoria puede comenzar a escasear las páginas de memoria física. En esta situación Linux reducirá el tamaño de la cache de páginas.

Segmentación en Linux:

Linux no aprovecha la segmentación. Sin embargo, no puede desactivarla, la utiliza de una forma muy limitada. Se ha preferido la paginación sobre la segmentación porque la

4 de junio de 2013

Page 35: 4.INVESTIGACION DE LINUX.docx

34

SISTEMA OPERATIVO: LINUX

gestión de memoria es más simple, y uno de los objetivos de Linux es la portabilidad: muchos procesadores soportan malamente la segmentación, así que la independencia de la plataforma se vería disminuida en Linux.

Linux gestiona la memoria central y las tablas de páginas utilizadas para convertir las direcciones lineales (virtuales) en direcciones físicas. Implementa una gestión 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 paginación en Linux que se hace imposible de abordar.

3.4 Administración de memoria virtual

Algoritmo de reemplazo de páginas

El algoritmo de reemplazo de páginas de Linux se basa en el algoritmo del reloj, que, en caso de ser el sencillo, se asocia un bit de uso y un bit de modificación a cada página de la memoria principal. En Linux utiliza una variable edad que, cada vez que se accede a la página, se incrementa la variable y recorre periódicamente la reserva de páginas globales y disminuye la variable de edad de cada página cuando rota por todas las páginas de la memoria principal. Una página con un envejecimiento 0 es una página “vieja” que no se ha referenciado en bastante tiempo y es la mejor candidata para el reemplazo, y cuanto mayor valor de edad, más frecuentemente se ha usado la página recientemente y menos elegible es para el reemplazo

Trata de mantener algunos marcos desocupados, creando una reserva de marcos libres, para poderlos usar cuando se solicite un nuevo marco. El verdadero algoritmo de paginación se encarga de mantener esta reserva de marcos libres.

Un demonio de paginación periódicamente comprueba si hay suficientes marcos libres:

- Si hay suficiente se desactiva hasta la próxima vez- Si no hay suficientes trata de recuperar marcos de diferentes tipos

El demonio de paginación también se puede activar si se necesitan marcos libres y no hay suficientes.

Demonio de paginación:

Su código 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 páginas.

4 de junio de 2013

Page 36: 4.INVESTIGACION DE LINUX.docx

35

SISTEMA OPERATIVO: LINUX

El valor de urgencia se pasa como parámetro, para que el procedimiento sepa cuánto debe esforzarse por recuperar páginas. El efecto de este algoritmo es que primero se toman las páginas fáciles de cada categoría para después ir tras las difíciles.

Cuando se han recuperado suficientes páginas se duerme otra vez.

Los procedimientos para recuperar marcos:

1er Procedimiento. Trata de recuperar páginas del caché de paginación y del caché de buffer a los que no se haya hecho referencia últimamente.

2°Procedimiento. Busca páginas compartidas que al parecer ninguno de los usuarios esté utilizando mucho.

3°Procedimiento. Intenta recuperar páginas de usuarios ordinarias.

Tercer procedimiento para recuperar páginas de usuario:

Primero se ejecuta un ciclo que abarca todos los procesos y determina cuál es el que más páginas tiene en memoria.

Una vez localizado ese proceso se examinan todas sus páginas en orden por dirección virtual, partiendo del punto donde se quedó por última vez el procedimiento.

Paginación por Demanda

Puesto que hay mucho menos memoria física que memoria virtual, Linux ha de tener especial cuidado de no hacer un mal uso de la memoria física. Una forma de conservar memoria física es cargar sólo las páginas que están siendo utilizadas por un programa.

En este caso no es necesario cargar en memoria toda la base de datos, sino sólo aquellos registros que son examinados. Si la consulta consiste en realizar una búsqueda, entonces no tiene sentido cargar el fragmento de programa que se ocupa de añadir nuevos registros. Esta técnica de cargar sólo páginas virtuales en memoria conforme son accedidas es conocida como Paginación por demanda.

Linux utiliza la paginación por demanda para cargar imágenes 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 asociación de memoria. Sin embargo, sólo la primera parte de la imagen se copia realmente en memoria física, el resto de la imagen se deja en disco. Conforme se va

4 de junio de 2013

Page 37: 4.INVESTIGACION DE LINUX.docx

36

SISTEMA OPERATIVO: LINUX

ejecutando, se generan fallos de página y Linux utiliza el mapa de memoria del proceso para determinar qué partes de la imagen ha de traer a memoria para ser ejecutadas.

Liberación de páginas

Asignar bloques de páginas tiende a fragmentar la memoria al dividir los bloques grandes para conseguir bloques más pequeños. El código de liberación de páginas recombina páginas en bloques de mayor tamaño siempre que es posible. De hecho, el tamaño de bloque de página es importante pues facilita la recombinación en bloques grandes.

Siempre que se libera un bloque de páginas, se comprueba si está libre el bloque adyacente de igual tamaño. Si es así, se combina con el bloque de páginas recién liberado para formar un bloque nuevo de tamaño doble. Cada vez que dos bloques de páginas se recombinan en uno mayor, el algoritmo de liberación intenta volver a recombinarlo en otro aún mayor. De esta forma, los bloques de páginas libres son tan grandes como la utilización de la memoria permita.

Intercambiando y liberando páginas en Linux

Cuando queda poca memoria física, el subsistema de gestión de memoria de Linux tiene que intentar liberar páginas físicas. Este trabajo es realizado por el demonio de intercambio del núcleo (kswapd). El demonio de intercambio del núcleo es un tipo especial de proceso, un hilo de ejecución del núcleo. Los hilos del núcleo son procesos que no tienen memoria virtual, en lugar de ello, se ejecutan en modo núcleo en el espacio de memoria física. Su misión es la de garantizar que haya suficientes páginas libres en el sistema para mantener al sistema de gestión de memoria funcionando eficientemente.

Linux no quiere enviar a disco de intercambio demasiadas páginas a la vez, por lo lleva la cuenta de cuantas páginas están en ese momento siendo copiadas al fichero de intercambio.

Si hay suficientes páginas libres, el demonio de intercambio se duerme hasta que el temporizador expire, en caso contrario, el demonio intenta de tres formas distintas reducir el número de páginas físicas ocupadas:

- Reduciendo el tamaño de la cache de páginas y el buffer cache.- Enviando a disco páginas compartidas.- Enviando a disco o descartando páginas.

Si el número de páginas libres ha caído demasiado, el demonio de intercambio intentará liberar 6 páginas antes de su próxima ejecución. En caso contrario, intentará liberar 3 páginas. Los métodos anteriores se intentan uno tras otro de hasta que se consiguen

4 de junio de 2013

Page 38: 4.INVESTIGACION DE LINUX.docx

37

SISTEMA OPERATIVO: LINUX

liberar suficientes páginas. Luego el demonio de intercambio se suspende hasta que el temporizador vuelva a expirar. El demonio recuerda cuál fue el último método que empleó para liberar páginas, y la próxima vez que se ejecuta lo vuelve a intentar con el mismo método que tuvo éxito.

4 de junio de 2013

Page 39: 4.INVESTIGACION DE LINUX.docx

38

SISTEMA OPERATIVO: LINUX

4 Administración de entrada/salida en Linux.

4.1 Dispositivos y manejadores de dispositivos: Device drivers.

Uno de los propósitos de un sistema operativo es esconder las peculiaridades de los dispositivos de hardware del sistema de sus usuarios. Este capítulo describe cómo el kernel de Linux maneja los dispositivos físicos en el sistema.

La CPU no es el único dispositivo inteligente en el sistema, cada dispositivo físico tiene su propio controlador de hardware. Cada controlador de hardware tiene su propio control y estado de registros y éstos difieren entre los dispositivos. En lugar de poner el código para manejar a los controladores de hardware en el sistema en cada aplicación, el código se guarda en el kernel de Linux. El software que maneja un controlador de hardware es conocido como un controlador de dispositivo. Los controladores de dispositivos del kernel de Linux son,

esencialmente, una librería de privilegios compartida, memoria residente, manejo de rutinas a bajo nivel. Son los controladores de dispositivos de Linux los que se ocupan de las peculiaridades de los dispositivos que se están manejando.

4 de junio de 2013

Page 40: 4.INVESTIGACION DE LINUX.docx

39

SISTEMA OPERATIVO: LINUX

4.2 Mecanismos y funciones de los manejadores de dispositivos

Son los controladores de dispositivos de Linux los que se ocupan de las peculiaridades de los dispositivos que se están manejando. Uno de las características básicas de este resumen es el manejo de dispositivos. Todos los dispositivos del hardware se parecen a los archivos regulares; estos se pueden abrir, cerrar, leer y escribir usando el mismo estándar, las llamadas al sistema se usan para manipular los archivos. Cada dispositivo en el sistema se representa por un archivo especial de dispositivo. Los dispositivos de la red también son representados por archivos especiales de dispositivos pero ellos son creados por Linux, este encuentra e inicializa a los controladores de red en el sistema. Todos los manejadores de dispositivos por el mismo controlador del dispositivo tienen un número mayor común de dispositivo. Los números de dispositivo menores se usan para distinguir entre los diferentes dispositivos y sus controladores, Linux mapea el archivo especial de dispositivos en las llamadas pasadas del sistema (para montar un archivo del sistema sobre un dispositivo del bloque) al controlador del dispositivo que usa el número del dispositivo mayor y varios sistemas de tablas.

Linux soporta tres tipos de dispositivo de hardware: el carácter, bloque y red. Los dispositivos de carácter son leídos y escritos directamente sin el buffering. Los dispositivos del Bloque sólo pueden escribirse y leerse en múltiplos del tamaño del bloque, típicamente 512 o 1024 bytes. Se acceden a los dispositivos del bloque a través de la memoria caché y se pueden acceden a estos aleatoriamente, es decir, cualquier bloque puede leerse o puede escribirse no importa dónde está en el dispositivo. A los dispositivos de Bloque se puede acceder a través de su archivo especial pero normalmente se accede a ellos a través del archivo de sistema. Solamente un dispositivo del bloque puede soportar un archivo de sistema montado.

Hay muchos manejadores de dispositivos diferentes en el kernel de Linux (ésta es una de las fortalezas de Linux) pero todos ellos comparten algunos atributos comunes:

Kernel codeLos manejadores de dispositivo son parte del kernel y, como otro código dentro del kernel, si estos contienen errores pueden dañar el sistema seriamente. Un controlador escrito incorrectamente puede chocar el sistema, posiblemente dañar archivos del sistema y perder datos, incluso.

4 de junio de 2013

Page 41: 4.INVESTIGACION DE LINUX.docx

40

SISTEMA OPERATIVO: LINUX

Kernel interfacesLos manejadores de dispositivos deben proporcionar una interfaz estándar al kernel de Linux o al subsistema del que ellos son parte.

Kernel mecanismos y serviciosLos manejadores de dispositivo hacen uso del estándar de los servicios del kernel como la asignación de memoria, interrupciones y colas de la espera para operar.

CargableLa mayoría de los controladores de dispositivo pueden ser cargados cuando se necesiten (según la demanda) como los módulos del kernel cuando se necesitan y se descargan cuando ellos ya no están usándose. Esto hace al kernel muy adaptable y eficaz con los recursos del sistema.

ConfigurableLos controladores de dispositivos de Linux pueden construirse en el kernel. Los dispositivos construidos se configuraran cuando el kernel es compilado.

DinámicoComo 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ó controlándose por un manejador de dispositivo particular que no existe. En este caso el manejador de dispositivo es absolutamente redundante y no causa ningún daño 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 opción 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 núcleo sería desastroso si un conductor era para sondear como nada más en el núcleo del sistema permite ejecutar hasta que el dispositivo se había completado la solicitud. En lugar de los controladores de dispositivos de votación usar temporizadores del sistema para tener el núcleo llamar a una rutina dentro del controlador de dispositivo en un momento posterior.

4 de junio de 2013

Page 42: 4.INVESTIGACION DE LINUX.docx

41

SISTEMA OPERATIVO: LINUX

Un controlador de dispositivo impulsado por interrupción 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 interrupción 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 interrupción con el núcleo. Se registra la dirección de una rutina de tratamiento de interrupción y el número de interrupción que desea poseer. Se puede ver que las interrupciones están siendo utilizadas por los controladores de dispositivo, así como el número de cada tipo de interrupciones que ha habido.

Este interés de los recursos de interrupción se realiza en el momento de la inicialización del controlador. Algunas de las interrupciones en el sistema son fijas.

¿Cómo se entrega una interrupción a la CPU?

En sí es dependiente de la arquitectura, pero en la mayoría de las arquitecturas de la entrega de la interrupción 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 montón de trabajo como resultado de recibir una interrupción pueden usar los controladores de medio fondo del núcleo o colas de tareas para las rutinas de cola que se llamarán más 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 interrupción, la cantidad de tiempo que se necesita entre el dispositivo de hardware eleva la interrupción 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 más 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 intervención del procesador. Cada canal de DMA ha asociado un registro de dirección de 16 bits y un número de registro de 16 bits. Para iniciar la transferencia de una base de datos del controlador de dispositivo configura la dirección del canal de DMA y el

4 de junio de 2013

Page 43: 4.INVESTIGACION DE LINUX.docx

42

SISTEMA OPERATIVO: LINUX

recuento de registros, junto con la dirección de la transferencia de datos, leer o escribir. A continuación, 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 sólo tiene acceso a la memoria física en el sistema. Sin embargo, puede bloquear páginas físicas del proceso en memoria, evitando que sean cambiados al dispositivo de intercambio durante una operación de DMA. En segundo lugar, el controlador DMA no se puede acceder a toda la memoria física.

La dirección de registro del canal DMA representa los primeros 16 bits de la dirección DMA, los próximos 8 bits proceden del registro página. Esto significa que las solicitudes de DMA se limitan a la parte inferior 16 Mbytes de memoria.

Canales DMA son recursos escasos, hay sólo 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 número de dispositivos Ethernet utilizan esta técnica. Los dispositivos más flexibles se les puede decir que canales DMA para el uso y, en este caso, el controlador de dispositivo sólo 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 sólo dos campos, un puntero a una cadena que describe el dueño 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 interrupción es recibida o como un fondo medio o el manipulador de cola de tarea sonprogramados, 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

Page 44: 4.INVESTIGACION DE LINUX.docx

43

SISTEMA OPERATIVO: LINUX

usan estructuras de datos para guardar huella del dispositivo que estácontrolando. Estas estructuras de datos pueden ser asignadas estáticamente, parte del código del controlador del dispositivo, pero que podría ser malgastadomientras este hace el Kernel más grande de lo que este necesita ser. Linux proporciona asignación de memoria de Kernel y rutinas de des asignación y este es el que usan los controladores de dispositivos. La memoria del Kernel esasignada en pedazos que son potencia de 2. El número de bytes que demandael controlador del dispositivo es redondeado al próximo límite de tamaño de bloque. Esto hace más fácil la des asignación de memoria del Kernel, como losbloques libres más pequeños pueden ser recombinados en los bloques más 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 físicaspueden necesitar ser desechadas o escritas al dispositivo de intercambio. Normalmente, Linux suspendería el solicitador, poniendo el proceso hacia una cola deespera hasta que allá suficiente memoria física. No todos los controladores de dispositivo (o de hecho el código del Kernel de Linux) pueden querer que esto pase ypara que las rutinas de asignación de memoria del Kernel puedan ser solicitadas para fallar si ellos no pueden asignar la memoria inmediatamente. Si el controladordel dispositivo desea DMA de la memoria asignada puede especificar también que la memoria DMA esta hábil. Este camino está en el Kernel de Linux que necesitaentender lo que constituye la memoria hábil de DMA para este sistema, y no el controlador del dispositivo.

4.3 Estructuras de datos para manejo de dispositivos

El Kernel de Linux debe poder interactuar con ellos en maneras normales. Cada clase de controlador de dispositivo, carácter, bloque y red, proporciona interfacescomunes que el Kernel usa cuando solicita los servicios de ellos. Estos medios de las interfaces comunes que el Kernel puede tratar a menudo de dispositivosdiferentes y sus controladores de dispositivo son absolutamente los mismos.

Linux es muy dinámico, cada vez que inicia el Kernel de Linux puede encontrarse los dispositivos físicos diferentes y así la necesidad de controladores dedispositivos diferentes. Linux le permite incluir a controladores de dispositivos en el momento de la estructura del Kernel por vía de escritura en su configuración.

4 de junio de 2013

Page 45: 4.INVESTIGACION DE LINUX.docx

44

SISTEMA OPERATIVO: LINUX

Cuando estos controladores se inicializan en el tiempo de arranque ellos no pueden descubrir ningún hardware para controlar. Pueden cargarse otros controladorescomo módulos del Kernel cuando son necesitados. Tener suficiente fuerza para esta naturaleza dinámica de controladores de dispositivos, los controladores dedispositivo se registran con el Kernel como son inicializados. Linux mantiene tablas de controladores de dispositivos registrados como parte de sus interfaces conellos. Estas tablas incluyen los indicadores a las rutinas y a la información que sostiene la interface con esa clase de dispositivos.

Dispositivos de carácter

Los dispositivos de carácter, son el más 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 módem usando por el demonio de PPP para conectar un sistema de Linux hacia una red. Cuando un dispositivo de carácter 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 carácter cada una de las cuales los une con las operaciones del archivo específico como abrir, leer, escribir y cerrar.

Cuando un archivo especial de carácter que representa un dispositivo de carácter 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 carácter. Simplemente como un archivo ordinario o directorio, cada dispositivo del archivo especial se representa por un inode VFS. El inode VFS para un carácter es el archivo especial, de hecho para todos los

4 de junio de 2013

Page 46: 4.INVESTIGACION DE LINUX.docx

45

SISTEMA OPERATIVO: LINUX

archivos especiales de dispositivos, este contiene ambos identificadores mayores y menores para el dispositivo. Siempre que un inode VFS representa un carácter el archivo especial se crea, las operaciones del archivo se ponen por defecto a las operaciones del dispositivo de carácter. Estas son operaciones únicas del archivo, la operación de abrir el archivo. Cuando se abre el archivo especial del carácter por una aplicación la operación de abrir el archivo genérico 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. También prepara la estructura de datos del archivo describiendo el archivo especial de carácter, tomando los indicadores de las operaciones del archivo del controlador del dispositivo. Después de esto todas a las aplicaciones de las operaciones de archivo se trazarán las llamadas a las de los dispositivos de carácter puestos en las operaciones del archivo.

Dispositivos de Bloque

Los dispositivos de bloque también 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 carácter. Linux mantiene el set de dispositivos de bloque registrados en el vector blkdevs. Los diferentes dispositivos de carácter, 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 específicas 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 número mayor del dispositivo. La estructura de datos de blk_dev_struct consiste en la dirección 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

Page 47: 4.INVESTIGACION DE LINUX.docx

46

SISTEMA OPERATIVO: LINUX

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 más 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 estática. Si el requerimiento está agregándose a una lista de requerimientos vacía, la función 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, abriéndolos y marcándolos 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

Page 48: 4.INVESTIGACION DE LINUX.docx

47

SISTEMA OPERATIVO: LINUX

Discos Duros

Los controladores de disco mantienen un método más permanente guardando los datos, mientras se crean en los platos fuentes del disco. Para escribir los datos, una cabeza diminuta magnetiza las partículas diminutas en la superficie de los platos. El dato se lee por una cabeza que puede descubrir si una partícula diminuta particular es magnetizada. Una unidad de disco consiste en uno o más platos, cada uno esta echo de vidrio finamente pulido o de compuestos cerámicos y cubierto con una capa fina de óxido férrico. 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 sólo 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 físicamente, en cambio ellos flotan adelante un muy delgado cojín 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 círculos estrechos, concéntricos llamados huellas. La pista 0 es la pista extrema y la pista numerada más alta es la más cercana a la pista del eje central. Un cilindro es el juego de todas las pista con el mismo número. Así que todas las pista 5 de cada lado de cada plato en el disco están conocidas como cilindro 5. Como el número de cilindros es igual que el número de pista, usted ve a menudo geometrías del disco descritas por lo que se refiere a los cilindros. Cada pista es dividida en los sectores. Un sector es la unidad más pequeña de datos que pueden escribirse a o pueden leerse de un disco duro y también es el tamaño del bloque del disco. Un tamaño del sector común es 512 bytes y el tamaño del sector era fijo cuando el disco fue estructurado, normalmente cuando el disco es manufacturado.

Un disco normalmente se describe por su geometría, el número de cilindros, cabezas y sectores.

Aunque los subsistemas del disco construyen las entradas del gendisk durante su inicialización ellos sólo se usan por Linux durante la comprobación de la partición.En cambio, cada subsistema del disco mantiene su propia estructura de datos la cual le permite trazar mayor el dispositivo especial y menor número de dispositivosa las particiones dentro de los discos físicos.

4 de junio de 2013

Page 49: 4.INVESTIGACION DE LINUX.docx

48

SISTEMA OPERATIVO: LINUX

4.4 Operaciones de entrada y de salida

Durante estas fases los datos se transfiere entre el inicializador y el blanco.

ESTADO

En esta fase se entra después de la terminación de todos los comandos y permite que el blanco envíe un octeto de condición que indica el éxito o el fracaso al inicializador.

EL MENSAJE DE ENTRADA Y MENSAJE DE SALIDA

La información adicional se transfiere entre el inicializador y el blanco.

El subsistema SCSI de Linux se constituye de dos elementos básicos, cada uno de los cuales es representado por las estructuras de datos:

Dispositivos de Red

Un dispositivo de red es, según el subsistema de red de Linux, es considerado como una entidad que envía y recibe paquetes de datos. Normalmente es un dispositivo físico 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 inicialización de la red en tiempo de ganancia del núcleo. La estructura de datos device contiene información 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 fácilmente agregados y retirados.

Las estructuras de datos device contienen información sobre el dispositivo de red:

Nombre Información de bus Banderas de Interface Información del Protocolo.

4 de junio de 2013

Page 50: 4.INVESTIGACION DE LINUX.docx

49

SISTEMA OPERATIVO: LINUX

Cada dispositivo describe como puede ser usado por las capas del protocolo de red:

mtu

El tamaño del paquete más grande que esta red puede transmitir no incluyendo ningún vínculo de cabecera de capa que se necesita agregar. Este máximo 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 dirección 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. Estós incluyen Ethernet, X.25, Token Ring, Slip, PPP y Apple Localtalk.

Direcciones

La estructura de datos device retiene un número 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 estándar que las capas protocolares llaman como parte de su interface al vínculo de capa de este dispositivo. Estas incluyen estructurar y enmarcar rutinas transmitidas así como también rutinas para agregar cabeceras estándares de marco y recopilar estadísticas.

4 de junio de 2013

Page 51: 4.INVESTIGACION DE LINUX.docx

50

SISTEMA OPERATIVO: LINUX

5Sistemas de archivos en Linux

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 restauración.

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 diseñado expresamente para Linux. Ext3 versión mejorada de Ext2, ampliamente utilizada en distribuciones

Linux Ext4 nuevo sistema de ficheros para Linux evolucionado de Ext3

5.2 Noción de archivo real y virtual

En Linux, al igual que en Unix, no se accede a los diferentes sistemas de ficheros que el sistema puede usar mediante identificadores de unidad (como el número de la unidad o su nombre), sino que son combinados en un único árbol jerárquico que representa el sistema de ficheros como una entidad individual. Linux añade cada sistema de ficheros en su árbol único cuando es montado en un directorio. Una de las características más importantes de Linux es su soporte para muchos sistemas de ficheros diferentes. Esto lo hace muy flexible y capaz de coexistir con otros sistemas operativos. El sistema de ficheros más popular de Linux es el EXT2, y éste es el soportado por la mayor parte de las distribuciones de Linux.

Un sistema de ficheros da al usuario una visión ordenada de los ficheros y directorios guardados en los discos duros del sistema, independientemente del tipo de su sistema y

4 de junio de 2013

Page 52: 4.INVESTIGACION DE LINUX.docx

51

SISTEMA OPERATIVO: LINUX

de las características de la unidad física 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á algún fichero, tan sólo lo usan.

Archivo Virtual El sistema de Ficheros Virtual está implementado de forma que el acceso a los ficheros es rápido y tan eficiente como es posible. También 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 información 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 ejecución, se podría ver los bloques de datos que se leen y escriben por el sistema de ficheros.

El sistema de archivos virtual ofrece a Linux una visión homogénea 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

Page 53: 4.INVESTIGACION DE LINUX.docx

52

SISTEMA OPERATIVO: LINUX

archivos que exista en el volumen ofreciéndole al sistema operativo un único formato con independencia de cuál sea este sistema de archivos.

VFS permite a Linux soportar muchos, incluso muy diferentes, sistemas de ficheros y cada uno presentando un interfaz software común al VFS. Todos los detalles del sistema de ficheros de Linux son traducidos mediante software de forma que todo el sistema de ficheros parece idéntico 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 información 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 información del espacio que ocupa en un disco duro o sistema de almacenamiento, en otras palabras su tamaño en bytes.

5.3 Componentes de un sistema de archivos

4 de junio de 2013

Page 54: 4.INVESTIGACION DE LINUX.docx

53

SISTEMA OPERATIVO: LINUX

En general, un Sistema de Archivos está compuesto por:

Métodos De Acceso. Se ocupan de la manera en que se tendrá acceso a la información almacenada en el archivo. Ejemplo: Secuencial, Directo, indexado, etc.

Administración De Archivos. Se ocupa de ofrecer los mecanismos para almacenar, compartir y asegurar archivos, así como para hacer referencia a ellos.

Administración De Almacenamiento Secundario. Se ocupa de asignar espacio para los archivos en los dispositivos de almacenamiento secundario.

Mecanismos De Integridad. Se ocupan de garantizar que no se corrompa la información de un archivo, de tal manera que solo la información que deba estar en él, se encuentre ahí.

Mecanismos de Organización Lógica. Contiene las diferentes rutinas y comandos a través de los cuales el usuario podrá estructurar sus archivos virtuales.

Sistemas Teóricos de Archivos. Su objetivo es el de activar y desactivar a través de las rutinas de abrir y cerrar archivos y verifica el modo de acceso.

Mecanismos de Organización Física. Traslada las direcciones lógicas en direcciones físicas correspondientes a las estructuras de memoria secundaria y los buffers en memoria principal necesarios para la transferencia de datos.

Mecanismos de E/S. Por cada petición de acceso al archivo real, este mecanismo genera la secuencia de operaciones elementales de entrada y salida que se necesita.

SCHEDULING E/S. En este nivel es donde se tiene el número de peticiones pendientes así como de las que se están realizando y lleva el control y asignación de tiempo de CPU a las diferentes peticiones de E/S.

5.4 Organización lógica y física Toda entidad física y lógica en Linux se representa como un archivo en el sistema de archivos de Linux. Las entidades físicas incluyen discos, impresoras y terminales; las entidades lógicas incluyen directorios y archivos normales, en los que se almacenan documentos y programas.

4 de junio de 2013

Page 55: 4.INVESTIGACION DE LINUX.docx

54

SISTEMA OPERATIVO: LINUX

Organización física

En Linux no existen unidades físicas, 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 múltiplos de 512. Al igual que el clúster era la estrella del sistema de ficheros FAT, en ext3 es el bloque.

Organización Lógica

El núcleo del sistema trabaja con el sistema de archivos a un nivel lógico y no trata directamente con los dispositivos físicos. Cada disco tiene asociados unos números de dispositivo que son utilizados como índices en una tabla de funciones del núcleo que determinará cuál de ellas es necesario emplear para manejar el disco.

El sistema de ficheros de Linux de forma lógica posee una estructura arbórea cuya raíz es única y se representa por / que además constituye el carácter separador en el camino (Path) de cualquier recurso del sistema.

5.5 Mecanismos de acceso a los archivos

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 restauración.

Un sistema de ficheros no sólo posee los datos contenidos dentro de los ficheros del sistema de ficheros, además mantiene la estructura del sistema de ficheros. Mantiene toda la información que los usuarios de Linux y procesos ven como ficheros, directorios, enlaces flexibles, información de protección de ficheros y así.

4 de junio de 2013

Page 56: 4.INVESTIGACION DE LINUX.docx

55

SISTEMA OPERATIVO: LINUX

Los tipos de acceso más 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 métodos para determinar el punto de inicio de la lectura:Cada operación de lectura da la posición en el archivo con la cual iniciar.Una operación especial (seek) establece la posición de trabajo pudiendo luego leerse el archivo secuencialmente.

5.6 Manejo de espacio en memoria secundaria

La memoria secundaria requiere que la computadora use sus canales de entrada/salida para acceder a la información y se utiliza para almacenamiento a largo plazo de información persistente.

Linux organiza los intervalos de memoria utilizados por un proceso en lo que se denominan regiones de memoria. Estas regiones están caracterizadas por una dirección lógica inicial, una longitud y unos ciertos permisos de acceso.

Organización de las regiones de memoria: una operación que se realiza muy frecuentemente es la búsqueda de la región correspondiente a una dirección lineal. Las regiones se utilizan para representar intervalos lógicos con los mismos permisos o el mismo comportamiento.

Linux es el encargado de la asignación de bloques a archivos, de lo que surgen dos cuestiones, en primer lugar, debe asignarle el espacio de Memoria Secundaria a los archivos y, en segundo lugar, es necesario guardar constancia del espacio disponible para asignar.

Para manejar los espacios en disco existen los siguientes métodos:

Contiguos. Esta asignación requiere que cada archivo ocupe un conjunto de direcciones contiguas en el disco, su asignación es definida por la dirección del primer bloc y la longitud del archivo.

Asignación ligada o encadenada. Cada archivo es una lista ligada de blocks y el directorio contiene un apuntador al primer bloc y al último.

4 de junio de 2013

Page 57: 4.INVESTIGACION DE LINUX.docx

56

SISTEMA OPERATIVO: LINUX

La asignación se hace con bloques individuales, cada bloque contendrá un puntero al siguiente bloque de la cadena. La tabla de asignación de archivos necesita una sola entrada por cada archivo que muestre el bloque de comienzo y la longitud del mismo, cualquier bloque puede añadirse a la cadena. No hay que preocuparse por la fragmentación externa porque solo se necesita un bloque cada vez.

Asignación Indexada. Cada archivo tiene su propio bloc de índice el cual es un arreglo de direcciones de bloc.En esta asignación la tabla de asignación de archivos contiene un índice separado de un nivel para cada archivo: el índice posee una entrada para cada sección asignada al archivo. Normalmente, los índices no están almacenados físicamente como parte de la tabla de asignación de archivos. Más exactamente el índice de archivo se guardara en un bloque aparte y la entrada del archivo en la entrada de asignación 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 más procesos y es posible cargar procesos más grandes.

Reduce la velocidad de ejecución. Cuando se ejecutan procesos que corren en memoria secundaria no se puede igualar la velocidad de proceso que se conseguiría si se utilizase memoria principal.

Linux debe gestionar la traducción de direcciones entre el espacio de memoria virtual y físico. Para este fin Linux se apoya en hardware específico como la MMU (unidad de gestión de memoria, normalmente integrada en la CPU).

5.7 Modelo jerárquico

La gestión adecuada del acceso a disco es otro de los aspectos importantes en el proceso de administración de sistemas operativos multiusuario y multitarea y es imprescindible mantener una estructura básica con un cierto nivel organizativo. El sistema operativo interactúa con los usuarios y las aplicaciones, y se hace necesario un modelo de seguridad dependiente de la forma en que se almacenan los ficheros en los dispositivos.

Un sistema de archivos puede verse desde dos categorías lógicas de ficheros:

4 de junio de 2013

Page 58: 4.INVESTIGACION DE LINUX.docx

57

SISTEMA OPERATIVO: LINUX

• Archivos compartidos con otras máquinas o privados. • Archivos variables o estáticos.

Por lo tanto, un sistema de archivos es un subárbol de directorios con un directorio raíz que debe tener unos permisos acordes con las necesidades de acceso a sus archivos, una estructura lógica de almacenamiento y un punto de montaje adecuado en el árbol de directorios global del servidor.

Linux Proporciona un espacio de nombres global y jerárquico para los ficheros, directorios y otros objetos relacionados con los ficheros. Además, 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 información en una tabla de memoria real.Todas las referencias subsecuentes al archivo utilizarán la información de la memoria principal.

5.8 Mecanismos de recuperación en caso de falla

La recuperación de datos de Linux es muy diferente de otros tipos de la recuperación. El procedimiento para la recuperación implica extraer datos de varios sistemas operativos basados en el Linux y unidad de disco duro cuando usted se manejaría un huevo. Varia causa del fracaso de Datos Linux es debido a fracasos de unidades de disco duro que son causados debido a materiales de embarque malos. La precaución para ser tomada a fin de prevenir la unidad de disco del fracaso es primeros medios de abrigo en un bolso antiestático para prevenir la electricidad estática, usar una caja que es al menos dos veces el tamaño de los medios de modo que los medios puedan ser suspendidos en medio de la caja, paquete bien con espuma, abrigo de burbuja, o periódico entonces los medios no se moverán a partir del medio de la caja.

Linux no es seguramente inmune a la amenaza de un fallo en la alimentación de corriente o peor. Una de las mejores opciones ahí hoy tendría que ser la Recuperación de Datos R-Linux. El R-Linux es una recuperación de datos y herramienta no borrada para el sistema de archivo de Linux. Recuperación de archivo después de fallo en la alimentación de corriente, fallo del sistema, infección de virus o reforma de partición, hasta para el sistema de archivo diferente. La creación de la imagen archiva un disco entero, partición o su parte. Tal imagen de unidad de disco puede ser tratada como la unidad de disco regular.

4 de junio de 2013

Page 59: 4.INVESTIGACION DE LINUX.docx

58

SISTEMA OPERATIVO: LINUX

Los archivos recuperados pueden ser ahorrados en cualquier disco accesible por el sistema operativo de servidor. La Recuperación Rápida LINUX es el software de recuperación de datos LINUX no destructivo. Hay sólo tres pasos para realizar la operación completa. Ellos son el Análisis, Seleccionar y Ahorrar.

El Software de Recuperación de Datos de Linux usa el algoritmo rápido para buscar y restaurar particiones perdidas, borradas, archivos y carpetas y de ahí es el software de recuperación de datos Linux rápido, simple y fácil 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 pérdida de datos y de ahí apoya su continuidad comercial. Los datos son recuperados entonces dentro de una materia de horas, comparadas a una recuperación de datos típica puede tomar dos días hasta cinco días.

La Recuperación de Datos de la recuperación de datos remota afirma que esto es la primera compañía para ofrecer la recuperación 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 Recuperación de Datos de Linux es la tarea difícil y requiere una maestría y profesional talentoso a fin de recuperar los datos.

4 de junio de 2013

Page 60: 4.INVESTIGACION DE LINUX.docx

59

SISTEMA OPERATIVO: LINUX

6 Protección y seguridad

6.1 concepto y objetivos de protección

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 obligación de proteger a unos usuarios frente a otros y protegerse a sí mismo.

Linux es una excelente estación de trabajo aislada, pero lo habitual es que cada máquina Linux esté conectada a una red y además esté prestando servicios de red. El sistema tiene la obligación de garantizar los servicios que presta.

Además, con la generalización de las conexiones con Internet y el rápido desarrollo del software, la seguridad se está convirtiendo en una cuestión cada vez más importante. Ahora, la seguridad es un requisito básico, ya que la red global es insegura por definición. Mientras sus datos estén almacenados en un soporte informático, mientras sus datos vayan desde un sistema X a otro sistema Y a través de un medio físico, Internet, por ejemplo, puede pasar por ciertos puntos durante el camino proporcionando a otros usuarios la posibilidad de interceptarlos, e incluso alterar la información contenida. Incluso algún 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 número de potenciales atacantes. También queremos remarcar el carácter dinámico de la seguridad de los sistemas en red. Continuamente aparecen nuevos métodos para conseguir accesos indebidos o comprometer el correcto funcionamiento de la red. Esto obliga a estar actualizado permanentemente, y consultar las publicaciones electrónicas que informan de los últimos sucesos detectados. Evidentemente, estas publicaciones informan principalmente sobre

4 de junio de 2013

Page 61: 4.INVESTIGACION DE LINUX.docx

60

SISTEMA OPERATIVO: LINUX

actividades que ya se han llevado a cabo, por lo que esperamos que no sea el primero en sufrirlas. Pero también se puede encontrar información 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 más habituales donde buscar una información actualizada de ese tipo, y algunos métodos generales para prevenir que esos programas tengan éxito en su sistema.

6.2 funciones del sistema de protección

Como probablemente sabrá, las fuentes del núcleo de Linux son abiertas. Cualquiera puede obtenerlas, analizarlas y modificarlas. Este modelo de desarrollo abierto, que siguen tanto Linux como la mayoría de las aplicaciones que se ejecutan sobre él, conduce a altos niveles de seguridad. Es cierto que cualquiera puede acceder al código fuente para encontrar las debilidades, pero no es menos cierto que el tiempo que tarda en aparecer la solución para cualquier debilidad se mide más fácilmente en horas que en días.

Gracias a esto, Linux es conocido por su alto nivel de estabilidad que parte del propio núcleo del sistema operativo.

Seguridad física

Las primeras medidas de seguridad que necesita tener en cuenta son las de seguridad física de sus sistemas. Hay que tomar en consideración quiénes tienen acceso físico a las máquinas y si realmente deberían acceder.

El nivel de seguridad física que necesita en su sistema depende de su situación concreta. Un usuario doméstico no necesita preocuparse demasiado por la protección física, salvo proteger su máquina de un niño o algo así.

Linux proporciona los niveles exigibles de seguridad física para un sistema operativo:

Un arranque seguro Posibilidad de bloquear las terminales Por supuesto, las capacidades de un sistema multiusuario real.

Seguridad en el arranque

4 de junio de 2013

Page 62: 4.INVESTIGACION DE LINUX.docx

61

SISTEMA OPERATIVO: LINUX

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 sesión y trabajar con el sistema. Si no lo es, no tendrá opción de hacer absolutamente nada. Además, el sistema registra todos los intentos de acceso (fallidos o no), por lo que no pasarán desapercibidos intentos repetidos de acceso no autorizado.

LILO (Linux Loader) es el encargado de cargar el sistema operativo en memoria y pasarle información para su inicio

Y ahora algunas consideraciones generales:

Tenga en cuenta que ningún sistema es realmente seguro si alguien, con los conocimientos necesarios, puede usar su propio disco para arrancar.

Si tiene una máquina servidora, y tiene una clave para el arranque, la máquina 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 presentación al sistema. Entonces un usuario incauto introducirá su nombre y clave, que quedarán a merced del autor del engaño.

Si se aleja de su máquina de vez en cuando, estaría 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 gráfico. Está incluido en la mayoría 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 página de manual para ver más detalles, algunos curiosos.

vlock es un simple programa que le permite cerrar alguna o todas las consolas virtuales de su máquina Linux. Puede bloquear sólo aquélla en la que está trabajando o todas. Si sólo 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 máquina u otras formas de deteriorar su trabajo.

Cuentas de usuario, grupos

4 de junio de 2013

Page 63: 4.INVESTIGACION DE LINUX.docx

62

SISTEMA OPERATIVO: LINUX

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 características:

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 mínimos privilegios para que pueda realizar su trabajo sin resultar un peligro para otros usuarios o el sistema. Más 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 sólidas:

No deben ser una palabra conocida. Deberían contener letras, números y caracteres especiales. Deben ser fáciles de recordar y difíciles 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; después son comparadas con el valor de la clave cifrada que queremos averiguar hasta

4 de junio de 2013

Page 64: 4.INVESTIGACION DE LINUX.docx

63

SISTEMA OPERATIVO: LINUX

que el valor obtenido de un cifrado coincide con una clave cifrada. Posteriormente notificaremos al usuario que su clave es débil 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 núcleo

Linux tiene la gran ventaja de tener disponible el código fuente del núcleo; en realidad Linux propiamente dicho es sólo el núcleo. Esto nos permite la posibilidad de crear núcleos a medida de nuestras necesidades. Y parte de nuestras necesidades será la mejora de la seguridad.

Para compilar el núcleo primero tendremos que configurar las opciones que nos interesen. Las fuentes del núcleo se guardan habitualmente en el directorio correspondiente, y una vez situados en él, tendremos

que ejecutar, si estamos en modo gráfico. Así nos aparecen todas las opciones de configuración. Dentro de ellas nos vamos a fijar en las que están relacionadas con la seguridad, viendo una breve explicación de lo que hacen y cómo se usan.

Como el núcleo controla las características de red de su sistema, es importante que el núcleo tenga las opciones que garanticen la seguridad y que el propio núcleo no pueda ser comprometido. Para prevenir algunos de los últimos ataques de red, debe intentar mantener una versión del núcleo actualizada.

Una de las características más interesantes del núcleo Linux es la posibilidad de realizar enmascaramiento de direcciones. Con esta técnica podremos dar acceso a Internet a una red local con direcciones privadas de forma transparente, es decir, sin ningún tipo de modificación en la configuración de las aplicaciones clientes, a diferencia de los proxies clásicos.

Dispositivos del núcleo

Hay algunos dispositivos de bloque y carácter disponibles en Linux que también le resultarán útiles para mantener la seguridad de sus sistemas.

4 de junio de 2013

Page 65: 4.INVESTIGACION DE LINUX.docx

64

SISTEMA OPERATIVO: LINUX

Comunicaciones seguras

Por último, nos interesará mantener unas comunicaciones seguras para garantizar la privacidad e integridad de la información. Actualmente existen las herramientas necesarias para cada necesidad.

6.3 Implementación de la matriz de acceso

La mayor parte de las entradas de la matriz están vacías. 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. Además hay información 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 omisión, 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 están protegidas por el sistema. Protección 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 término 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.

Comparación Cuando un usuario crea un objeto, establece sus derechos, pero es difícil determinar el conjunto de derechos para cada dominio. Las listas de capacidades son útiles para localizar información de un proceso en particular pero no se corresponden con

4 de junio de 2013

Page 66: 4.INVESTIGACION DE LINUX.docx

65

SISTEMA OPERATIVO: LINUX

las necesidades del usuario. El mecanismo de cerradura y llave, es un término medio. 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 combinación entre listas de acceso y capacidades.

6.4 Protección basada en el lenguaje

La protección se logra con la ayuda del núcleo de Linux que valida los intentos de acceso a recursos. El gasto de inspeccionar y validar todos los intentos de acceso a todos los recursos es muy grande, por lo tanto debe ser apoyada por hardware. Al aumentar la complejidad de Linux, se deben refinar los mecanismos de protección. Los sistemas de protección, no solo se preocupan de si puedo acceder a un recurso, sino también de cómo lo accedo, por lo tanto los diseñadores de aplicaciones deben protegerlos, y no solo Linux. Los diseñadores de aplicaciones mediante herramientas de los lenguajes de programación pueden declarar la protección junto con la tipificación de los datos.

Ventajas:Las necesidades de protección se declaran sencillamente y no llamando procedimientos de Linux.

Las necesidades de protección pueden expresarse independientemente de los recursos que ofrece Linux.

El diseñador no debe proporcionar mecanismos para hacer cumplir la protección.

Los privilegios de acceso están íntimamente relacionados con el tipo de datos que se declara. Diferencias entre las distintas formas de protección:

Seguridad:La obligación de cumplimiento por núcleo ofrece un grado de seguridad que el código de seguridad ofrecido por el compilador.

Flexibilidad:La flexibilidad de la implementación por núcleo es limitada. Si un lenguaje no ofrece suficiente flexibilidad, se puede extender o sustituir, perturbando menos cambios en el sistema que si tuviera que modificarse el núcleo.

4 de junio de 2013

Page 67: 4.INVESTIGACION DE LINUX.docx

66

SISTEMA OPERATIVO: LINUX

EficienciaSe logra mayor eficiencia cuando el hardware apoya la protección. La especificación de protección en un lenguaje de programación permite describir en alto nivel las políticas de asignación y uso de recursos. El programador de aplicaciones necesita un mecanismo de control de acceso seguro y dinámico 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 básicas:

Distribuir capacidades de manera segura y eficiente entre procesos clientes. Especificar el tipo de operaciones que un proceso podría invocar en un recurso

asignado. Especificar el orden en que un proceso dado puede invocar las operaciones de un

recurso.

6.5 Concepto de seguridad

Los términos seguridad y protección se utilizan en forma indistinta. Sin embargo, es útil hacer una distinción entre los problemas generales relativos a la garantía de que los archivos no sea leídos o modificados por personal no autorizado, lo que incluye aspectos técnicos, de administración, legales y políticos, por un lado y los sistemas específicos del sistema operativo utilizados para proporcionar la seguridad, por el otro. Para evitar la confusión, utilizaremos el término seguridad para referirnos al problema general y el término mecanismo de protección para referirnos a los mecanismos específicos del sistema operativo utilizado para resguardar la información de la computadora.

La seguridad tiene muchas facetas. Dos de las más importantes son la perdida de datos y los intrusos. Algunas de las causas más comunes de la perdida de datos son:

• Actos divinos: Incendios, inundaciones, terremotos, guerras, revoluciones o ratas que roen las cintas o discos flexibles.

• Errores de Hardware o Software: Mal funcionamiento de la CPU, discos o cintas ilegibles, errores de telecomunicación o errores en el programa.

• Errores Humanos: Entrada incorrecta de datos, mal montaje de las cintas o el disco, ejecución incorrecta del programa, perdida de cintas o discos.

La mayoría de estas causas se pueden enfrentar con el mantenimiento de los respaldos adecuados; de preferencia, en un lugar alejado de los datos originales.

4 de junio de 2013

Page 68: 4.INVESTIGACION DE LINUX.docx

67

SISTEMA OPERATIVO: LINUX

Un problema más interesante es que hacer con los intrusos. Estos tienen dos variedades. Los intrusos pasivos solo desean leer archivos que no están autorizados a leer. Los intrusos activos son más crueles: Desean hacer cambios no autorizados a los datos. Si se desea diseñar un sistema seguro contra los intrusos, es importante tener en cuenta el tipo de intruso con el que se desea tener protección. Algunas de las categorías comunes son:

• Curiosidad casual de usuarios no técnicos. Muchas personas tienen en sus escritorios terminales para sistemas con tiempo compartido y, por la naturaleza humana, algunos de ellos leerán el correo electrónico de los demás u otros archivos, si no existen barreras en frente de ellos. Por ejemplo la mayoría de los sistemas UNIS tienen pre definido que todos los archivos se pueden leer de manera pública.

• Conocidos husmeando. Algunos estudiantes, programadores de sistemas, operadores y demás personal técnico consideran como un reto personal romper la seguridad del sistema de cómputo local. A menudo son muy calificados y están 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 interés, para quedarse con una pequeña fracción 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 país para robar programas, secretos comerciales, patentes, tecnología, diseño de circuitos, planes de comercialización, etc. A menudo, este intento implica la cobertura de cables o el levantamiento de antenas hacia la computadora con el fin de recoger su radiación electromagnética.

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 protección depende claramente de quien se piensa sea el enemigo.

Otro aspecto del problema de la seguridad es la primacía: la protección de las personas respecto del mal uso de la información en contra de uno mismo. Esto implica en forma casi inmediata muchos aspectos morales y legales.

4 de junio de 2013

Page 69: 4.INVESTIGACION DE LINUX.docx

68

SISTEMA OPERATIVO: LINUX

Para proteger un sistema, debemos optar las necesarias medidas de seguridad en cuatro niveles distintos:

1. Físico. El nodo o nodos que contengan los sistemas informáticos deben dotarse de medidas de seguridad físicas 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 autorización 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). También pueden ser engañados para permitir el acceso de otros, mediante técnicas de ingeniería social. Uno de los tipos de ataque basado en las técnicas de ingeniería social es el denominado phishing; con este tipo de ataque, un correo electrónico o página web de aspecto autentico llevan a engaño a un usuario para que introduzca información confidencial. Otra técnica comúnmente utilizada es el análisis de desperdicios, un término autorizado a la computadora (por ejemplo, examinando el contenido de las papeleras, localizando listines de teléfonos encontrando notas con contraseñas). Estos problemas de seguridad son cuestiones relacionadas con la gestión y con el personal, más 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 denegación de servicio. Asimismo, una cierta consulta a un servicio podría conducir a la revelación de contraseñas o un desbordamiento de la pila podría 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 informáticos que viajen a través de líneas arrendadas privadas, de líneas compartidas como Internet, de conexiones inalámbricas o de líneas de acceso telefónico. La interceptación de estos datos podría ser tan dañina como el acceso a un computador, y la interrupción en la comunicación podría constituir un ataque remoto de denegación 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 (físico o humano) podría puentear las medidas de seguridad que son

4 de junio de 2013

Page 70: 4.INVESTIGACION DE LINUX.docx

69

SISTEMA OPERATIVO: LINUX

estrictamente de bajo nivel. Así, la frase que afirma que una cadena es tan fuerte como el más débil de sus eslabones es especialmente cierta cuando hablamos de seguridad de los sistemas. Para poder mantener la seguridad, debemos contemplar todos estos aspectos.

Además, el sistema debe proporcionar mecanismos de protección para permitir la implementación de las características de seguridad. Sin la capacidad de autorizar a los usuarios y procesos, de controlar su acceso y de registrar sus actividades, sería imposible que un sistema operativo implementara medidas de seguridad o se ejecutara de forma segura. Para soportar un esquema global de protección hacen falta mecanismos de protección hardware.

6.6 Clasificación de la seguridad

La seguridad interna está relacionada a los controles incorporados al hardware y al Sistema Operativo para asegurar los recursos del sistema.

Seguridad Externa

La seguridad externa consiste en:

Seguridad física. Seguridad operacional.

La seguridad física incluye:

Protección contra desastres (como inundaciones, incendios, etc.). Protección contra intrusos.

En la seguridad física son importantes los mecanismos de detección, algunos ejemplos son:

Detectores de humo. Sensores de calor. Detectores de movimiento.

La protección 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

Page 71: 4.INVESTIGACION DE LINUX.docx

70

SISTEMA OPERATIVO: LINUX

La seguridad física trata especialmente de impedir la entrada de intrusos:

Se utilizan sistemas de identificación física:o Tarjetas de identificación.o Sistemas de huellas digitales.o Identificación por medio de la voz.

Seguridad Operacional

Consiste en las diferentes políticas y procedimientos implementados por la administración de la instalación computacional.

La autorización determina que acceso se permite y a quien.

La clasificación 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.

Un aspecto crítico es la selección y asignación de personal:

La pregunta es si se puede confiar en la gente. El tratamiento que generalmente se da al problema es la división 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 cooperación

entre muchas personas: Se reduce la probabilidad de violar la seguridad.

o Debe instrumentarse un gran número de verificaciones y balances en el sistema para ayudar a la detección 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

Page 72: 4.INVESTIGACION DE LINUX.docx

71

SISTEMA OPERATIVO: LINUX

Para diseñar medidas efectivas de seguridad se debe primero:

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.

6.7 Validación y amenazas al sistema

• Identificar cada usuario que está trabajando en el sistema (usando los recursos).

• Uso de contraseñas.

• Vulnerabilidad de contraseñas.

o o Que sean complejas y difíciles de adivinar.o o Cambiarlas de vez en cuando.o o Peligro de pérdida del secreto.

• La contraseña debe guardarse cifrada.

Protección por Contraseña

Las clases de elementos de autentificación para establecer la identidad de una persona son:

Algo sobre la persona:

o Ej.: huellas digitales, registro de la voz, fotografía, firma, etc. Algo poseído por la persona:

o Ej.: insignias especiales, tarjetas de identificación, llaves, etc. Algo conocido por la persona:

o Ej.: contraseñas, combinaciones de cerraduras, etc.

El esquema más común de autentificación es la protección por contraseña:

El usuario elige una palabra clave, la memoriza, la teclea para ser admitido en el sistema computarizado:

o La clave no debe desplegarse en pantalla ni aparecer impresa.

4 de junio de 2013

Page 73: 4.INVESTIGACION DE LINUX.docx

72

SISTEMA OPERATIVO: LINUX

La protección por contraseñas tiene ciertas desventajas si no se utilizan criterios adecuados para:

Elegir las contraseñas.

Comunicarlas fehacientemente en caso de que sea necesario. Destruir las contraseñas luego de que han sido comunicadas. Modificarlas luego de algún tiempo.

Los usuarios tienden a elegir contraseñas fáciles de recordar:

Nombre de un amigo, pariente, perro, gato, etc.

Numero de documento, domicilio, patente del auto, etc.

Estos datos podrían ser conocidos por quien intente una violación a la seguridad mediante intentos repetidos, por lo tanto debe limitarse la cantidad de intentos fallidos de acierto para el ingreso de la contraseña.

La contraseña no debe ser muy corta para no facilitar la probabilidad de acierto.

Tampoco debe ser muy larga para que no se dificulte su memorización, ya que los usuarios la anotarían por miedo a no recordarla y ello incrementaría los riesgos de que trascienda.

Contraseñas de un solo uso

• Al final de cada sesión, se le pide al usuario que cambie la contraseña.

• Si alguien “roba una contraseña”, el verdadero usuario se dará cuenta cuando vaya a identificarse de nuevo, pues el impostor habrá cambiado la contraseña, con lo que el fallo de seguridad queda detectado.

Verificación de Amenazas

Es una técnica según 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

Page 74: 4.INVESTIGACION DE LINUX.docx

73

SISTEMA OPERATIVO: LINUX

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 penetración 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 común de los piratas informáticos consiste en escribir un programa que cree una brecha de seguridad. De hecho, las mayorías 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

Definición.- Un programa indudablemente útil e inocente que contiene códigos escondidos que permiten la modificación no autorizada y la explotación o destrucción de la información. 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, traducción más fiel del inglés Trojan horse aunque no tan utilizada) a un programa malicioso capaz de alojarse en computadoras y permitir el acceso a usuarios externos, a través de una red local o de Internet, con el fin de recabar información o controlar remotamente a la maquina anfitriona.

Un troyano no es de por sí, un virus, aun cuando teóricamente 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 huésped destructivo, el troyano no necesariamente provoca danos porque no es su objetivo.

Suele ser un programa pequeño alojado dentro de una aplicación, una imagen, un archivo de música u otro elemento de apariencia inocente, que se instala en el sistema al ejecutar

4 de junio de 2013

Page 75: 4.INVESTIGACION DE LINUX.docx

74

SISTEMA OPERATIVO: LINUX

el archivo que lo contiene. Una vez instalado parece realizar una función ú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 técnica para instalar un software de acceso remoto que permite monitorizar lo que el usuario legítimo de la computadora hace y, por ejemplo, capturar las pulsaciones del teclado con el fin de obtener contraseñas u otra información 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 heurística; es recomendable también instalar algún software anti troyano, de los cuales existen versiones gratis aunque muchas de ellas constituyen a su vez un troyano. Otra solución 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 extraños, vigilar accesos a disco innecesarios, etc.

Lo peor de todo es que últimamente los troyanos están siendo diseñados 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 cuál es el tipo de uso que se les y poder sacar mejores herramientas al mercado llamados también "troyanos sociales"

Los troyanos están actualmente ilegalizados, pero hay muchos crackers que lo utilizan.

PUERTA TRASERA

En la informática, una puerta trasera, es una secuencia especial dentro del código de programación mediante el programador puede acceder o escapar de un programa en caso de emergencia o contingencia en algún problema.

A su vez, estas puertas también 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

Page 76: 4.INVESTIGACION DE LINUX.docx

75

SISTEMA OPERATIVO: LINUX

estas puedan llegar a producir. Al hablar de estas nos referimos genéricamente a una forma "no oficial" de acceso a un sistema o a un programa.

Algunos programadores dejan puertas traseras a propósito, para poder entrar rápidamente en un sistema; en otras ocasiones existen debido a fallos o errores.

Ni que decir tiene que una de las formas típicas de actuación de los piratas informáticos 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 máquina 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 prácticamente 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 ofreciéndole algún programa maravilloso y tentador, no le crea de inmediato. Lo que están probablemente a punto de darle es un troyano, un servidor que le proporcionara a algún 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 malévolo en algunos casos, es que cuando corren, se instalan en el sistema sin necesidad de la intervención del usuario y una vez instalados en la computadora, no se pueden visualizar estas aplicaciones en la lista de tareas en la mayoría de los casos.

Concluimos esto, recomendando ciertas medidas muy básicas para estar a salvo de las puertas traseras y el delicado riesgo para la seguridad que estas representan.

4 de junio de 2013

Page 77: 4.INVESTIGACION DE LINUX.docx

76

SISTEMA OPERATIVO: LINUX

Características principales:

El tipo de actuación es retardada.

El creador es consciente en todo momento del posible daño que puede causar y del momento que este se puede producir.

Este ataque está determinado por una condición que determina el creador dentro del código.

El código no se replica.

Los creadores de este tipo de códigos malignos suelen ser personal interno de la empresa, que por discrepancias con la dirección o descontento suelen programarlas para realizar el daño.

VIRUS

Un virus informático es un programa que se copia automáticamente 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 código de este. Los virus pueden destruir, de manera intencionada, los datos almacenados en un ordenador, aunque también existen otros más benignos, que solo se caracterizan por ser molestos.

El funcionamiento de un virus informático es conceptualmente simple. Se ejecuta un programa que está infectado, en la mayoría de las ocasiones, por desconocimiento del usuario. El código del virus queda residente (alojado) en la memoria RAM de la computadora, aun cuando el programa que lo contenía haya terminado de ejecutarse. El virus toma entonces el control de los servicios básicos del sistema operativo, infectando de, manera posterior, archivos ejecutables que sean llamados para su ejecución. Finalmente se añade el código 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 típicamente un fallo en los mecanismos de protección de un sistema para atacar a los programas. Por contraste, las amenazas del

4 de junio de 2013

Page 78: 4.INVESTIGACION DE LINUX.docx

77

SISTEMA OPERATIVO: LINUX

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 reproducción también resultan comunes en las redes que interconectan los sistemas. De hecho, estos ataques son más efectivos y más difíciles de contrarrestar cuando están implicados múltiples sistemas.

La generalización de este concepto es que el compartir secretos (para demostrar la identidad y en forma de claves de cifrado) es una necesidad para la autenticación del cifrado, y que esa compartición resulta más sencilla en aquellos entornos (por ejemplo con un único sistema operativo) en los que existan métodos seguros de compartición. Estos métodos incluyen la memoria compartida y los mecanismos de comunicación interprocesos.

GUSANOS

Un gusano es un virus informático 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 automáticas 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 replicación, 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 rápidamente. Bloquean las redes y posiblemente provocan esperas largas para ver las páginas Web en Internet.

Debido a que los gusanos no tienen que viajar mediante un programa o archivo "host", también pueden crear un túnel 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 portátil, por ejemplo el robo de un portátil con toda la documentación dentro. No sólo por el robo de la información, que si hacemos copias de seguridad debería ser mínimo, sino por la desagradable sensación de dejar

4 de junio de 2013

Page 79: 4.INVESTIGACION DE LINUX.docx

78

SISTEMA OPERATIVO: LINUX

parte de nuestra vida en manos de un desconocido, eso sin contar las claves, documentos y demás que si sean vitales para nuestro trabajo.

En Linux existe una solución 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 opción estándar que suele ser ofrecida incluso durante la instalación, aunque siempre es mejor hacer las cosas a mano hasta saber cuál 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 partición

Como trabajamos con una distribución 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 instalación hago un contenedor LVM con todo el espacio que me queda para datos y sólo creo una partición swap. Luego, según lo voy necesitando lo voy asignando.

Borrar la información y cifrar los datos

Si el disco es nuevo o no nos importan mucho los datos que había dentro podemos saltar este paso. En caso contrario es buena idea no dejar ni rastro de los datos antiguos, aunque puede llevar bastante tiempo.

Partición 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 habría ningún problema en tratar estas dos particiones como dos particiones normales y cifrarlas según el procedimiento anterior, sin embargo suele ser habitual iniciarlas al arranque totalmente vacío.

4 de junio de 2013

Page 80: 4.INVESTIGACION DE LINUX.docx

79

SISTEMA OPERATIVO: LINUX

IV.CONCLUSIÓN

Después de haber realizado este trabajo y haber visto la evolución de este sistema operativo, no dudamos en concluir que estamos ante un sistema operativo de futuro, abriéndose paso a través de otros sistemas comerciales, que, teóricamente, deberían ofrecer características mejores a las que ofrece Linux.

Nuestra opinión sobre este sistema operativo es que ha tenido esta gran evolución en los cuatro o cinco últimos años, en gran medida debido a la ideología que sigue este sistema operativo, la cual permite que cualquier usuario tenga la posibilidad de modificar el código fuente, personalizando el sistema o creando programas nuevos a los que cualquiera pueda acceder, modificar y reparar a través de la red.

Dada esta característica, creemos que Linux tiene una gran perspectiva de futuro. Esto no queda únicamente así, sino que además, está produciendo una revolución en la actual concepción 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 características parecidas a la del software libre.

Además gracias al sistema multitarea y multiproceso de Linux, que ofrece una gran potencia de cálculo y velocidad de intercomunicación, este sistema es apto para grandes estaciones de trabajo y de servidores de red, entre otros.

Centrándonos más en el tema del trabajo, nuestra opinión, es que es un sistema muy estable, apto y recomendable para cualquier informático, no solo con la gran cantidad de sistemas de ficheros y protocolos de red que es capaz de utilizar, sino que además ofrece una gran posibilidad de desarrollo, gran potencia en entorno gráfico, tanto desde el punto de vista de usuario como de programador, y una interfaz de red que permite la fácil comunicación entre sistemas UNIX, o cualquier otro sistema operativo actual.

4 de junio de 2013

Page 81: 4.INVESTIGACION DE LINUX.docx

80

SISTEMA OPERATIVO: LINUX

V.BIBLIOGRAFIA

http://www.maquinariapro.com/sistemas/sistema-operativo-linux.htmlhttp://www.monografias.com/trabajos/solinux/solinux.shtmlhttp://softwarelibre.mes.edu.cu/index_html/news/la-evolucion-de-linuxhttp://www.cad.com.mx/historia_de_linux.htmhttp://www.maginvent.org/articles/linuxmm/Kernel_o_nucleo_Linux.htmlhttp://www.linux-es.org/kernelhttp://www.taringa.net/posts/linux/7676622/Que-es-el-kernel-de-Linux-y-cual-es-su-tarea.htmlhttp://ditec.um.es/so/apuntes/teoria/tema4.pdfhttp://www.monografias.com/trabajos54/paginacion-linux/paginacion-linux.shtml#paginachttp://www.bestwebmaker.com/blog/wp-content/uploads/2009/07/TEMA-14-SISTEMA-DE-FICHEROS-LINUX.pdfThe 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