jueves, 28 de mayo de 2015

11º TEÓRIA NÚCLEO Y SISTEMA DE ARCHIVOS


S.O NUCLEO Y SISTEMA ARCHIVOS
SISTEMAS OPERATIVOS
Un Sistema Operativo es el programa (o software) más importante de un ordenador. Para que funcionen los otros programas, cada ordenador de uso general debe tener un sistema operativo. Los sistemas operativos realizan tareas básicas, tales como reconocimiento de la conexión del teclado, enviar la información a la pantalla, no perder de vista archivos y directorios en el disco, y controlar los dispositivos periféricos tales como impresoras, escáner, etc.

INTÉRPRETE DE ÓRDENES
El programa principal del sistema  es un intérprete de órdenes o de comandos, es un programa informático que tiene la capacidad de traducir las órdenes que introducen los usuarios, mediante un conjunto de instrucciones facilitadas por él mismo directamente al núcleo y al conjunto de herramientas que forman el sistema operativo.

FUNCIONES PRINCIPALES DE UN SISTEMA OPERATIVO
Las cuatro grandes funciones del Sistema Operativo son:
Coordinar y manipular el hardware del computador
Organizar los archivos en diversos dispositivos de almacenamiento
Gestionar los errores de hardware y la pérdida de datos
Encargado de brindar al usuario una interfaz con la cual pueda operar de manera fácil todas las funciones anteriormente descritas.

OTRAS FUNCIONES DE UN S.O
Las distintas funciones de los Sistemas Operativos son: Gestión de tareas, Interpretación de comandos, Control de recursos, Manejo de dispositivos de E/S, Manejo de errores, Secuencia de tareas, Protección, Multiacceso y Contabilidad de recursos.

ORGANIZACIÓN DE UN SISTEMA OPERATIVO
La organización de un Sistema Operativo está compuesta por lo siguiente:
En el primer nivel y más bajo, se encuentra el núcleo (kernel), que es el que tiene contacto directo con los circuitos electrónicos.
En el segundo se encuentran las rutinas que implementan los servicios que ofrece el Sistema Operativo, como el manejo de lo discos, el monitor, teclado y la gestión de los procesos.
En el tercero se encuentran el gestor de la memoria y de archivos.
El cuarto, están los procesos que permiten la comunicación del usuario con el Sistema Operativo: el caparazón [shell] y las órdenes propias del Sistema Operativo. La comunicación sólo es posible entre los niveles inmediatamente superior e inferior.

PROCESOS
Un proceso es simplemente, un programa en ejecución que necesita recursos para realizar su tarea.
Estados de un Proceso
Ejecución: El proceso está actualmente en ejecución.
Listo: El proceso está listo para ser ejecutado, sólo está esperando que el PLANIFICADOR así lo disponga.
Espera: El proceso no puede ejecutar hasta que no se produzca cierto suceso, como una operación de Entrada/Salida.
Nuevo: El proceso recién fue creado y todavía no fue admitido por el sistema operativo. En general los procesos que se encuentran en este estado todavía no fueron cargados en la memoria principal.
Terminado: El proceso fue expulsado del grupo de procesos ejecutables, ya sea porque terminó o por algún fallo, como un error de protección, aritmético, etc.


MASTER BOOT RECORD
El Master Boot Record es el primer sector ó sector cero de un dispositivo de almacenamiento de datos, como un disco duro. A veces, se emplea para el arranque del sistema operativo con bootstrap, otras veces es usado para almacenar una tabla de particiones y, en ocasiones, se usa sólo para identificar un dispositivo de disco individual, aunque en algunas máquinas esto último no se usa y es ignorado. 
El Master Boot Record está compuesto por un código ejecutable y las entradas de la tabla de particiones. 
Bootstrap es un término utilizado para describir el arranque, o proceso de inicio de cualquier ordenador. Suele referirse al programa que arranca un sistema operativo como por ejemplo GRUB, LiLo o NTLDR. Se ejecuta tras el proceso POST del BIOS. También es llamado Bootstrap Loader (Cargador de inicialización). 

Los 512 bytes del sector de arranque están distribuidos de la siguiente forma:
Código maestro de carga ó Boot Loader, tamaño 446 bytes.
Tabla de particiones, tamaño 64 bytes.
Firma o validación del MBR, tamaño 2 bytes.

EL NÚCLEO
Un núcleo es un software que actúa de Sistema Operativo, es el que facilita los distintos programas de acceso seguro al hardware de la computadora, en conclusión es el encargado de gestionar recursos a través de servicios de llamada al sistema. 
Su función es 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.

