Walter Eduardo Charro Tipn El presente trabajo esta realizado para conocer ms acerca del sistema operativo de Mandriva Linux su historia gestin de procesos, memoria, entrada/salida y sus tendencias HISTORIA DE MANDRIVA LINUX
En 1998, la compaa francesa Mandrakesoft SA crea la distribucin de Linux Mandrakelinux. No fue sino hasta 2005, despus de adquirir la empresa brasilea Conectiva, que la empresa y el producto se denominar "Mandriva" y "Mandriva Linux. El creador de Mandrakelinux es Gael Duval, co-fundador y ex empleado de RedHat. La distribucin se basa en Red Hat Desktop 5.1, por lo que la primera versin se enumer 5.1. Era una versin de Linux para servidores y estaciones de trabajo diseado para ser fcil de usar. Viene en versiones libres (descargable) y versiones de pago (cajas), incluida la documentacin y apoyo. Las diferentes versiones cuentan con licencia libre y algunas versiones especiales cuentan con porciones de programas no licenciados segn GPL, sino bajo otras licencias de uso.
Mandriva Linux es bastante popular (especialmente en Francia) porque, entre otras cosas, la facilidad de uso de sus herramientas de instalacin y configuracin, por lo que a menudo se lo recomienda para principiantes. La distribucin es total o parcialmente compatible con hasta 73 idiomas y fue uno de los primeros en presentar una interfaz grfica basada en la instalacin de Perl y GTK plenamente internacionalizado, lo que explica su xito en Rusia, entre otros. En cuanto a su Pas de origen, son: Francia, Brasil, Estados Unidos, aunque las dos ms importantes son Francia y Brasil.
La edicin 2006 sali en octubre de 2005 que ya vena integrada con las tecnologas de Conectiva y Lycoris; en esta versin se haba decidido como parte de los cambiosFue hasta el lanzamiento de Mandriva Linux 2007, que, tanto la frecuencia de publicacin de las otras distribuciones de Linux, as como las crticas, orillaron a la compaa a volver al ciclo de publicacin de seis meses (abril y octubre) Todos estos factores provocaron la publicacin de Mandriva 2007 Spring, versin aclamada por la comunidad Linux y considerada por muchos como un retorno del camino para ser nuevamente un actor principal en el mundo Linux.
En abril de 2008, se lanz la versin 2008.1 "Spring", la cual tiene cambios importantes como: Mejoras a la interface de RPMDrake, nuevo control de contenidos para que los padres puedan supervisar las actividades de sus hijos en Internet, nuevo media center "Elisa", soporte de sincronizacin de telfonos en GNOME y KDE, el framework "Codeina" para la instalacin de los codecs requeridos, X.org 7.3, openoffice.org 2.4, Gnome 2.22, los controladores libres de las tarjetas grficas de ATI y nVidia, el servidor de sonido PulseAudio, etc.
En octubre de 2008, se liber la versin 2009.0, la cual entre sus cambios importantes se encuentran: el Kernel de Linux versin 2.6.27 con un mayor soporte de hardware, KDE que en su versin 4.1.2 se convirti en el escritorio por defecto, la versin 3.5.10 de KDE qued disponible en el DVD de la versin Free y Powerpack, pero dejando slo al escritorio, sin incluir la mayora de sus programas, los cuales se pueden descargar desde los repositorios de la distribucin; incluye de igual forma, Gnome 2.24 el otro proyecto que por su importancia junto con KDE se les considera los principales escritorios de Linux, OpenOffice.org 3.0 con todas las mejoras inherentes a la versin de esta suite ofimtica; Mozilla Firefox 3.0, y como novedad exclusiva a la distribucin, se redise el instalador de Mandriva aumentando su facilidad de uso, segn su propia opinin. En abril de 2009, se liber la versin 2009.1 "Spring" de Mandriva Linux, con el kernel actualizado 2.6.29.1 (no tom la decisin de Canonical de incluir el 2.6.28) Incluye el entorno de escritorio KDE 4.2.2 considerado el primer KDE de la rama 4 para uso estable y del usuario final. Esta versin fue la ltima donde se encontraba en los repositorios KDE 3.5, que desaparece en la versin 2010; tambin incluye Gnome 2.26, LXDE, Firefox 3.0.8, X.org 1.6 y OpenOffice.org 3.0.1, basado en un fork de la misma llamado go-oo.org; adems, incluye soporte opcional, pero sin embargo, completo del sistema de archivos Ext4 dejando a eleccin del usuario (generalmente usuarios medios-avanzados) el actualizar o no el sistema de archivos. Se incluy speedboot, que mejora los tiempos de arranque aparentes de la distribucin al poner en prioridad ms alta, el inicio del servidor X, dejando que se carguen algunos servicios, despus de la carga del servidor X. Como novedad adicional, se puede pasar el contenido de la variante One a un pendrive USB y bootear desde l.
GESTIN DE PROCESOS EN MANDRIVA LINUX
Ciclo de Vida de un Proceso en Linux. Conjunto de Estados En Linux, un proceso o tarea, est representado por una estructura de datos task_struct. Linux mantiene una task, que es un vector lineal de punteros a cada estructura task_struct definida en un instante dado. La estructura task_struct contiene informacin de varios tipos: Estado. Representa el estado de ejecucin de un proceso (en ejecucin, interrumpible, no interrumpible, parado y zombie). Informacin de planificacin. Representa a la informacin necesaria para la planificacin de procesos en Linux. Un proceso puede ser normal o en tiempo real y tiene una prioridad. Los procesos en tiempo real se planifican antes que los procesos normales y se utilizan prioridades relativas dentro de cada categora. El tiempo en el que un proceso puede ejecutarse se controla mediante un contador. Identificadores. Cada proceso tiene un nico identificador de proceso, y tiene tambin identificadores de usuario y de grupo. Un identificador de grupo se utiliza para asignar privilegios de acceso a recursos de un grupo de usuarios. Comunicacin entre procesos. Linux soporta los mecanismo de IPC de UNIX Vnculos. Cada proceso incluye un vnculo con su proceso padre, vnculos con sus hermanos (procesos con el mismo padre) y vnculos con todos sus hijos. Tiempos y temporizadores. Incluye el instante de creacin del proceso y la cantidad de tiempo del procesador consumido hasta el instante. Un proceso puede tener tambin asociados uno o ms temporizadores de intervalo. Un proceso define un temporizador de intervalo mediante una llamada al sistema; cuando el tiempo termina se enva una seal al proceso. Un temporizador puede ser de un solo uso o peridico. Sistema de archivos. Incluye punteros a cualquier archivo abierto por el proceso. Memoria virtual. Define la memoria virtual asignada al proceso. Contexto especfico del procesador. La informacin de registros y pila que forma el contexto del proceso (espacio de direccionamiento del proceso).
Los estados de ejecucin de un proceso Linux son los siguientes: En Ejecucin (TASK_RUNNING). El proceso es ejecutado por el procesador. Listo (TASK_RUNNING) . El proceso podra ser ejecutado, pero otro proceso se est ejecutando en ese momento. Interumpible (TASK_INTERRUPTIBLE). Es un estado de bloqueo, en el cual el proceso espera un suceso, como la terminacin de una operacin de entrada/salida, liberacin de un recurso o una seal de otro proceso. No interumpible (TASK_UNINTERRUPTIBLE). Es otro estado de bloqueo. La diferencia entre ste y el estado Interumpible es que en un estado No Interumpible, un proceso espera directamente en una condicin de hardware y, por tanto, no acepta seales. Parado (TASK_STOPPED). El proceso ha sido detenido por una intervencin externa y slo puede reanudarse por una accin positiva de otro proceso. Por eje mplo, un proceso puede estar en estado Parado durante la ejecucin de un programa de depuracin. Zombie (TASK_ZOMBIE). El proceso ha terminado pero, por alguna razn, su estructura task debe permanecer an en la tabla de procesos.
Tabla de Procesos.
Cada proceso se referencia por un descriptor (descriptor del proceso). Este descriptor contiene los atributos del proceso, as como la informacin que permite gestionarlo.
Tabla de Procesos en Linux.
En Linux, inicialmente, la Tabla de Procesos era un vector de tamao fijo de task_strcut <linux/sched.h>, con lo que el nmero mximo de procesos estaba limitado. Actualmente, la Tabla de Procesos es realmente una lista doblemente enlazada mediante los punteros next_task y prev_task.
Estructura del descriptor de procesos en Linux (PCB = Process Control Block).
En Linux el PCB (Process Control Block) es una estructura denominada task_strcut en el archivo include/linux/sched.h. En ella aparece tipo de informacin sobre cada uno de los procesos. Muchas partes del sistema operativo hacen uso de esta estructura de datos, por lo que es necesario conocer los campos ms importantes de task_struct. volatile long state: Estado del proceso (activo o bloqueado). En la lnea 76 de include/linux/sched.h estn los posibles valores que puede tomar el estado. unsigned long flags: Estado detallado del proceso, a nivel del kernel. long counter: Nmero de ticks (ciclos de reloj) que restan al proceso actual para que se le acabe el quantum. long priority : Prioridad esttica del proceso. A partir de este valor, el scheduler asigna el valor de counter cada vez que se agota. struct task_struct *next_run, *prev_run: Punteros para implementar la lista de procesos activos. El scheduler busca en esta lista cada vez que tiene que elegir un proceso nuevo para ejecutar. Cuando un proceso se suspenda, se extraer inmediatamente de esta lista. int exit_code, exit_signal: Contiene el valor de terminacin de un proceso, en caso de que haya finalizado mediante la llamada al sistema exit(2). Si termina por una seal, contendr el nmero de seal que lo mat. int pid : Nmero identificador del proceso. Cada proceso tiene un PID distinto. struct task_struct *p_opptr, *p_pptr, *p_cptr, *p_ysptr, *p_osptr: Punteros para acceder a toda la familia de procesos: op(Original Parent), p(Parent), c(Youngest Child), ys(Youngest Sibling, hermano ms joven), os(Oldest Sibling, hermano ms viejo). Los inicia lizan las macros SET_LINKS y REMOVE_LINKS llamadas al crear un proceso (fork) y al destruirlo (exit, kill). unsigned long policy, rt_priority : Indican la poltica de planificacin del proceso y la prioridad dentro de esa poltica. long start_time: Instante de creacin de este proceso. uid_t uid, euid, suid, fsuid: Usuario propietario de este proceso, tanto real (uid), como efectivo (euid), y atributos ms especficos. gid_t gid, egid, sgid, fsgid : Grupo propietario de este proceso, tanto real (gid), como efectivo (egid), y atributos ms especficos. unsigned long signal, blocked: signal es un mapa de bits con las seales pendientes de ser enviadas a este proceso. Y blocked es otro mapa de bits con las seales que estn temporalmente bloqueadas. struct fs_struct *fs: Informacin relativa al sistema de archivos. Los campos de fs no estn directamente dentro de task_struct para facilitar que varios procesos compartan la informacin que contienen. Esta funcionalidad la usan los threads a nivel del kernel (llamada al sistema clone(2)). struct files_struct *files, struct mm_struct *mm, struct signal_struct *sig . Esto es reflejo de que los threads de ejecucin pueden compartir tambin los archivos abiertos, su espacio de memoria y las seales. Contiene los siguientes campos: o atomic_t count: Nmero de procesos que comparten esta estructura. o int umask : Mascara de creacin de archivos. La llamada al sistema umask permite consultar y modificar esta variable. La orden interna del shell umask permite modificarla desde la lnea de rdenes. Cuando un proceso crea un archivo nuevo (open, creat), el kernel quitar los bits de permisos que estn activos en umask: permisos = permisos_creat ~umask. o struct dentry * root: Inodo del directorio raz de este proceso. Con la llamada al sistema chroot(2) se puede cambiar este atributo. o struct dentry * pwd : (Process Working Directory) inodo del directorio de trabajo. chdir (2) es la llamada al sistema que permite modificarlo. struct files_struct *files; Esta estructura contiene toda la informacin relativa a los archivos abiertos por el proceso. Algunos de sus campos son: o int count: Nmero de procesos que comparten estos archivos abiertos. o int next_fd: Primer identificador libre. o fd_set close_on_exec: Conjunto bits que indica qu archivos se tienen que cerrar cuando este proceso realice una operacin exec(2). Ver la llamada al sistema fcntl(2). o fd_set open_fds: Mapa de bits que indica los archivos que actualmente tiene abiertos este proceso. o struct file *fd[NR_OPEN]: Vector de descriptores de archivos en uso.
Organizacin de la tabla de procesos en Linux (lista doblemente enlazada). Los descriptores de proceso los asigna dinmicamente el kernel llamando a una funcin especial (kmalloc). El array task contiene punteros a estos descriptores. El array current_set contiene punteros a los descriptores de procesos en curso de ejecucin en cada procesador. La variable init_task contiene el descriptor del primer proceso creado en el arranque del sistema. Tras el arranque, este proceso slo se ejecuta cuando ninguno ms este listo para ejecucin, y su descriptor sirve para recuperar el inicio de la Tabla de Procesos. Los descriptores de procesos se organizan en forma de una lista doblemente enlazada, por los punteros next_task y prev_task . Los descriptores de procesos que estn listos para su ejecucin o en curso de su ejecucin se colocan en otra lista doblemente enlazada, mediante los campos next_run y prev_run. Los campos p_optr, p_pptr, p_cptr, p_ysptr y p_osptr, se utilizan para gestionar las filiaciones entre procesos. Entendindose por filiacin (relacin familiar) la relacin que existe entre los procesos dentro de la jerarqua de procesos.
Cuando un proceso se duplica, llamando a la primitiva fork: o Los punteros p_optr y p_pptr del descriptor del proceso hijo, contienen la direccin del proceso padre. o El puntero p_osptr del descriptor del proceso hijo toma el valor del puntero p_cptr del descriptor del proceso padre. o El puntero p_ysptr del proceso hermano ms reciente (referenciado por el puntero p_cptr del descriptor del proceso padre) contiene la direccin del descriptor del nuevo proceso hijo. o El puntero p_cptr del descriptor del proceso padre contienen la direccin del descriptor del proceso hijo. La gestin de la tabla de procesos (listas de descriptores de procesos) es llevada a cabo por el scheduler.
Scheduler de Linux El scheduler es el elemento del kernel (subsistema de control de procesos) que decide qu proceso (listo para su ejecucin en memoria principal) debe ser ejecutado por el procesador (CPU). El scheduler explora la lista de procesos listos para ejecutarse en memoria y utiliza varios criterios para elegir el proceso a ejecutar. Es decir, cuando hay ms de un proceso listo para ejecutarse, el sistema operativo debe decidir cul ejecutar primero, la parte del sistema operativo que toma esta decisin es el scheduler, y los algoritmos que utiliza se denominan algoritmos de planificacin. El scheduler tiene que elegir el proceso que ms merece ejecutarse entre todos los procesos que se pueden ejecutar en el sistema.
GESTIN DE MEMORIA EN MANDRIVA LINUX
Linux comparte muchas de las caractersticas de los esquemas de gestin de memoria de otras implementaciones UNIX, pero tiene sus caractersticas propias y nicas, aunque hay que destacar que el esquema de gestin de memoria de Linux es bastante complejo.
En lo que respecta a memoria virtual, el direccionamiento de memoria virtual de Linux, hace uso de una estructura de tabla de pginas con tres niveles, formada por los siguientes tipos de tablas (cada tabla individual es del tamao de una pgina): (1) Directorio de pginas un proceso activo tiene un solo directorio de pginas que es del tamao de una pgina. Cada entrada en el directorio de pginas apunta a una pgina del directorio intermedio de pginas. Para un proceso activo, el directorio de pginas tiene que estar en la memoria principal; (2) Directorio intermedio de pginas este directorio puede ocupar varias pginas y cada entrada de este directorio apunta a una pgina de la tabla de pginas; (3) Tabla de pginas esta tabla de pginas tambin puede ocupar varias pginas, y cada entrada de la tabla de pgina hace referencia a una tabla virtual del proceso.
Para utilizar esta estructura de la tabla de pginas a tres niveles, una direccin virtual en Linux se ve como un conjunto de cuatro campos. El campo ms a la izquierda (ms significativo) se utiliza como ndice en el directorio de pginas. El siguiente campo sirve como ndice en el directorio intermedio de pginas. El tercer campo sirve como ndice en la tabla de pginas. Y el cuarto y ltimo campo, indica el desplazamiento dentro de la pgina seleccionada de la memoria.
Reserva de Paginas: Para la asignacin de pginas y aumentar la eficiencia de cargar y descargar pginas a y desde la memoria principal, Linux define un mecanismo para tratar bloques de pginas contiguos correspondientes a bloques de marcos de pginas contiguos. Pare este propsito, se utiliza el Buddy System. El kernel mantiene una lista de grupos de marcos de pgina contiguos de tamao fijo; un grupo puede estar formado por 1, 2, 3, 8, 16 o 32 marcos de pginas. Como las pginas se asignan y liberan en la memoria principal, los grupos se dividen y se intercalan utilizando el algoritmo de los colegas (buddy algorithm).
Direccionamiento de Memoria en Linux
La memoria es uno de los recursos fundamentales para un proceso. El sistema operativo debe ofrecer la memoria a todos los procesos por igual de una forma sencilla y uniforme. Al mismo tiempo, el sistema operativo debe tratar con el hardware real para realizar dicha funcin, aprovechndolo al mximo. El direccionamiento es una parte importante de la gestin de memoria, puesto que influye mucho tanto en la visin de la misma por parte de un proceso, como en el aprovechamiento del hardware y el rendimiento del sistema.
Desde el punto de vista de la arquitectura, el sistema operativo suele tener asistencia del hardware para realizar la gestin memoria: (1) Memory Management Unit (MMU), unidad que realiza, en el i386, segmentacin y paginacin; (2) Bits reservados en selectores de segmento; (3) Bits reservados en descriptores de pgina; (4) Bits de proteccin. Sin embargo, el sistema operativo es libre de usar o no dichos recursos.
Espacios de Direcciones
Tres tipos de direcciones: 1. Direcciones lgicas. Generadas por el proceso, cada direccin lgica consiste en un selector de segmento y un desplazamiento (offset) que denota la distancia del principio del segmento a la direccin actual. 2. Direcciones lineales (direcciones virtuales). Obtenidas tras aplicar una transformacin a la direccin lgica por parte de la MMU. 32 bits se pueden utilizar para direccionar 4Gb (es decir 4294967296 direcciones fsicas de memoria). Las direcciones lineales se representan normalmente en hexadecimal, su rango de valores va desde 0x00000000 hasta 0xffffffff. 3. Direcciones fsicas. Referencian la memoria fsica. Se obtienen tras aplicar una transformacin por parte de la MMU. Las transformaciones y el formato de las direcciones dependen de la arquitectura. En Linux los espacios de direcciones lgico y lineal son idnticos.
Segmentacin en Linux
Linux no aprovecha la segmentacin del i386. Sin embargo, no puede desactivarla, la utiliza de una forma muy limitada. Se ha preferido la paginacin sobre la segmentacin porque: (1) La gestin de memoria es ms simple cuando todos los procesos usan los mismos valores de segmentos, es decir, tienen las mismas direcciones lineales. (2) Un objetivo de Linux es la portabilidad, y muchos procesadores soportan la segmentacin de forma muy limitada.
Paginacin en Linux
Para tener en cuenta arquitecturas de 64 bits, la paginacin en Linux tiene 3 niveles de tablas de pginas en lugar de 2.
Linux gestiona la memoria central y las tablas de pginas utilizadas para convertir las direcciones lineales (virtuales) en direcciones fsicas. En realidad, la gestin de la memoria implementada por Linux considera que dispone de una tabla de pginas a tres niveles: (1) directorio global de tablas de pginas (page global dirertory) cuyas entradas contienen las direcciones de pginas que contienen tablas intermedias; (2) directorio intermedio de tablas de pginas (page middle directory) cuyas entradas contienen las direcciones de pginas que contienen tablas de pginas; (3) las tablas de pginas (page table) cuyas entradas contienen las direcciones de pginas de memoria que contienen el cdigo o los datos utilizados por el kernel o los procesos de usuario.
Gestin de Memoria en Linux.
Hemos visto que Linux hace uso de las ventajas de la segmentacin y de los circuitos de paginacin de los procesadores i386 para traducir direcciones lgicas en direcciones fsicas. Podemos tambin decir que alguna porcin de RAM est permanentemente asignada al kernel y utilizada para almacenar el cdigo del kernel y estructuras de datos esttic as del mismo. La restante parte de la RAM se denomina memoria dinmica, y sta es un recurso muy valioso y necesitado no slo por los procesos sino tambin por el propio kernel. De hecho el rendimiento global del sistema depende fuertemente de cmo de eficientemente se gestiona la memoria dinmica. Por tanto, todos los sistemas operativos multitarea actuales tratan de optimizar el uso de la memoria dinmica, asignndola slo cuando es estrictamente necesario y liberndola tan pronto como sea posible. En esta seccin describiremos: estructuras bsicas del kernel para gestionar la memoria dinmica desde dos puntos de vista: asignacin de memoria para el kernel y asignacin de memoria para procesos, poltica de asignacin de la memoria por parte del kernel, el gestor de faltas de pgina, etc.
Polticas de Asignacin de Memoria
Se puede observar la asignacin de memoria desde dos puntos de vista: peticiones por parte del kernel y por parte de procesos de usuario.
El kernel: (1) Es un componente de alta prioridad, si solicita memoria no tiene sentido retardar su asignacin; (2) Confa en si mismo y se asume que no tiene errores de programacin. Un proceso de usuario: (1) No tiene por qu usar el espacio solicitado inmediatamente, y por el principio de localidad seguramente no lo har, adems, se puede retardar la asignacin de memoria real; (2) No es confiable, y el kernel debe estar listo para capturar todos los posibles errores de programacin.
El kernel puede solicitar memoria de tres formas: (1) directamente al Buddy system, para asignaciones genricas de grupos de marcos de pgina potencia de 2; (2) al Slab allocator, para objetos frecuentemente usados; y (2) utilizando vmalloc() para obtener un rea de memoria empleando marcos de pgina no contiguos. Cuando los procesos solicitan memoria, no se les asigna realmente pginas, sino reas de memoria. Se les da rangos de direcciones lineales vlidos que se asignarn en el momento en que se vayan a usar.
El Buddy System (sistema de colegas)
El kernel debe establecer una estrategia robusta y eficiente para asignar grupos de marcos de pginas contiguos. Por ello, el objetivo principal del Buddy system es: Evitar la fragmentacin externa. ste es un fenmeno que se produce cuando existen frecuentes asignaciones y liberaciones de grupos de marcos de pgina contiguos de diferentes tamaos, pudiendo derivar en una situacin en la que varios bloques pequeos de marcos de pginas libres estn dispersos dentro de bloques de marcos de pginas asignados. Y como resultado puede convertirse en imposible el asignar un bloque grande de marcos de pginas contiguos, incluso si existen suficientes pginas libres para satisfacer la peticin.
Para evitar la fragmentacin externa existen dos posibilidades: (1) Utilizar la unidad de paginacin para agrupar marcos de pgina dispersos en direcciones lineales contiguas. (2) Desarrollar un sistema que controle los marcos de pgina contiguos y evite en lo posible dividir un bloque libre grande para una asignacin pequea.
El Slab Allocator
El Buddy system asigna como mnimo una pgina. Sistema adecuado para asignaciones grandes de memoria Para asignaciones de pocos bytes, se desperdician grandes cantidades de memoria. Fragmentacin interna, que es provocada por una mala combinacin entre el tamao de la memoria requerida y el tamao del rea de memoria asignada para satisfacer la solicitud. Es decir, ste es un fenmeno en el que se malgasta el rea de memoria de una pgina cuando el tamao de memoria es ms pequeo que la pgina.
Memoria para Procesos
Como acabamos de ver, una de las funciones del kernel es obtener memoria dinmica de forma sencilla llamando a una variedad de funciones: get_free_pages() o pages_alloc() para obtener pginas del algoritmo del Buddy system; kmem_cache_alloc() o kmalloc() para utilizar el Slab allocator para objetos de propsito general o especfico, y vmalloc() para obtener un rea de memoria no contigua. En estos casos, si la peticin puede realizarse satisfactoriamente, cada una de estas funciones devuelve una direccin del descriptor de pgina o una direccin lineal identificando el principio del rea de memoria dinmica asignada. Cuando se asigna memoria a procesos en modo usuario, la situacin es diferente: (1) Los procesos que demandan memoria dinmica se consideran no urgentes. Cuando se carga el archivo ejecutable de un proceso, es poco probable que el proceso direccionara todas las pginas de cdigo en un futuro prximo. Equivalentemente, cuando un proceso llama a la funcin malloc() para obtener memoria dinmica adicional, esto no quiere decir que el proceso acceder pronto a toda la memoria adicional obtenida. Por tanto, como regla general, el kernel trata de aplazar la asignacin de memoria dinmica a procesos en modo usuario. (2) Debido a que programas de usuario no pueden ser fiables, el kernel debe estar preparado para capturar todos los errores de direccionamiento provocados por un proceso en modo usuario.
El espacio de direcciones de un proceso son las direcciones lineales que el proceso puede utilizar. Cuando un proceso pide memoria dinmica, no se le dan marcos de pgina; se le da el derecho a usar un nuevo rango de direcciones lineales. La asignacin de marcos de pgina se retarda todo lo posible. El kernel representa los intervalos de direcciones lineales mediante un recurso llamado regiones de memoria (caracterizadas por una direccin lineal inicial, una longitud y unos atributos): (1) Se modifica dinmicamente el espacio de direcciones de un proceso; (2) Una asignacin de memoria implica una nueva regin de memoria para el proceso. (3) Las regiones de memoria tienen tamao mltiplo de 4 KBytes. (4) Puede haber intervalos de direcciones no usadas entre regiones.
Gestor de Faltas de Pgina
El gestor de faltas de pgina debe distinguir la causa de la falta: (1) Error de programacin. (2) Referencias a pginas legtimas del espacio de direcciones del proceso pero no presentes: (2.1) Por Copy-on-Write. (2.2) Por swapping o intercambio (cuando el sistema necesita marcos de pgina libres, Linux puede volcar a disco parte de las pginas de datos de un proceso, luego cuando el proceso desea continuar su ejecucin necesita volver a traer a memoria principal estas pginas). Para este caso existe la funcin, do_swap_page, que se llama para volver a cargar en memoria el contenido de una pgina situada en el espacio de swap. Si una operacin swapin est asociada a la regin de memoria que contiene la pgina, se llama. En caso contrario, se llama a la funcin swap_in. En ambos casos, la pgina asignada se inserta en el espacio de direccionamiento del proceso actual. (2.3) Porque no han sido asignadas todava. (2.4) Expansin de pila. El gestor de falta de pgina es do_page_fault() el gestor compara la direccin lineal que caus el falta (cr2) con las regiones de memoria del proceso actual (current process) para determinar qu hacer, de acuerdo con el esquema que se muestra en la siguiente figura.
Intercambio (swapping) en Linux
Si un proceso necesita cargar una pgina de memoria virtual a memoria fsica y no hay ninguna pgina de memoria fsica libre, el sistema operativo tiene que crear espacio para la nueva pgina eliminando alguna otra pgina de memoria fsica. Si la pgina que se va a eliminar de memoria fsica provena de un archivo imagen o de un archivo de datos sobre el que no se ha realizado ninguna escritura, entonces la pgina no necesita ser guardada. Tan slo se tiene que desechar y si el proceso que la estaba utilizando la vuelve a necesitar simplemente se carga nuevamente desde el archivo imagen o de datos.
El algoritmo para la administracin de memoria en Mandriva Linux es el LRU (Least Recently Used) de este algoritmo podemos argumentar lo siguiente: Este algoritmo difiere del de 'No usada recientemente' en el hecho de que aquel slo se fija en el intervalo de tiempo desde que se pusieron en 0 los bits de referencia de las pginas, mientras que el algoritmo de 'Menos usada recientemente' intenta proveer un comportamiento casi ptimo mediante la observacin de las pginas que menos fueron usadas recientemente. Este tipo de pginas, estadsticamente son las que tienen menor probabilidad de ser usadas nuevamente. Aunque este algoritmo provee un buen comportamiento en teora, es caro de implementar, en cuanto a recursos consumidos. Hay varias implementaciones que intentan mantener bajo el costo y lograr un rendimiento considerable. Un mtodo consiste en tener una lista enlazada y ordenada de todas las pginas en memoria. En el final de la lista est la pgina menos usada recientemente, y al principio la ms usada recientemente. El costo alto de este mtodo es porque cada vez que se referencia una pgina debe ser movida en la lista, algo que consume mucho tiempo. Otra forma, que requiere soporte de hardware, consiste en tener un contador que es incrementado en cada instruccin del CPU. Cada vez que una pgina es accedida, gana el nmero del contador en ese momento. Cuando una pgina debe ser retirada de memoria, simplemente hay que buscar cul es la que tiene el menor nmero, que es la que fue usada hace ms tiempo. En el presente no existen contadores tan grandes para permitir esto. Debido al alto costo del LRU, se proponen algoritmos similares, pero que permiten implementaciones menos costosas. La memoria fsica en Mandriva Linux est dividida en tres partes que son: HighMem, Normal y DMA para manejarlas con mayor facilidad.
GESTIN DE ENTRADA/SALIDA EN MANDRIVA LINUX En trminos generales, el sistema de E/S del ncleo de Linux es muy similar al de otras implementaciones de Unix. El ncleo de Linux asocia fichero especial con cada manejador de dispositivo de E/S, distinguindose entre dispositivos de bloques, de caracteres y de red. Planificacin de disco El planificador de disco por defecto se le conoce con el nombre de ascensor de Linux, que es una variacin del algoritmo de LOOK. En Linux, adems del algoritmo del ascensor, se han incluido dos algoritmos adicionales: El planificador de E/S basado en plazos y el planificador de E/S previsor. El planificador de Ascensor El planificador del ascensor mantiene una nica cola con las peticiones de lectura y escritura en el disco, realizando operaciones de ordenamiento y agrupamiento sobre cola. Planificador basado en plazos No intenta servir peticiones en un plazo de tiempo determinado. Sino que simplemente deja insertar las peticiones en orden despus de un plazo conveniente. En el esquema del ascensor se manifiestan dos problemas. El primer problema es que se puede retrasar una peticin de un bloque distante durante un tiempo considerable debido a que la cola se actualiza dinmicamente. Un problema incluso ms serio es el de la distincin entre peticiones de lectura y de escritura. Normalmente, una peticin de escritura se realiza asincrnicamente. Es decir, una vez que un proceso solicita una peticin de escritura, no necesita esperar hasta que realmente se lleve a cabo la peticin. En operaciones de lectura, el proceso, antes de continuar, debe esperar hasta que se entreguen los datos pedidos a la aplicacin. Por tanto, un flujo de peticiones de escritura puede bloquear una peticin de lectura durante un tiempo considerable y, con ello, bloquear tambin al proceso. Para resolver estos problemas, se utiliza e, planificador de E/S basado en plazos usa tres colas. Planificador de E/S Previsor El planificador del ascensor original y el basado en plazos estn diseados para servir una nueva peticin tan pronto como se completa la peticin existente, manteniendo, por tanto, el disco lo ms ocupado que sea posible. Sin embargo esta poltica es contraproducente si hay numerosa peticiones de lectura sncronas. Normalmente, una aplicacin esperara hasta que se complete una peticin de lectura y estn los datos disponibles antes de realizar la siguiente peticin. El pequeo retardo que hay entre que se reciben los datos de la ltima lectura y la solicitud de la siguiente lectura permite al planificador dedicarse a otra peticin pendiente y servir esa peticin En Mandriva Linux el planificador previsor esta superpuesto sobre el planificador basado en plazos. Cuando se sirve una peticin de lectura, el planificador previsor causa que el sistema de planificacin se retrase. Durante este retardo, hay una oportunidad apreciable de que la aplicacin que solicito la ltima peticin de lectura genere otra peticin de lectura en la misma regin del disco Cach de pginas de Mandriva LINUX El ncleo mantiene una cache de pginas para lecturas y escrituras de los ficheros ordinarios del sistema de ficheros y para las pginas de memoria virtual y una cache de buffers independientes para la E/S de bloques. Noop. Es el planificador de Entrada/Salida ms simple que existe. Funciona insertando todas las peticiones de Entrada/Salida dentro de una cola de procesamiento tipo FIFO (first in, first out, que se traduce como primero en entrar, primero en salir), e implementando fusin de peticiones. Asume que la optimizacin del desempeo de Entrada/Salida ser gestionado por otro nivel de la jerarqua de Entrada/Salida, como pudiera ser en el dispositivo de bloque o bien un HBA (Host Bus Adapter o adaptador de transporte del anfitrin) inteligente, como en el caso en los controladores RAID para SAS (Serial Attached SCSI) o bien un controlador conectado de manera externa, como ocurre con los SAN (Storage Area Network o Redes de rea de Almacenamiento). Este planificador de Entrada/Salida es principalmente utilizado con unidades de estado slido (SSD, Solid State Drives) basadas sobre memoria Flash, NAND o SDRAM y en dispositivos que carecen de dependencia a movimientos mecnicos, los cuales carecen de re-ordenamiento de peticiones mltiples de Entrada/Salida, donde se agrupan juntas las peticiones de Entrada/Salida que estn fsicamente cercanas, reduciendo el tiempo de peticin y la variabilidad del tiempo de servicio de Entrada/Salida. GESTIN DE ARCHIVOS EN MANDRIVA LINUX Sistema de Archivos.
La estructura de archivos de Linux est pensada para facilitar la utilizacin de una gran cantidad de archivos. Utiliza una estructura jerrquica o de rbol que permite a cada usuario poseer un directorio principal con tantos subdirectorios como desee; LINUX tambin permite a los usuarios compartir archivos por medio de enlaces (links), que hacen aparecer los archivos en ms de un directorio de usuario. Cada usuario es propietario de sus archivos y para ello cada fichero dispone de una serie de permisos. El propietario de un fichero puede permitir que otros usuarios compartan el uso de alguno de sus ficheros manipulando adecuadamente los permisos del fichero.
ESTRUCTURA DE ARCHIVOS. a. TIPOS DE ARCHIVOS. La base del sistema de archivos de Linux es obviamente, el archivo, que no es otra cosa que la estructura empleada por el sistema operativo para almacenar informacin en un dispositivo fsico como un disco duro, un disquete, un CD-ROM, etc. Como es natural, un archivo puede contener cualquier tipo de informacin, desde una imagen en formato GIF o JPEG a un texto o una pgina web en formato HTML. El sistema de archivos es la estructura que permite que Linux maneje los archivos que contiene.
Linux slo distingue tres tipos de archivos:
. Archivos o ficheros ordinarios, que son los mencionados anteriormente. . Directorios (o carpetas). Es un archivo especial que agrupa otros ficheros de una forma estructurada. . Archivos especiales. Son la base sobre la que se asienta Linux, puesto que representa dispositivos conectados a un ordenador, como puede ser una impresora. De esta forma, introducir informacin en ese archivo equivale a enviar informacin a la impresora. Para el usuario estos dispositivos tienen el mismo aspecto y uso que los archivos ordinarios.
b. ENLACES. El enlace es un tipo de archivo ordinario cuyo objetivo es crear un nuevo nombre para un archivo determinado. Una vez creado el enlace simblico, ste permite acceder al fichero que enlaza de igual modo como si se accediese desde el archivo original. Los enlaces simblicos son especialmente tiles cuando se quiere que un grupo de personas trabajen sobre un mismo fichero, puesto que permiten compartir el fichero,pero centralizan las modificaciones.
c. EL CAMINO O PATH. En cualquier sistema operativo moderno la estructura de archivos es jerrquica y depende de los directorios. En general, la estructura del sistema de archivos se asemeja a una estructura de rbol, estando compuesto cada nudo por un directorio o carpeta, que contiene otros directorios o archivos. En Linux, existe una nica raz llamada / de la que cuelgan todos los ficheros y directorios, y que es independiente de los dispositivos que estn conectados al ordenador.
El camino o path de un fichero o directorio es la secuencia de directorio que se ha de recorrer para acceder a un determinado fichero separados por /.
Existen dos formas del path o camino: . El camino absoluto que muestra toda la ruta a un fichero (por ejemplo, /home/luis/Carta.txt). . El path relativo a un determinado directorio (por ejemplo, si nos encontramos en el directorio /home, el path relativo al fichero Carta.txt es luis/Carta.txt).
Adems, todos los directorios contienen dos directorios especiales:
.El directorio actual, representado por el punto (.). .El directorio padre representado por dos puntos (..).
d. ESTRUCTURA DEL SISTEMA DE ARCHVOS EN MANDRIVA LINUX. La estructura de archivos del sistema operativo Mandriva Linux suele organizarse conforme a una convencin, en donde generalmente se encuentra los siguientes archivos y directorios:
/ (root) El directorio raz, que se encuentra en todos las estructuras de archivos de linux.
/bin Recibe su nombre de la abreviacin de binarios o ejecutables. Es donde residen la mayor parte de los programas ejecutables del sistema. Por ejemplo los ejecutables de las rdenes ls, cd, cp y mv estn en este directorio. Es decir, cuando se usa la orden cd se est ejecutando el programa /bin/cd.
/dev Todos los archivos que representan dispositivos se almacenan en este directorio.
/dev/console Es la consola principal del sistema.
/dev/fd Todos los ficheros que comienzan con fd se refieren a diferentes configuraciones y unidades de disco flexible. /dev/ hd Discos duros con interfaz IDE. /dev/ttyS, / dev/cua A travs de estos ficheros se accede a los puertos serie /dev/sd Discos duros con interfaz SCSI. /dev/lp Ficheros de acceso a los puertos paralelo. /dev/null Dispositivo nulo, cualquier dato enviado a este dispositivo se pierde. /dev/tty Consolas virtuales, el sistema simula la conexin a varios terminales. Al pulsar la combinacin de teclas Alt+Tecla_de_funcin se puede conmutar entre los diferentes terminales.
/etc Aqu se almacenan archivos varios. El ms til es el archivo PASSWD, que es una lista de todos los usuarios que tienen permiso para utilizar el sistema. Adems de este archivo, aqu se encuentran comandos usados por el supervisor, archivos de configuracin, archivos de configuracin de discos, archivos de inicializacin, listas vlidas de usuarios, grupos, ethernet, hosts, a donde mandar mensajes crticos, etc.. Solamente el superusuario (root) puede modificar ficheros de este directorio.
/home Contiene el directorio home de los usuarios. As, por ejemplo, /home/juan es el directorio del usuario juan. Naturalmente, en un sistema recin instalado este directorio estar vaco.
/lib Contiene las libreras de compartidas. Los nombres de los ficheros indican la versin, el tipo de objeto que es y a qu lenguaje o utilidad pertenecen. Por ejemplo, libc.so.4.3.2. es una librera de C (libc), se trata de una librera compartida (so shared object) y pertenece a la versin 4.3.2.
/lost+found Aqu se va la informacin y los procesos que se estaban ejecutando cuando el sistema se cae.
/mnt Directorio para poder montar sistemas de ficheros Linux.
/proc Al acceder a este directorio, se consigue obtener informacin de los procesos que se ejecutan en el sistema.
/root Directorio raz de superusuario.
/sbin Contiene programas para la administracin del sistema, que son nicamente accesibles al superusuario. Aqu residen los comandos para montar y desmontar los sistemas de archivos, apagar el sistema y utilidades para configurar la red y los dispositivos.
/tmp Contiene ficheros temporales, resultado de la necesidad que tienen muchos programas del sistema de general informacin temporal y posteriormente guardarla en dichos ficheros.
/usr Es uno de los directorios ms importantes del sistema puesto que contiene los programas de uso comn para todos los usuarios. Su estructura suele ser similar a la siguiente.
/tmp Aqu se guardan los archivos temporales que crean los programas que son ejecutados.
TENDENCIAS DE MANDRIVA LINUX
Mandriva anuncia CloudPulse, la solucin basada en la nube para la gestin de infraestructura
CloudPulse es la evolucin de SaaS de Mandriva Pulse. Esta solucin ofrece las mismas ventajas de Pulse sin las limitaciones materiales y recursos involucrados en el mantenimiento de una solucin completa. Mandriva CloudPulse permite a las empresas de todos los tamaos realizar inventarios, despliegues, datos y copias de seguridad de la configuracin de su infraestructura TI, sin la sobrecarga que se produce por la propiedad de una solucin de infraestructura de gestin tradicional. CloudPulse est disponible en varios planes de precios que estn especficamente dirigidas a las estructuras de pequeas y medianas empresas. Esta nueva solucin marca el inicio de Mandriva en la nube. Mandriva cree que la computacin en la nube debe poner la privacidad de los datos de los clientes y la propiedad en primer lugar. Los datos recogidos a travs de CloudPulse se encuentra en servidores ubicados en Francia y no se transfieren a terceros Nace OpenMandriva, la fundacin que liderar el futuro de Mandriva Linux
Tras recorrer una cuesta abajo que dur demasiado, la compaa francesa Mandriva, en un ltimo intento por salvar el proyecto accedi a devolver el control del mismo al a comunidad. Lo primero era definir a la fundacin independiente que velara por ese proyecto: se llamar OpenMandriva. OpenMandriva se encargar de liderar el desarrollo de la distribucin GNU/Linux sucesora de Mandriva Linux, cuyo nombre an no est decidido. Como en el caso de OpenMandriva, eso lo decidir la comunidad mediante votacin.
Mi comentario sobre la gestin de procesos y memoria del sistema operativo Mandriva Linux es un poco ms complicado ya que este tiene ms estados y a su vez tambin tienen algunos tipos propios del sistema, tambin me parece interesante Scheduler de Linux que es el que se encarga de indicar al sistema operativo cual es el proceso que est listo para ejecutarse. Acerca de la gestin de memoria lo que ms me intereso es el direccionamiento de memoria virtual de Linux que hace uso de una estructura de tabla de pginas con tres niveles, adems el Buddy system que es una estrategia utilizada por el kernel para asignar grupos de marcos de pginas contiguos y as evitar la fragmentacin externa. Me parece muy interesante la forma como gestiona la Entrada/Salida Mandriva Linux ya que este lo hace a travs de un Planificador de Disco conocido mejor en el ambiente Linux como Ascensor de Linux el cual mantiene la lista de peticiones ordenadas por el nmero de bloque adems se maneja mediante dos algoritmos, el primero (planificador basado en plazos) no intenta servir peticiones en un plazo de tiempo determinado. Sino que simplemente deja insertar las peticiones en orden despus de un plazo conveniente. El segundo (planificador e/s previsor) espera hasta que se complete una peticin de lectura y estn los datos disponibles antes de realizar la siguiente peticin. El retardo que hay entre que se reciben los datos de la ltima lectura y la solicitud de la siguiente lectura permite al planificador dedicarse a otra peticin pendiente y servir esa peticin. Con este pequeo resumen se puede apreciar que la forma de administrar la Entrada/Salida ha ido mejorando notablemente de esta forma se pueden gestionar los dispositivos de una manera ms rpida y fcil. En cuanto a la gestin de archivos se la hace muy parecida a Windows cabe resaltar que aqu existe una nica raz y que adems Mandriva Linux di distingue los caracteres entre maysculas y minsculas lo cual nos facilita un poco ms la creacin de ficheros, tambin la forma para buscar un directorio se la hace mediante un /. que la diferencia de Windows. Las tendencias de Mandriva no han sido muy desarrolladas ya que la empresa en estos ltimos meses se encontr en una eta muy difcil econmicamente la cual la llevo casi a la banca rota de ah que nace OpenMandriva que es la que se encargara de ahora en adelante del desarrollo de la distribucin. Conclusiones: Como conclusiones tenemos:
1. El nombre de este Sistema Operativo se produjo despus que el comic de Mandrake el mago demando a la corporacin a cargo de la distribucin de ah que luego se lo cambio a Mandriva de la unin de las corporaciones Mandrake y Conectiva. 2. Que la tabla de procesos de Mandriva Linux inicialmente era un vector de tamao fijo pero fue modificado por su limitada capacidad de procesos actualmente es una lista doblemente enlazada. 3. Los descriptores de proceso los asigna dinmicamente el kernel llamando a una funcin especial, la gestin de la tabla de procesos (listas de descriptores de procesos) es llevada a cabo por el scheduler. 4. El scheduler explora la lista de procesos listos para ejecutarse en memoria y utiliza varios criterios para elegir el proceso a ejecutar, tiene que elegir el proceso que ms merece ejecutarse entre todos los procesos que se pueden ejecutar en el sistema. 5. Existen 3 tipos de direcciones: Direcciones lgicas, Direcciones lineales, Direcciones fsicas. Las transformaciones y el formato de las direcciones dependen de la arquitectura. En Linux los espacios de direcciones lgico y lineal son idnticos. 6. Se puede observar la asignacin de memoria desde dos puntos de vista: peticiones por parte del kernel y por parte de procesos de usuario. 7. El gestor de faltas de pgina debe distinguir la causa de la falta entre: o Error de programacin. o Referencias a pginas legtimas del espacio de direcciones del proceso pero no presentes 8. Cuando se aade una nueva peticin a la cola del ascensor, se consideran en este orden las siguientes cuatro operaciones: o -Si existe una peticin pendiente en la cola o -Si hay una peticin en la cola que es suficientemente antigua, o - si hay una posicin adecuada o -si no hay una posicin adecuada o 9. Cada nueva peticin se incluye en la cola ordenada del ascensor, esa misma peticin se sita al final de la cola FIFO de lectura en el caso de una peticin de lectura o de una cola FIFO de escritura. 10. El planificador de plazos extrae peticiones de la cola ordenada. Cuando se completa una peticin, se elimina de la cabeza de la cola ordenada y tambin de la cola FIFO correspondiente. 11. Las pginas modificadas se escriben en el disco en dos situaciones: o - cuando la cantidad de memoria libre llega a ser menor o -cuando las paginas modificadas envejecen 12. Todos los archivos de Mandriva Linux tienen un nombre, el cual debe cumplir algunas reglas:
o Un nombre de archivo puede tener entre 1 y 255 caracteres. o Se puede utilizar cualquier carcter excepto la barra inclinada / y no es recomendable emplear los caracteres con significado especial en Linux para emplear ficheros con estos caracteres o espacios, hay que introducir el nombre del fichero entre comillas. o Se pueden utilizar nmeros exclusivamente si as se desea. Las letras maysculas y minsculas se consideran diferentes y, por tanto, no es lo mismo carta.txt que Carta.txt o carta.Txt
13. El gestor de archivos o explorador de archivos predeterminado en Mandriva Linux 2011 es Dolphin en el entorno de escritorio de KDE desde la versin 4.0. 14. El gestor de paquetes de Mandriva Linux 2011 predeterminado es el RPM Package Manager el cual permite actualizar, descargar, instalar y solicitar programas adems Mandriva est desarrollando su propio Gestor de paquetes Mandriva Package Manager (MPM) el cual puede ser instalado desde los repositorios.