KERNEL, SISTEMA Y TABLA DE ASIGNACIÓN DE ARCHIVOS

793 views

Published on

El presente documento, es una compilación de varios textos y trabajos consignados en internet, todos ellos referenciados al final del documento, en la que se muestra de manera actualizada, las características generales de lo que es un kernel en un sistema operativo, sus funciones y operatividad dentro de los mismos. De igual manera se muestra lo que son los sistemas de archivos y su relación con la tabla de asignación de archivos, imprescindibles en cualquier sistema operativo actual, y de cómo estos tiene que ver con el sistema de almacenamiento como lo es el disco duro.

Published in: Engineering
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
793
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
24
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

KERNEL, SISTEMA Y TABLA DE ASIGNACIÓN DE ARCHIVOS

  1. 1. KERNEL, SISTEMA Y TABLA DE ASIGNACIÓN DE ARCHIVOS Ms. Ing. Jairo E. Márquez D. El presente documento, es una compilación de varios textos y trabajos consignados en internet, todos ellos referenciados al final del documento, en la que se muestra de manera actualizada, las características generales de lo que es un kernel en un sistema operativo, sus funciones y operatividad dentro de los mismos. De igual manera se muestra lo que son los sistemas de archivos y su relación con la tabla de asignación de archivos, imprescindibles en cualquier sistema operativo actual, y de cómo estos tiene que ver con el sistema de almacenamiento como lo es el disco duro. Kernel El kernel es el sistema central de cualquier sistema operativo. Todos los sistemas operativos constan de una parte encargada de gestionar los diferentes procesos y las posibles comunicaciones entre el hardware de un ordenador con los programas que están en funcionamiento, entre otras y variadas tareas. Es, por ejemplo, el que facilita el acceso a datos en los distintos soportes posibles (CD-ROM, unidad de disco duro, unidad ZIP, etc.), o el que arranca el ordenador, o el que resetea todos los dispositivos que sean necesarios. La principal propiedad de un kernel es que todas estas operaciones de manejo de memoria o de dispositivos, son, desde un punto de vista de usuario, totalmente transparentes, esto es, no es necesario saber cómo trabajar a bajo nivel con el procesador para realizar las operaciones que sean necesarias, ya que será el kernel, a través de una serie de instrucciones ya implementadas el que lo hará por nosotros. El kernel del programa informático se asegura de: - La comunicación entre los programas que solicitan recursos y el hardware. - Gestión de los distintos programas informáticos (tareas) de una máquina. - Gestión del hardware (memoria, procesador, periférico, forma de almacenamiento, etc.)
  2. 2. “La mayoría de las interfaces de usuario se construyen en torno al concepto de núcleo. La existencia de un núcleo, es decir, de un único programa responsable de la comunicación entre el hardware y el programa informático, resulta de compromisos complejos referentes a cuestiones de resultados, seguridad y arquitectura de los procesadores. El núcleo tiene grandes poderes sobre la utilización de los recursos materiales (hardware), en particular, de la memoria. Los núcleos tienen como funciones básicas garantizar la carga y la ejecución de los procesos, las entradas/salidas y proponer una interfaz entre el espacio núcleo y los programas del espacio del usuario. Aparte de las funcionalidades básicas, el conjunto de las funciones de los puntos siguientes (incluidos los pilotos materiales, las funciones de redes y sistemas de ficheros o los servicios) necesariamente no son proporcionadas por un núcleo de sistema de explotación. Pueden establecerse estas funciones del sistema de explotación tanto en el espacio usuario como en el propio núcleo. Su implantación en el núcleo se hace en el único objetivo de mejorar los resultados. En efecto, según la concepción del núcleo, la misma función llamada desde el espacio usuario o el espacio núcleo tiene un coste temporal obviamente diferente. Si esta llamada de función es frecuente, puede resultar útil integrar estas funciones al núcleo para mejorar los resultados.”1 No necesariamente se necesita un núcleo para usar una computadora. Los programas pueden cargarse y ejecutarse directamente en una computadora «vacía», siempre que sus autores quieran desarrollarlos sin usar ninguna abstracción del hardware ni ninguna ayuda del sistema operativo. Ésta era la forma normal de usar muchas de las primeras computadoras: para usar distintos programas se tenía que reiniciar y reconfigurar la computadora cada vez. Con el tiempo, se empezó a dejar en memoria (aún entre distintas ejecuciones) pequeños programas auxiliares, como el cargador y el depurador, o se cargaban desde memoria de sólo lectura. A medida que se fueron desarrollando, se convirtieron en los fundamentos de lo que llegarían a ser los primeros núcleos de sistema operativo. Hay cuatro grandes tipos de núcleos:2 - Los núcleos monolíticos facilitan abstracciones del hardware subyacente realmente potentes y variadas. - Los micronúcleos (en inglés microkernel) proporcionan un pequeño conjunto de abstracciones simples del hardware, y usan las aplicaciones llamadas servidores para ofrecer mayor funcionalidad. (Andrew Tanenbaum 2004) 1 El kernel. Consultado el 2 de septiembre de 2013. http://es.wikipedia.org/wiki/N%C3%BAcleo_(inform%C3%A1tica) 2 Ibid.
  3. 3. - Los núcleos híbridos (micronúcleos modificados) son muy parecidos a los micronúcleos puros, excepto porque incluyen código adicional en el espacio de núcleo para que se ejecute más rápidamente. - Los exonúcleos no facilitan ninguna abstracción, pero permiten el uso de bibliotecas que proporcionan mayor funcionalidad gracias al acceso directo o casi directo al hardware. El kernel ó núcleo de linux se puede definir como el corazón de este sistema operativo. Es el encargado que el software y el hardware del computador puedan trabajar juntos. Las funciones más importantes del mismo, aunque no las únicas, son: - Administración de la memoria para todos los programas y procesos en ejecución. - Administración del tiempo de procesador que los programas y procesos en ejecucion utilizan. - Es el encargado de que podamos acceder a los periféricos/elementos de nuestro ordenador de una manera cómoda. 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: Era la versión estable hasta el momento, de las versiones de desarrollo o experimentales. 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. Las versiones del núcleo se numeran hoy en día con 4 dígitos, de la siguiente forma: AA.BB.CC.DD. - AA: Indica la serie/versión principal del núcleo. - BB: Indica la revisión principal del núcleo. Números pares e impares no tienen ningún significado hoy en día. - CC: Indica nuevas revisiones menores del núcleo. Cambia cuando nuevas características y drivers son soportados. - DD: Este digito cambia cuando se corrigen fallos de programación o fallos de seguridad dentro de una revisión. En la actualidad se suele usar el núcleo con la distribución que el usuario utiliza. Son las distribuciones encargadas de distribuir núcleos estables a sus usuarios y estos núcleos se basan en el núcleo ("vanilla") distribuido por Linus Torvalds y el equipo de programadores del núcleo.
  4. 4. El núcleo se puede bajar de un gran número de servidores en internet pero el sitio oficial es http://www.kernel.org/ . En este enlace hay una lista internacional oficial de servidores espejos, de donde es posible bajarse cualquier versión del núcleo. El núcleo de Windows 7 “MinWin” El Modo Kernel es un modo muy privilegiado de funcionamiento, donde el código tiene el acceso directo a todo el hardware y toda la memoria, incluso a los espacios de dirección de todos los procesos del modo usuario. La parte de WINDOWS que corre en el modo Kernel se llama Ejecutor de Windows, que no es más que un conjunto de servicios disponibles a todos los componentes del Sistema Operativo, donde cada grupo de servicios es manipulado por componentes que son totalmente independientes (entre ellos el Núcleo) entre sí y se comunican a través de interfaces bien definidas. Todos los programas que no corren en Modo Kernel corren en Modo Usuario. La mayoría del código del Sistema Operativo corre en Modo Usuario, así como los subsistemas de ambiente (Win32 y POSIX que serán explicados posteriormente) y aplicaciones de usuario. Estos programas solamente acceden a su propio espacio de direcciones e interactúan con el resto del sistema a través de mensajes Cliente/Servidor. Capa de Abstracción de Hardware (HAL). HAL (Hardware Abstraction Layer) es una interfaz entre el hardware y el resto del Sistema Operativo, está implementada como una biblioteca de enlace dinámico (dll) y es responsable de proteger el resto del sistema de las especificaciones del hardware, tales como controladores de interrupción e interfaces de entrada/salida. Esta abstracción hace al sistema más portable ya que el resto del sistema no tiene que preocuparse sobre que plataforma está corriendo. Cada plataforma en que el sistema corre necesita un HAL específico. El diseño intenta que cuando Windows sea portado a una nueva arquitectura de procesador, el HAL sea reescrito para el nuevo procesador, pero el resto del sistema simplemente debe ser recompilado. Microkernel: Es el responsable de todas las acciones que se realizan sobre el sistema y casi todas las funciones del sistema pasan a través de él, está situado en el corazón de Windows, trabaja muy estrechamente con el HAL, este planifica la ejecución de hilos y manipula las interrupciones y excepciones de procesos. El papel de este es mantener a los procesadores lo más ocupado posible. En sentido general este se encarga de las funciones más básicas de todo el SO, como son:  Ejecución de subprocesos.  Sincronización multiprocesador.  Manejo de las interrupciones de hardware.
  5. 5. Ejecutor de Windows: Se encarga de las tareas importantes, las que son de vital importancia para el sistema completo, ya que el microkernel está casi siempre demasiado ocupado para dirigirse directamente. El Administrador de Objetos (Object Manager): es usado para crear, modificar y eliminar objetos (tipos de datos abstractos que son usados para representar recursos del Sistema Operativo) usados por todos los sistemas que conforman el Ejecutor de Windows. Este también proporciona información sobre el estado de los objetos a todo el Sistema Operativo. El Administrador de Procesos (Process Manager): es el responsable de crear, quitar y modificar los estados de todos los procesos e hilos. Este también proporciona información sobre el estado de procesos e hilos al resto del sistema. El Administrador de Memoria Virtual (Virtual Memory Manager o VMM): proporciona la gestión de memoria virtual del sistema. La memoria virtual es un esquema que permite usar los recursos del disco en lugar de la memoria física del sistema moviendo las páginas al disco cuando estas no están siendo usadas y recuperándolas cuando se les necesitan. Este es un segmento integral de Windows el cual asigna espacios de direcciones de 32 bit a cada proceso sin preocuparse de la cantidad de memoria física del sistema. El Servicio de Llamadas a Procedimientos Locales (Local Procedure Call Facility o LPC): se integran al diseño cliente/servidor de Windows. Este es la interfaz entre todos los procesos clientes y servidores que corren localmente en el sistema. Monitor de Seguridad (Security Reference Monitor o SRM): es el lecho de toda la seguridad dentro del sistema WINDOWS y es el responsable de hacer cumplir todas las políticas de seguridad en la computadora local. El Administrador de Entrada-Salida (I/O Manager): es responsable de gestionar la comunicación entre los distintos drivers de dispositivo, para lo cual implementa una interfaz bien definida que permite el tratamiento de todos los drivers de una manera homogénea, sin que intervenga el cómo funciona específicamente cada uno. Subsistemas de Ambiente Protegido Dos de los objetivos de WINDOWS son personalidad y compatibilidad. Esto ha sido logrado a través de los subsistemas de ambiente protegido. La personalidad esencialmente significa que WINDOWS expone múltiples conjuntos de interfaces de programas de aplicación (APIs) y puede actuar eficazmente como si fuera un sistema operativo diferente. WINDOWS viene con una personalidad POSIX y OS/2 además de sus personalidades Win32, Win16 y DOS.
  6. 6. En WINDOWS, hay tres subsistemas de ambiente protegido: - El subsistema de Win32 - El subsistema de POSIX - El subsistema de OS/2 El Subsistema Win32 Este subsistema actúa como un servidor para todos los otros subsistemas de ambiente soportados en WINDOWS, los que actúan como clientes y traducen sus llamadas API hacia las API apropiadas de Win32. El subsistema Win32 es responsable de toda la entrada y salida. Este posee el control de la pantalla, el teclado, y el ratón. Cuando otros subsistemas, como OS/2 o POSIX, necesitan beneficiarse de estos dispositivos, ellos piden los servicios al subsistema de Win32. Algunos de los objetivos que se trazaron para mantener la compatibilidad con las aplicaciones hechas en versiones anteriores fueron: - Permitir que los programas hechos sobre DOS pudieran correr sin modificación. - Suministrar la capacidad para ejecutar la mayoría de las aplicaciones Windows de 16 bits sin modificación. - Proteger al sistema y otras aplicaciones de 32 bits de la interferencia de las aplicaciones de 16 bits y DOS. - Permitir a las plataformas RISC (Reduced Instruction set Computer, microprocesador cuyo número de instrucciones es reducido para lograr una frecuencia más alta de trabajo) ejecutar aplicaciones Windows de 16 bits y DOS. El Subsistema POSIX Uno de los estándares más frecuentemente citados soportados por Windows es el POSIX (Interfaz de Sistema operativo Portable Basado en Unix), el cual representa la interfaz del Sistema Operativo portable y fue desarrollado por el IEEE (Instituto de Ingenieros en Electricidad y Electrónica) como un método de proporcionar portabilidad a las aplicaciones hechas sobre plataformas UNIX. No obstante, POSIX se ha integrado en muchos sistemas no UNIX. El Subsistema OS/2. El Subsistema OS/2 igual que el subsistema POSIX proporciona un entorno para aplicaciones UNIX, este subsistema da soporte a las aplicaciones OS/2. Proporciona la interfaz gráfica y las llamadas al sistema; las llamadas son servidas con ayuda del Ejecutor de Windows.
  7. 7. Estructura del sistema Los kernels de Windows NT o Minix son de tipo micro- kernel, caracterizado porque proveen al sistema de un estado mínimo necesario de funcionalidad, cargando el resto de funciones necesarias en procesos autónomos e independientes unos de otros, comunicándose con este micro-kernel a través de una interfaz bien definida. Este tipo de estructura es más fácil de mantener y el desarrollo de nuevos componentes es mucho más simple, dando a su vez una mayor estabilidad al sistema. Por otro lado, debido a la estructura rígida del interfaz, estos tipos de kernel son mucho más complicados de reestructurar, y además, debido a las arquitecturas del hardware actual, el proceso de intercomunicación dentro del micro-kernel es mucho más que una simple llamada, por lo que hace que esta estructura sea más lenta que los kernels de tipo monolíticos o macro-kernels. Debido a esto, una estructura de micro-kernel es prácticamente inconcebible, aunque esto no quiere decir que el kernel de linux sea una simple lista de instrucciones sin estructura alguna. A pesar de la estructura de macro-kernel, se ha intentado equiparar su velocidad utilizando código optimizado en velocidad, y se ha recuperado algunas de las mejores características de la estructura de micro- kernel, como puede ser la carga de los diferentes drivers necesarios como módulos independientes, siempre sin olvidar la estructura monolítica original. En el caso de Linux, la gran parte del kernel está escrito en C, existiendo también instrucciones en ensamblador, aunque estas últimas se usan mayoritariamente en los procesos de arranque y en el control de co-procesador. A continuación se muestra una tabla con la cantidad de líneas en C y ensamblador que se usan aproximadamente en la versión 2.0 del kernel de Linux, el cual consta de unas 470.000 líneas de código (la versión 1.0 constaba "únicamente" de 165.000 líneas): Código C Ensamblador Dispositivos de Drivers 377.000 100 Network 25.000 VFS 13.500 13 archivos de sistema 50.000 Inicio 4.000 2.800 Co-Procesador 3.550 Tabla 1 - Proporciones de código fuente por componente
  8. 8. Cabe comentar el significado de la serie de números que acompañan al kernel, tanto compilado como al directorio que contiene las fuentes de éste, que, a pesar de no ser necesarios, se suelen incluir porque aportan una mayor información. Este conjunto de cifras tienen el formato X.X.XX y su significado no es más que la versión del kernel a la que corresponde dicho archivo, aunque no es simplemente así. Como se puede suponer, la variación en una unidad del primer grupo de cifras significa un cambio muy importante en el kernel, siendo ésta menor conforme el grupo de cifras que varía está más hacia la derecha. El último grupo de cifras tiene, además del significado anterior como indicador de versión, un significado añadido, que es el de que si la cifra es par, esa versión de kernel se considera como una versión estable, si, en cambio ésta es impar, se considera que la versión del kernel es una versión en fase beta o de desarrollo. Procesos y Tareas Desde el punto de vista de un proceso ejecutándose en Linux, el kernel es un proveedor de servicios. Cada proceso existe por separado y el espacio de memoria reservado a cada uno de ellos está protegido para que no pueda ser modificado. Desde este punto de vista, se está llevando a cabo un sistema multiproceso real (ver figura 2). Desde un punto de vista interno, el contexto cambia. Solo hay un proceso en marcha en el computador que puede acceder a todos los recursos, el sistema operativo. El resto de tareas se llevarán a cabo como co-rutinas, las cuales, de una forma totalmente independiente, deciden por ellas mismas a qué tarea y cuándo pasarán el control. Debido a esto, un fallo en la programación del kernel podría bloquear todo el sistema. Figura 2 - Los procesos desde una vista interna y externa
  9. 9. Cuando se ha iniciado un proceso, este puede adquirir distintos estados: 1. Ejecución (Running) La tarea está activa y en ejecución. Este proceso solo puede ser interrumpido por una interrupción o una llamada del sistema. 2. Rutina interrumpida (Interrupt Routine) Está rutina se activa con una interrupción del sistema (hardware), como puede ser un pulsación del teclado o una llamada del reloj. 3. Llamada del Sistema (System Call) Las llamadas del sistema se activan debido a una interrupción producida por el software. Pueden suspender una tarea para llevar a cabo un evento. 4. En espera (Waiting) El proceso está en espera de un evento externo. 5. Vuelta de la llamada del sistema (Return from system call) Este estado se adopta automáticamente después de una llamada del sistema y algunas interrupciones. 6. Preparado (Ready) El proceso está en espera de ser atendido por el procesador, que está ocupado con otro proceso en ese momento. Estos estados no pueden ser adquiridos sin orden alguno o porque sí, sino que llevan un ciclo el cual debe ser respetado. Además, si se observa la figura 3, se podrá apreciar que estos procesos no son "islas" independientes unas de otras, sino que hay una relación familiar entre ellos. En muchos sistemas operativos actuales se hace la distinción entre procesos y threads. Un thread es una especie de rama o camino en la ejecución de un programa que puede ser procesado en paralelo con otros threads. Linux no hace esa distinción. En el kernel, únicamente existe el concepto de un proceso, el cual puede compartir recursos con otros procesos. Por eso, una tarea es una generalización del concepto de un thread.
  10. 10. Figura 3 - Estados posibles de un proceso Principales estructuras de datos La estructura Tarea En un sistema multitarea es muy importante como una tarea está definida. Es, probablemente, uno de los conceptos más importantes en un sistema operativo de este tipo. De hecho los algoritmos usados en Linux para su manejo constituyen la mayor parte del código del kernel. La descripción de las características de un proceso, vienen dadas por la estructura task_struct. Una de las variables usadas es la llamada state, que es la encargada de almacenar el estado actual de la tarea (los valores que puede tomar esta variable los podemos ver en la figura 4). Otras variables son counter, que es la variable usada por el Programador (scheduler) para seleccionar el siguiente proceso, o signal que contiene una máscara de un bit (bit mask) para las señales recibidas por el proceso.
  11. 11. Todos los procesos creados son introducidos en una lista doblemente enlazada gracias a los dos punteros siguientes (el comienzo y final de esta lista están almacenados en la variable global init_task): struct task_struct *next_task; struct task_struct *previous_task; En un sistema Unix, los procesos no existen independientemente unos de otros, sino que cada proceso está relacionado con los demás, siguiendo una jerarquía familiar según qué proceso lo haya creado, y que al igual que los anteriores están representados por: struct task_struct p_opptr; /* Padre original */ struct task_struct p_pptr; /* Padre */ struct task_struct p_cptr; /* Hijo más joven */ STRUCT TASK_STRUCT P_YSPTR; /* YOUNGER SIBLING */ struct task_struct p_osptr; /* OLDER SIBLING */ Figura 4 - Relaciones entre procesos Otras características de esta estructura son, por ejemplo, que cada proceso posee su propia subestructura para el almacenamiento de datos, o que cada proceso posee un numero identificativo pid, a partir del cual se nos facilitará el manejo de dicha tarea.
  12. 12. La tabla de procesos Cada proceso en ejecución que haya en el ordenador, ocupa una entrada en la tabla de proceso, la cual está restringida en tamaño a NR_TASKS. En Linux, la tarea 0 (task[0]) es INIT_TASK, por lo que será la primera tarea cargada por el kernel. Esto es así porque ella será la encargada de lanzar el resto de tareas, como los demonios cargados en el inicio (p.ej. lpd) o el controlador del ratón (gpm). Ficheros e inodes En los sistemas UNIX se ha hecho tradicionalmente una distinción entre la estructura de archivos y la de inodes. La estructura inode describe un archivo, aunque esto puede ser visto de diferentes formas: por ejemplo, la estructura de datos en el kernel y la del disco duro describen archivos, y, a pesar de ser distintas, se denominan inodes. Los inodes contienen información del archivo como propietario, derechos, etc. Cada fichero usado en el sistema se apareja con una única entrada de inode en el kernel, la cual describe diferentes atributos y propiedades del archivo al que corresponde. Principales mecanismos del kernel - Señales: Desde los primeros sistemas UNIX, esta característica ha sido un de las que más ventajas le han aportado: el uso de señales. Éstas son usadas por el kernel para informar a los procesos sobre ciertos eventos, lo que permite abortarlos o cambiarlos de un estado a otro. Todas estas señales son enviadas con la función send_sig(), la cual admite el paso de tres parámetros, siendo éstos: el numero de la señal, una descripción del proceso que va a recibir la señal (un puntero a la entrada del proceso en cuestión en la tabla de procesos), y opcionalmente la prioridad del proceso que envía la señal. Este último argumento puede tener dos valores: desde el kernel, el cual puede enviar señales a cualquier proceso, o desde un proceso, para lo que es necesario que éste último tenga derechos de superusuario, o bien que tener el mismo UID y GID que el proceso al que se le envía la señal.
  13. 13. - Tuberías: Las tuberías o pipes (... | ...) son unos enlaces que se pueden realizar con cualquier shell, que unen las entradas de algunos programas con las salidas de los otros. Gracias a esto es posible usar gran parte de los comandos de Linux como filtros y, así, construir comandos más potentes a partir de comandos sencillos. Estas pipes, son consideradas como el método clásico de comunicación entre procesos. Otra variante de las tuberías son los FIFOs (First In, First Out), que se diferencian de las anteriores en que los FIFOs no son objetos temporales, sino que ellos pueden ser establecidos en un sistema de ficheros. - Interrupciones: Son usadas para permitir al hardware comunicarse con el SO. En Linux hay dos tipos de interrupciones: rápidas y lentas. Se podría decir que son tres tipos, considerando el tercero como las llamadas del sistema, también desencadenadas por interrupciones. 1. Interrupciones lentas: Son las más usuales. Se caracterizan porque se puede llevar a cabo otras interrupciones mientras éstas son tratadas. Después de que una interrupción lenta haya sido procesada, otras tareas adicionales, de carácter periódico, son llevadas a cabo por el sistema (por ejemplo el scheduler). Otro ejemplo, es la interrupción lenta del reloj. 2. Interrupciones rápidas: Éstas se usan para tareas más cortas y menos complejas que las comentadas en el apartado anterior. Mientras este tipo de interrupciones son llevadas a cabo, el resto de interrupciones son bloqueadas, a menos que la propia rutina en ejecución las active. Un ejemplo de este tipo de rutinas es la interrupción de teclado. En ambos tipos de interrupciones el proceso que se lleva a cabo es muy similar: primero todos los registros son salvados con SAVE_ALL y la interrupción envía una confirmación al controlador de interrupciones con ACK. En caso de un sistema con múltiples procesadores, se ejecuta una llamada a la rutina del kernel ENTER_KERNEL para sincronizar el acceso al kernel de los procesadores. Una vez se ha completado la interrupción, se ejecuta la rutina RESTORE_MOST que devuelve los registros guardados previamente a sus valores iniciales, llamando después a iret para continuar con el proceso interrumpido. - Iniciando el sistema: LILO3 es el encargado de encontrar el kernel de Linux y lo carga a la memoria, iniciándolo en el punto start: que es donde se 3 LILO es un acrónimo de LInux LOader (cargador) y ha sido usado para arrancar linux en sistemas x86 por muchos años. Aunque ahora GRUB es el gestor de arranque por defecto, algunos prefieren usar LILO porque les es más familiar y otros porque GRUB puede causar problemas al arrancar determinado tipo de hardware.
  14. 14. encuentra el código en ensamblador encargado de inicializar el hardware esencial. Una vez esto se ha llevado a cabo, el proceso se cambia a Modo Protegido. La instrucción en ensamblador es: jmp 0x1000, KERNEL_CS Inicia un salto a la dirección de comienzo del código de 32 bit para el kernel del sistema operativo actual y continúa desde startup_32: En este punto se inician más secciones del hardware (en particular el MMU, el co-procesador y la tabla de descripciones de interrupciones) y el entorno requerido para la ejecución de funciones en C. Una vez esto se ha llevado a cabo, la primera función en C, start_kernel(), es llamada, la cual salvará todos los datos que el código ensamblador ha encontrado sobre el hardware hasta este punto. Entonces se inicializan todas las áreas del kernel. Así se puede citar un ejemplo de su ejecución: asmlinkage void start_kernel(void) { memory_start = paging_init(memory_start,memory_end); trap_init(); init_IRQ(); sched_init(); time_init(); parse_options(command_line); init_modules(); memory_start = console_init(memory_start,memory_end); LILO se carga así mismo en la memoria casi de forma idéntica a GRUB, con la diferencia de que es un gestor de dos etapas. 1. La etapa 1 o el gestor de arranque primario se lee en la memoria por la BIOS desde el MBR. El gestor de arranque primario existe en menos de 512 bytes de espacio en disco dentro del MBR. Su función es cargar la etapa 2 del gestor de arranque y pasarle la información de la geometría del disco. 2. La etapa 2 o el gestor de arranque secundario se lee en memoria. El gestor de arranque secundario visualiza la pantalla inicial de Red Hat Linux. Esta pantalla le permite seleccionar el sistema operativo o el kernel de Linux que desee arrancar. 3. La etapa 2 lee el sistema operativo o el kernel y lleva a cabo initrd en memoria. Una vez que LILO determina qué sistema operativo iniciar, éste lo carga en la memoria y lleva el control de la máquina a ese sistema operativo. Una vez que se ha llevado a cabo la etapa 2 en memoria, LILO visualiza la pantalla inicial de Red Hat Linux con los diferentes sistemas operativos o kernel que han sido configurados para arrancar. Por defecto, si Red Hat Linux es el único sistema instalado, linux será la única opción disponible. Si el sistema tiene múltiples procesadores habrá una opción linux-up para el kernel del procesador único y una opción linux para los kernel de múltiples procesadores (SMP). Si LILO está configurado para arrancar otros sistemas operativos, estas entradas de arranque también aparecerán en pantalla. Las flechas direccionales permiten al usuario resaltar el SO deseado y la tecla [Intro] comenzará el proceso de arranque. Para accesar una línea de comandos boot: presione [Ctrl]-[X].
  15. 15. memory_start = pci_init(memory_start,memory_end); memory_start = kmalloc_init(memory_start,memory_end); sti(); memory_start = inode_nit(memory_start,memory_end); memory_start = file_table_init(memory_start,memory_end); memory_start = name_cache_init(memory_start,memory_end); mem_init(memory_start,memory_end); buffer_init(); sock_init(); ipc_init(); ... El proceso actualmente en curso es el proceso 0, el cual ejecuta la función init(), que será la encargada de llevar a cabo el resto de la inicialización, cargando los demonios bdflush y kswap. Entonces se hace una llamada a setup, que será la encargada de montar el sistema de archivos root. - Interrupción del Reloj: Todos los sistemas operativos necesitan una forma de medir el tiempo y de mantener una hora en el sistema. El sistema de medida se implementa normalmente haciendo interrupciones en intervalos ya predefinidos. Bajo Linux, el tiempo se mide en ticks desde que el sistema es arrancado. Un tick representa 10 milisegundos, así que la interrupción del reloj se efectúa 100 veces por segundo. El tiempo se almacena en la variable unsigned long volatile jiffies; La cual deberá ser modificado únicamente por esta interrupción. Sin embargo, este método provee solo de un base interna de tiempo. La interrupción del reloj es llamada relativamente a menudo y, por eso, es un tanto dependiente del tiempo. La rutina de interrupción en la versión 2.0, actualiza la variable jiffies y marca como activa una parte de la interrupción del reloj, la cual es llamada por el sistema más adelante, y se desarrolla el resto del trabajo. Como pueden ocurrir varias interrupciones de reloj antes de activar el resto de rutinas, la interrupción del reloj también puede incrementar las variables unsigned long lost_ticks; unsigned long lost_ticks_system; Para que estas puedan ser evaluadas al final de la rutina.
  16. 16. lost_ticks cuenta las interrupciones de reloj producidas desde la última activación; lost_ticks_system cuenta, en cambio el número de interrupciones transcurridas mientras el proceso de interrupción estaba en Modo de Sistema. El sistema de archivos de linux Actualmente es normal encontrar un PC con su disco duro con distintas particiones, cada una de ellas con un sistema de ficheros distinta. Esta variedad es debida a que prácticamente cada SO tiene su propio sistema de ficheros, alegando que éste es más rápido y seguro que el resto. Puede que una de las razones por las que Linux ha tenido tanta popularidad, sea por la cantidad de sistemas de ficheros distintos que soporta (FAT16 y FAT32 de Windows, NTFS de WinNT, HPFS de OS/2, ISO 9660 y Joliet, que son los estándares más comunes en CD, etc.). El soporte de esta gran cantidad de sistema de ficheros es debido a la interfaz unificada que usa el kernel llamada Virtual File System Switch (VFS) o Virtual File System. Este sistema virtual de ficheros es el encargado de cada proceso pueda manejar información desde los distintos ficheros sin necesidad de saber donde se encuentran, o de saber si pertenecen a un tipo de sistema de ficheros u otro. Conocimientos básicos La CPU no es el único elemento "inteligente" que existe en la computadora. Cada elemento hardware que la compone lleva incluido su propio controlador (por ejemplo el ratón y el teclado son controlados por el chip SuperIO, el disco IDE por el controlador IDE o el SCSI por la controladora SCSI). Esto implica que el acceso a cada uno de estos dispositivos se realizará de forma distinta, por lo que cada utilidad debería incluir unos controladores. En vez de eso, los controladores se incluyen en el kernel como unas librerías conocidas como device drivers (controlador de dispositivo), de tal forma que se puede acceder a todos los dispositivos así configurados, sin necesidad de conocer cómo funciona el dispositivo a bajo nivel. De esta forma se consigue una abstracción en lo que se refiere al acceso a dispositivos. En Linux, como en Unix, a los distintos sistemas de ficheros que el sistema puede usar no se accede por identificadores de dispositivo (como un número o nombre de unidad) pero, en cambio se combinan en una estructura jerárquica de árbol que representa el sistema de ficheros como una entidad única y sencilla. Linux añade cada sistema de ficheros nuevo en este árbol de sistemas de ficheros cuando se
  17. 17. monta. Todos los sistemas de ficheros, de cualquier tipo, se montan sobre un directorio y los ficheros del sistema de ficheros son el contenido de ese directorio. Este directorio se conoce como directorio de montaje o punto de montaje. Cuando el sistema de ficheros se desmonta, los ficheros propios del directorio de montaje son visibles de nuevo. Además, gracias a esta forma de trabajo, no es necesario implementar el código necesario para acceder a los distintos dispositivos, sino que cada proceso se comunica con los dispositivos que necesite a través del acceso que le es proporcionado a través del VFS, como se puede observar en la figura 4. El primer sistema de ficheros diseñado específicamente para Linux, el sistema de Ficheros Extendido, o EXT, fue introducido en Abril de 1992 y solventó muchos problemas pero era aún falto de rapidez. Así, en 1993, el Segundo sistema de Ficheros Extendido, o EXT2, fue añadida al kernel como sistema principal de ficheros. Figura 4 - Estructura del VFS
  18. 18. En ese momento un importante desarrollo tuvo lugar en Linux. El sistema de ficheros real se separó del SO y servicios del sistema a favor de un interfaz conocido como el Sistema de Ficheros Virtual, o VFS. VFS permite a Linux soportar muchos, incluso muy diferentes, sistemas de ficheros, cada uno presentando un interfaz software común a través del 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 sistema de Ficheros Virtual está implementado de forma que el acceso a los ficheros es tan rápido y eficiente como sea posible. También debe asegurar que los ficheros y los datos que contiene son correctos. Estos dos requisitos pueden ser incompatibles entre sí. El VFS de Linux mantiene una antememoria 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 las antememorias 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. Las estructuras de datos, que describen los ficheros y directorios que son accedidos serian creadas y destruidas y todo el tiempo los controladores de los dispositivo estarían trabajando, buscando y guardando datos. La antememoria o caché más importantes es la llamada Buffer Cache, que está integrada entre cada sistema de ficheros y su dispositivo de bloque. Tal y como se accede a los bloques se ponen en el Buffer Cache y se almacenan en varias colas dependiendo de sus estados. El Buffer Cache no sólo mantiene buffers de datos, también ayuda a administrar el interfaz asíncrono con los controladores de dispositivos de bloque. El Virtual File System Como en el sistema de ficheros EXT2, cada fichero, directorio y demás se representan en el VFS por un y sólo un inodo VFS. La información en cada inodo VFS se construye a partir de información del sistema de ficheros por las rutinas específicas del sistema de ficheros. Los inodos VFS existen sólo en la memoria del núcleo y se mantienen en el caché de inodos VFS tanto tiempo como sean útiles para el sistema. Entre otra información, los inodos VFS contienen los siguientes campos:
  19. 19. 1. device: Este es el identificador de dispositivo del dispositivo que contiene el fichero o lo que este inodo VFS represente, 2. inode number: Este es el número del inodo y es único en este sistema de ficheros. La combinación de device y inode number es única dentro del Sistema de Ficheros Virtual, 3. mode: Como en EXT2 este campo describe qué representa este inodo VFS y los permisos de acceso (r-lectura, w-escritura, x- ejecución para propietario, grupo y otros usuarios), 4. user ids: Los identificadores de propietario, 5. times: Los tiempos de creación, modificación y escritura, 6. block size: El tamaño de bloque en bytes para este fichero, por ejemplo 1024 bytes, 7. inode operations: Un puntero a un bloque de direcciones de rutina. Estas rutinas son específicas del sistema de ficheros y realizan operaciones para este inodo, por ejemplo, truncar el fichero que representa este inodo. 8. count: El número de componentes del sistema que están usando actualmente este inodo VFS. Un contador de cero indica que el inodo está libre para ser descartado o rehusado, 9. lock: Este campo se usa para bloquear el inodo VFS, por ejemplo, cuando se lee del sistema de ficheros, 10.dirty: Indica si se ha escrito en este inodo, si es así, el sistema de ficheros necesitará modificarlo, 11.file system specific information. El sistema de ficheros Ext2 El Segundo sistema de ficheros Extendido de Linux ha sido el que mayor éxito ha cosechado, siendo básico en cualquier distribución de este SO. Su construcción se basa en que los datos son guardados en bloques, los cuales son, en principio, del mismo tamaño, aunque pueden variar de un sistema a otro (ya que esta elección del tamaño se hace al crear el sistema con mke2fs). Cuando se almacena un fichero, se hace de tal forma que ocupe un número entero de bloques, quedando gran parte de la capacidad del último bloque usado bastante desperdiciada, a no ser que el fichero de datos ocupe exactamente un número de bloques, tal como se ha explicado reiteradas veces en clase. No todos los bloques del sistema de ficheros contienen datos, algunos deben usarse para mantener la información que describe la estructura del sistema de ficheros. EXT2 define la topología del sistema de ficheros describiendo cada fichero del sistema con una estructura de datos inodo. Un inodo describe que bloques ocupan los datos de un fichero y también los permisos de acceso del fichero, las horas de modificación del fichero y el tipo del fichero. Cada fichero en el sistema de ficheros EXT2 se describe por un único inodo y cada inodo tiene un único número que lo identifica. Los inodos del sistema de ficheros se almacenan juntos en tablas de inodos. Los directorios EXT2 son ficheros especiales (ellos
  20. 20. mismos descritos por inodos) que contienen punteros a los inodos de sus entradas de directorio. El sistema de ficheros EXT2 divide las particiones lógicas que ocupa en Grupos de Bloque (Block Groups). Cada grupo duplica información crítica para la integridad del sistema de ficheros ya sea valiéndose de ficheros y directorios como de bloques de información y datos. Esta duplicación es necesaria por si ocurriera un desastre y el sistema de ficheros necesitara recuperarse. En el sistema de ficheros EXT2, el inodo es el bloque de construcción básico; cada fichero y directorio del sistema de ficheros es descrito por un y sólo un inodo. Los inodos EXT2 para cada Grupo de Bloque se almacenan juntos en la tabla de inodos con un mapa de bits que permite al sistema seguir la pista de inodos reservados y libres. Un inodo EXT2, entre otra información, contiene los siguientes campos: 1. mode: Esto mantiene dos partes de información; qué inodo describe y los permisos que tienen los usuarios. Para EXT2, un inodo puede describir un fichero, directorio, enlace simbólico, dispositivo de bloque, dispositivo de carácter o FIFO. 2. owner Information: Los identificadores de usuario y grupo de los dueños de este fichero o directorio. Esto permite al sistema de ficheros aplicar correctamente el tipo de acceso. 3. size: El tamaño en del fichero en bytes. 4. timestamps: La hora en la que el inodo fue creado y la última hora en que se modificó. 5. datablocks: Punteros a los bloques que contienen los datos que este inodo describe. Los doce primeros son punteros a los bloques físicos que contienen los datos descritos por este inodo y los tres últimos punteros contienen más niveles de indirección. Por ejemplo, el puntero de doble indirección se direcciona a un bloque de punteros que apuntan a bloques de datos. Esto significa que ficheros menores o iguales a 12 bloques de datos en longitud son más fácilmente accedidos que ficheros más grandes. Los inodos EXT2 pueden describir ficheros de dispositivo especiales, aunque no se consideran como ficheros reales, aunque permiten que los programas puedan
  21. 21. usarlos para acceder a los dispositivos. Todos los ficheros de dispositivo de /dev están ahí para permitir a los programas acceder a los dispositivos de Linux. Por ejemplo el programa mount toma como argumento el fichero de dispositivo que el usuario desee montar. El Superbloque contiene una descripción del tamaño y forma base del sistema de ficheros. La información contenida permite al administrador del sistema de ficheros usar y mantener el sistema de ficheros. Normalmente sólo se lee el Superbloque del Grupo de Bloque 0 cuando se monta el sistema de ficheros pero cada Grupo de Bloque contiene una copia duplicada en caso de que se corrompa sistema de ficheros. Entre otra información contiene: 1. Magic Number: Permite al software de montaje comprobar que es realmente el Superbloque para un sistema de ficheros EXT2. Para la versión actual de EXT2 éste es 0xEF53. 2. Revision Level: Los niveles de revisión mayor y menor permiten al código de montaje determinar si este sistema de ficheros soporta o no características que sólo son disponibles para revisiones particulares del sistema de ficheros. También hay campos de compatibilidad que ayudan al código de montaje determinar que nuevas características se pueden usar con seguridad en ese sistema de ficheros. 3. Mount Count and Maximum Mount Count: Juntos permiten al sistema determinar si el sistema de ficheros fue comprobado correctamente. El contador de montaje se incrementa cada vez que se monta el sistema de ficheros y cuando es igual al contador máximo de montaje muestra el mensaje de aviso «maximal mount count reached, running e2fsck is recommended». 4. Block Group Number: El número del Grupo de Bloque que tiene la copia de este Superbloque. 5. Block Size: El tamaño de bloque para este sistema de ficheros en bytes, por ejemplo 1024 bytes. 6. Blocks per Group: El número de bloques en un grupo. Como el tamaño de bloque éste se fija cuando se crea el sistema de ficheros. 7. Free Blocks: EL número de bloques libres en el sistema de ficheros. 8. Free Inodes: El número de inodos libres en el sistema de ficheros. 9. First Inode: Este es el número de inodo del primer inodo en el sistema de ficheros. El primer inodo en un sistema de ficheros EXT2 raíz seria la entrada directorio para el directorio '/'.
  22. 22. Sistema de Ficheros Proc El sistema de ficheros /proc muestra realmente la potencia del Sistema Virtual de Ficheros. Este sistema no existe en realidad. Éste como el resto de sistemas de ficheros, se registra en el VFS. Sin embargo, cuando el VFS hace llamadas al /proc, éste crea los ficheros que le son pedidos con información sobre el kernel. Por ejemplo la llamada al fichero /proc/devices genera a partir de las estructuras del kernel, un archivo describiendo sus dispositivos. El sistema de ficheros /proc representa una ventana hacia el interior del kernel. DISCO DURO “Los tamaños también han variado mucho, desde los primeros discos IBM hasta los formatos estandarizados actualmente: 3,5 " los modelos para PC y servidores, 2,5 " los modelos para dispositivos portátiles. Todos se comunican con la computadora a través del controlador de disco, empleando una interfaz estandarizada. Los más comunes hasta los años 2000 han sido IDE (también llamado ATA o PATA), SCSI (generalmente usado en servidores y estaciones de trabajo). Desde el 2000 en adelante ha ido masificándose el uso de los Serial ATA. Existe además FC (empleado exclusivamente en servidores). Para poder utilizar un disco duro, un sistema operativo debe aplicar un formato de bajo nivel que defina una o más particiones. La operación de formateo requiere el uso de una fracción del espacio disponible en el disco, que dependerá del formato empleado. Además, los fabricantes de discos duros, unidades de estado sólido y tarjetas flash miden la capacidad de los mismos usando prefijos SI, que emplean múltiplos de potencias de 1000 según la normativa IEC y IEEE, en lugar de los prefijos binarios, que emplean múltiplos de potencias de 1024, y son los usados por sistemas operativos de Microsoft. Esto provoca que en algunos sistemas operativos sea representado como múltiplos 1024 o como 1000, y por
  23. 23. tanto existan confusiones, por ejemplo un disco duro de 500 GB, en algunos sistemas operativos sea representado como 465 GiB (es decir gibibytes; 1 GiB = 1024 MiB) y en otros como 500 GB.”4 Las unidades de estado sólido tienen el mismo uso que los discos duros y emplean las mismas interfaces, pero no están formadas por discos mecánicos, sino por memorias de circuitos integrados para almacenar la información. El uso de esta clase de dispositivos anteriormente se limitaba a las supercomputadoras, por su elevado precio, aunque hoy en día ya son muchísimo más asequibles para el mercado doméstico. C. Dennis Mee, Eric D. Daniel (1996). Los discos duros pertenecen a la llamada memoria secundaria o almacenamiento secundario. El disco duro es más rápido, sin embargo su velocidad depende de la zona del disco en que estemos ubicados. Las características que se deben tener en cuenta en un disco duro son:5 Tiempo medio de acceso: Tiempo medio que tarda la aguja en situarse en la pista y el sector deseado; es la suma del Tiempo medio de búsqueda (situarse en la pista), Tiempo de lectura/escritura y la Latencia media (situarse en el sector). Tiempo medio de búsqueda: Tiempo medio que tarda la aguja en situarse en la pista deseada; es la mitad del tiempo empleado por la aguja en ir desde la pista más periférica hasta la más central del disco. 4 Disco duro. Consultado el 2 de septiembre de 2013. http://es.wikipedia.org/wiki/Disco_duro 5 ibid
  24. 24. Tiempo de lectura/escritura: Tiempo medio que tarda el disco en leer o escribir nueva información: Depende de la cantidad de información que se quiere leer o escribir, el tamaño de bloque, el número de cabezales, el tiempo por vuelta y la cantidad de sectores por pista. Latencia media: Tiempo medio que tarda la aguja en situarse en el sector deseado; es la mitad del tiempo empleado en una rotación completa del disco. Velocidad de rotación: Revoluciones por minuto de los platos. A mayor velocidad de rotación, menor latencia media. Velocidad en color AZUL, Latencia en color AMARILLO La velocidad de rotación y el tamaño del sector siempre son los mismos (independientemente de donde estemos ubicados) ya que son definidos por las revoluciones del motor (4200, 5400, 7200, 10mil y 15mil rpm) y por el sistema de archivos (al momento de formatear). Dentro de un disco duro hay uno o varios discos (de aluminio o cristal) concéntricos llamados platos (normalmente entre 2 y 4, aunque pueden ser hasta 6 ó 7 según el modelo), y que giran todos a la vez sobre el mismo eje, al que están unidos. El cabezal (dispositivo de lectura y escritura) está formado por un conjunto de brazos paralelos a los platos, alineados verticalmente y que también se desplazan de forma simultánea, en cuya punta están las cabezas de
  25. 25. lectura/escritura. Por norma general hay una cabeza de lectura/escritura para cada superficie de cada plato. Los cabezales pueden moverse hacia el interior o el exterior de los platos, lo cual combinado con la rotación de los mismos permite que los cabezales puedan alcanzar cualquier posición de la superficie de los platos. Interior de un disco duro; se aprecia la superficie de un plato y el cabezal de lectura/escritura retraído, a la izquierda. Fuente http://es.wikipedia.org/wiki/Disco_duro Tasa de transferencia: Velocidad a la que puede transferir la información a la computadora una vez que la aguja está situada en la pista y sector correctos. Puede ser velocidad sostenida o de pico. Otras características son: - Caché de pista: Es una memoria tipo Flash dentro del disco duro. - Interfaz: Medio de comunicación entre el disco duro y la computadora. Puede ser IDE/ATA, SCSI, SATA, USB, Firewire, Serial Attached SCSI6 . - Landz: Zona sobre las que aparcan las cabezas una vez se apaga la computadora. 6 Serial Attached SCSI o SAS, es una interfaz de transferencia de datos en serie, sucesor del SCSI (Small Computer System Interface) paralelo, aunque sigue utilizando comandos SCSI para interaccionar con los dispositivos SAS. Aumenta la velocidad y permite la conexión y desconexión de forma rápida.
  26. 26. Tener forma redondeada y partes mecánicas (motor, cabeza lectora y discos) es una gran desventaja: La forma redondeada significa que la velocidad de lectura/escritura es mejor al comienzo del disco que al final y las partes mecánicas generan una latencia significativa en milisegundos. Cada plato posee dos ojos, y es necesaria una cabeza de lectura/escritura para cada cara. Si se observa el esquema Cilindro-Cabeza-Sector de más abajo, a primera vista se ven 4 brazos, uno para cada plato. En realidad, cada uno de los brazos es doble, y contiene 2 cabezas: una para leer la cara superior del plato, y otra para leer la cara inferior. Por tanto, hay 8 cabezas para leer 4 platos, aunque por cuestiones comerciales, no siempre se usan todas las caras de los discos y existen discos duros con un número impar de cabezas, o con cabezas deshabilitadas. Las cabezas de lectura/escritura nunca tocan el disco, sino que pasan muy cerca (hasta a 3 nanómetros), debido a una finísima película de aire que se forma entre éstas y los platos cuando éstos giran (algunos discos incluyen un sistema que impide que los cabezales pasen por encima de los platos hasta que alcancen una velocidad de giro que garantice la formación de esta película). Si alguna de las cabezas llega a tocar una superficie de un plato, causaría muchos daños en él, rayándolo gravemente, debido a lo rápido que giran los platos (uno de 7.200 revoluciones por minuto se mueve a 129 km/h en el borde de un disco de 3,5 pulgadas).
  27. 27. La estructura física de un disco es la siguiente: un disco duro se organiza en platos (PLATTERS), y en la superficie de cada una de sus dos caras existen pistas (TRACKS) concéntricas, como surcos de un disco de vinilo, y las pistas se dividen en sectores (SECTORS). El disco duro tiene una cabeza (HEAD) en cada lado de cada plato, y esta cabeza es movida por un motor cuando busca los datos almacenados en una pista y un sector concreto. El concepto "cilindro" (CYLINDER) es un parámetro de organización: el cilindro está formado por las pistas concéntricas de cada cara de cada plato que están situadas unas justo encima de las otras, de modo que la cabeza no tiene que moverse para acceder a las diferentes pistas de un mismo cilindro. Hay varios conceptos para referirse a zonas del disco: - Plato: cada uno de los discos que hay dentro del disco duro. - Cara: cada uno de los dos lados de un plato. - Cabeza: número de cabezales. - Pistas: una circunferencia dentro de una cara; la pista 0 está en el borde exterior. - Cilindro: conjunto de varias pistas; son todas las circunferencias que están alineadas verticalmente (una de cada cara). - Sector: cada una de las divisiones de una pista. El tamaño del sector no es fijo, siendo el estándar actual 512 bytes, aunque la IDEMA ha creado un comité que impulsa llevarlo a 4 KiB. Antiguamente el número de sectores por pista era fijo, lo cual desaprovechaba el espacio significativamente, ya que en las pistas exteriores pueden almacenarse más sectores que en las interiores. Así, apareció la tecnología ZBR (grabación de bits por zonas) que aumenta el número de sectores en las pistas exteriores, y utiliza más eficientemente el disco duro. Así las pistas se agrupan en zonas de pistas de igual cantidad de sectores. Cuanto más lejos del centro de cada plato se encuentra una zona, ésta contiene una mayor cantidad de sectores en sus pistas. Además mediante ZBR, cuando se leen sectores de cilindros más externos la tasa de transferencia de bits por segundo es mayor; por tener la misma velocidad angular que cilindros internos pero mayor cantidad de sectores. Toshiba America Electronic 2009. El primer sistema de direccionamiento que se usó fue el CHS (cilindro-cabeza- sector), ya que con estos tres valores se puede situar un dato cualquiera del disco. Más adelante se creó otro sistema más sencillo: LBA (direccionamiento lógico de bloques), que consiste en dividir el disco entero en sectores y asignar a cada uno un único número. Éste es el que actualmente se usa.
  28. 28. En cuanto a organización lógica, cuando damos formato lógico (el físico, o a bajo nivel, viene hecho de fábrica y no es recomendable hacerlo de nuevo, excepto en casos excepcionales, pues podría dejar inutilizado el disco) lo que hacemos es agrupar los sectores en unidades de asignación (CLUSTERS) que es donde se almacenan los datos de manera organizada. Cada unidad de asignación sólo puede ser ocupado por un archivo (nunca dos diferentes), pero un archivo puede ocupar más de una unidad de asignación. Dentro de un disco duro hay varios platos (entre 2 y 4), que son discos (de aluminio o cristal) concéntricos y que giran todos a la vez. El cabezal (dispositivo de lectura y escritura) es un conjunto de brazos alineados verticalmente que se mueven hacia dentro o fuera según convenga, todos a la vez. En la punta de dichos brazos están las cabezas de lectura/escritura, que gracias al movimiento del cabezal pueden leer tanto zonas interiores como exteriores del disco. Cada plato tiene dos caras, y es necesaria una cabeza de lectura/escritura para cada cara (no es una cabeza por plato, sino una por cara). Si se mira el esquema
  29. 29. Cilindro-Cabeza-Sector (más abajo), a primera vista se ven 4 brazos, uno para cada plato. En realidad, cada uno de los brazos es doble contiene 2 cabezas: una para leer la cara superior del plato, y otra para leer la cara inferior. Por tanto, hay 8 cabezas para leer 4 platos. Las cabezas de lectura/escritura nunca tocan el disco, sino que pasan muy cerca (hasta a 3 nanómetros) o 3 millonésimas de milímetro. Si alguna llega a tocarlo, causaría muchos daños en el disco, rayándolo gravemente, debido a lo rápido que giran los platos Un disco duro suele tener:  Platos en donde se graban los datos,  Cabezal de lectura/escritura,  Motor que hace girar los platos,  Electroimán que mueve el cabezal,  circuito electrónico de control, que incluye: interfaz con la computadora, memoria caché,  Bolsita desecante (gel de sílice) para evitar la humedad,  Caja, que ha de proteger de la suciedad (aunque a veces no está al vacío)  Tornillos, a menudo especiales.  Velocidad de rotación: Número de revoluciones por minuto del/de los plato/s.  Ejemplo: 7200rpm. Capacidad de almacenamiento. La capacidad de almacenamiento hace referencia a la cantidad de información que puede grabarse o almacenar en un disco duro. Hasta hace poco se medía en Gigabytes (GB), actualmente se mide en Terabytes (TB). Se puede calcular la capacidad de un disco duro con la formula siguiente: Un disco duro puede tener por ejemplo los datos siguientes, donde el tamaño del sector (bytes por sector) suele ser 512. 16383 cilindros, 16 cabezales y 63 sectores. En virtud de estos datos el disco duro tendrá una capacidad de 7,8 GB, lo que corresponde a 8.455.200.768 bytes = 8257032 KB =8063,5 MB si hacemos el cálculo con bytes "auténticos", es decir, si tenemos en cuenta que 1 KB son 1024 bytes y no 1000 como indican los fabricantes.
  30. 30. Velocidad de Rotación (RPM) Es la velocidad a la que gira el disco duro, más exactamente, la velocidad a la que giran el/los platos del disco, que es donde se almacenan magnéticamente los datos. La regla es: a mayor velocidad de rotación, más alta será la transferencia de datos, pero también mayor será el ruido y mayor será el calor generado por el disco duro. Se mide en número revoluciones por minuto (RPM). No debe comprarse un disco duro IDE de menos de 5400 RPM (ya hay discos IDE de 7200 RPM), a menos que te lo den a un muy buen precio, ni un disco SCSI de menos de 7200RPM (los hay de 10.000 RPM). Una velocidad de 5400 RPM permitirá una transferencia entre 10MB y 16MB por segundo con los datos que están en la parte exterior del cilindro o plato, algo menos en el interior. Tiempo de Acceso (Access Time) Es el tiempo medio necesario que tarda la cabeza del disco en acceder a los datos que necesitamos. Realmente es la suma de varias velocidades:  El tiempo que tarda el disco en cambiar de una cabeza a otra cuando busca datos.  El tiempo que tarda la cabeza lectora en buscar la pista con los datos saltando de una a otra.  El tiempo que tarda la cabeza en buscar el sector correcto dentro de la pista. Es uno de los factores más importantes a la hora de escoger un disco duro. Cuando se oye hacer ligeros clics al disco duro, es que está buscando los datos que le hemos pedido. Hoy en día en un disco moderno, lo normal son 10 milisegundos. Memoria CACHE (Tamaño del BUFFER) El BUFFER o CACHE es una memoria que va incluida en la controladora interna del disco duro, de modo que todos los datos que se leen y escriben a disco duro se almacenan primeramente en el buffer. La regla de mano aquí es 128 KB para discos de menos de 1 GB, 256 KB para discos mayores de 1 GB y 512 KB para discos duros de 2 GB o mayores. Generalmente los discos duros actuales de más de 10 GB traen 2 MB de memoria cache asociada. Si un disco duro está bien organizado la serie de datos que se va a necesitar a continuación de una lectura estará situada en una posición físicamente contigua a
  31. 31. la última lectura, por eso los discos duros almacenas en la caché los datos contiguos, para proporcionar un acceso más rápido sin tener que buscarlos. El buffer es muy útil cuando se está grabando de un disco duro a un CD-ROM, pero en general, cuanto más grande mejor, pues contribuye de modo importante a la velocidad de búsqueda de datos. Tasa de transferencia (Transfer Rate) Este número indica la cantidad de datos un disco puede leer o escribir en la parte más exterior del disco o plato en un periodo de un segundo. Normalmente se mide en Mbits/segundo, y hoy en día, en un disco de 5400 RPM, un valor habitual es 100 Mbits/s, que equivale a 10 MB/s. Interfaz: Medio de comunicación entre el disco duro y el ordenador. Puede ser IDE/ATA, SCSI, SATA, USB o Firewire. La memoria flash (usb) carece de partes móviles y esto disminuye enormemente su latencia (retardo). La velocidad de lectura/escritura es estable sin importar la ubicación dentro de la memoria flash; sin embargo hasta ahora no se ha logrado igualar a la ofrecida por los discos duros. Velocidad en color AZUL, Latencia en color AMARILLO
  32. 32. Tal vez lo que muchos no saben es que los discos duros contienen un chip con el controlador específico del fabricante del disco duro (Seagate, Hitachi, Maxtor, Samsung, etc) y que este chip tiene una memoria caché para reducir el número de operaciones mecánicas de lectura/escritura. En conclusión, la parte de la alta velocidad de los discos duros se debe a la existencia de un chip que funciona bajo los mismos principios de las memorias flash (no partes mecánicas y baja latencia). Se puede observar el chip principal controlador del disco duro. Es un chip controlador SATA, que además incluye los 16MB de memoria caché especificados en el disco duro. Adicionalmente: No todas las BIOS son memorias FLASH (hay Bios PLCC y DIP), pero modernamente la tendencia ha sido FLASH.
  33. 33. Tipos de conexión7 Existen distintos tipos de conexión asociados a los discos duros que poseen los mismos con la placa base, es decir pueden ser SATA, IDE, SCSI o SAS: - IDE: Integrated Drive Electronics ("Dispositivo electrónico integrado") o ATA (Advanced Technology Attachment), controla los dispositivos de almacenamiento masivo de datos, como los discos duros y ATAPI (Advanced Technology Attachment Packet Interface) Hasta aproximadamente el 2004, el estándar principal por su versatilidad y asequibilidad. Son planos, anchos y alargados. - SCSI: Son interfaces preparadas para discos duros de gran capacidad de almacenamiento y velocidad de rotación. Se presentan bajo tres 7 Ibidem.
  34. 34. especificaciones: SCSI Estándar (Standard SCSI), SCSI Rápido (Fast SCSI) y SCSI Ancho-Rápido (Fast-Wide SCSI). Su tiempo medio de acceso puede llegar a 7 milisegundos y su velocidad de transmisión secuencial de información puede alcanzar teóricamente los 5 Mbit/s en los discos SCSI Estándares, los 10 Mbit/s en los discos SCSI Rápidos y los 20 Mbit/s en los discos SCSI Anchos-Rápidos (SCSI-2). Un controlador SCSI puede manejar hasta 7 discos duros SCSI (o 7 periféricos SCSI) con conexión tipo margarita (daisy-chain). A diferencia de los discos IDE, pueden trabajar asincrónicamente con relación al microprocesador, lo que posibilita una mayor velocidad de transferencia. - SATA (Serial ATA): El más novedoso de los estándares de conexión, utiliza un bus serie para la transmisión de datos. Notablemente más rápido y eficiente que IDE. Existen tres versiones, SATA 1 con velocidad de transferencia de hasta 150 MB/s (hoy día descatalogado), SATA 2 de hasta 300 MB/s, el más extendido en la actualidad; y por último SATA 3 de hasta 600 MB/s el cual se está empezando a hacer hueco en el mercado. Físicamente es mucho más pequeño y cómodo que los IDE, además de permitir conexión en caliente. - SAS (Serial Attached SCSI): Interfaz de transferencia de datos en serie, sucesor del SCSI paralelo, aunque sigue utilizando comandos SCSI para interaccionar con los dispositivos SAS. Aumenta la velocidad y permite la conexión y desconexión en caliente. Una de las principales características es que aumenta la velocidad de transferencia al aumentar el número de dispositivos conectados, es decir, puede gestionar una tasa de transferencia constante para cada dispositivo conectado, además de terminar con la limitación de 16 dispositivos existente en SCSI, es por ello que se vaticina que la tecnología SAS irá reemplazando a su predecesora SCSI. Además, el conector es el mismo que en la interfaz SATA y permite utilizar estos discos duros, para aplicaciones con menos necesidad de velocidad, ahorrando costes. Por lo tanto, las unidades SATA pueden ser utilizadas por controladoras SAS pero no a la inversa, una controladora SATA no reconoce discos SAS. Dimensiones de los DD8 La dimensión de los DD está asociada a un concepto denominado "factor de forma", heredada da las dimensiones de las disqueteras. Pueden ser montados en 8 Ibídem.
  35. 35. los mismos chasis y así los discos duros con factor de forma, pasaron a llamarse coloquialmente tipos FDD "floppy-disk drives". La compatibilidad del "factor de forma" continua siendo de 3½ pulgadas (8,89 cm) incluso después de haber sacado otros tipos de disquetes con unas dimensiones más pequeñas. - 8 pulgadas: 241,3×117,5×362 mm (9,5×4,624×14,25 pulgadas). En 1979, Shugart Associates sacó el primer factor de forma compatible con los disco duros, SA1000, teniendo las mismas dimensiones y siendo compatible con la interfaz de 8 pulgadas de las disqueteras. Había dos versiones disponibles, la de la misma altura y la de la mitad (58,7mm). - 5,25 pulgadas: 146,1×41,4×203 mm (5,75×1,63×8 pulgadas). Este factor de forma es el primero usado por los discos duros de Seagate en 1980 con el mismo tamaño y altura máxima de los FDD de 5¼ pulgadas, por ejemplo: 82,5 mm máximo. Éste es dos veces tan alto como el factor de 8 pulgadas, que comúnmente se usa hoy; por ejemplo: 41,4 mm (1,64 pulgadas). La mayoría de los modelos de unidades ópticas (DVD/CD) de 120 mm usan el tamaño del
  36. 36. factor de forma de media altura de 5¼, pero también para discos duros. El modelo Quantum Bigfoot es el último que se usó a finales de los 90'. - 3,5 pulgadas: 101,6×25,4×146 mm (4×1×5.75 pulgadas). Este factor de forma es el primero usado por los discos duros de Rodine que tienen el mismo tamaño que las disqueteras de 3½, 41,4 mm de altura. Hoy ha sido en gran parte remplazado por la línea "slim" de 25,4mm (1 pulgada), o "low- profile" que es usado en la mayoría de los discos duros. - 2,5 pulgadas: 69,85×9,5-15×100 mm (2,75×0,374-0,59×3,945 pulgadas). Este factor de forma se introdujo por PrairieTek en 1988 y no se corresponde con el tamaño de las lectoras de disquete. Este es frecuentemente usado por los discos duros de los equipos móviles (portátiles, reproductores de música, etc...) y en 2008 fue reemplazado por unidades de 3,5 pulgadas de la clase multiplataforma. Hoy en día la dominante de este factor de forma son las unidades para portátiles de 9,5 mm, pero las unidades de mayor capacidad tienen una altura de 12,5 mm. - 1,8 pulgadas: 54×8×71 mm. Este factor de forma se introdujo por Integral Peripherals en 1993 y se involucró con ATA-7 LIF con las dimensiones indicadas y su uso se incrementa en reproductores de audio digital y su subnotebook. La variante original posee de 2GB a 5GB y cabe en una ranura de expansión de tarjeta de ordenador personal. Son usados normalmente en iPods y discos duros basados en MP3. - 1 pulgadas: 42,8×5×36,4 mm. Este factor de forma se introdujo en 1999 por IBM y Microdrive, apto para los slots tipo 2 de compact flash, Samsung llama al mismo factor como 1,3 pulgadas. - 0,85 pulgadas: 24×5×32 mm. Toshiba anunció este factor de forma el 8 de enero de 2004 para usarse en móviles y aplicaciones similares, incluyendo SD/MMC slot compatible con disco duro optimizado para vídeo y almacenamiento para micromóviles de 4G. Toshiba actualmente vende versiones de 4GB (MK4001MTD) y 8GB (MK8003MTD) 5 y tienen el Record Guinness del disco duro más pequeño. Los principales fabricantes suspendieron la investigación de nuevos productos para 1 pulgada (1,3 pulgadas) y 0,85 pulgadas en 2007, debido a la caída de precios de las memorias flash, aunque Samsung introdujo en el 2008 con el SpidPoint A1 otra unidad de 1,3 pulgadas.
  37. 37. El nombre de "pulgada" para los factores de forma normalmente no identifica ningún producto actual (son especificadas en milímetros para los factores de forma más recientes), pero estos indican el tamaño relativo del disco, para interés de la continuidad histórica. Estructura lógica del DD Dentro del disco se encuentran: - El Master Boot Record (en el sector de arranque), que contiene la tabla de particiones. El sector de arranque o bloque de arranque, es un sector de un disco duro, disquete, o cualquier otro dispositivo de almacenamiento de datos que contiene código de arranque, por lo general (pero no necesariamente), de un sistema operativo almacenado en otros sectores del disco. La BIOS selecciona un dispositivo de arranque, entonces copia al primer sector de disco desde el dispositivo (el cual puede ser un MBR, VBR o un código ejecutable), a la ubicación de dirección de disco 0x7C00. - Las particiones, necesarias para poder colocar los sistemas de archivos. La tabla de particiones está alojada en el Master Boot Record a partir del byte 446 y ocupa 64 bytes, conteniendo 4 registros de 16 bytes, los cuales definen las particiones primarias. En ellos se almacena toda la información básica sobre la partición: si es arrancable, si no lo es, el formato, el tamaño y el sector de inicio. Un registro de partición se organiza de la siguiente forma:9 512 bytes Primer sector físico del disco duro (pista cero) 446 bytes Código del gestor de arranque 64 bytes 16 bytes Primera partición 1 byte Marca de arranque si el bit 7 está activo es una partición de arranque, los otros bits deben ser ceros. 3 bytes CHS de inicio 1 byte Tipo de partición 9 Tabla de particiones. Consultado el 2 de septiembre de 2013. http://es.wikipedia.org/wiki/Tabla_de_particiones
  38. 38. 3 bytes CHS final 4 bytes LBA 4 bytes Tamaño en sectores 16 bytes Segunda partición 1 byte Marca de arranque si el bit 7 está activo es una partición de arranque, los otros bits deben ser ceros. 3 bytes CHS de inicio 1 byte Tipo de partición 3 bytes CHS final 4 bytes LBA 4 bytes Tamaño en sectores 16 bytes Tercera partición 1 byte Marca de arranque si el bit 7 está activo es una partición de arranque, los otros bits deben ser ceros. 3 bytes CHS de inicio 1 byte Tipo de partición 3 bytes CHS final 4 LBA
  39. 39. bytes 4 bytes Tamaño en sectores 16 bytes Cuarta partición 1 byte Marca de arranque si el bit 7 está activo es una partición de arranque, los otros bits deben ser ceros. 3 bytes CHS de inicio 1 byte Tipo de partición 3 bytes CHS final 4 bytes LBA 4 bytes Tamaño en sectores 2 bytes Firma de unidad arrancable ("55 AA" en hexadecimal) En los sistemas Windows, la tabla de particiones no es la única información vital del MBR. Desde Windows NT 4, Microsoft mantiene 4 bytes a partir de la posición 0x1B8 que sirven de identificador de la unidad física completa. Es utilizada por el sistema para referenciarla de manera independiente a la letra de unidad o bus de conexión. El identificador se mantiene en diferentes lugares del registro, y es una pieza clave durante el arranque del sistema. Una prueba realizada en Windows Vista hace inarrancable el sistema tras un cambio de esos cuatro bytes. El mensaje de error mostrado culpa del problema a un cambio de hardware o software. GNU/Linux también hace uso de ese identificador desde la versión del kernel 2.6.
  40. 40. PARTICIONES Los sistemas operativos no trabajan con unidades físicas directamente sino con unidades lógicas. Cada una de estas unidades lógicas constituye una partición del disco duro. Particiones y directorios.— Ambas estructuras permiten organizar datos dentro de un disco duro. Sin embargo, presentan importantes diferencias: 1ª) Las particiones son divisiones de tamaño fijo del disco duro; los directorios son divisiones de tamaño variable de la partición; 2ª) Las particiones ocupan un grupo de cilindros contiguos del disco duro (mayor seguridad); los directorios suelen tener su información desperdigada por toda la partición; 3ª) Cada partición del disco duro puede tener un sistema de archivos (sistema operativo) distinto; todos los directorios de la partición tienen el sistema de archivos de la partición. Las particiones pueden ser primarias extendidas y lógicas. Las particiones lógicas se definen dentro de una partición primaria especial denominada partición extendida. La partición activa es aquella a la que el programa de inicialización (Master Boot) cede el control al arrancar. El sistema operativo de la partición activa será el que se cargue al arrancar desde el disco duro. Estructura lógica de las particiones Dependiendo del sistema de archivos utilizado en cada partición, su estructura lógica será distinta. En los casos de MS-DOS y Windows 98, Windows XP está formada por sector de arranque (MBR), FAT o NTFS, copia de la FAT, directorio raíz y área de datos. De todas formas, el sector de arranque es un elemento común a todos los tipos de particiones.
  41. 41. Todas las particiones tienen un sector de arranque (el primero de la partición) con información relativa a la partición. Si la partición tiene instalado un sistema operativo, este sector se encargará de arrancarlo. Si no hubiese ningún sistema operativo (como es el caso de una partición para datos) y se intentara arrancar, mostraría un mensaje de error. Tipos de particiones El formato o sistema de archivos de las particiones (p. ej. NTFS) no debe ser confundido con el tipo de partición (p. ej. partición primaria), ya que en realidad no tienen directamente mucho que ver. Independientemente del sistema de archivos de una partición (FAT, ext3, NTFS, etc.), existen 3 tipos diferentes de particiones: • Partición primaria: Son las divisiones crudas o primarias del disco, solo puede haber 4 de éstas o 3 primarias y una extendida. Depende de una tabla de particiones. Un disco físico completamente formateado consiste, en realidad, de una partición primaria que ocupa todo el espacio del disco y posee un sistema de archivos. A este tipo de particiones, prácticamente cualquier sistema operativo puede detectarlas y asignarles una unidad, siempre y cuando el sistema operativo reconozca su formato (sistema de archivos). En los equipos PC, originales de IBM, estas particiones tradicionalmente usan una estructura llamada Tabla de particiones, ubicada al final del registro de arranque maestro (MBR, Master Boot Record). Esta tabla, que no puede contener más de 4 registros de particiones (también llamados partition descriptors), específica para cada una su principio, final y tamaño en los diferentes modos de direccionamiento, así también como un solo número, llamado partition type, y un marcador que indica si la partición está activa o no (sólo puede haber una partición activa a la vez). El marcador se usa durante el arranque; después de que el BIOS cargue el registro de arranque maestro en la memoria y lo ejecute, el MBR de DOS comprueba la tabla de partición a su final y localiza la partición activa. Entonces
  42. 42. carga el sector de arranque de esta partición en memoria y la ejecuta. A diferencia del registro de arranque maestro, generalmente independiente del sistema operativo, el sector de arranque está instalado junto con el sistema operativo y sabe cómo cargar el sistema ubicado en ese disco en particular. Notar que mientras la presencia de un marcador activo se estandariza, no se utiliza en todos los gestores de arranque. Por ejemplo, los gestores LILO, GRUB (muy comunes en el sistema Linux) y XOSL no buscan en la tabla de particiones del MBR la partición activa; simplemente cargan una segunda etapa (que puede ser contenida en el resto del cilindro 0 ó en el sistema de archivos). Después de cargar la segunda etapa se puede cargar el sector de arranque de cualquiera de las particiones del disco (permitiendo al usuario seleccionar la partición), o si el gestor conoce cómo localizar el kernel (núcleo) del sistema operativo en una de las particiones (puede permitir al usuario especificar opciones de kernel adicionales para propósitos de recuperación estratégicos. Particiones extendidas y lógicas Cualquier versión del DOS puede leer sólo una partición FAT primaria en el disco duro. Esto unido al deterioro de la FAT con el uso y al aumento de tamaño de los discos movió a Microsoft a crear un esquema mejorado relativamente simple: una de las entradas de la tabla de partición principal pasó a llamarse partición extendida y recibió un número de tipo de partición especial (0x05). El campo inicio de partición tiene la ubicación del primer descriptor de la partición extendida, que a su vez tiene un campo similar con la ubicación de la siguiente; así se crea una lista enlazada de descriptores de partición. Los demás campos de una partición extendida son indefinidos, no tienen espacio asignado y no pueden usarse para almacenar datos.
  43. 43. Las particiones iniciales de los elementos de la lista enlazada son las llamadas unidades lógicas; son espacios asignados y pueden almacenar datos. Los sistemas operativos antiguos ignoraban las particiones extendidas con número de tipo 0x05, y la compatibilidad se mantenía. Este esquema reemplaza al antiguo ya que todas las particiones de un disco duro se pueden poner dentro de una sola partición extendida. Por alguna razón, Microsoft no actualizó su sistema operativo DOS para arrancar desde una partición extendida, debido a que la necesidad para particiones primarias se preservará. Por encima de éstas todavía se habría permitido una partición FAT primaria por unidad, significando todas las otras particiones FAT primarias deben tener sus números de tipo de partición prior cambiando al arranque DOS, para que ésta sea capaz de proceder. Esta técnica, usada por varios administradores de arranque populares, se llama ocultación de la partición. Sin embargo hay que tener en cuenta una quinta partición que se puede comprimir pero no es muy recomendable. Gestores de arranque Si instala diferentes Sistemas Operativos en un mismo computador, el equipo tendrá que utilizar un sistema para poder seleccionar qué Sistema Operativo desea iniciar. El gestor de arranque es un programa que se ejecuta una vez completado el inicio normal de la BIOS y que permite seleccionar el Sistema Operativo en caso de disponer de un arranque múltiple. Entre los principales gestores de arranque se encuentran:10 NTLDR (NT Loader). Es el archivo encargado del arranque de los Sistemas Operativos Windows NT, Windows 2000, Windows XP y Windows Server 2003. Se encuentra, normalmente, en el directorio raíz del disco del sistema y requiere, como mínimo, que se encuentre en dicho directorio raíz el archivo boot.ini, que contiene el menú de opciones de inicio, y el archivo NTDETECT.COM que es el que se encarga de iniciar el sistema seleccionado. El Administrador de arranque de Windows (Bootmgr). Es el archivo encargado del arranque de los Sistemas Operativos Windows Vista, Windows 7 y 8, y 10 Antes de instalar un Sistema Operativo - conoce el disco duro y sus particiones. Consultado el 1 de septiembre de 2013. http://www.lasticenelaula.es/portal/index.php/ubuntu-1204-lts/instalacion-del- sistema/645-antes-de-instalar-conoce-el-disco-duro-y-sus-particiones
  44. 44. Windows Server 2008. Se encuentra, normalmente, en el directorio raíz del disco del sistema. Controla el proceso de arranque mostrando el menú multiarranque (si hubiera más de un Sistema Operativo) instalado en el disco). Después llama al archivo WinLoad.exe que es el cargador del Sistema Operativo Windows y dará paso al archivo ntoskrnl.exe, que se encargará del resto del arranque del sistema. Puedes localizar el archivo WinLoad.exe en el directorio Windowssystem32 Lilo (Linux Loader). Es un gestor de arranque de Linux que permite iniciar este Sistema Operativo junto con otras plataformas (como Windows) que haya en el mismo ordenador. Funciona en una gran variedad de sistemas de archivos y puede arrancar un Sistema Operativo desde el disco duro o desde un disco flexible externo. Grub. Es un gestor de arranque más moderno y flexible que el anterior, ya que permite que el administrador ejecute cualquier comando desde la línea de comando de Grub. Entre todas sus características hay que destacar la posibilidad de incluir múltiples formatos de ejecutables, el arranque de Sistemas Operativos no-multiarranque, una agradable interfaz de usuario y una interfaz de línea de comando muy flexible. • Partición extendida: También conocida como partición secundaria es otro tipo de partición que actúa como una partición primaria; sirve para contener infinidad de unidades lógicas en su interior. Fue ideada para romper la limitación de 4 particiones primarias en un solo disco físico. Solo puede existir una partición de este tipo por disco, y solo sirve para contener particiones lógicas. Por lo tanto, es el único tipo de partición que no soporta un sistema de archivos directamente. • Partición lógica: Ocupa una porción de la partición extendida o la totalidad de la misma, la cual se ha formateado con un tipo específico de sistema de archivos (FAT32, NTFS, ext2,...) y se le ha asignado una unidad, así el sistema operativo reconoce las particiones lógicas o su sistema de archivos. Puede haber un máximo de 23 particiones lógicas en una partición extendida. Linux impone un máximo de 15, incluyendo las 4 primarias, en discos SCSI y en discos IDE 8963. Ventajas y desventajas de particiones de disco. Ventajas de un disco duro particionado: La principal ventaja de particionar un disco duro viene de la segunda opción. Tener una partición exclusiva para los archivos personales del usuario, es ideal a la hora de instalar de cero el sistema operativo. En una de las particiones se mantiene el sistema operativo y en la otra los archivos del usuario (documentos, e-mails, descargas, música, etc.). Si se necesita formatear e instalar de cero el sistema por cualquier inconveniente, simplemente se procede a formatear la partición que contiene el sistema operativo, dejando intacta la otra.
  45. 45. Esto nos ahorra mucho tiempo, dado que no debemos guardar toda esa información en otra unidad de almacenamiento. De todas maneras, emplear una partición como respaldo no es buena idea (se explica más abajo), siempre se recomienda tener el respaldo en otra unidad de almacenamiento. Desventajas de un disco duro particionado: Si se usa una de las particiones como respaldo, no es muy seguro que digamos. Si se rompe el disco duro, se pueden ver afectadas ambas particiones. Recuerde que ambas están en el mismo disco físico, aunque en diferentes áreas de éste. Tampoco particionar aumenta la velocidad del disco duro, de hecho, puede producir un mayor desgaste del mecanismo interno del disco. Es es porque cuando se particiona un disco duro en dos, se crean dos áreas de trabajo. Es decir, dos anillos concéntricos, siendo el anillo interior el de la unidad C, y el anillo externo generalmente el de la unidad D. Pero generalmente la aguja de lectura/escritura del disco duro suele trabajar mayormente en el anillo interno (unidad C), y no mucho en el externo, lo que puede ocasionar, a la larga, un desgaste del motor de la aguja. Nuevas generaciones de DD. Actualmente la nueva generación de discos duros utiliza la tecnología de grabación perpendicular (PMR), la cual permite mayor densidad de almacenamiento. También existen discos llamados "Ecológicos" (GP - Green Power), los cuales hacen un uso más eficiente de la energía.
  46. 46. Comparativa de Unidades de estado sólido y discos duros Una unidad de estado sólido o SSD (acrónimo en inglés de solid-state drive) es un dispositivo de almacenamiento de datos que puede estar construido con memoria no volátil o con memoria volátil. Las no volátiles son unidades de estado sólido que como dispositivos electrónicos, están construidos en la actualidad con chips de memoria flash.11 No son discos, pero juegan el mismo papel a efectos prácticos aportando más ventajas que inconvenientes tecnológicos. Por ello se está empezando a vislumbrar en el mercado la posibilidad de que en el futuro ese tipo de unidades de estado sólido terminen sustituyendo al disco duro para implementar el manejo de memorias no volátiles en el campo de la ingeniería informática. Esos soportes son muy rápidos ya que no tienen partes móviles y consumen menos energía. Todo esto les hace muy fiables y físicamente duraderos. Sin embargo su costo por GB es aún muy elevado respecto al mismo coste de GB en un formato de tecnología de Disco Duro siendo un índice muy importante cuando 11 Memoria no volátil, contraria a memoria volátil, es un tipo de memoria que no necesita energía para perdurar. Algunos dispositivos listados en esta categoría son: - BD-ROM, BD-R, BD-RW - CD, CD-ROM, CD-R, CD-RW - Cinta magnética - DVD - Diskette - Disco duro - EPROM - EEPROM - MRAM - Memoria de tambor - Flash - NVRAM - PRAM - PROM - ROM - Memoria racetrack Fuente. Floyd, T.L, Fundamentos de Sistemas Digitales, Sexta Edición, Ed. Prentice Hall, Madrid, ISBN 84- 89660-21-2, pp. 599, 1997.
  47. 47. hablamos de las altas necesidades de almacenamiento que hoy se miden en orden de Terabytes.( Comparativas de precios SSD versus disco duro. 2010). A pesar de ello la industria apuesta por este vía de solución tecnológica para el consumo doméstico (Discos de estado sólido 2010) aunque se ha de considerar que estos sistemas han de ser integrados correctamente (Comparativa entre disco duro. 2008) tal y como se está realizando en el campo de la alta computación. (Primera supercomputadora 2013). Unido a la reducción progresiva de costes quizás esa tecnología recorra el camino de aplicarse como método general de archivo de datos informáticos energéticamente respetuosos con el medio natural si optimiza su función lógica dentro de los sistemas operativos actuales. (La verdad sobre el consumo de energía 2013). Los discos que no son discos: Las Unidades de estado sólido han sido categorizadas repetidas veces como "discos", cuando es totalmente incorrecto denominarlas así, puesto que a diferencia de sus predecesores, sus datos no se almacenan sobre superficies cilíndricas ni platos. Esta confusión conlleva habitualmente a creer que "SSD" significa Solid State Disk, en vez de Solid State Drive. (Seagate 2013) Unidades híbridas Las unidades híbridas son aquellas que combinan las ventajas de las unidades mecánicas convencionales con las de las unidades de estado sólido. Consisten en acoplar un conjunto de unidades de memoria flash dentro de la unidad mecánica, utilizando el área de estado sólido para el almacenamiento dinámico de datos de uso frecuente (determinado por el software de la unidad) y el área mecánica para el almacenamiento masivo de datos. Con esto se logra un rendimiento cercano al de unidades de estado sólido a un costo sustancialmente menor. En el mercado actual (2012), Seagate ofrece su modelo "Momentus XT" con esta tecnología. (Seagate 2013). Tabla de asignación de archivos. FAT (file allocation table) Es un sistema de archivos desarrollado para MS-DOS, así como el sistema de archivos principal de las ediciones no empresariales de Microsoft Windows hasta Windows Me.
  48. 48. FAT (File Allocate Table, tabla de asignación de archivos) Este sistema de archivos se basa, como su nombre indica, en una tabla de asignación de archivos o FAT. Esta tabla es el índice del disco. Almacena los grupos utilizados por cada archivo, los grupos libres y los defectuosos. Como consecuencia de la fragmentación de archivos, es corriente que los distintos grupos que contienen un archivo se hallen desperdigados por toda la partición. La FAT es la encargada de seguir el rastro de cada uno de los archivos por la partición. Grupo. — Un grupo, cluster o unidad de asignación es la unidad mínima de almacenamiento de un archivo en una partición y está formada por uno o varios sectores contiguos del disco. 4 sectores consecutivos de 512 bytes). La FAT, es un formato para disquetes admitido prácticamente por todos los SO existentes para computadores personales. Sobra decir, que aunque el formato de disquetes prácticamente ha desaparecido, la FAT aun se usa, por lo que se debe repasar o recordar sus características. Así, la FAT se utiliza como mecanismo de intercambio de datos entre sistemas operativos distintos que coexisten en un mismo computador, lo que se conoce como entorno multiarranque. También se utiliza en tarjetas de memoria y dispositivos similares. Las implementaciones más extendidas de FAT tienen algunas desventajas. Cuando se borran y se escriben nuevos archivos tiende a dejar fragmentos dispersos de éstos por todo el soporte. Con el tiempo, esto hace que el proceso de lectura o escritura sea cada vez más lento. La denominada desfragmentación es la solución a esto, pero es un proceso largo que debe repetirse regularmente para mantener el sistema de archivos en perfectas condiciones. FAT tampoco fue
  49. 49. diseñado para ser redundante ante fallos. Inicialmente solamente soportaba nombres cortos de archivo: ocho caracteres para el nombre más tres para la extensión. También carece de permisos de seguridad: cualquier usuario puede acceder a cualquier archivo. FAT12 Es un sistema de archivos para disquete, por lo que tiene varias limitaciones:  No soporta anidación de carpeta, es decir, que el sistema no puede contener subdirectorios; o lo mismo, que dentro de una carpeta no pueden haber otras carpetas. Cabe mencionar, que esto sólo ocurre en FAT 12, a partir de ella, si es posible. La causa es porque no soportaba metadatos, (los que asignan atributos para un fichero), en concreto no podía distinguir el campo st_mode si fuera un fichero o un directorio.  Las direcciones de bloque solamente contienen 12 bits. Esto complica la implementación.  El tamaño del disco se almacena como una cuenta de 16 bits expresada en sectores, lo que limita el espacio manejable a 32MB. Estructura de la FAT12 en un disquete de 1,44M: 512 Byte Primer sector físico del disco flexible (Pista Cero) 3 Byte Código máquina12 de salto ( jmp short 0x3E; nop ) 0EBh 03Ch 090h 8 Byte Cadena que identifica el fabricante del disco 'mkdosfs',0 2 Byte Bytes por sector 512 1 Byte Sectores por cluster 1 2 Byte Sectores reservados 1 1 Byte Número de FAT's 2 2 Byte Entradas máximas en directorio raíz 244 2 Byte Sectores totales 2880 1 Byte Descriptor de medio (0F0h para discos de 1'44M) 240 2 Byte Sectores por fat 9 2 Byte Sectores por pista 12 2 Byte Número de caras 2 12 Es el sistema de códigos directamente interpretable por un circuito microprogramable, como una CPU o el microcontrolador de un autómata (un PLC). Este lenguaje está compuesto por un conjunto de instrucciones que determinan acciones a ser tomadas por la máquina. Un programa de computadora consiste en una cadena de estas instrucciones de lenguaje de máquina (más los datos). Estas instrucciones son normalmente ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos. El lenguaje de máquina es específico de cada máquina o arquitectura de la máquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre ellas.
  50. 50. 4 Byte Sectores ocultos 0 4 Byte Longitud total de sectores 0 1 Byte Número de unidad 0 1 Byte Banderas 0 1 Byte Firma (029h) 41 4 Byte Número de serie 4294967295 12 Byte Etiqueta de volumen 'DISCO EJPLO ' 8 Byte Identificador de formato 'FAT12 ' 446 Byte Código máquina del cargador de arranque [...] 2 Byte Firma de unidad arrancable 055AAh FAT16 En este formato se eliminó el contador de sectores de 16 bits. El tamaño de la partición ahora estaba limitado por la cuenta de sectores por clúster, que era de 8 bits. Esto obligaba a usar clusters de 32Kbytes con los usuales 512 bytes por sector. Así que el límite definitivo de FAT16 se situó en los 2GB. Esta mejora estuvo disponible en 1988 con la versión MS-DOS 4.0. Luego, Windows NT aumentó el tamaño máximo del cluster a 64 kilobytes. No obstante, el formato resultante no era compatible con otras implementaciones de la época, y además, generaba mucha fragmentación interna (se ocupaban clusters enteros aunque solamente se precisaran unos pocos bytes). FAT32 El sistema FAT32 permite trabajar con particiones mayores de 2 GB. No solamente esto, sino que además el tamaño del grupo (cluster) es mucho menor y no se desperdicia tanto espacio como ocurría en las particiones FAT. Microsoft decidió implementar una nueva generación de FAT utilizando direcciones de cluster de 32 bits (aunque sólo 28 de esos bits se utilizaban realmente). Teóricamente, esto permitía aproximadamente 268.435.538 clusters, arrojando tamaños de almacenamiento cercanos a los 8TB. Sin embargo, debido a limitaciones en la utilidad ScanDisk de Microsoft, no se permite que FAT32 crezca más allá de 4.177.920 clusters por partición (es decir, unos 124 GB). Posteriormente, Windows 2000 y XP situaron el límite de FAT32 en los 32GB. Microsoft afirma que es una decisión de diseño, sin embargo, es capaz de leer particiones mayores creadas por otros medios.
  51. 51. El tamaño máximo de un archivo en FAT32 es 4GB (232 −1 bytes), lo que resulta engorroso para aplicaciones de captura y edición de video, ya que los archivos generados por éstas superan fácilmente ese límite. En la siguiente tabla, se comparan los tamaños de grupo utilizados según el tamaño de la partición y el sistema de archivos empleado: Tamaño de la partición Tamaño del cluster FAT FAT32 < 128 MB 2 KB No soportado128 MB - 256 MB 4 KB 256 MB - 512 MB 8 KB 512 MB - 1 GB 16 KB 4 KB1 GB - 2 GB 32 KB 2 GB - 8 GB No soportado 8 GB - 16 GB 8 KB 16 GB - 32 GB 16 KB 32 GB - 2 TB 32 KB La familia de las FAT, se resume en el siguiente cuadro: FAT12 FAT16 FAT32 Desarrollador Microsoft Nombre completo Tabla de Asignación de Archivos (versión de 12 bits) (versión de 16 bits) (versión de 32 bits) Introducido 1977 (Microsoft Julio de 1988 (MS- Agosto
  52. 52. Existen otros sistemas operativos como GNU/Linux, FreeBSD y BeOS que soportan FAT, y la mayoría también soportan VFAT y FAT32 en menor extensión. Las primeras ediciones de GNU/Linux también apoyaron un formato conocido como UMSDOS. Este consistía en una variante de FAT que admitía los permisos de seguridad en Unix, además de los nombres largos de éste. Para ello, se Disk BASIC) DOS 4.0) de 1996 (Windows 95 OSR2) Identificador de partición 0x01 (MBR) 0x04, 0x06, 0x0E (MBR) 0x0B, 0x0C (MBR) EBD0A0A2-B9E5- 4433 -87C0- 68B6B72699C7 (GPT) Estructuras FAT12 FAT16 FAT32 Contenido de carpeta Tabla Ubicación de archivo Lista enlazada Bloques defectuosos Lista enlazada Límites FAT12 FAT16 FAT32 Tamaño máximo de archivo 32 MB 2 GB 4 GB Número máximo de archivos 4.077 65.517 268.435.437 Longitud máxima del nombre de archivo 8.3 (11) o 255 caracteres cuando se usan LFNs (Long File Names) Tamaño máximo del volumen 2 MB 2 GB 2 TB Características FAT12 FAT16 FAT32 Fechas almacenadas Creación, modificación, acceso Rango de fechas soportado 1 de enero de 1980 - 31 de diciembre de 2107 Metadatos No de modo nativo Atributos Sólo lectura, oculto, sistema, archivo, nombre del volumen Permisos No Compresión transparente Por volumen, Stacker, DoubleSpace, DriveSpace No Cifrado transparente Por volumen sólo con DR-DOS No
  53. 53. almacenaba esta información en un archivo FAT separado que se denominaba "-- linux--.---" . UMSDOS quedó en desuso con la aparición de VFAT en recientes versiones del núcleo Linux. El SO Mac OS X también soporta sistemas de archivos FAT, siempre que no se trate del volumen de arranque del sistema. Esto significa que a la hora de efectuar un formateo del sistema operativo sobre plataforma MAC, ni se les ocurra usar este formato. VFAT (Virtual FAT) Este sistema de archivos logra remediar uno de los mayores problemas del sistema FAT: los nombres de archivos y directorios sólo podían contener 8 caracteres de nombre y 3 de extensión. Con VFAT, se logra ampliar este límite a 255 caracteres entre nombre y extensión. La mayor ventaja de VFAT es que tiene plena compatibilidad con FAT. Por ejemplo, es factible utilizar la misma partición para dos sistemas operativos que utilicen uno FAT y otro VFAT (MS-DOS y Windows 95). Cuando entremos desde MS-DOS, los nombres largos de archivos se transforman en nombres cortos según unas reglas establecidas, y pueden ser utilizados de la manera habitual. De todas maneras, hay que prestar cierta atención cuando se trabaja desde MS-DOS con archivos que tienen nombres largos: no se deben realizar operaciones de copiado o borrado, ya que se corre el riesgo de perder el nombre largo del archivo y quedarnos sólo con el corto. Desde Windows 95, se trabaja de forma transparente con nombres cortos y largos Nota. Microsoft desde la versión de Windows XP no siguió soportando los sistemas operativos basados en MS-DOS, solo aparece en su archivo como un recuerdo de su antigua kernel, por lo que pensar en nuevas versiones de FAT es poco probable. Ahora, para el caso de NTFS, es un sistema de archivos superior al FAT en múltiples aspectos: eficiencia, rendimiento y fiabilidad. Su principal desventaja es el excesivo tamaño que desperdicia en pequeños volúmenes y su limitado soporte en otros sistemas operativos. Sus especificaciones son un secreto comercial; no obstante, esto está cambiando, ya es posible leer y escribir en particiones NTFS en Linux con herramientas como NTFS-3G13 . FAT es actualmente el sistema de archivos habitual en medios de almacenamiento extraíbles, a excepción de CDs y DVDs. FAT12 se usa en disquetes, y FAT16 en 13 NTFS-3G es un controlador estable de NTFS para Linux, Mac OS X, FreeBSD, BeOS y Haiku con licencia GNU GPL y de código abierto. Al contrario que el driver NTFS incluido en el kernel Linux, tiene muy pocas limitaciones en cuanto a la escritura de archivos: permite crear, renombrar, mover o borrar ficheros de cualquier tamaño en particiones NTFS, con la excepción de ficheros cifrados. (http://www.tuxera.com/community/ntfs-3g-faq/#questions)

×