TIPOS DE NUCLEOS
Núcleos Monolíticos: Facilitan abstracciones del hardware subyacente realmente potentes y variadas
Núcleos Micronúcleos: Proporcionan un pequeño conjunto de abstracciones simples del hardware, y usan las aplicaciones llamadas servidores para ofrecer mayor funcionalidad.
Núcleos Híbridos: 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.
Núcleos 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
Un núcleo o kernel, es un software que trabaja en un sistema operativo como puede ser Linux o Windows, como hay muchos programas y el acceso al hardware es limitado, también se encarga de decidir qué programa podrá hacer uso de un dispositivo de hardware y durante cuánto tiempo, lo que se conoce como multiplexado. Acceder al hardware directamente puede ser realmente complejo, por lo que los núcleos suelen implementar una serie de abstracciones del hardware.

CONVENCIONES PARA NOMBRAR LOS DISCOS (EN LINUX)
Linux, al igual que Windows NT, puede instalarse en una partición primaria o en una partición lógica, en cualquiera de los discos duros. Si la instalación no se realiza en una partición primaria del primer disco duro, es necesario instalar un gestor de arranque. Linux proporciona un potente gestor de arranque llamado LILO. Las posibilidades de instalación son dos: instalarlo en la partición de Linux o en el sector de arranque del disco duro (Master Boot Record). La primera opción es preferible si Linux se instala en una partición primaria del primer disco duro (debe ser la partición activa) junto a otro sistema operativo.

CARGADORES DE ARRANQUE PARA LINUX
Es un programa sencillo, diseñado exclusivamente para preparar todo lo que necesita el sistema operativo para funcionar. Normalmente se utilizan los cargadores de arranque multietapas, en los que varios programas pequeños se suman los unos a los otros, hasta que el último de ellos carga el sistema operativo. En los ordenadores modernos, el proceso de arranque comienza con la CPU ejecutando los programas contenidos en la memoria ROM en una dirección predefinida (se configura la CPU para ejecutar este programa, sin ayuda externa, al encender el ordenador).

SISTEMA DE ARCHIVOS
Los sistemas de archivos o fichero, estructuran la información guardada en una unidad de almacenamiento (Disco Duro) que luego será representada ya sea textual o gráficamente utilizando un gestor de archivos. La mayoría de los sistemas operativos manejan su propio sistema de archivos.

FUNCIONES DEL NÚCLEO O KERNEL
Su función principal es facilitar a diferentes programas un acceso seguro al hardware, se encarga de gestionar recursos a través del sistema.

ARQUITECTURA DE WINDOWS Y DE LINUX
Actualmente Linux es un núcleo monolítico híbrido. Los controladores de dispositivos y las extensiones del núcleo normalmente se ejecutan en un espacio privilegiado conocido como anillo 0 (ring 0), con acceso irrestricto al hardware, aunque algunos se ejecutan en espacio de usuario. A diferencia de los núcleos monolíticos tradicionales, los controladores de dispositivos y las extensiones al núcleo se pueden cargar y descargar fácilmente como módulos, mientras el sistema continúa funcionando sin interrupciones. También, a diferencia de los núcleos monolíticos tradicionales, los controladores pueden ser prevolcados (detenidos momentáneamente por actividades más importantes) bajo ciertas condiciones. Esta habilidad fue agregada para gestionar correctamente interrupciones de hardware, y para mejorar el soporte de multiprocesamiento simétrico.

COMPARACIÓN ENTRE EL NÚCLEO DE LINUX Y WINDOWS
En las discusiones típicas de “Windows vs Linux” suelo ver como algo habitual que se limiten a facilidad de uso, programas de terceras compañías (software, juegos, etcétera) y algo de FUD por en medio pero nunca se comenta cosas como el núcleo, algo que suele ser muy importante.  

Diferencias: 
El tamaño resultante del kernel (sin drivers/módulos) también es exageradamente, Linux ocupa 1.3MB frente a los 4.6MB de Windows. 
El tamaño en líneas de código en Windows aumenta en cada versión (actualmente 10 millones de líneas) de forma exagerada aunque Linux en cada versión mete soporte para mucho hardware sin que aumente el número tanto (4 millones actualmente) osea que no sé que pensar. El número anterior es sin drivers, si incluimos los drivers los números se disparan y la diferencia también (Windows 25 millones, Linux 8). 
Otro dato interesante es el tiempo de desarrollo, cada “versión menor” (en el caso de linux los 2.6.x) dura 3 meses en linux y 31 en Windows. En las versiones mayores la cosa ya se balancea menos: Linux tarda 35 meses y Windows 38. Aquí se puede observar lo que decía Linus Torvalds (si no me falla la memoria): lanza versiones rápidamente, continuamente.

NOMENCLATURA DEL KERNEL EN LINUX
El kernel de Linux (Linux) está escrito en C y es código abierto licenciado bajo licencia GNU/GPL (excepto el planificador de recursos, el cual pertenece a Linus Torvalds y al resto de programadores que se han ocupado de dicha parte), con lo cual tenemos acceso al código para su estudio y/o modificación.

La nomenclatura del Kernel se divide en 3 campos separados por un punto
Primer campo: Número de la versión. 
Segundo campo: Numero de "sub-versión", por llamarlo de algún modo, es la versión dentro de la propia versión, si este número es par, la versión será estable, si por el contrario es impar, ésta será inestable.
Tercer campo: Nivel de corrección el en que se encuentra.

TIPOS DE SOFTWARE POR DISTRIBUCIÓN

Software Libre: Es la denominación del software que respeta la libertad de los usuarios sobre su producto adquirido y, por tanto, una vez obtenido puede ser usado, copiado, estudiado, modificado y redistribuido libremente. Según la Free Software Fundación, el software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, modificar el software y distribuirlo modificado.
Software Gratuito: El término freeware define un tipo de software no libre que se distribuye sin costo, disponible para su uso y por tiempo ilimitado siendo una variante gratuita del shareware, en el que la meta es lograr que un usuario pruebe el producto durante un tiempo ("trial") limitado, y si le satisface, pague por él, habilitando toda su funcionalidad. A veces se incluye el código fuente pero no es lo usual.
Software de Dominio Público: Es aquel software que no requiere de licencia, pues sus derechos de explotación son para toda la humanidad, porque pertenece a todos por igual.

SISTEMAS DE ARCHIVOS USADOS POR S.O
Sistema operativo
Tipos de sistemas de archivos admitidos
Dos
FAT16
Windows 95
FAT16
Windows 95 OSR2
FAT16, FAT32
Windows 98
FAT16, FAT32
Windows NT4
FAT, NTFS (versión 4)
Windows 2000/XP
FAT, FAT16, FAT32, NTFS (versiones 4 y 5)
Linux
Ext2, Ext3, ReiserFS, Linux Swap (FAT16, FAT32, NTFS)
MacOS
HFS (Sistema de Archivos Jerárquico), MFS (Sistemas de Archivos Macintosh)
OS/2
HPFS (Sistema de Archivos de Alto Rendimiento)
SGI IRIX
XFS
FreeBSD, OpenBSD
UFS (Sistema de Archivos Unix)
Sun Solaris
UFS (Sistema de Archivos Unix)
IBM AIX
JFS (Sistema Diario de Archivos)


PARTICIONES EN LINUX

Swap: Se usa para la memoria virtual, cuyo tamaño es aproximadamente equivalente al tamaño de la memoria.
Root: / Contiene los datos más importantes para el sistema y es el punto de montaje para otras particiones.
Las necesidades para la partición raíz en términos de tamaño son muy limitadas, 300MB es suficiente.
El directorio raíz: / El directorio raíz contiene toda la jerarquía del sistema. No se puede clasificar ya que sus subdirectorios pueden,


DIRECTORIOS USADOS EN LINUX

/bin: archivos binarios esenciales del sistema. Este directorio contiene los comandos básicos que usarán todos los usuarios y son necesarios para la operación del sistema: ls, cp, login, etc. Estático, no compartible. 
/boot: contiene los archivos que necesita el administrador de arranque de GNU/Linux (grub o LILO para las plataformas Intel). Este puede, o no, contener al núcleo: si el núcleo no está aquí, debe estar ubicado en el directorio raíz. Estático, no compartible. 
/dev: archivos de los dispositivos del sistema (dev por DEVices, Dispositivos). Estático 
/etc: este directorio contiene todos los archivos de configuración específicos a la máquina. Estático 
/home: contiene todos los directorios personales de los usuarios del sistema. Este directorio puede, o no, ser compartible (algunas redes grandes lo hacen compartible por NFS). No estático, compartible. 
/lib: este directorio contiene las bibliotecas esenciales al sistema; también contiene los módulos del núcleo en /lib/modules. Todas las bibliotecas que necesitan los binarios presentes en los directorios /bin y /sbin se deben ubicar aquí, junto con el vinculador ld.so. Estático 
/mnt: directorio que contiene los puntos de montaje para los sistemas de archivos temporales. No estático 
/opt: este directorio contiene los paquetes que no son necesarios para la operación del sistema. Se recomienda poner los archivos estáticos (binarios, bibliotecas, páginas de manual, etc.) de tales paquetes en el directorio /opt/nombre_del_paquete y sus archivos de configuración específicos para la máquina en /etc/opt. 
/root: directorio personal de root. No estático 
/sbin: contiene los binarios del sistema esenciales para el arranque del mismo, sólo utilizables por root. Un usuario no privilegiado también puede ejecutarlos pero no llegará muy lejos. Estático 
/tmp: directorio destinado a contener archivos temporales que pueden crear ciertos programas. No estático



No hay comentarios:

Publicar un comentario